1 ! Copyright (C) 2012 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: accessors colors combinators kernel locals math
11 { saturation read-only }
12 { lightness read-only }
21 : value ( p q t -- value )
22 dup 0 < [ 1.0 + ] when
23 dup 1 > [ 1.0 - ] when
25 { [ dup 1/6 < ] [ [ over - ] dip * 6 * + ] }
26 { [ dup 1/2 < ] [ drop nip ] }
27 { [ dup 2/3 < ] [ [ over - ] dip 2/3 swap - * 6 * + ] }
35 [ hue>> ] [ saturation>> ] [ lightness>> ] [ alpha>> ]
40 l 0.5 < [ l s 1 + * ] [ l s + l s * - ] if :> q
48 GENERIC: >hsla ( color -- hsla )
50 M: object >hsla >rgba >hsla ;
52 M: hsla >hsla ; inline
55 >rgba-components [| r g b |
56 r g b min min :> min-c
57 r g b max max :> max-c
58 min-c max-c + 2 / :> l
62 { r [ g b - d / g b < 6.0 0.0 ? + ] }
63 { g [ b r - d / 2.0 + ] }
64 { b [ r g - d / 4.0 + ] }