]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/colors/hsv/hsv.factor
factor: trim using lists
[factor.git] / basis / colors / hsv / hsv.factor
index d1f107144cdd970515ddb4dc96fa08cd39f41137..0ebc0e58edec37637fb755d654189a9ddbff1661 100644 (file)
@@ -1,13 +1,13 @@
 ! Copyright (C) 2008 Eduardo Cavazos.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: accessors arrays colors combinators fry kernel locals
-math math.functions random sequences sorting ;
+USING: accessors colors combinators kernel math math.functions
+random sequences sorting ;
 IN: colors.hsv
 
 ! h [0,360)
 ! s [0,1]
 ! v [0,1]
-TUPLE: hsva < color
+TUPLE: hsva
 { hue read-only }
 { saturation read-only }
 { value read-only }
@@ -15,9 +15,11 @@ TUPLE: hsva < color
 
 C: <hsva> hsva
 
+INSTANCE: hsva color
+
 <PRIVATE
 
-: Hi ( hsv -- Hi ) hue>> 60 / floor 6 mod ; inline
+: Hi ( hsv -- Hi ) hue>> 60 / floor 6 mod >integer ; inline
 
 : f ( hsv -- f ) [ hue>> 60 / ] [ Hi ] bi - ; inline
 
@@ -29,7 +31,7 @@ C: <hsva> hsva
 
 PRIVATE>
 
-M: hsva >rgba ( hsva -- rgba )
+M: hsva >rgba
     [
         dup Hi
         {
@@ -53,6 +55,8 @@ GENERIC: >hsva ( color -- hsva )
 
 M: object >hsva >rgba >hsva ;
 
+M: hsva >hsva ; inline
+
 M:: rgba >hsva ( rgba -- hsva )
     rgba >rgba-components :> ( r g b a )
     r g b sort-triple :> ( z y x )
@@ -68,8 +72,7 @@ M:: rgba >hsva ( rgba -- hsva )
     ] if ;
 
 : complimentary-color ( color -- color' )
-    dup hsva? [ >hsva ] unless
-    {
+    >hsva {
         [ hue>> 180 + 360 mod ]
         [ saturation>> ]
         [ value>> ]