Author: ArcRiley
Date: 2008-02-17 12:04:05 -0500 (Sun, 17 Feb 2008)
New Revision: 925

Modified:
   trunk/pysoy/src/colors/Color.pxi
Log:
changed TypeErrors to the proper NotImplemented, added comparison checking


Modified: trunk/pysoy/src/colors/Color.pxi
===================================================================
--- trunk/pysoy/src/colors/Color.pxi    2008-02-17 15:14:00 UTC (rev 924)
+++ trunk/pysoy/src/colors/Color.pxi    2008-02-17 17:04:05 UTC (rev 925)
@@ -88,7 +88,7 @@
                     [:(3,4)[(<Color> self)._a !=1.0 or \
                             (<Color> value)._a!=1.0]] )
     else :
-      raise TypeError('can only divide Color by a Color, int, or float')
+      return NotImplemented
 
   def __mul__(self, value) :
     if type(value) == int or type(value) == float :
@@ -103,7 +103,7 @@
                     [:(3,4)[(<Color> self)._a !=1.0 or \
                             (<Color> value)._a!=1.0]] )
     else :
-      raise TypeError('can only multiply Color by a Color, int, or float')
+      return NotImplemented
 
   def __add__(self, value) :
     if type(value) == int or type(value) == float :
@@ -118,7 +118,29 @@
                     [:(3,4)[(<Color> self)._a !=1.0 or \
                             (<Color> value)._a!=1.0]] )
     else :
-      raise TypeError('can only add Color with a Color, int, or float')
+      return NotImplemented
+
+  def __repr__(self) :
+    return '<%s>' % self.__str__()
+
+  def __richcmp__(self, value, oper) :
+    if not isinstance(value, Color) :
+      return NotImplemented
+    eq = ( (<Color> self)._r == (<Color> value)._r and
+           (<Color> self)._g == (<Color> value)._g and 
+           (<Color> self)._b == (<Color> value)._b and 
+           (<Color> self)._a == (<Color> value)._a )
+    ls = ( (<Color> self)._r < (<Color> value)._r and
+           (<Color> self)._g < (<Color> value)._g and 
+           (<Color> self)._b < (<Color> value)._b and
+           ( (<Color> self)._a < (<Color> value)._a or
+             ( (<Color> self)._a == 1.0 and (<Color> value)._a == 1.0 ) ) )
+    gr = ( (<Color> self)._r > (<Color> value)._r and
+           (<Color> self)._g > (<Color> value)._g and 
+           (<Color> self)._b > (<Color> value)._b and
+           ( (<Color> self)._a > (<Color> value)._a or
+             ( (<Color> self)._a == 1.0 and (<Color> value)._a == 1.0 ) ) )
+    return (ls, ls|eq, eq, not eq, gr, gr|eq)[oper]
    
   def __sub__(self, value) :
     if type(value) == int or type(value) == float :
@@ -133,11 +155,8 @@
                     [:(3,4)[(<Color> self)._a !=1.0 or \
                             (<Color> value)._a!=1.0]] )
     else :
-      raise TypeError('can only subtract Color by a Color, int, or float')
+      return NotImplemented
 
-  def __repr__(self) :
-    return '<%s>' % self.__str__()
-
   def __str__(self) :
     return 'soy.colors.Color %s' % self.hex
 

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

Reply via email to