Skip to content

Commit 6b4b8db

Browse files
committed
Add tests for color()
1 parent 8ffe496 commit 6b4b8db

File tree

3 files changed

+317
-22
lines changed

3 files changed

+317
-22
lines changed

src/color.rs

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
* License, v. 2.0. If a copy of the MPL was not distributed with this
33
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
44

5+
use std::f32::consts::PI;
56
use std::fmt;
6-
use std::{f32::consts::PI, str::FromStr};
77

88
use super::{BasicParseError, ParseError, Parser, ToCss, Token};
99

@@ -399,9 +399,9 @@ impl ToCss for PredefinedColorSpace {
399399
#[derive(Clone, Copy, PartialEq, Debug)]
400400
pub struct ColorFunction {
401401
pub color_space: PredefinedColorSpace,
402-
pub red: f32,
403-
pub green: f32,
404-
pub blue: f32,
402+
pub c1: f32,
403+
pub c2: f32,
404+
pub c3: f32,
405405
pub alpha: f32,
406406
}
407407

@@ -413,11 +413,11 @@ impl ToCss for ColorFunction {
413413
dest.write_str("color(")?;
414414
self.color_space.to_css(dest)?;
415415
dest.write_str(" ")?;
416-
self.red.to_css(dest)?;
416+
self.c1.to_css(dest)?;
417417
dest.write_str(" ")?;
418-
self.green.to_css(dest)?;
418+
self.c2.to_css(dest)?;
419419
dest.write_str(" ")?;
420-
self.blue.to_css(dest)?;
420+
self.c3.to_css(dest)?;
421421

422422
serialize_alpha(dest, self.alpha, false)?;
423423

@@ -445,7 +445,7 @@ pub enum AbsoluteColor {
445445
/// Specifies an Oklab color by Oklab Lightness, Chroma, and hue using
446446
/// the OKLCH cylindrical coordinate model.
447447
Oklch(Oklch),
448-
/// Specified a sRGB based color with a predefined color space.
448+
/// Specifies a color in a predefined color space.
449449
ColorFunction(ColorFunction),
450450
}
451451

@@ -1174,29 +1174,33 @@ where
11741174
"prophoto-rgb" => PredefinedColorSpace::ProphotoRgb,
11751175
"rec2020" => PredefinedColorSpace::Rec2020,
11761176
"xyz-d50" => PredefinedColorSpace::XyzD50,
1177-
"xyz-d65" => PredefinedColorSpace::XyzD65,
1177+
"xyz" | "xyz-d65" => PredefinedColorSpace::XyzD65,
11781178
_ => return Err(location.new_unexpected_token_error(Token::Ident(ident.clone())))
11791179
})
11801180
})?;
11811181

1182-
let red = component_parser
1183-
.parse_number_or_percentage(arguments)?
1184-
.unit_value();
1185-
let green = component_parser
1186-
.parse_number_or_percentage(arguments)?
1187-
.unit_value();
1188-
let blue = component_parser
1189-
.parse_number_or_percentage(arguments)?
1190-
.unit_value();
1182+
macro_rules! parse_component {
1183+
() => {{
1184+
if let Ok(c) = arguments.try_parse(|i| component_parser.parse_number_or_percentage(i)) {
1185+
c.unit_value()
1186+
} else {
1187+
0.0
1188+
}
1189+
}};
1190+
}
1191+
1192+
let c1 = parse_component!();
1193+
let c2 = parse_component!();
1194+
let c3 = parse_component!();
11911195

11921196
let alpha = parse_alpha(component_parser, arguments, false)?;
11931197

