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