]> gitweb.factorcode.org Git - factor.git/commitdiff
colors: more generic methods, simpler api.
authorJohn Benediktsson <mrjbq7@gmail.com>
Thu, 3 Oct 2013 04:24:36 +0000 (21:24 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Thu, 3 Oct 2013 04:24:36 +0000 (21:24 -0700)
17 files changed:
basis/colors/gray/gray.factor
basis/colors/hsv/hsv.factor
extra/colors/cmyk/cmyk-docs.factor
extra/colors/cmyk/cmyk-tests.factor
extra/colors/cmyk/cmyk.factor
extra/colors/hsl/hsl-docs.factor
extra/colors/hsl/hsl-tests.factor
extra/colors/hsl/hsl.factor
extra/colors/ryb/ryb-docs.factor
extra/colors/ryb/ryb-tests.factor
extra/colors/ryb/ryb.factor
extra/colors/yiq/yiq-docs.factor
extra/colors/yiq/yiq-tests.factor
extra/colors/yiq/yiq.factor
extra/colors/yuv/yuv-docs.factor
extra/colors/yuv/yuv-tests.factor
extra/colors/yuv/yuv.factor

index 532a091c078d11e20d7e4f17b26c57d00878dde9..c6f576f58ceadef4501542935e309e145fe973ae 100644 (file)
@@ -16,7 +16,11 @@ M: gray green>> gray>> ;
 
 M: gray blue>> gray>> ;
 
-: rgba>gray ( rgba -- gray )
+GENERIC: >gray ( color -- gray )
+
+M: object >gray >rgba >gray ;
+
+M: rgba >gray
     >rgba-components [
         [ 0.3 * ] [ 0.59 * ] [ 0.11 * ] tri* + +
     ] dip <gray> ;
index d00df1a8f1123a09c77d5b0b57c652351f3e285f..d1f107144cdd970515ddb4dc96fa08cd39f41137 100644 (file)
@@ -49,7 +49,11 @@ M: hsva >rgba ( hsva -- rgba )
 
 PRIVATE>
 
-:: rgba>hsva ( rgba -- hsva )
+GENERIC: >hsva ( color -- hsva )
+
+M: object >hsva >rgba >hsva ;
+
+M:: rgba >hsva ( rgba -- hsva )
     rgba >rgba-components :> ( r g b a )
     r g b sort-triple :> ( z y x )
     x z = x zero? or [ 0 0 x a <hsva> ] [
@@ -64,7 +68,7 @@ PRIVATE>
     ] if ;
 
 : complimentary-color ( color -- color' )
-    dup hsva? [ >rgba rgba>hsva ] unless
+    dup hsva? [ >hsva ] unless
     {
         [ hue>> 180 + 360 mod ]
         [ saturation>> ]
index ee759c3b62e69837527045923ddd6224bb7eb164..761ccb4d5b24b4b9309265d5303f53da8bcddf17 100644 (file)
@@ -9,7 +9,7 @@ ARTICLE: "colors.cmyk" "CMYK colors"
 { $subsections
     cmyka
     <cmyka>
+    >cmyka
     cmyka>gray
-    rgba>cmyka
 }
 { $see-also "colors" } ;
index c85b55695469ee0be906a90181595958ba30884d..071bb83a6423679790fc842028966477714f9c0e 100644 (file)
@@ -10,7 +10,7 @@ IN: colors.cmyk
     0.0 1.0 0.1 <range> [| r |
         0.0 1.0 0.1 <range> [| g |
             0.0 1.0 0.1 <range> [| b |
-                r g b 1.0 <rgba> dup rgba>cmyka >rgba
+                r g b 1.0 <rgba> dup >cmyka >rgba
                 [ >rgba-components 4array ] bi@
                 [ 0.00000001 ~ ] 2all?
             ] all?
index 598d5c6352316efa61a2e19c197568a55dd8d686..dc8e7dc4ba45c9a2329f819acf569c138f62883a 100644 (file)
@@ -21,13 +21,17 @@ M: cmyka >rgba
     [ [ yellow>> ] [ black>> ] bi + ] tri
     [ 1.0 min 1.0 swap - ] tri@ 1.0 <rgba> ; inline
 
-: rgba>cmyka ( rgba -- cmyka )
+GENERIC: >cmyka ( color -- cmyka )
+
+M: object >cmyka >rgba >cmyka ;
+
+M: rgba >cmyka
     >rgba-components [
         [ 1 swap - ] tri@ 3dup min min
         [ [ - 0.0 1.0 clamp ] curry tri@ ] keep
     ] dip <cmyka> ;
 
-: cmyka>gray ( cmyka -- gray )
+M: cmyka >gray
     [
         {
             [ cyan>> 0.3 * ]
index 8dc8bd5fe76d7a8ff8d7c66f50f8bba7f5722a5e..2e1b0975f3f962267379fcc86b14d7ab35b597b6 100644 (file)
@@ -9,6 +9,6 @@ ARTICLE: "colors.hsl" "HSL colors"
 { $subsections
     hsla
     <hsla>
-    rgba>hsla
+    >hsla
 }
 { $see-also "colors" } ;
index 6ca9a98fb45aba67e2494e5126652700659587bd..8b12019e6fcf6b500420f4d2347371ba262cde2b 100644 (file)
@@ -10,7 +10,7 @@ IN: colors.hsl
     0.0 1.0 0.1 <range> [| r |
         0.0 1.0 0.1 <range> [| g |
             0.0 1.0 0.1 <range> [| b |
-                r g b 1.0 <rgba> dup rgba>hsla >rgba
+                r g b 1.0 <rgba> dup >hsla >rgba
                 [ >rgba-components 4array ] bi@
                 [ 0.00000001 ~ ] 2all?
             ] all?
index feed829f30157a1a8965a0ae0e5369bc6fb14b17..79b4966fe66ac690b8334eb08bcc36eadea23dbb 100644 (file)
@@ -43,7 +43,11 @@ M: hsla >rgba
         ] if
     ] dip <rgba> ; inline
 
-: rgba>hsla ( rgba -- hsla )
+GENERIC: >hsla ( color -- hsla )
+
+M: object >hsla >rgba >hsla ;
+
+M: rgba >hsla
     >rgba-components [| r g b |
         r g b min min :> min-c
         r g b max max :> max-c
index 1b1684f13d2087f862ee74770027351b792c5e89..99438d022cc92b75d140f8171ec0a6fb81794a60 100644 (file)
@@ -9,6 +9,6 @@ ARTICLE: "colors.ryb" "RYB colors"
 { $subsections
     ryba
     <ryba>
-    rgba>ryba
+    >ryba
 }
 { $see-also "colors" } ;
index 615df956b48e4689bc30e598585a6833fe1d0bb6..e8922e382eb840d3940869dd81dd03c545aeba04 100644 (file)
@@ -10,7 +10,7 @@ IN: colors.ryb
     0.0 1.0 0.1 <range> [| r |
         0.0 1.0 0.1 <range> [| g |
             0.0 1.0 0.1 <range> [| b |
-                r g b 1.0 <rgba> dup rgba>ryba >rgba
+                r g b 1.0 <rgba> dup >ryba >rgba
                 [ >rgba-components 4array ] bi@
                 [ 0.00000001 ~ ] 2all?
             ] all?
index a3972b08059712c2a76267ee2d32c80122229627..96d975263c30650991dc065475513fb037591244 100644 (file)
@@ -67,5 +67,9 @@ M: ryba >rgba ( ryba -- rgba )
         [ ryb>rgb ] normalized
     ] [ alpha>> ] bi <rgba> ;
 
-: rgba>ryba ( rgba -- ryba )
+GENERIC: >ryba ( color -- ryba )
+
+M: object >ryba >rgba >ryba ;
+
+M: rgba >ryba
     >rgba-components [ [ rgb>ryb ] normalized ] [ <ryba> ] bi* ;
index b37dd8e319740d4827137cf3d7942356b4bc462e..bf0c16a24997c70ce556d942c2319c21e30403b2 100644 (file)
@@ -9,6 +9,6 @@ ARTICLE: "colors.yiq" "YIQ colors"
 { $subsections
     yiqa
     <yiqa>
-    rgba>yiqa
+    >yiqa
 }
 { $see-also "colors" } ;
index 8da58bfe5483d66773b1e2a4064ba270a6825d78..0be6b2d57cc1065699e58b66b2cef8375b4542c8 100644 (file)
@@ -10,7 +10,7 @@ IN: colors.yiq
     0.0 1.0 0.1 <range> [| r |
         0.0 1.0 0.1 <range> [| g |
             0.0 1.0 0.1 <range> [| b |
-                r g b 1.0 <rgba> dup rgba>yiqa >rgba
+                r g b 1.0 <rgba> dup >yiqa >rgba
                 [ >rgba-components 4array ] bi@
                 [ 0.00000001 ~ ] 2all?
             ] all?
index 8afa9d513195c521477c9881e67bf667683cd94c..66aa32b6289abe325f30b03da98c5ff0786f62fb 100644 (file)
@@ -24,7 +24,11 @@ M: yiqa >rgba
         3tri [ 0.0 1.0 clamp ] tri@
     ] dip <rgba> ; inline
 
-:: rgba>yiqa ( rgba -- yiqa )
+GENERIC: >yiqa ( color -- yiqa )
+
+M: object >yiqa >rgba >yiqa ;
+
+M:: rgba >yiqa ( rgba -- yiqa )
     rgba >rgba-components :> ( r g b a )
     0.30 r *  0.59 g * 0.11 b * + + :> y
     r y - :> r-y
index b24d2cc9f453b46bde943b9b301092ace54287ff..5decfde99a75214054a312a557a7c63a7bcc0a17 100644 (file)
@@ -9,6 +9,6 @@ ARTICLE: "colors.yuv" "YUV colors"
 { $subsections
     yuva
     <yuva>
-    rgba>yuva
+    >yuva
 }
 { $see-also "colors" } ;
index 6e12ccbf5c4d4cc568673b4bd0b3712c002e0d45..eba32266b2682103dcd5c2164a04b64c11156e66 100644 (file)
@@ -10,7 +10,7 @@ IN: colors.yuv
     0.0 1.0 0.1 <range> [| r |
         0.0 1.0 0.1 <range> [| g |
             0.0 1.0 0.1 <range> [| b |
-                r g b 1.0 <rgba> dup rgba>yuva >rgba
+                r g b 1.0 <rgba> dup >yuva >rgba
                 [ >rgba-components 4array ] bi@
                 [ 0.00000001 ~ ] 2all?
             ] all?
index 741744020c82ef6cac8084047aba9dba1501cee0..ff0fd838a6226a0d6309885be95c6285a4faddd3 100644 (file)
@@ -38,7 +38,11 @@ M: yuva >rgba
         [ 0.0 1.0 clamp ] tri@
     ] dip <rgba> ; inline
 
-:: rgba>yuva ( rgba -- yuva )
+GENERIC: >yuva ( color -- yuva )
+
+M: object >yuva >rgba >yuva ;
+
+M:: rgba >yuva ( rgba -- yuva )
     rgba >rgba-components :> ( r g b a )
     Wr r * Wg g * Wb b * + + :> y
     Umax 1 Wb - / b y - * :> u