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

Reply via email to