1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#[derive(Debug, Clone, Copy, PartialEq, PartialOrd)]
pub struct Xyz {
pub x: f32,
pub y: f32,
pub z: f32,
}
impl crate::ColorSpace for Xyz {
const BLACK: Self = Self {
x: 0.0,
y: 0.0,
z: 0.0,
};
const WHITE: Self = Self {
x: 0.95047003,
y: 1.0,
z: 0.108883,
};
fn in_bounds(self) -> bool {
crate::approx_in_range(self.x, 0.0..0.95047003)
&& crate::approx_in_range(self.y, 0.0..1.0)
&& crate::approx_in_range(self.z, 0.0..1.08883)
}
}
impl crate::CoreColorSpace for Xyz {
fn from_xyz(xyz: Xyz) -> Self {
xyz
}
fn to_xyz(self) -> Xyz {
self
}
}