Changeset 3646:c11f21f2b77d in livinglogic.python.xist

Show
Ignore:
Timestamp:
12/26/08 17:00:07 (10 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Change the methods rgb() and rgba() to return floating point values in [0;1].

Add a class method fromrgb().

Files:
5 modified

Legend:

Unmodified
Added
Removed
  • NEWS.rst

    r3645 r3646  
    44*   The module :mod:`ll.color` has been greatly simplified. All methods that 
    55    treat the components as 4 bit or floating point values have been removed. The 
    6     rests of the properties have been turned into methods. 
     6    rest of the properties have been turned into methods. 
    77 
    88*   Support for color objects has been added to UL4. 
  • docs/UL4.rst

    r3645 r3646  
    678678 
    679679 
    680 ``color`` 
    681 ::::::::: 
    682  
    683 ``color`` returns a color object. It can be called with 
    684  
    685     *   one argument, which must be a string in CSS format; 
     680``rgb`` 
     681::::::: 
     682 
     683``rgb`` returns a color object. It can be called with 
     684 
    686685    *   three arguments, the red, green and blue values. The alpha value will be 
    687686        set to 255; 
  • src/ll/color.py

    r3645 r3646  
    7979 
    8080    @classmethod 
    81     def fromhsva(cls, h, s, v, a=1.0): 
     81    def fromrgb(cls, r, g, b, a=1.0): 
     82        """ 
     83        Create a :class:`Color` object from the red, green, blue and alpha values 
     84        :var:`r`, :var:`g`, :var:`b` and :var:`a`. All values will be clipped 
     85        to the range [0; 1]. 
     86        """ 
     87        return cls(255*r, 255*g, 255*b, 255*a) 
     88 
     89    @classmethod 
     90    def fromhsv(cls, h, s, v, a=1.0): 
    8291        """ 
    8392        Create a :class:`Color` object from the hue, saturation and value values 
     
    9099 
    91100    @classmethod 
    92     def fromhlsa(cls, h, l, s, a=1.0): 
     101    def fromhls(cls, h, l, s, a=1.0): 
    93102        """ 
    94103        Create a :class:`Color` object from the hue, luminance and saturation 
     
    145154        """ 
    146155        The red, green and blue value as a float tuple with values between 
    147         0 and 255. 
    148         """ 
    149         return (self.r(), self.g(), self.b()) 
     156        0.0 and 1.0. 
     157        """ 
     158        return (self[0]/255., self[1]/255., self[2]/255.) 
    150159 
    151160    def rgba(self): 
    152161        """ 
    153162        The red, green, blue and alpha value as a float tuple with values between 
    154         0 and 255. 
    155         """ 
    156         return (self.r(), self.g(), self.b(), self.a()) 
     163        0.0 and 1.0. 
     164        """ 
     165        return (self[0]/255., self[1]/255., self[2]/255., self[3]/255.) 
    157166 
    158167    def hsv(self): 
  • src/ll/ul4c.py

    r3645 r3646  
    10051005                    elif opcode.arg == "type": 
    10061006                        _code("reg%d = ul4c._type(reg%d)" % (opcode.r1, opcode.r2)) 
    1007                     elif opcode.arg == "color": 
    1008                         _code("reg%d = color.Color.fromcss(reg%d)" % (opcode.r1, opcode.r2)) 
    10091007                    else: 
    10101008                        raise UnknownFunctionError(opcode.arg) 
     
    10231021                    elif opcode.arg == "zip": 
    10241022                        _code("reg%d = itertools.izip(reg%d, reg%d, reg%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
    1025                     elif opcode.arg == "color": 
    1026                         _code("reg%d = color.Color(reg%d, reg%d, reg%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
     1023                    elif opcode.arg == "rgb": 
     1024                        _code("reg%d = color.Color.fromrgb(reg%d, reg%d, reg%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4)) 
    10271025                    else: 
    10281026                        raise UnknownFunctionError(opcode.arg) 
    10291027                elif opcode.code == "callfunc4": 
    1030                     if opcode.arg == "color": 
    1031                         _code("reg%d = color.Color(reg%d, reg%d, reg%d, reg%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
     1028                    if opcode.arg == "rgb": 
     1029                        _code("reg%d = color.Color.fromrgb(reg%d, reg%d, reg%d, reg%d)" % (opcode.r1, opcode.r2, opcode.r3, opcode.r4, opcode.r5)) 
    10321030                    else: 
    10331031                        raise UnknownFunctionError(opcode.arg) 
  • test/test_color.py

    r3645 r3646  
    3434 
    3535 
     36def test_fromrgb(): 
     37    assert color.Color.fromrgb(0.2, 0.4, 0.6, 0.8) == color.Color(0x33, 0x66, 0x99, 0xcc) 
     38 
     39 
    3640def test_repr(): 
    3741    assert repr(color.red) == "Color(0xff, 0x00, 0x00)" 
     
    5357 
    5458def test_rgb(): 
    55     assert color.Color(0x12, 0x34, 0x56, 0x78).rgb() == (0x12, 0x34, 0x56) 
     59    assert color.Color(0x33, 0x66, 0x99, 0xcc).rgb() == (0.2, 0.4, 0.6) 
    5660 
    5761 
    5862def test_rgba(): 
    59     assert color.Color(0x12, 0x34, 0x56, 0x78).rgba() == (0x12, 0x34, 0x56, 0x78) 
     63    assert color.Color(0x33, 0x66, 0x99, 0xcc).rgba() == (0.2, 0.4, 0.6, 0.8) 
    6064 
    6165