1 ! Copyright (C) 2014 John Benediktsson
2 ! See https://factorcode.org/license.txt for BSD license
4 USING: accessors colors colors.lab colors.luv colors.xyz kernel
5 math math.functions math.libm ;
9 TUPLE: LCHuv l c h alpha ;
15 M: LCHuv >rgba >luva >rgba ;
17 M: LCHuv >xyza >luva >xyza ;
22 [ l>> ] [ c>> ] [ h>> ] tri :> ( l c h )
29 ] [ alpha>> ] bi <luva> ;
31 GENERIC: >LCHuv ( color -- LCHuv )
33 M: object >LCHuv >luva >LCHuv ;
35 M: LCHuv >LCHuv ; inline
40 [ l>> ] [ u>> ] [ v>> ] tri :> ( l u v )
42 [ dup 360 > ] [ 360 - ] while
43 [ dup 0 < ] [ 360 + ] while :> h
49 ] [ alpha>> ] bi <LCHuv> ;
51 TUPLE: LCHab l c h alpha ;
57 M: LCHab >rgba >laba >rgba ;
62 [ l>> ] [ c>> ] [ h>> ] tri :> ( l c h )
69 ] [ alpha>> ] bi <laba> ;
71 GENERIC: >LCHab ( color -- LCHab )
73 M: object >LCHab >laba >LCHab ;
75 M: LCHab >LCHab ; inline
80 [ l>> ] [ a>> ] [ b>> ] tri :> ( l a b )
82 [ dup 360 > ] [ 360 - ] while
83 [ dup 0 < ] [ 360 + ] while :> h
89 ] [ alpha>> ] bi <LCHab> ;