math.parser sequences splitting vocabs.loader ;
IN: colors
-! FIXME: replace with MIXIN: color INSTANCE: rgba color
-TUPLE: color ;
+MIXIN: color
-TUPLE: rgba < color
+TUPLE: rgba
{ red read-only }
{ green read-only }
{ blue read-only }
C: <rgba> rgba
+INSTANCE: rgba color
+
GENERIC: >rgba ( color -- rgba )
M: rgba >rgba ; inline
: parse-color ( str -- color )
"#" ?head [ hex>rgba ] [ named-color ] if ;
-TUPLE: parsed-color < color string value ;
+TUPLE: parsed-color string value ;
+
+INSTANCE: parsed-color color
M: parsed-color >rgba value>> >rgba ;
USING: accessors colors kernel math ;
IN: colors.gray
-TUPLE: gray < color { gray read-only } { alpha read-only } ;
+TUPLE: gray { gray read-only } { alpha read-only } ;
C: <gray> gray
+INSTANCE: gray color
+
M: gray >rgba
[ gray>> dup dup ] [ alpha>> ] bi <rgba> ; inline