GENERIC: >rgba ( color -- rgba )
-M: rgba >rgba ( rgba -- rgba ) ; inline
+M: rgba >rgba ; inline
-M: color red>> ( color -- red ) >rgba red>> ;
-M: color green>> ( color -- green ) >rgba green>> ;
-M: color blue>> ( color -- blue ) >rgba blue>> ;
+M: color red>> >rgba red>> ;
+M: color green>> >rgba green>> ;
+M: color blue>> >rgba blue>> ;
: >rgba-components ( object -- r g b a )
>rgba { [ red>> ] [ green>> ] [ blue>> ] [ alpha>> ] } cleave ; inline
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 )
M: object >hsla >rgba >hsla ;
+M: hsla >hsla ; inline
+
M: rgba >hsla
>rgba-components [| r g b |
r g b min min :> min-c
M: object >ryba >rgba >ryba ;
+M: ryba >ryba ; inline
+
M: rgba >ryba
>rgba-components [ [ rgb>ryb ] normalized ] [ <ryba> ] bi* ;
M: object >yiqa >rgba >yiqa ;
+M: yiqa >yiqa ; inline
+
M:: rgba >yiqa ( rgba -- yiqa )
rgba >rgba-components :> ( r g b a )
0.30 r * 0.59 g * 0.11 b * + + :> y
M: object >yuva >rgba >yuva ;
+M: yuva >yuva ; inline
+
M:: rgba >yuva ( rgba -- yuva )
rgba >rgba-components :> ( r g b a )
Wr r * Wg g * Wb b * + + :> y