{ $subsections >rgba }
"Extracting RGBA components of colors:"
{ $subsections >rgba-components }
+"Mixing colors:"
+{ $subsections
+ linear-gradient
+ sample-linear-gradient
+}
"Further topics:"
{ $subsections
"colors.protocol"
{ $vocab-subsection "Grayscale colors" "colors.gray" }
{ $vocab-subsection "HSV colors" "colors.hsv" } ;
-ABOUT: "colors"
\ No newline at end of file
+ABOUT: "colors"
! Copyright (C) 2003, 2009 Slava Pestov.
! Copyright (C) 2008 Eduardo Cavazos.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors combinators kernel math ;
+USING: accessors combinators kernel locals math sequences ;
IN: colors
TUPLE: color ;
[ [ >rgba-components drop ] [ tri@ ] bi* ] 2bi@
[ + ] tri-curry@ tri* 1.0 <rgba> ;
+:: sample-linear-gradient ( colors percent -- color )
+ colors length :> num-colors
+ num-colors 1 - percent * >integer :> left-index
+ 1.0 num-colors 1 - / :> cell-range
+ percent left-index cell-range * - cell-range / :> alpha
+ left-index colors nth :> left-color
+ left-index 1 + num-colors mod colors nth :> right-color
+ left-color right-color alpha linear-gradient ;
+
: inverse-color ( color -- color' )
>rgba-components [ [ 1.0 swap - ] tri@ ] dip <rgba> ;