]> gitweb.factorcode.org Git - factor.git/blob - basis/colors/cmyk/cmyk.factor
Switch to https urls
[factor.git] / basis / colors / cmyk / cmyk.factor
1 ! Copyright (C) 2012 John Benediktsson
2 ! See https://factorcode.org/license.txt for BSD license
3
4 USING: accessors combinators colors colors.gray kernel math
5 math.order ;
6
7 IN: colors.cmyk
8
9 TUPLE: cmyka
10 { cyan read-only }
11 { magenta read-only }
12 { yellow read-only }
13 { black read-only }
14 { alpha read-only } ;
15
16 C: <cmyka> cmyka
17
18 INSTANCE: cmyka color
19
20 M: cmyka >rgba
21     [ [ cyan>> ] [ black>> ] bi + ]
22     [ [ magenta>> ] [ black>> ] bi + ]
23     [ [ yellow>> ] [ black>> ] bi + ] tri
24     [ 1.0 min 1.0 swap - ] tri@ 1.0 <rgba> ; inline
25
26 GENERIC: >cmyka ( color -- cmyka )
27
28 M: object >cmyka >rgba >cmyka ;
29
30 M: rgba >cmyka
31     >rgba-components [
32         [ 1 swap - ] tri@ 3dup min min
33         [ [ - 0.0 1.0 clamp ] curry tri@ ] keep
34     ] dip <cmyka> ;
35
36 M: cmyka >gray
37     [
38         {
39             [ cyan>> 0.3 * ]
40             [ magenta>> 0.59 * ]
41             [ yellow>> 0.11 * ]
42             [ black>> ]
43         } cleave + + + 1.0 min 1.0 swap -
44     ] [ alpha>> ] bi <gray> ;