]> gitweb.factorcode.org Git - factor.git/blob - basis/colors/xyy/xyy.factor
factor: trim using lists
[factor.git] / basis / colors / xyy / xyy.factor
1 ! Copyright (C) 2014 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3
4 USING: accessors colors colors.xyz kernel math ;
5
6 IN: colors.xyy
7
8 TUPLE: xyYa x y Y alpha ;
9
10 C: <xyYa> xyYa
11
12 M: xyYa >rgba
13     >xyza >rgba ;
14
15 M: xyYa >xyza
16     [
17         [let
18             [ x>> ] [ y>> ] [ Y>> ] tri :> ( x y Y )
19             x y / Y *
20             Y
21             1 x - y - y / Y *
22         ]
23     ] [ alpha>> ] bi <xyza> ;
24
25 GENERIC: >xyYa ( color -- xyYa )
26
27 M: object >xyYa >xyza >xyYa ;
28
29 M: xyYa >xyYa ; inline
30
31 M: xyza >xyYa
32     [
33         [let
34             [ x>> ] [ y>> ] [ z>> ] tri :> ( x y z )
35             x y z + +
36             [ x swap / ]
37             [ y swap / ] bi
38             y
39         ]
40     ] [ alpha>> ] bi <xyYa> ;