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: laba l a b alpha ;
13 M: laba >rgba >xyza >rgba ;
18 [ l>> ] [ a>> ] [ b>> ] tri :> ( l a b )
29 116 fx * 16 - xyz_kappa /
32 l xyz_kappa xyz_epsilon * > [
41 116 fz * 16 - xyz_kappa /
44 x wp_x * y wp_y * z wp_z *
46 ] [ alpha>> ] bi <xyza> ;
48 GENERIC: >laba ( color -- laba )
50 M: object >laba >rgba >laba ;
52 M: rgba >laba >xyza >laba ;
57 [ x>> wp_x / ] [ y>> wp_y / ] [ z>> wp_z / ] tri
60 [ 1/3 ^ ] [ xyz_kappa * 16 + 116 / ] if
61 ] tri@ :> ( fx fy fz )
66 ] [ alpha>> ] bi <laba> ;