]> gitweb.factorcode.org Git - factor.git/blob - basis/colors/yiq/yiq.factor
factor: trim using lists
[factor.git] / basis / colors / yiq / yiq.factor
1 ! Copyright (C) 2012 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3
4 USING: accessors colors combinators kernel math
5 math.order ;
6
7 IN: colors.yiq
8
9 TUPLE: yiqa
10 { y read-only }
11 { in-phase read-only }
12 { quadrature read-only }
13 { alpha read-only } ;
14
15 C: <yiqa> yiqa
16
17 INSTANCE: yiqa color
18
19 M: yiqa >rgba
20     {
21         [ y>> ] [ in-phase>> ] [ quadrature>> ] [ alpha>> ]
22     } cleave [
23         [ [ 0.9468822170900693 * ] [ 0.6235565819861433 * ] bi* + + ]
24         [ [ 0.27478764629897834 * ] [ 0.6356910791873801 * ] bi* + - ]
25         [ [ 1.1085450346420322 * ] [ 1.7090069284064666 * ] bi* - - ]
26         3tri [ 0.0 1.0 clamp ] tri@
27     ] dip <rgba> ; inline
28
29 GENERIC: >yiqa ( color -- yiqa )
30
31 M: object >yiqa >rgba >yiqa ;
32
33 M: yiqa >yiqa ; inline
34
35 M:: rgba >yiqa ( rgba -- yiqa )
36     rgba >rgba-components :> ( r g b a )
37     0.30 r *  0.59 g * 0.11 b * + + :> y
38     r y - :> r-y
39     b y - :> b-y
40     0.74 r-y * 0.27 b-y * - :> i
41     0.48 r-y * 0.41 b-y * + :> q
42     y i q a <yiqa> ;