1 ! Copyright (C) 2014 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: accessors colors colors.lab colors.luv colors.xyz kernel
5 locals math math.functions math.libm math.trig ;
9 TUPLE: LCHuv l c h alpha ;
13 M: LCHuv >rgba >luva >rgba ;
15 M: LCHuv >xyza >luva >xyza ;
20 [ l>> ] [ c>> ] [ h>> ] tri :> ( l c h )
27 ] [ alpha>> ] bi <luva> ;
29 GENERIC: >LCHuv ( color -- LCHuv )
31 M: object >LCHuv >luva >LCHuv ;
33 M: LCHuv >LCHuv ; inline
38 [ l>> ] [ u>> ] [ v>> ] tri :> ( l u v )
40 [ dup 360 > ] [ 360 - ] while
41 [ dup 0 < ] [ 360 + ] while :> h
47 ] [ alpha>> ] bi <LCHuv> ;
49 TUPLE: LCHab l c h alpha ;
53 M: LCHab >rgba >laba >rgba ;
58 [ l>> ] [ c>> ] [ h>> ] tri :> ( l c h )
65 ] [ alpha>> ] bi <laba> ;
67 GENERIC: >LCHab ( color -- LCHab )
69 M: object >LCHab >laba >LCHab ;
71 M: LCHab >LCHab ; inline
76 [ l>> ] [ a>> ] [ b>> ] tri :> ( l a b )
78 [ dup 360 > ] [ 360 - ] while
79 [ dup 0 < ] [ 360 + ] while :> h
85 ] [ alpha>> ] bi <LCHab> ;