colorbox/
chroma.rs

1//! Chromaticity coordinates.
2
3pub const WHITEPOINT_E: (f64, f64) = (1.0 / 3.0, 1.0 / 3.0);
4pub const WHITEPOINT_D65: (f64, f64) = (0.31271, 0.32902);
5
6/// The chromaticities of a (usually) RGB color space.
7///
8/// The coordinates are CIE 1931 xy chromaticity coordinates unless
9/// otherwise specified.
10///
11/// `w` is the white point.
12#[derive(Debug, Copy, Clone, PartialEq)]
13pub struct Chromaticities {
14    pub r: (f64, f64),
15    pub g: (f64, f64),
16    pub b: (f64, f64),
17    pub w: (f64, f64),
18}
19
20/// Rec.709/sRGB chromaticities.
21pub const REC709: Chromaticities = Chromaticities {
22    r: (0.640, 0.330),
23    g: (0.300, 0.600),
24    b: (0.150, 0.060),
25    w: (0.3127, 0.3290),
26};
27
28/// Rec.2020 chromaticities.
29pub const REC2020: Chromaticities = Chromaticities {
30    r: (0.708, 0.292),
31    g: (0.170, 0.797),
32    b: (0.131, 0.046),
33    w: (0.3127, 0.3290),
34};
35
36/// DCI-P3 chromaticities.
37pub const DCI_P3: Chromaticities = Chromaticities {
38    r: (0.680, 0.320),
39    g: (0.265, 0.690),
40    b: (0.150, 0.060),
41    w: (0.314, 0.351),
42};
43
44/// Display P3 chromaticities.
45///
46/// Defined by Apple.  The R, G, and B primaries are the same as DCI-P3,
47/// but the white point is D65.
48pub const DISPLAY_P3: Chromaticities = Chromaticities {
49    r: (0.680, 0.320),
50    g: (0.265, 0.690),
51    b: (0.150, 0.060),
52    w: (0.3127, 0.3290),
53};
54
55/// ACES AP0 chromaticities.
56///
57/// These are the chromaticities of the ACES2065-1 color space.
58pub const ACES_AP0: Chromaticities = Chromaticities {
59    r: (0.73470, 0.26530),
60    g: (0.00000, 1.00000),
61    b: (0.00010, -0.07700),
62    w: (0.32168, 0.33767),
63};
64
65/// ACES AP1 chromaticities.
66///
67/// These are the chromaticities of e.g. the ACEScg, ACEScc, and
68/// ACEScct color spaces.
69pub const ACES_AP1: Chromaticities = Chromaticities {
70    r: (0.71300, 0.29300),
71    g: (0.16500, 0.83000),
72    b: (0.12800, 0.04400),
73    w: (0.32168, 0.33767),
74};
75
76//-------------------------------------------------------------
77// Various vendor-specific color spaces.
78
79/// Adobe RGB chromaticities.
80pub const ADOBE_RGB: Chromaticities = Chromaticities {
81    r: (0.6400, 0.3300),
82    g: (0.2100, 0.7100),
83    b: (0.1500, 0.0600),
84    w: (0.3127, 0.3290),
85};
86
87/// Adobe Wide-gamut RGB chromaticities.
88pub const ADOBE_WIDE_GAMUT_RGB: Chromaticities = Chromaticities {
89    r: (0.7347, 0.2653),
90    g: (0.1152, 0.8264),
91    b: (0.1566, 0.0177),
92    w: (0.3457, 0.3585),
93};
94
95/// ARRI Wide Gamut 3 (a.k.a. ALEXA Wide Gamut RGB).
96pub const ARRI_WIDE_GAMUT_3: Chromaticities = Chromaticities {
97    r: (0.6840, 0.3130),
98    g: (0.2210, 0.8480),
99    b: (0.0861, -0.1020),
100    w: (0.3127, 0.3290),
101};
102
103/// ARRI Wide Gamut 4.
104pub const ARRI_WIDE_GAMUT_4: Chromaticities = Chromaticities {
105    r: (0.7347, 0.2653),
106    g: (0.1424, 0.8576),
107    b: (0.0991, -0.0308),
108    w: (0.3127, 0.3290),
109};
110
111/// Canon Cinema Gamut.
112pub const CANON_CINEMA_GAMUT: Chromaticities = Chromaticities {
113    r: (0.7400, 0.2700),
114    g: (0.1700, 1.1400),
115    b: (0.0800, -0.1000),
116    w: (0.3127, 0.3290),
117};
118
119/// DJI D-Gamut chromaticities.
120pub const DJI_D_GAMUT: Chromaticities = Chromaticities {
121    r: (0.7100, 0.3100),
122    g: (0.2100, 0.8800),
123    b: (0.0900, -0.0800),
124    w: (0.3127, 0.3290),
125};
126
127/// FilmLight's E-Gamut.
128pub const E_GAMUT: Chromaticities = Chromaticities {
129    r: (0.8000, 0.3177),
130    g: (0.1800, 0.9000),
131    b: (0.0650, -0.0805),
132    w: (0.3127, 0.3290),
133};
134
135/// Panasonic V-Gamut chromaticities.
136pub const PANASONIC_V_GAMUT: Chromaticities = Chromaticities {
137    r: (0.7300, 0.2800),
138    g: (0.1650, 0.8400),
139    b: (0.1000, -0.0300),
140    w: (0.3127, 0.3290),
141};
142
143/// Kodak ProPhoto RGB chromaticities.
144pub const PROPHOTO: Chromaticities = Chromaticities {
145    r: (0.734699, 0.265301),
146    g: (0.159597, 0.840403),
147    b: (0.036598, 0.000105),
148    w: (0.345704, 0.358540),
149};
150
151/// RED Wide Gamut RGB.
152///
153/// From page 1 of "White paper on REDWideGamutRGB and Log3G10" from RED.
154pub const RED_WIDE_GAMUT_RGB: Chromaticities = Chromaticities {
155    r: (0.780308, 0.304253),
156    g: (0.121595, 1.493994),
157    b: (0.095612, -0.084589),
158    w: (0.3127, 0.3290),
159};
160
161/// Blackmagic Design's color spaces.
162pub mod blackmagic {
163    use super::*;
164
165    /// BMD Wide Gamut Gen4/Gen5.
166    pub const BMD_WIDE_GAMUT_GEN4: Chromaticities = Chromaticities {
167        r: (0.7177215, 0.3171181),
168        g: (0.2280410, 0.8615690),
169        b: (0.1005841, -0.0820452),
170        w: (0.3127170, 0.3290312),
171    };
172
173    /// BMD 4k Film Gen1.
174    pub const BMD_4K_FILM_GEN1: Chromaticities = Chromaticities {
175        r: (0.7422, 0.2859),
176        g: (0.4140, 1.3035),
177        b: (0.0342, -0.0833),
178        w: (0.3135, 0.3305),
179    };
180
181    /// BMD 4k Film Gen3.
182    pub const BMD_4K_FILM_GEN3: Chromaticities = Chromaticities {
183        r: (1.0625, 0.3948),
184        g: (0.3689, 0.7775),
185        b: (0.0956, 0.0332),
186        w: (0.3135, 0.3305),
187    };
188
189    /// BMD 4.6k Film Gen1.
190    pub const BMD_4_6K_FILM_GEN1: Chromaticities = Chromaticities {
191        r: (0.9175, 0.2983),
192        g: (0.2982, 1.2835),
193        b: (0.0756, -0.0860),
194        w: (0.3127, 0.3290),
195    };
196
197    /// BMD 4.6k Film Gen3.
198    pub const BMD_4_6K_FILM_GEN3: Chromaticities = Chromaticities {
199        r: (0.8608, 0.3689),
200        g: (0.3282, 0.6156),
201        b: (0.0783, -0.0233),
202        w: (0.3127, 0.3290),
203    };
204
205    /// BMD Film Gen1.
206    pub const BMD_FILM_GEN1: Chromaticities = Chromaticities {
207        r: (0.9173, 0.2502),
208        g: (0.2833, 1.7072),
209        b: (0.0856, -0.0708),
210        w: (0.3135, 0.3305),
211    };
212
213    /// BMD Pocket 4K Film Gen 4.
214    pub const BMD_POCKET_4K_FILM_GEN4: Chromaticities = Chromaticities {
215        r: (0.717722, 0.317118),
216        g: (0.228041, 0.861569),
217        b: (0.100584, -0.082045),
218        w: (0.3127, 0.3290),
219    };
220
221    /// BMD Video Gen 4.
222    pub const BMD_VIDEO_GEN4: Chromaticities = Chromaticities {
223        r: (0.682777, 0.318592),
224        g: (0.237613, 0.813547),
225        b: (0.121743, -0.044283),
226        w: (0.3127, 0.3290),
227    };
228
229    /// BMD Video Gen 5.
230    pub const BMD_VIDEO_GEN5: Chromaticities = Chromaticities {
231        r: (0.640000, 0.330000),
232        g: (0.300000, 0.600000),
233        b: (0.150000, 0.060000),
234        w: (0.3127, 0.3290),
235    };
236
237    /// DaVinci Wide Gamut BMD Video Gen 5.
238    pub const DAVINCI_WIDE_GAMUT: Chromaticities = Chromaticities {
239        r: (0.8000, 0.3130),
240        g: (0.1682, 0.9877),
241        b: (0.0790, -0.1155),
242        w: (0.3127, 0.3290),
243    };
244}
245
246/// Sony's color spaces.
247pub mod sony {
248    use super::*;
249    /// Sony S-Gamut/S-Gamut3 chromaticities.
250    ///
251    /// Yes, S-Gamut and S-Gamut3 have exactly the same chromaticities,
252    /// as per page 7 of "Technical Summary for S-Gamut3.Cine/S-Log3 and
253    /// S-Gamut3/S-Log3" from Sony.
254    pub const S_GAMUT: Chromaticities = Chromaticities {
255        r: (0.7300, 0.2800),
256        g: (0.1400, 0.8550),
257        b: (0.1000, -0.0500),
258        w: (0.3127, 0.3290),
259    };
260
261    /// Sony S-Gamut3.Cine chromaticities.
262    ///
263    /// From page 7 of "Technical Summary for S-Gamut3.Cine/S-Log3
264    /// and S-Gamut3/S-Log3" from Sony.
265    pub const S_GAMUT3_CINE: Chromaticities = Chromaticities {
266        r: (0.7660, 0.2750),
267        g: (0.2250, 0.8000),
268        b: (0.0890, -0.0870),
269        w: (0.3127, 0.3290),
270    };
271}