Author: ArcRiley
Date: 2008-02-17 00:39:50 -0500 (Sun, 17 Feb 2008)
New Revision: 916

Modified:
   trunk/pysoy/src/colors/Color.pxi
Log:
added color multiplication and division

I can't figure out why self needed to be cast as <Color> - likely a Pyrex bug.


Modified: trunk/pysoy/src/colors/Color.pxi
===================================================================
--- trunk/pysoy/src/colors/Color.pxi    2008-02-17 05:06:24 UTC (rev 915)
+++ trunk/pysoy/src/colors/Color.pxi    2008-02-17 05:39:50 UTC (rev 916)
@@ -28,9 +28,36 @@
     elif type(value) == tuple or type(value) == list :
       self.floats = value
     else :
-      raise ValueError('color value must be string, tuple, or list')
+      raise TypeError('color value must be string, tuple, or list')
 
+  def __div__(self, value) :
+    if type(value) == int or type(value) == float :
+      return Color(( (<Color> self)._r / value, (<Color> self)._g / value,
+                     (<Color> self)._b / value, (<Color> self)._a / value ))
+    elif isinstance(value, Color) :
+      return Color(( (<Color> self)._r / (<Color> value)._r,
+                     (<Color> self)._g / (<Color> value)._g,
+                     (<Color> self)._b / (<Color> value)._b,
+                     (<Color> self)._a / (<Color> value)._a ))
+    else :
+      raise TypeError('can only divide Color by a Color, int, or float')
 
+  def __mul__(self, value) :
+    if type(value) == int or type(value) == float :
+      return Color(( (<Color> self)._r * value, (<Color> self)._g * value,
+                     (<Color> self)._b * value, (<Color> self)._a * value ))
+    elif isinstance(value, Color) :
+      return Color(( (<Color> self)._r * (<Color> value)._r,
+                     (<Color> self)._g * (<Color> value)._g,
+                     (<Color> self)._b * (<Color> value)._b,
+                     (<Color> self)._a * (<Color> value)._a ))
+    else :
+      raise TypeError('can only multiply Color by a Color, int, or float')
+
+  def __repr__(self) :
+    return '<Color %s>' % (self.hex)
+
+
   cdef void _getRGBA(self, float* ret) :
     ret[0] = self._r
     ret[1] = self._g
@@ -134,5 +161,3 @@
       self._b = value
 
 
-  def __repr__(self) :
-    return '<Color %s>' % (self.hex)

_______________________________________________
PySoy-SVN mailing list
PySoy-SVN@pysoy.org
http://www.pysoy.org/mailman/listinfo/pysoy-svn

Reply via email to