11941198
Ok(Color::Absolute(AbsoluteColor::ColorFunction(
11951199
ColorFunction {
11961200
color_space,
1197-
red,
1198-
green,
1199-
blue,
1201+
c1,
1202+
c2,
1203+
c3,
12001204
alpha,
12011205
},
12021206
)))
Lines changed: 234 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,236 @@
11
[
2-
"color(srgb 1 1 1 / 0.5)", "color(srgb 1 1 1 / 0.5)"
2+
"color(srgb 0% 0% 0%)", "color(srgb 0 0 0)",
3+
"color(srgb 10% 10% 10%)", "color(srgb 0.1 0.1 0.1)",
4+
"color(srgb .2 .2 25%)", "color(srgb 0.2 0.2 0.25)",
5+
"color(srgb 0 0 0 / 1)", "color(srgb 0 0 0)",
6+
"color(srgb 0% 0 0 / 0.5)", "color(srgb 0 0 0 / 0.5)",
7+
"color(srgb 20% 0 10/0.5)", "color(srgb 0.2 0 10 / 0.5)",
8+
"color(srgb 20% 0 10/50%)", "color(srgb 0.2 0 10 / 0.5)",
9+
"color(srgb 400% 0 10/50%)", "color(srgb 4 0 10 / 0.5)",
10+
"color(srgb 50% -160 160)", "color(srgb 0.5 -160 160)",
11+
"color(srgb 50% -200 200)", "color(srgb 0.5 -200 200)",
12+
"color(srgb 0 0 0 / -10%)", "color(srgb 0 0 0 / 0)",
13+
"color(srgb 0 0 0 / 110%)", "color(srgb 0 0 0)",
14+
"color(srgb 0 0 0 / 300%)", "color(srgb 0 0 0)",
15+
"color(srgb 50% -200)", "color(srgb 0.5 -200 0)",
16+
"color(srgb 50%)", "color(srgb 0.5 0 0)",
17+
"color(srgb )", "color(srgb 0 0 0)",
18+
"color(srgb 50% -200 / 0.5)", "color(srgb 0.5 -200 0 / 0.5)",
19+
"color(srgb 50% / 0.5)", "color(srgb 0.5 0 0 / 0.5)",
20+
"color(srgb / 0.5)", "color(srgb 0 0 0 / 0.5)",
21+
"color(srgb 200 200 200)", "color(srgb 200 200 200)",
22+
"color(srgb 200 200 200 / 200)", "color(srgb 200 200 200)",
23+
"color(srgb -200 -200 -200)", "color(srgb -200 -200 -200)",
24+
"color(srgb -200 -200 -200 / -200)", "color(srgb -200 -200 -200 / 0)",
25+
"color(srgb 200% 200% 200%)", "color(srgb 2 2 2)",
26+
"color(srgb 200% 200% 200% / 200%)", "color(srgb 2 2 2)",
27+
"color(srgb -200% -200% -200% / -200%)", "color(srgb -2 -2 -2 / 0)",
28+
"color(srgb-linear 0% 0% 0%)", "color(srgb-linear 0 0 0)",
29+
"color(srgb-linear 10% 10% 10%)", "color(srgb-linear 0.1 0.1 0.1)",
30+
"color(srgb-linear .2 .2 25%)", "color(srgb-linear 0.2 0.2 0.25)",
31+
"color(srgb-linear 0 0 0 / 1)", "color(srgb-linear 0 0 0)",
32+
"color(srgb-linear 0% 0 0 / 0.5)", "color(srgb-linear 0 0 0 / 0.5)",
33+
"color(srgb-linear 20% 0 10/0.5)", "color(srgb-linear 0.2 0 10 / 0.5)",
34+
"color(srgb-linear 20% 0 10/50%)", "color(srgb-linear 0.2 0 10 / 0.5)",
35+
"color(srgb-linear 400% 0 10/50%)", "color(srgb-linear 4 0 10 / 0.5)",
36+
"color(srgb-linear 50% -160 160)", "color(srgb-linear 0.5 -160 160)",
37+
"color(srgb-linear 50% -200 200)", "color(srgb-linear 0.5 -200 200)",
38+
"color(srgb-linear 0 0 0 / -10%)", "color(srgb-linear 0 0 0 / 0)",
39+
"color(srgb-linear 0 0 0 / 110%)", "color(srgb-linear 0 0 0)",
40+
"color(srgb-linear 0 0 0 / 300%)", "color(srgb-linear 0 0 0)",
41+
"color(srgb-linear 50% -200)", "color(srgb-linear 0.5 -200 0)",
42+
"color(srgb-linear 50%)", "color(srgb-linear 0.5 0 0)",
43+
"color(srgb-linear )", "color(srgb-linear 0 0 0)",
44+
"color(srgb-linear 50% -200 / 0.5)", "color(srgb-linear 0.5 -200 0 / 0.5)",
45+
"color(srgb-linear 50% / 0.5)", "color(srgb-linear 0.5 0 0 / 0.5)",
46+
"color(srgb-linear / 0.5)", "color(srgb-linear 0 0 0 / 0.5)",
47+
"color(srgb-linear 200 200 200)", "color(srgb-linear 200 200 200)",
48+
"color(srgb-linear 200 200 200 / 200)", "color(srgb-linear 200 200 200)",
49+
"color(srgb-linear -200 -200 -200)", "color(srgb-linear -200 -200 -200)",
50+
"color(srgb-linear -200 -200 -200 / -200)", "color(srgb-linear -200 -200 -200 / 0)",
51+
"color(srgb-linear 200% 200% 200%)", "color(srgb-linear 2 2 2)",
52+
"color(srgb-linear 200% 200% 200% / 200%)", "color(srgb-linear 2 2 2)",
53+
"color(srgb-linear -200% -200% -200% / -200%)", "color(srgb-linear -2 -2 -2 / 0)",
54+
"color(display-p3 0% 0% 0%)", "color(display-p3 0 0 0)",
55+
"color(display-p3 10% 10% 10%)", "color(display-p3 0.1 0.1 0.1)",
56+
"color(display-p3 .2 .2 25%)", "color(display-p3 0.2 0.2 0.25)",
57+
"color(display-p3 0 0 0 / 1)", "color(display-p3 0 0 0)",
58+
"color(display-p3 0% 0 0 / 0.5)", "color(display-p3 0 0 0 / 0.5)",
59+
"color(display-p3 20% 0 10/0.5)", "color(display-p3 0.2 0 10 / 0.5)",
60+
"color(display-p3 20% 0 10/50%)", "color(display-p3 0.2 0 10 / 0.5)",
61+
"color(display-p3 400% 0 10/50%)", "color(display-p3 4 0 10 / 0.5)",
62+
"color(display-p3 50% -160 160)", "color(display-p3 0.5 -160 160)",
63+
"color(display-p3 50% -200 200)", "color(display-p3 0.5 -200 200)",
64+
"color(display-p3 0 0 0 / -10%)", "color(display-p3 0 0 0 / 0)",
65+
"color(display-p3 0 0 0 / 110%)", "color(display-p3 0 0 0)",
66+
"color(display-p3 0 0 0 / 300%)", "color(display-p3 0 0 0)",
67+
"color(display-p3 50% -200)", "color(display-p3 0.5 -200 0)",
68+
"color(display-p3 50%)", "color(display-p3 0.5 0 0)",
69+
"color(display-p3 )", "color(display-p3 0 0 0)",
70+
"color(display-p3 50% -200 / 0.5)", "color(display-p3 0.5 -200 0 / 0.5)",
71+
"color(display-p3 50% / 0.5)", "color(display-p3 0.5 0 0 / 0.5)",
72+
"color(display-p3 / 0.5)", "color(display-p3 0 0 0 / 0.5)",
73+
"color(display-p3 200 200 200)", "color(display-p3 200 200 200)",
74+
"color(display-p3 200 200 200 / 200)", "color(display-p3 200 200 200)",
75+
"color(display-p3 -200 -200 -200)", "color(display-p3 -200 -200 -200)",
76+
"color(display-p3 -200 -200 -200 / -200)", "color(display-p3 -200 -200 -200 / 0)",
77+
"color(display-p3 200% 200% 200%)", "color(display-p3 2 2 2)",
78+
"color(display-p3 200% 200% 200% / 200%)", "color(display-p3 2 2 2)",
79+
"color(display-p3 -200% -200% -200% / -200%)", "color(display-p3 -2 -2 -2 / 0)",
80+
"color(a98-rgb 0% 0% 0%)", "color(a98-rgb 0 0 0)",
81+
"color(a98-rgb 10% 10% 10%)", "color(a98-rgb 0.1 0.1 0.1)",
82+
"color(a98-rgb .2 .2 25%)", "color(a98-rgb 0.2 0.2 0.25)",
83+
"color(a98-rgb 0 0 0 / 1)", "color(a98-rgb 0 0 0)",
84+
"color(a98-rgb 0% 0 0 / 0.5)", "color(a98-rgb 0 0 0 / 0.5)",
85+
"color(a98-rgb 20% 0 10/0.5)", "color(a98-rgb 0.2 0 10 / 0.5)",
86+
"color(a98-rgb 20% 0 10/50%)", "color(a98-rgb 0.2 0 10 / 0.5)",
87+
"color(a98-rgb 400% 0 10/50%)", "color(a98-rgb 4 0 10 / 0.5)",
88+
"color(a98-rgb 50% -160 160)", "color(a98-rgb 0.5 -160 160)",
89+
"color(a98-rgb 50% -200 200)", "color(a98-rgb 0.5 -200 200)",
90+
"color(a98-rgb 0 0 0 / -10%)", "color(a98-rgb 0 0 0 / 0)",
91+
"color(a98-rgb 0 0 0 / 110%)", "color(a98-rgb 0 0 0)",
92+
"color(a98-rgb 0 0 0 / 300%)", "color(a98-rgb 0 0 0)",
93+
"color(a98-rgb 50% -200)", "color(a98-rgb 0.5 -200 0)",
94+
"color(a98-rgb 50%)", "color(a98-rgb 0.5 0 0)",
95+
"color(a98-rgb )", "color(a98-rgb 0 0 0)",
96+
"color(a98-rgb 50% -200 / 0.5)", "color(a98-rgb 0.5 -200 0 / 0.5)",
97+
"color(a98-rgb 50% / 0.5)", "color(a98-rgb 0.5 0 0 / 0.5)",
98+
"color(a98-rgb / 0.5)", "color(a98-rgb 0 0 0 / 0.5)",
99+
"color(a98-rgb 200 200 200)", "color(a98-rgb 200 200 200)",
100+
"color(a98-rgb 200 200 200 / 200)", "color(a98-rgb 200 200 200)",
101+
"color(a98-rgb -200 -200 -200)", "color(a98-rgb -200 -200 -200)",
102+
"color(a98-rgb -200 -200 -200 / -200)", "color(a98-rgb -200 -200 -200 / 0)",
103+
"color(a98-rgb 200% 200% 200%)", "color(a98-rgb 2 2 2)",
104+
"color(a98-rgb 200% 200% 200% / 200%)", "color(a98-rgb 2 2 2)",
105+
"color(a98-rgb -200% -200% -200% / -200%)", "color(a98-rgb -2 -2 -2 / 0)",
106+
"color(prophoto-rgb 0% 0% 0%)", "color(prophoto-rgb 0 0 0)",
107+
"color(prophoto-rgb 10% 10% 10%)", "color(prophoto-rgb 0.1 0.1 0.1)",
108+
"color(prophoto-rgb .2 .2 25%)", "color(prophoto-rgb 0.2 0.2 0.25)",
109+
"color(prophoto-rgb 0 0 0 / 1)", "color(prophoto-rgb 0 0 0)",
110+
"color(prophoto-rgb 0% 0 0 / 0.5)", "color(prophoto-rgb 0 0 0 / 0.5)",
111+
"color(prophoto-rgb 20% 0 10/0.5)", "color(prophoto-rgb 0.2 0 10 / 0.5)",
112+
"color(prophoto-rgb 20% 0 10/50%)", "color(prophoto-rgb 0.2 0 10 / 0.5)",
113+
"color(prophoto-rgb 400% 0 10/50%)", "color(prophoto-rgb 4 0 10 / 0.5)",
114+
"color(prophoto-rgb 50% -160 160)", "color(prophoto-rgb 0.5 -160 160)",
115+
"color(prophoto-rgb 50% -200 200)", "color(prophoto-rgb 0.5 -200 200)",
116+
"color(prophoto-rgb 0 0 0 / -10%)", "color(prophoto-rgb 0 0 0 / 0)",
117+
"color(prophoto-rgb 0 0 0 / 110%)", "color(prophoto-rgb 0 0 0)",
118+
"color(prophoto-rgb 0 0 0 / 300%)", "color(prophoto-rgb 0 0 0)",
119+
"color(prophoto-rgb 50% -200)", "color(prophoto-rgb 0.5 -200 0)",
120+
"color(prophoto-rgb 50%)", "color(prophoto-rgb 0.5 0 0)",
121+
"color(prophoto-rgb )", "color(prophoto-rgb 0 0 0)",
122+
"color(prophoto-rgb 50% -200 / 0.5)", "color(prophoto-rgb 0.5 -200 0 / 0.5)",
123+
"color(prophoto-rgb 50% / 0.5)", "color(prophoto-rgb 0.5 0 0 / 0.5)",
124+
"color(prophoto-rgb / 0.5)", "color(prophoto-rgb 0 0 0 / 0.5)",
125+
"color(prophoto-rgb 200 200 200)", "color(prophoto-rgb 200 200 200)",
126+
"color(prophoto-rgb 200 200 200 / 200)", "color(prophoto-rgb 200 200 200)",
127+
"color(prophoto-rgb -200 -200 -200)", "color(prophoto-rgb -200 -200 -200)",
128+
"color(prophoto-rgb -200 -200 -200 / -200)", "color(prophoto-rgb -200 -200 -200 / 0)",
129+
"color(prophoto-rgb 200% 200% 200%)", "color(prophoto-rgb 2 2 2)",
130+
"color(prophoto-rgb 200% 200% 200% / 200%)", "color(prophoto-rgb 2 2 2)",
131+
"color(prophoto-rgb -200% -200% -200% / -200%)", "color(prophoto-rgb -2 -2 -2 / 0)",
132+
"color(rec2020 0% 0% 0%)", "color(rec2020 0 0 0)",
133+
"color(rec2020 10% 10% 10%)", "color(rec2020 0.1 0.1 0.1)",
134+
"color(rec2020 .2 .2 25%)", "color(rec2020 0.2 0.2 0.25)",
135+
"color(rec2020 0 0 0 / 1)", "color(rec2020 0 0 0)",
136+
"color(rec2020 0% 0 0 / 0.5)", "color(rec2020 0 0 0 / 0.5)",
137+
"color(rec2020 20% 0 10/0.5)", "color(rec2020 0.2 0 10 / 0.5)",
138+
"color(rec2020 20% 0 10/50%)", "color(rec2020 0.2 0 10 / 0.5)",
139+
"color(rec2020 400% 0 10/50%)", "color(rec2020 4 0 10 / 0.5)",
140+
"color(rec2020 50% -160 160)", "color(rec2020 0.5 -160 160)",
141+
"color(rec2020 50% -200 200)", "color(rec2020 0.5 -200 200)",
142+
"color(rec2020 0 0 0 / -10%)", "color(rec2020 0 0 0 / 0)",
143+
"color(rec2020 0 0 0 / 110%)", "color(rec2020 0 0 0)",
144+
"color(rec2020 0 0 0 / 300%)", "color(rec2020 0 0 0)",
145+
"color(rec2020 50% -200)", "color(rec2020 0.5 -200 0)",
146+
"color(rec2020 50%)", "color(rec2020 0.5 0 0)",
147+
"color(rec2020 )", "color(rec2020 0 0 0)",
148+
"color(rec2020 50% -200 / 0.5)", "color(rec2020 0.5 -200 0 / 0.5)",
149+
"color(rec2020 50% / 0.5)", "color(rec2020 0.5 0 0 / 0.5)",
150+
"color(rec2020 / 0.5)", "color(rec2020 0 0 0 / 0.5)",
151+
"color(rec2020 200 200 200)", "color(rec2020 200 200 200)",
152+
"color(rec2020 200 200 200 / 200)", "color(rec2020 200 200 200)",
153+
"color(rec2020 -200 -200 -200)", "color(rec2020 -200 -200 -200)",
154+
"color(rec2020 -200 -200 -200 / -200)", "color(rec2020 -200 -200 -200 / 0)",
155+
"color(rec2020 200% 200% 200%)", "color(rec2020 2 2 2)",
156+
"color(rec2020 200% 200% 200% / 200%)", "color(rec2020 2 2 2)",
157+
"color(rec2020 -200% -200% -200% / -200%)", "color(rec2020 -2 -2 -2 / 0)",
158+
"color(xyz 0% 0% 0%)", "color(xyz-d65 0 0 0)",
159+
"color(xyz 10% 10% 10%)", "color(xyz-d65 0.1 0.1 0.1)",
160+
"color(xyz .2 .2 25%)", "color(xyz-d65 0.2 0.2 0.25)",
161+
"color(xyz 0 0 0 / 1)", "color(xyz-d65 0 0 0)",
162+
"color(xyz 0% 0 0 / 0.5)", "color(xyz-d65 0 0 0 / 0.5)",
163+
"color(xyz 20% 0 10/0.5)", "color(xyz-d65 0.2 0 10 / 0.5)",
164+
"color(xyz 20% 0 10/50%)", "color(xyz-d65 0.2 0 10 / 0.5)",
165+
"color(xyz 400% 0 10/50%)", "color(xyz-d65 4 0 10 / 0.5)",
166+
"color(xyz 50% -160 160)", "color(xyz-d65 0.5 -160 160)",
167+
"color(xyz 50% -200 200)", "color(xyz-d65 0.5 -200 200)",
168+
"color(xyz 0 0 0 / -10%)", "color(xyz-d65 0 0 0 / 0)",
169+
"color(xyz 0 0 0 / 110%)", "color(xyz-d65 0 0 0)",
170+
"color(xyz 0 0 0 / 300%)", "color(xyz-d65 0 0 0)",
171+
"color(xyz 50% -200)", "color(xyz-d65 0.5 -200 0)",
172+
"color(xyz 50%)", "color(xyz-d65 0.5 0 0)",
173+
"color(xyz )", "color(xyz-d65 0 0 0)",
174+
"color(xyz 50% -200 / 0.5)", "color(xyz-d65 0.5 -200 0 / 0.5)",
175+
"color(xyz 50% / 0.5)", "color(xyz-d65 0.5 0 0 / 0.5)",
176+
"color(xyz / 0.5)", "color(xyz-d65 0 0 0 / 0.5)",
177+
"color(xyz 200 200 200)", "color(xyz-d65 200 200 200)",
178+
"color(xyz 200 200 200 / 200)", "color(xyz-d65 200 200 200)",
179+
"color(xyz -200 -200 -200)", "color(xyz-d65 -200 -200 -200)",
180+
"color(xyz -200 -200 -200 / -200)", "color(xyz-d65 -200 -200 -200 / 0)",
181+
"color(xyz 200% 200% 200%)", "color(xyz-d65 2 2 2)",
182+
"color(xyz 200% 200% 200% / 200%)", "color(xyz-d65 2 2 2)",
183+
"color(xyz -200% -200% -200% / -200%)", "color(xyz-d65 -2 -2 -2 / 0)",
184+
"color(xyz-d50 0% 0% 0%)", "color(xyz-d50 0 0 0)",
185+
"color(xyz-d50 10% 10% 10%)", "color(xyz-d50 0.1 0.1 0.1)",
186+
"color(xyz-d50 .2 .2 25%)", "color(xyz-d50 0.2 0.2 0.25)",
187+
"color(xyz-d50 0 0 0 / 1)", "color(xyz-d50 0 0 0)",
188+
"color(xyz-d50 0% 0 0 / 0.5)", "color(xyz-d50 0 0 0 / 0.5)",
189+
"color(xyz-d50 20% 0 10/0.5)", "color(xyz-d50 0.2 0 10 / 0.5)",
190+
"color(xyz-d50 20% 0 10/50%)", "color(xyz-d50 0.2 0 10 / 0.5)",
191+
"color(xyz-d50 400% 0 10/50%)", "color(xyz-d50 4 0 10 / 0.5)",
192+
"color(xyz-d50 50% -160 160)", "color(xyz-d50 0.5 -160 160)",
193+
"color(xyz-d50 50% -200 200)", "color(xyz-d50 0.5 -200 200)",
194+
"color(xyz-d50 0 0 0 / -10%)", "color(xyz-d50 0 0 0 / 0)",
195+
"color(xyz-d50 0 0 0 / 110%)", "color(xyz-d50 0 0 0)",
196+
"color(xyz-d50 0 0 0 / 300%)", "color(xyz-d50 0 0 0)",
197+
"color(xyz-d50 50% -200)", "color(xyz-d50 0.5 -200 0)",
198+
"color(xyz-d50 50%)", "color(xyz-d50 0.5 0 0)",
199+
"color(xyz-d50 )", "color(xyz-d50 0 0 0)",
200+
"color(xyz-d50 50% -200 / 0.5)", "color(xyz-d50 0.5 -200 0 / 0.5)",
201+
"color(xyz-d50 50% / 0.5)", "color(xyz-d50 0.5 0 0 / 0.5)",
202+
"color(xyz-d50 / 0.5)", "color(xyz-d50 0 0 0 / 0.5)",
203+
"color(xyz-d50 200 200 200)", "color(xyz-d50 200 200 200)",
204+
"color(xyz-d50 200 200 200 / 200)", "color(xyz-d50 200 200 200)",
205+
"color(xyz-d50 -200 -200 -200)", "color(xyz-d50 -200 -200 -200)",
206+
"color(xyz-d50 -200 -200 -200 / -200)", "color(xyz-d50 -200 -200 -200 / 0)",
207+
"color(xyz-d50 200% 200% 200%)", "color(xyz-d50 2 2 2)",
208+
"color(xyz-d50 200% 200% 200% / 200%)", "color(xyz-d50 2 2 2)",
209+
"color(xyz-d50 -200% -200% -200% / -200%)", "color(xyz-d50 -2 -2 -2 / 0)",
210+
"color(xyz-d65 0% 0% 0%)", "color(xyz-d65 0 0 0)",
211+
"color(xyz-d65 10% 10% 10%)", "color(xyz-d65 0.1 0.1 0.1)",
212+
"color(xyz-d65 .2 .2 25%)", "color(xyz-d65 0.2 0.2 0.25)",
213+
"color(xyz-d65 0 0 0 / 1)", "color(xyz-d65 0 0 0)",
214+
"color(xyz-d65 0% 0 0 / 0.5)", "color(xyz-d65 0 0 0 / 0.5)",
215+
"color(xyz-d65 20% 0 10/0.5)", "color(xyz-d65 0.2 0 10 / 0.5)",
216+
"color(xyz-d65 20% 0 10/50%)", "color(xyz-d65 0.2 0 10 / 0.5)",
217+
"color(xyz-d65 400% 0 10/50%)", "color(xyz-d65 4 0 10 / 0.5)",
218+
"color(xyz-d65 50% -160 160)", "color(xyz-d65 0.5 -160 160)",
219+
"color(xyz-d65 50% -200 200)", "color(xyz-d65 0.5 -200 200)",
220+
"color(xyz-d65 0 0 0 / -10%)", "color(xyz-d65 0 0 0 / 0)",
221+
"color(xyz-d65 0 0 0 / 110%)", "color(xyz-d65 0 0 0)",
222+
"color(xyz-d65 0 0 0 / 300%)", "color(xyz-d65 0 0 0)",
223+
"color(xyz-d65 50% -200)", "color(xyz-d65 0.5 -200 0)",
224+
"color(xyz-d65 50%)", "color(xyz-d65 0.5 0 0)",
225+
"color(xyz-d65 )", "color(xyz-d65 0 0 0)",
226+
"color(xyz-d65 50% -200 / 0.5)", "color(xyz-d65 0.5 -200 0 / 0.5)",
227+
"color(xyz-d65 50% / 0.5)", "color(xyz-d65 0.5 0 0 / 0.5)",
228+
"color(xyz-d65 / 0.5)", "color(xyz-d65 0 0 0 / 0.5)",
229+
"color(xyz-d65 200 200 200)", "color(xyz-d65 200 200 200)",
230+
"color(xyz-d65 200 200 200 / 200)", "color(xyz-d65 200 200 200)",
231+
"color(xyz-d65 -200 -200 -200)", "color(xyz-d65 -200 -200 -200)",
232+
"color(xyz-d65 -200 -200 -200 / -200)", "color(xyz-d65 -200 -200 -200 / 0)",
233+
"color(xyz-d65 200% 200% 200%)", "color(xyz-d65 2 2 2)",
234+
"color(xyz-d65 200% 200% 200% / 200%)", "color(xyz-d65 2 2 2)",
235+
"color(xyz-d65 -200% -200% -200% / -200%)", "color(xyz-d65 -2 -2 -2 / 0)"
3236
]
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
COLOR_SPACES = [
2+
'srgb',
3+
'srgb-linear',
4+
'display-p3',
5+
'a98-rgb',
6+
'prophoto-rgb',
7+
'rec2020',
8+
'xyz',
9+
'xyz-d50',
10+
'xyz-d65'
11+
]
12+
PERMUTATIONS = [
13+
('0% 0% 0%', '0 0 0'),
14+
('10% 10% 10%', '0.1 0.1 0.1'),
15+
('.2 .2 25%', '0.2 0.2 0.25'),
16+
('0 0 0 / 1', '0 0 0'),
17+
('0% 0 0 / 0.5', '0 0 0 / 0.5'),
18+
('20% 0 10/0.5', '0.2 0 10 / 0.5'),
19+
('20% 0 10/50%', '0.2 0 10 / 0.5'),
20+
('400% 0 10/50%', '4 0 10 / 0.5'),
21+
('50% -160 160', '0.5 -160 160'),
22+
('50% -200 200', '0.5 -200 200'),
23+
('0 0 0 / -10%', '0 0 0 / 0'),
24+
('0 0 0 / 110%', '0 0 0'),
25+
('0 0 0 / 300%', '0 0 0'),
26+
('50% -200', '0.5 -200 0'),
27+
('50%', '0.5 0 0'),
28+
('', '0 0 0'),
29+
('50% -200 / 0.5', '0.5 -200 0 / 0.5'),
30+
('50% / 0.5', '0.5 0 0 / 0.5'),
31+
('/ 0.5', '0 0 0 / 0.5'),
32+
('200 200 200', '200 200 200'),
33+
('200 200 200 / 200', '200 200 200'),
34+
('-200 -200 -200', '-200 -200 -200'),
35+
('-200 -200 -200 / -200', '-200 -200 -200 / 0'),
36+
('200% 200% 200%', '2 2 2'),
37+
('200% 200% 200% / 200%', '2 2 2'),
38+
('-200% -200% -200% / -200%', '-2 -2 -2 / 0'),
39+
]
40+
41+
42+
def result_color_space(color_space):
43+
if color_space == 'xyz':
44+
return 'xyz-d65'
45+
else:
46+
return color_space
47+
48+
49+
lines = []
50+
for color_space in COLOR_SPACES:
51+
for permutation in PERMUTATIONS:
52+
lines.append(' "color({} {})", "color({} {})"'.format(
53+
color_space, permutation[0], result_color_space(color_space), permutation[1]))
54+
55+
56+
print("[")
57+
print(',\n'.join(lines))
58+
print("]")

0 commit comments

Comments
 (0)