colors.xyy: implement CIE xyY colors.
parent
0fb4bbb6f3
commit
a4d624b7b0
|
@ -0,0 +1 @@
|
||||||
|
John Benediktsson
|
|
@ -0,0 +1 @@
|
||||||
|
xyY colors
|
|
@ -0,0 +1,14 @@
|
||||||
|
USING: help.markup help.syntax ;
|
||||||
|
IN: colors.xyy
|
||||||
|
|
||||||
|
HELP: xyYa
|
||||||
|
{ $class-description "The class of CIE xyY colors with an alpha channel." } ;
|
||||||
|
|
||||||
|
ARTICLE: "colors.xyy" "xyY colors"
|
||||||
|
"The " { $vocab-link "colors.xyy" } " vocabulary implements CIE xyY colors, together with an alpha channel."
|
||||||
|
{ $subsections
|
||||||
|
xyYa
|
||||||
|
<xyYa>
|
||||||
|
>xyYa
|
||||||
|
}
|
||||||
|
{ $see-also "colors" } ;
|
|
@ -0,0 +1,19 @@
|
||||||
|
! Copyright (C) 2014 John Benediktsson
|
||||||
|
! See http://factorcode.org/license.txt for BSD license
|
||||||
|
|
||||||
|
USING: arrays colors kernel locals math.functions math.ranges
|
||||||
|
sequences tools.test ;
|
||||||
|
|
||||||
|
IN: colors.xyy
|
||||||
|
|
||||||
|
{ t } [
|
||||||
|
0.0 1.0 0.1 <range> [| r |
|
||||||
|
0.0 1.0 0.1 <range> [| g |
|
||||||
|
0.0 1.0 0.1 <range> [| b |
|
||||||
|
r g b 1.0 <rgba> dup >xyYa >rgba
|
||||||
|
[ >rgba-components 4array ] bi@
|
||||||
|
[ 0.00001 ~ ] 2all?
|
||||||
|
] all?
|
||||||
|
] all?
|
||||||
|
] all?
|
||||||
|
] unit-test
|
|
@ -0,0 +1,40 @@
|
||||||
|
! Copyright (C) 2014 John Benediktsson
|
||||||
|
! See http://factorcode.org/license.txt for BSD license
|
||||||
|
|
||||||
|
USING: accessors colors colors.xyz kernel locals math ;
|
||||||
|
|
||||||
|
IN: colors.xyy
|
||||||
|
|
||||||
|
TUPLE: xyYa x y Y alpha ;
|
||||||
|
|
||||||
|
C: <xyYa> xyYa
|
||||||
|
|
||||||
|
M: xyYa >rgba
|
||||||
|
>xyza >rgba ;
|
||||||
|
|
||||||
|
M: xyYa >xyza
|
||||||
|
[
|
||||||
|
[let
|
||||||
|
[ x>> ] [ y>> ] [ Y>> ] tri :> ( x y Y )
|
||||||
|
x y / Y *
|
||||||
|
Y
|
||||||
|
1 x - y - y / Y *
|
||||||
|
]
|
||||||
|
] [ alpha>> ] bi <xyza> ;
|
||||||
|
|
||||||
|
GENERIC: >xyYa ( color -- xyYa )
|
||||||
|
|
||||||
|
M: object >xyYa >xyza >xyYa ;
|
||||||
|
|
||||||
|
M: xyYa >xyYa ; inline
|
||||||
|
|
||||||
|
M: xyza >xyYa
|
||||||
|
[
|
||||||
|
[let
|
||||||
|
[ x>> ] [ y>> ] [ z>> ] tri :> ( x y z )
|
||||||
|
x y z + +
|
||||||
|
[ x swap / ]
|
||||||
|
[ y swap / ] bi
|
||||||
|
y
|
||||||
|
]
|
||||||
|
] [ alpha>> ] bi <xyYa> ;
|
Loading…
Reference in New Issue