Author: JonNeal Date: 2008-02-17 03:40:43 -0500 (Sun, 17 Feb 2008) New Revision: 918
Modified: trunk/pysoy/src/colors/Color.pxi Log: Colors are now immutable, .red, .greem, .blue, and .alpha deleted, pydocs added. Modified: trunk/pysoy/src/colors/Color.pxi =================================================================== --- trunk/pysoy/src/colors/Color.pxi 2008-02-17 08:03:04 UTC (rev 917) +++ trunk/pysoy/src/colors/Color.pxi 2008-02-17 08:40:43 UTC (rev 918) @@ -24,9 +24,48 @@ ''' def __cinit__(self, value) : if type(value) == str or type(value) == unicode : - self.hex = value + if (type(value) != str) and (type(value) != unicode) : + raise('Must supply hex value as string') + if value[0] == '#' : + val = value[1:] + else : + val = value + vlen = len(val) + if vlen == 0 : + val = 'ff000000' + elif vlen == 1 : + val = val * 8 + elif vlen == 2 : + val = val * 4 + elif vlen == 3 : + val = 'ff' + val[0]*2 + val[1]*2 + val[2]*2 + elif vlen == 4 : + val = val[0]*2 + val[1]*2 + val[2]*2 + val[3]*2 + elif vlen == 5 : + val = val[0:2] + val[2]*2 + val[3]*2 + val[4]*2 + elif vlen == 6 : + val = 'ff' + val + elif vlen == 7 : + val = val[0]*2 + val[1:] + elif vlen > 8 : + raise('ARGB hex must not exceed 8 characters') + self._a = float(int(val[0:2],16)) / 255.0 + self._r = float(int(val[2:4],16)) / 255.0 + self._g = float(int(val[4:6],16)) / 255.0 + self._b = float(int(val[6:8],16)) / 255.0 elif type(value) == tuple or type(value) == list : - self.floats = value + if type(value)!=tuple and type(value)!=list : + raise TypeError('Color.floats must be either a tuple or list') + if len(value) == 1 : + value = (value[0], value[0], value[0], 1.0) + if len(value) == 2 : + value = (value[0], value[0], value[0], value[1]) + if len(value) == 3 : + value = (value[0], value[1], value[2], 1.0) + self._r = value[0] + self._g = value[1] + self._b = value[2] + self._a = value[3] else : raise TypeError('color value must be string, tuple, or list') @@ -90,6 +129,11 @@ property hex : + '''Color hex + + Returns hexadecimal formatted color + #aarrggbb + ''' def __get__(self) : cdef float _top cdef float _bottom @@ -115,7 +159,7 @@ self._r*255*_bottom, self._g*255*_bottom, self._b*255*_bottom, - _bottom*-1) + _bottom) if _bottom < 0 : return '#%.2x%.2x%.2x%.2x' % (self._a*255-_bottom,self._r*255-_bottom, self._g*255-_bottom,self._b*255-_bottom) @@ -128,81 +172,14 @@ return '#%.2x%.2x%.2x%.2x' % (self._a*255,self._r*255, self._g*255,self._b*255) - def __set__(self, value) : - if (type(value) != str) and (type(value) != unicode) : - raise('Must supply hex value as string') - if value[0] == '#' : - val = value[1:] - else : - val = value - vlen = len(val) - if vlen == 0 : - val = 'ff000000' - elif vlen == 1 : - val = val * 8 - elif vlen == 2 : - val = val * 4 - elif vlen == 3 : - val = 'ff' + val[0]*2 + val[1]*2 + val[2]*2 - elif vlen == 4 : - val = val[0]*2 + val[1]*2 + val[2]*2 + val[3]*2 - elif vlen == 5 : - val = val[0:2] + val[2]*2 + val[3]*2 + val[4]*2 - elif vlen == 6 : - val = 'ff' + val - elif vlen == 7 : - val = val[0]*2 + val[1:] - elif vlen > 8 : - raise('ARGB hex must not exceed 8 characters') - self._a = float(int(val[0:2],16)) / 255.0 - self._r = float(int(val[2:4],16)) / 255.0 - self._g = float(int(val[4:6],16)) / 255.0 - self._b = float(int(val[6:8],16)) / 255.0 - property floats : + '''Color floats + + Returns tuple of floats ranging from 0-255 + (r, g, b, a) + ''' def __get__(self) : return (self._r, self._g, self._b, self._a) - def __set__(self, value) : - if type(value)!=tuple and type(value)!=list : - raise TypeError('Color.floats must be either a tuple or list') - if len(value) == 1 : - value = (value[0], value[0], value[0], 1.0) - if len(value) == 2 : - value = (value[0], value[0], value[0], value[1]) - if len(value) == 3 : - value = (value[0], value[1], value[2], 1.0) - self._r = value[0] - self._g = value[1] - self._b = value[2] - self._a = value[3] - property alpha : - def __get__(self) : - return self._a - def __set__(self, value) : - self._a = value - - - property red : - def __get__(self) : - return self._r - def __set__(self, value) : - self._r = value - - - property green : - def __get__(self) : - return self._g - def __set__(self, value) : - self._g = value - - - property blue : - def __get__(self) : - return self._b - def __set__(self, value) : - self._b = value - - _______________________________________________ PySoy-SVN mailing list PySoy-SVN@pysoy.org http://www.pysoy.org/mailman/listinfo/pysoy-svn