1 ! Copyright (C) 2014 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: accessors colors colors.xyz colors.xyz.private kernel
9 TUPLE: luva l u v alpha ;
15 :: xyz-to-uv ( x y z -- u v )
16 x y 15 * z 3 * + + :> d
22 M: luva >rgba >xyza >rgba ;
27 wp_x wp_y wp_z xyz-to-uv :> ( u_wp v_wp )
28 [ l>> ] [ u>> ] [ v>> ] tri :> ( l u v )
30 52 l * 13 l * u_wp * u + / 1 - 3 / :> a
31 l xyz_kappa xyz_epsilon * > [
32 l 16 + 116 / 3 ^ wp_y *
37 39 l * 13 l * v_wp * v + / 5 - y * :> d
43 ] [ alpha>> ] bi <xyza> ;
45 GENERIC: >luva ( color -- luva )
47 M: object >luva >rgba >luva ;
49 M: rgba >luva >xyza >luva ;
51 M: luva >luva ; inline
56 wp_x wp_y wp_z xyz-to-uv :> ( u_wp v_wp )
57 [ x>> ] [ y>> ] [ z>> ] tri :> ( x_ y_ z_ )
58 x_ y_ z_ xyz-to-uv :> ( u_ v_ )
67 13 l * u_ u_wp - * :> u
68 13 l * v_ v_wp - * :> v
72 ] [ alpha>> ] bi <luva> ;