math2d/
color.rs

1//! RGBA Colors. Many colors have predefined constants for convenience.
2
3#[cfg(all(windows, feature = "d2d"))]
4use winapi::um::d2dbasetypes::D2D_COLOR_F;
5
6/// Describes the red, green, blue, and alpha components of a color.
7#[derive(Copy, Clone, Debug, PartialEq)]
8#[cfg_attr(feature = "serde_derive", derive(Serialize, Deserialize))]
9#[repr(C)]
10pub struct Color {
11    /// Red channel [0.0, 1.0]
12    pub r: f32,
13    /// Green channel [0.0, 1.0]
14    pub g: f32,
15    /// Blue channel [0.0, 1.0]
16    pub b: f32,
17    /// Alpha channel [0.0, 1.0]
18    pub a: f32,
19}
20
21impl Color {
22    /// Construct a color from its floating components
23    #[inline]
24    pub fn new(r: f32, g: f32, b: f32, a: f32) -> Color {
25        Color { r, g, b, a }
26    }
27
28    /// Construct a color from its hexidecimal RGB color and floating point
29    /// alpha channel. `rgb` is interpreted as `0xRRGGBB`
30    #[inline]
31    pub fn from_u32(rgb: u32, a: f32) -> Color {
32        Color {
33            r: ((rgb >> 16) & 0xFF) as f32 / 255.0,
34            g: ((rgb >> 8) & 0xFF) as f32 / 255.0,
35            b: ((rgb >> 0) & 0xFF) as f32 / 255.0,
36            a: a,
37        }
38    }
39
40    /// Linearly interpolate between two colors. `0.0` will return `self` as-is
41    /// and `1.0` will return `other` as-is.
42    #[inline]
43    pub fn lerp(&self, other: &Color, t: f32) -> Color {
44        let ti = 1.0 - t;
45        Color {
46            r: self.r * ti + other.r * t,
47            g: self.g * ti + other.g * t,
48            b: self.b * ti + other.b * t,
49            a: self.a * ti + other.a * t,
50        }
51    }
52}
53
54impl Default for Color {
55    #[inline]
56    fn default() -> Self {
57        Color::from(0)
58    }
59}
60
61impl<'a> From<&'a Color> for Color {
62    #[inline]
63    fn from(color: &'a Color) -> Color {
64        *color
65    }
66}
67
68impl From<u32> for Color {
69    #[inline]
70    fn from(rgb: u32) -> Color {
71        Color::from_u32(rgb, 1.0)
72    }
73}
74
75impl From<(u32, f32)> for Color {
76    #[inline]
77    fn from((rgb, a): (u32, f32)) -> Color {
78        Color::from_u32(rgb, a)
79    }
80}
81
82#[cfg(all(windows, feature = "d2d"))]
83impl From<Color> for D2D_COLOR_F {
84    #[inline]
85    fn from(color: Color) -> D2D_COLOR_F {
86        let Color { r, g, b, a } = color;
87        D2D_COLOR_F { r, g, b, a }
88    }
89}
90
91#[cfg(all(windows, feature = "d2d"))]
92impl From<D2D_COLOR_F> for Color {
93    #[inline]
94    fn from(color: D2D_COLOR_F) -> Color {
95        let D2D_COLOR_F { r, g, b, a } = color;
96        Color { r, g, b, a }
97    }
98}
99
100// TODO: Replace this with a const fn when it's stable
101macro_rules! define_color {
102    ($r:expr, $g:expr, $b:expr) => {
103        Color {
104            r: $r as f32 / 255.0,
105            g: $g as f32 / 255.0,
106            b: $b as f32 / 255.0,
107            a: 1.0,
108        }
109    };
110}
111
112/// <div style="background-color: #F0F8FF; width: 25px; height: 25px"></div>
113pub const ALICE_BLUE: Color = define_color!(0xF0, 0xF8, 0xFF);
114/// <div style="background-color: #FAEBD7; width: 25px; height: 25px"></div>
115pub const ANTIQUE_WHITE: Color = define_color!(0xFA, 0xEB, 0xD7);
116/// <div style="background-color: #00FFFF; width: 25px; height: 25px"></div>
117pub const AQUA: Color = define_color!(0x00, 0xFF, 0xFF);
118/// <div style="background-color: #7FFFD4; width: 25px; height: 25px"></div>
119pub const AQUAMARINE: Color = define_color!(0x7F, 0xFF, 0xD4);
120/// <div style="background-color: #F0FFFF; width: 25px; height: 25px"></div>
121pub const AZURE: Color = define_color!(0xF0, 0xFF, 0xFF);
122/// <div style="background-color: #F5F5DC; width: 25px; height: 25px"></div>
123pub const BEIGE: Color = define_color!(0xF5, 0xF5, 0xDC);
124/// <div style="background-color: #FFE4C4; width: 25px; height: 25px"></div>
125pub const BISQUE: Color = define_color!(0xFF, 0xE4, 0xC4);
126/// <div style="background-color: #000000; width: 25px; height: 25px"></div>
127pub const BLACK: Color = define_color!(0x00, 0x00, 0x00);
128/// <div style="background-color: #FFEBCD; width: 25px; height: 25px"></div>
129pub const BLANCHED_ALMOND: Color = define_color!(0xFF, 0xEB, 0xCD);
130/// <div style="background-color: #0000FF; width: 25px; height: 25px"></div>
131pub const BLUE: Color = define_color!(0x00, 0x00, 0xFF);
132/// <div style="background-color: #8A2BE2; width: 25px; height: 25px"></div>
133pub const BLUE_VIOLET: Color = define_color!(0x8A, 0x2B, 0xE2);
134/// <div style="background-color: #A52A2A; width: 25px; height: 25px"></div>
135pub const BROWN: Color = define_color!(0xA5, 0x2A, 0x2A);
136/// <div style="background-color: #DEB887; width: 25px; height: 25px"></div>
137pub const BURLY_WOOD: Color = define_color!(0xDE, 0xB8, 0x87);
138/// <div style="background-color: #5F9EA0; width: 25px; height: 25px"></div>
139pub const CADET_BLUE: Color = define_color!(0x5F, 0x9E, 0xA0);
140/// <div style="background-color: #7FFF00; width: 25px; height: 25px"></div>
141pub const CHARTREUSE: Color = define_color!(0x7F, 0xFF, 0x00);
142/// <div style="background-color: #D2691E; width: 25px; height: 25px"></div>
143pub const CHOCOLATE: Color = define_color!(0xD2, 0x69, 0x1E);
144/// <div style="background-color: #FF7F50; width: 25px; height: 25px"></div>
145pub const CORAL: Color = define_color!(0xFF, 0x7F, 0x50);
146/// <div style="background-color: #6495ED; width: 25px; height: 25px"></div>
147pub const CORNFLOWER_BLUE: Color = define_color!(0x64, 0x95, 0xED);
148/// <div style="background-color: #FFF8DC; width: 25px; height: 25px"></div>
149pub const CORNSILK: Color = define_color!(0xFF, 0xF8, 0xDC);
150/// <div style="background-color: #DC143C; width: 25px; height: 25px"></div>
151pub const CRIMSON: Color = define_color!(0xDC, 0x14, 0x3C);
152/// <div style="background-color: #00FFFF; width: 25px; height: 25px"></div>
153pub const CYAN: Color = define_color!(0x00, 0xFF, 0xFF);
154/// <div style="background-color: #00008B; width: 25px; height: 25px"></div>
155pub const DARK_BLUE: Color = define_color!(0x00, 0x00, 0x8B);
156/// <div style="background-color: #008B8B; width: 25px; height: 25px"></div>
157pub const DARK_CYAN: Color = define_color!(0x00, 0x8B, 0x8B);
158/// <div style="background-color: #B8860B; width: 25px; height: 25px"></div>
159pub const DARK_GOLDENROD: Color = define_color!(0xB8, 0x86, 0x0B);
160/// <div style="background-color: #A9A9A9; width: 25px; height: 25px"></div>
161pub const DARK_GRAY: Color = define_color!(0xA9, 0xA9, 0xA9);
162/// <div style="background-color: #006400; width: 25px; height: 25px"></div>
163pub const DARK_GREEN: Color = define_color!(0x00, 0x64, 0x00);
164/// <div style="background-color: #BDB76B; width: 25px; height: 25px"></div>
165pub const DARK_KHAKI: Color = define_color!(0xBD, 0xB7, 0x6B);
166/// <div style="background-color: #8B008B; width: 25px; height: 25px"></div>
167pub const DARK_MAGENTA: Color = define_color!(0x8B, 0x00, 0x8B);
168/// <div style="background-color: #556B2F; width: 25px; height: 25px"></div>
169pub const DARK_OLIVEGREEN: Color = define_color!(0x55, 0x6B, 0x2F);
170/// <div style="background-color: #FF8C00; width: 25px; height: 25px"></div>
171pub const DARK_ORANGE: Color = define_color!(0xFF, 0x8C, 0x00);
172/// <div style="background-color: #9932CC; width: 25px; height: 25px"></div>
173pub const DARK_ORCHID: Color = define_color!(0x99, 0x32, 0xCC);
174/// <div style="background-color: #8B0000; width: 25px; height: 25px"></div>
175pub const DARK_RED: Color = define_color!(0x8B, 0x00, 0x00);
176/// <div style="background-color: #E9967A; width: 25px; height: 25px"></div>
177pub const DARK_SALMON: Color = define_color!(0xE9, 0x96, 0x7A);
178/// <div style="background-color: #8FBC8F; width: 25px; height: 25px"></div>
179pub const DARK_SEAGREEN: Color = define_color!(0x8F, 0xBC, 0x8F);
180/// <div style="background-color: #483D8B; width: 25px; height: 25px"></div>
181pub const DARK_SLATEBLUE: Color = define_color!(0x48, 0x3D, 0x8B);
182/// <div style="background-color: #2F4F4F; width: 25px; height: 25px"></div>
183pub const DARK_SLATEGRAY: Color = define_color!(0x2F, 0x4F, 0x4F);
184/// <div style="background-color: #00CED1; width: 25px; height: 25px"></div>
185pub const DARK_TURQUOISE: Color = define_color!(0x00, 0xCE, 0xD1);
186/// <div style="background-color: #9400D3; width: 25px; height: 25px"></div>
187pub const DARK_VIOLET: Color = define_color!(0x94, 0x00, 0xD3);
188/// <div style="background-color: #FF1493; width: 25px; height: 25px"></div>
189pub const DEEP_PINK: Color = define_color!(0xFF, 0x14, 0x93);
190/// <div style="background-color: #00BFFF; width: 25px; height: 25px"></div>
191pub const DEEP_SKYBLUE: Color = define_color!(0x00, 0xBF, 0xFF);
192/// <div style="background-color: #696969; width: 25px; height: 25px"></div>
193pub const DIM_GRAY: Color = define_color!(0x69, 0x69, 0x69);
194/// <div style="background-color: #1E90FF; width: 25px; height: 25px"></div>
195pub const DODGER_BLUE: Color = define_color!(0x1E, 0x90, 0xFF);
196/// <div style="background-color: #B22222; width: 25px; height: 25px"></div>
197pub const FIREBRICK: Color = define_color!(0xB2, 0x22, 0x22);
198/// <div style="background-color: #FFFAF0; width: 25px; height: 25px"></div>
199pub const FLORAL_WHITE: Color = define_color!(0xFF, 0xFA, 0xF0);
200/// <div style="background-color: #228B22; width: 25px; height: 25px"></div>
201pub const FOREST_GREEN: Color = define_color!(0x22, 0x8B, 0x22);
202/// <div style="background-color: #FF00FF; width: 25px; height: 25px"></div>
203pub const FUCHSIA: Color = define_color!(0xFF, 0x00, 0xFF);
204/// <div style="background-color: #DCDCDC; width: 25px; height: 25px"></div>
205pub const GAINSBORO: Color = define_color!(0xDC, 0xDC, 0xDC);
206/// <div style="background-color: #F8F8FF; width: 25px; height: 25px"></div>
207pub const GHOST_WHITE: Color = define_color!(0xF8, 0xF8, 0xFF);
208/// <div style="background-color: #FFD700; width: 25px; height: 25px"></div>
209pub const GOLD: Color = define_color!(0xFF, 0xD7, 0x00);
210/// <div style="background-color: #DAA520; width: 25px; height: 25px"></div>
211pub const GOLDENROD: Color = define_color!(0xDA, 0xA5, 0x20);
212/// <div style="background-color: #808080; width: 25px; height: 25px"></div>
213pub const GRAY: Color = define_color!(0x80, 0x80, 0x80);
214/// <div style="background-color: #008000; width: 25px; height: 25px"></div>
215pub const GREEN: Color = define_color!(0x00, 0x80, 0x00);
216/// <div style="background-color: #ADFF2F; width: 25px; height: 25px"></div>
217pub const GREEN_YELLOW: Color = define_color!(0xAD, 0xFF, 0x2F);
218/// <div style="background-color: #F0FFF0; width: 25px; height: 25px"></div>
219pub const HONEYDEW: Color = define_color!(0xF0, 0xFF, 0xF0);
220/// <div style="background-color: #FF69B4; width: 25px; height: 25px"></div>
221pub const HOT_PINK: Color = define_color!(0xFF, 0x69, 0xB4);
222/// <div style="background-color: #CD5C5C; width: 25px; height: 25px"></div>
223pub const INDIAN_RED: Color = define_color!(0xCD, 0x5C, 0x5C);
224/// <div style="background-color: #4B0082; width: 25px; height: 25px"></div>
225pub const INDIGO: Color = define_color!(0x4B, 0x00, 0x82);
226/// <div style="background-color: #FFFFF0; width: 25px; height: 25px"></div>
227pub const IVORY: Color = define_color!(0xFF, 0xFF, 0xF0);
228/// <div style="background-color: #F0E68C; width: 25px; height: 25px"></div>
229pub const KHAKI: Color = define_color!(0xF0, 0xE6, 0x8C);
230/// <div style="background-color: #E6E6FA; width: 25px; height: 25px"></div>
231pub const LAVENDER: Color = define_color!(0xE6, 0xE6, 0xFA);
232/// <div style="background-color: #FFF0F5; width: 25px; height: 25px"></div>
233pub const LAVENDER_BLUSH: Color = define_color!(0xFF, 0xF0, 0xF5);
234/// <div style="background-color: #7CFC00; width: 25px; height: 25px"></div>
235pub const LAWN_GREEN: Color = define_color!(0x7C, 0xFC, 0x00);
236/// <div style="background-color: #FFFACD; width: 25px; height: 25px"></div>
237pub const LEMON_CHIFFON: Color = define_color!(0xFF, 0xFA, 0xCD);
238/// <div style="background-color: #ADD8E6; width: 25px; height: 25px"></div>
239pub const LIGHT_BLUE: Color = define_color!(0xAD, 0xD8, 0xE6);
240/// <div style="background-color: #F08080; width: 25px; height: 25px"></div>
241pub const LIGHT_CORAL: Color = define_color!(0xF0, 0x80, 0x80);
242/// <div style="background-color: #E0FFFF; width: 25px; height: 25px"></div>
243pub const LIGHT_CYAN: Color = define_color!(0xE0, 0xFF, 0xFF);
244/// <div style="background-color: #FAFAD2; width: 25px; height: 25px"></div>
245pub const LIGHT_GOLDENRODYELLOW: Color = define_color!(0xFA, 0xFA, 0xD2);
246/// <div style="background-color: #90EE90; width: 25px; height: 25px"></div>
247pub const LIGHT_GREEN: Color = define_color!(0x90, 0xEE, 0x90);
248/// <div style="background-color: #D3D3D3; width: 25px; height: 25px"></div>
249pub const LIGHT_GRAY: Color = define_color!(0xD3, 0xD3, 0xD3);
250/// <div style="background-color: #FFB6C1; width: 25px; height: 25px"></div>
251pub const LIGHT_PINK: Color = define_color!(0xFF, 0xB6, 0xC1);
252/// <div style="background-color: #FFA07A; width: 25px; height: 25px"></div>
253pub const LIGHT_SALMON: Color = define_color!(0xFF, 0xA0, 0x7A);
254/// <div style="background-color: #20B2AA; width: 25px; height: 25px"></div>
255pub const LIGHT_SEAGREEN: Color = define_color!(0x20, 0xB2, 0xAA);
256/// <div style="background-color: #87CEFA; width: 25px; height: 25px"></div>
257pub const LIGHT_SKYBLUE: Color = define_color!(0x87, 0xCE, 0xFA);
258/// <div style="background-color: #778899; width: 25px; height: 25px"></div>
259pub const LIGHT_SLATEGRAY: Color = define_color!(0x77, 0x88, 0x99);
260/// <div style="background-color: #B0C4DE; width: 25px; height: 25px"></div>
261pub const LIGHT_STEELBLUE: Color = define_color!(0xB0, 0xC4, 0xDE);
262/// <div style="background-color: #FFFFE0; width: 25px; height: 25px"></div>
263pub const LIGHT_YELLOW: Color = define_color!(0xFF, 0xFF, 0xE0);
264/// <div style="background-color: #00FF00; width: 25px; height: 25px"></div>
265pub const LIME: Color = define_color!(0x00, 0xFF, 0x00);
266/// <div style="background-color: #32CD32; width: 25px; height: 25px"></div>
267pub const LIME_GREEN: Color = define_color!(0x32, 0xCD, 0x32);
268/// <div style="background-color: #FAF0E6; width: 25px; height: 25px"></div>
269pub const LINEN: Color = define_color!(0xFA, 0xF0, 0xE6);
270/// <div style="background-color: #FF00FF; width: 25px; height: 25px"></div>
271pub const MAGENTA: Color = define_color!(0xFF, 0x00, 0xFF);
272/// <div style="background-color: #800000; width: 25px; height: 25px"></div>
273pub const MAROON: Color = define_color!(0x80, 0x00, 0x00);
274/// <div style="background-color: #66CDAA; width: 25px; height: 25px"></div>
275pub const MEDIUM_AQUAMARINE: Color = define_color!(0x66, 0xCD, 0xAA);
276/// <div style="background-color: #0000CD; width: 25px; height: 25px"></div>
277pub const MEDIUM_BLUE: Color = define_color!(0x00, 0x00, 0xCD);
278/// <div style="background-color: #BA55D3; width: 25px; height: 25px"></div>
279pub const MEDIUM_ORCHID: Color = define_color!(0xBA, 0x55, 0xD3);
280/// <div style="background-color: #9370DB; width: 25px; height: 25px"></div>
281pub const MEDIUM_PURPLE: Color = define_color!(0x93, 0x70, 0xDB);
282/// <div style="background-color: #3CB371; width: 25px; height: 25px"></div>
283pub const MEDIUM_SEAGREEN: Color = define_color!(0x3C, 0xB3, 0x71);
284/// <div style="background-color: #7B68EE; width: 25px; height: 25px"></div>
285pub const MEDIUM_SLATEBLUE: Color = define_color!(0x7B, 0x68, 0xEE);
286/// <div style="background-color: #00FA9A; width: 25px; height: 25px"></div>
287pub const MEDIUM_SPRINGGREEN: Color = define_color!(0x00, 0xFA, 0x9A);
288/// <div style="background-color: #48D1CC; width: 25px; height: 25px"></div>
289pub const MEDIUM_TURQUOISE: Color = define_color!(0x48, 0xD1, 0xCC);
290/// <div style="background-color: #C71585; width: 25px; height: 25px"></div>
291pub const MEDIUM_VIOLETRED: Color = define_color!(0xC7, 0x15, 0x85);
292/// <div style="background-color: #191970; width: 25px; height: 25px"></div>
293pub const MIDNIGHT_BLUE: Color = define_color!(0x19, 0x19, 0x70);
294/// <div style="background-color: #F5FFFA; width: 25px; height: 25px"></div>
295pub const MINT_CREAM: Color = define_color!(0xF5, 0xFF, 0xFA);
296/// <div style="background-color: #FFE4E1; width: 25px; height: 25px"></div>
297pub const MISTY_ROSE: Color = define_color!(0xFF, 0xE4, 0xE1);
298/// <div style="background-color: #FFE4B5; width: 25px; height: 25px"></div>
299pub const MOCCASIN: Color = define_color!(0xFF, 0xE4, 0xB5);
300/// <div style="background-color: #FFDEAD; width: 25px; height: 25px"></div>
301pub const NAVAJO_WHITE: Color = define_color!(0xFF, 0xDE, 0xAD);
302/// <div style="background-color: #000080; width: 25px; height: 25px"></div>
303pub const NAVY: Color = define_color!(0x00, 0x00, 0x80);
304/// <div style="background-color: #FDF5E6; width: 25px; height: 25px"></div>
305pub const OLD_LACE: Color = define_color!(0xFD, 0xF5, 0xE6);
306/// <div style="background-color: #808000; width: 25px; height: 25px"></div>
307pub const OLIVE: Color = define_color!(0x80, 0x80, 0x00);
308/// <div style="background-color: #6B8E23; width: 25px; height: 25px"></div>
309pub const OLIVE_DRAB: Color = define_color!(0x6B, 0x8E, 0x23);
310/// <div style="background-color: #FFA500; width: 25px; height: 25px"></div>
311pub const ORANGE: Color = define_color!(0xFF, 0xA5, 0x00);
312/// <div style="background-color: #FF4500; width: 25px; height: 25px"></div>
313pub const ORANGE_RED: Color = define_color!(0xFF, 0x45, 0x00);
314/// <div style="background-color: #DA70D6; width: 25px; height: 25px"></div>
315pub const ORCHID: Color = define_color!(0xDA, 0x70, 0xD6);
316/// <div style="background-color: #EEE8AA; width: 25px; height: 25px"></div>
317pub const PALE_GOLDENROD: Color = define_color!(0xEE, 0xE8, 0xAA);
318/// <div style="background-color: #98FB98; width: 25px; height: 25px"></div>
319pub const PALE_GREEN: Color = define_color!(0x98, 0xFB, 0x98);
320/// <div style="background-color: #AFEEEE; width: 25px; height: 25px"></div>
321pub const PALE_TURQUOISE: Color = define_color!(0xAF, 0xEE, 0xEE);
322/// <div style="background-color: #DB7093; width: 25px; height: 25px"></div>
323pub const PALE_VIOLETRED: Color = define_color!(0xDB, 0x70, 0x93);
324/// <div style="background-color: #FFEFD5; width: 25px; height: 25px"></div>
325pub const PAPAYA_WHIP: Color = define_color!(0xFF, 0xEF, 0xD5);
326/// <div style="background-color: #FFDAB9; width: 25px; height: 25px"></div>
327pub const PEACH_PUFF: Color = define_color!(0xFF, 0xDA, 0xB9);
328/// <div style="background-color: #CD853F; width: 25px; height: 25px"></div>
329pub const PERU: Color = define_color!(0xCD, 0x85, 0x3F);
330/// <div style="background-color: #FFC0CB; width: 25px; height: 25px"></div>
331pub const PINK: Color = define_color!(0xFF, 0xC0, 0xCB);
332/// <div style="background-color: #DDA0DD; width: 25px; height: 25px"></div>
333pub const PLUM: Color = define_color!(0xDD, 0xA0, 0xDD);
334/// <div style="background-color: #B0E0E6; width: 25px; height: 25px"></div>
335pub const POWDER_BLUE: Color = define_color!(0xB0, 0xE0, 0xE6);
336/// <div style="background-color: #800080; width: 25px; height: 25px"></div>
337pub const PURPLE: Color = define_color!(0x80, 0x00, 0x80);
338/// <div style="background-color: #FF0000; width: 25px; height: 25px"></div>
339pub const RED: Color = define_color!(0xFF, 0x00, 0x00);
340/// <div style="background-color: #BC8F8F; width: 25px; height: 25px"></div>
341pub const ROSY_BROWN: Color = define_color!(0xBC, 0x8F, 0x8F);
342/// <div style="background-color: #4169E1; width: 25px; height: 25px"></div>
343pub const ROYAL_BLUE: Color = define_color!(0x41, 0x69, 0xE1);
344/// <div style="background-color: #8B4513; width: 25px; height: 25px"></div>
345pub const SADDLE_BROWN: Color = define_color!(0x8B, 0x45, 0x13);
346/// <div style="background-color: #FA8072; width: 25px; height: 25px"></div>
347pub const SALMON: Color = define_color!(0xFA, 0x80, 0x72);
348/// <div style="background-color: #F4A460; width: 25px; height: 25px"></div>
349pub const SANDY_BROWN: Color = define_color!(0xF4, 0xA4, 0x60);
350/// <div style="background-color: #2E8B57; width: 25px; height: 25px"></div>
351pub const SEA_GREEN: Color = define_color!(0x2E, 0x8B, 0x57);
352/// <div style="background-color: #FFF5EE; width: 25px; height: 25px"></div>
353pub const SEA_SHELL: Color = define_color!(0xFF, 0xF5, 0xEE);
354/// <div style="background-color: #A0522D; width: 25px; height: 25px"></div>
355pub const SIENNA: Color = define_color!(0xA0, 0x52, 0x2D);
356/// <div style="background-color: #C0C0C0; width: 25px; height: 25px"></div>
357pub const SILVER: Color = define_color!(0xC0, 0xC0, 0xC0);
358/// <div style="background-color: #87CEEB; width: 25px; height: 25px"></div>
359pub const SKY_BLUE: Color = define_color!(0x87, 0xCE, 0xEB);
360/// <div style="background-color: #6A5ACD; width: 25px; height: 25px"></div>
361pub const SLATE_BLUE: Color = define_color!(0x6A, 0x5A, 0xCD);
362/// <div style="background-color: #708090; width: 25px; height: 25px"></div>
363pub const SLATE_GRAY: Color = define_color!(0x70, 0x80, 0x90);
364/// <div style="background-color: #FFFAFA; width: 25px; height: 25px"></div>
365pub const SNOW: Color = define_color!(0xFF, 0xFA, 0xFA);
366/// <div style="background-color: #00FF7F; width: 25px; height: 25px"></div>
367pub const SPRING_GREEN: Color = define_color!(0x00, 0xFF, 0x7F);
368/// <div style="background-color: #4682B4; width: 25px; height: 25px"></div>
369pub const STEEL_BLUE: Color = define_color!(0x46, 0x82, 0xB4);
370/// <div style="background-color: #D2B48C; width: 25px; height: 25px"></div>
371pub const TAN: Color = define_color!(0xD2, 0xB4, 0x8C);
372/// <div style="background-color: #008080; width: 25px; height: 25px"></div>
373pub const TEAL: Color = define_color!(0x00, 0x80, 0x80);
374/// <div style="background-color: #D8BFD8; width: 25px; height: 25px"></div>
375pub const THISTLE: Color = define_color!(0xD8, 0xBF, 0xD8);
376/// <div style="background-color: #FF6347; width: 25px; height: 25px"></div>
377pub const TOMATO: Color = define_color!(0xFF, 0x63, 0x47);
378/// <div style="background-color: #40E0D0; width: 25px; height: 25px"></div>
379pub const TURQUOISE: Color = define_color!(0x40, 0xE0, 0xD0);
380/// <div style="background-color: #EE82EE; width: 25px; height: 25px"></div>
381pub const VIOLET: Color = define_color!(0xEE, 0x82, 0xEE);
382/// <div style="background-color: #F5DEB3; width: 25px; height: 25px"></div>
383pub const WHEAT: Color = define_color!(0xF5, 0xDE, 0xB3);
384/// <div style="background-color: #FFFFFF; width: 25px; height: 25px"></div>
385pub const WHITE: Color = define_color!(0xFF, 0xFF, 0xFF);
386/// <div style="background-color: #F5F5F5; width: 25px; height: 25px"></div>
387pub const WHITE_SMOKE: Color = define_color!(0xF5, 0xF5, 0xF5);
388/// <div style="background-color: #FFFF00; width: 25px; height: 25px"></div>
389pub const YELLOW: Color = define_color!(0xFF, 0xFF, 0x00);
390/// <div style="background-color: #9ACD32; width: 25px; height: 25px"></div>
391pub const YELLOW_GREEN: Color = define_color!(0x9A, 0xCD, 0x32);
392
393impl Color {
394    /// <div style="background-color: #F0F8FF; width: 25px; height: 25px"></div>
395    pub const ALICE_BLUE: Color = ALICE_BLUE;
396    /// <div style="background-color: #FAEBD7; width: 25px; height: 25px"></div>
397    pub const ANTIQUE_WHITE: Color = ANTIQUE_WHITE;
398    /// <div style="background-color: #00FFFF; width: 25px; height: 25px"></div>
399    pub const AQUA: Color = AQUA;
400    /// <div style="background-color: #7FFFD4; width: 25px; height: 25px"></div>
401    pub const AQUAMARINE: Color = AQUAMARINE;
402    /// <div style="background-color: #F0FFFF; width: 25px; height: 25px"></div>
403    pub const AZURE: Color = AZURE;
404    /// <div style="background-color: #F5F5DC; width: 25px; height: 25px"></div>
405    pub const BEIGE: Color = BEIGE;
406    /// <div style="background-color: #FFE4C4; width: 25px; height: 25px"></div>
407    pub const BISQUE: Color = BISQUE;
408    /// <div style="background-color: #000000; width: 25px; height: 25px"></div>
409    pub const BLACK: Color = BLACK;
410    /// <div style="background-color: #FFEBCD; width: 25px; height: 25px"></div>
411    pub const BLANCHED_ALMOND: Color = BLANCHED_ALMOND;
412    /// <div style="background-color: #0000FF; width: 25px; height: 25px"></div>
413    pub const BLUE: Color = BLUE;
414    /// <div style="background-color: #8A2BE2; width: 25px; height: 25px"></div>
415    pub const BLUE_VIOLET: Color = BLUE_VIOLET;
416    /// <div style="background-color: #A52A2A; width: 25px; height: 25px"></div>
417    pub const BROWN: Color = BROWN;
418    /// <div style="background-color: #DEB887; width: 25px; height: 25px"></div>
419    pub const BURLY_WOOD: Color = BURLY_WOOD;
420    /// <div style="background-color: #5F9EA0; width: 25px; height: 25px"></div>
421    pub const CADET_BLUE: Color = CADET_BLUE;
422    /// <div style="background-color: #7FFF00; width: 25px; height: 25px"></div>
423    pub const CHARTREUSE: Color = CHARTREUSE;
424    /// <div style="background-color: #D2691E; width: 25px; height: 25px"></div>
425    pub const CHOCOLATE: Color = CHOCOLATE;
426    /// <div style="background-color: #FF7F50; width: 25px; height: 25px"></div>
427    pub const CORAL: Color = CORAL;
428    /// <div style="background-color: #6495ED; width: 25px; height: 25px"></div>
429    pub const CORNFLOWER_BLUE: Color = CORNFLOWER_BLUE;
430    /// <div style="background-color: #FFF8DC; width: 25px; height: 25px"></div>
431    pub const CORNSILK: Color = CORNSILK;
432    /// <div style="background-color: #DC143C; width: 25px; height: 25px"></div>
433    pub const CRIMSON: Color = CRIMSON;
434    /// <div style="background-color: #00FFFF; width: 25px; height: 25px"></div>
435    pub const CYAN: Color = CYAN;
436    /// <div style="background-color: #00008B; width: 25px; height: 25px"></div>
437    pub const DARK_BLUE: Color = DARK_BLUE;
438    /// <div style="background-color: #008B8B; width: 25px; height: 25px"></div>
439    pub const DARK_CYAN: Color = DARK_CYAN;
440    /// <div style="background-color: #B8860B; width: 25px; height: 25px"></div>
441    pub const DARK_GOLDENROD: Color = DARK_GOLDENROD;
442    /// <div style="background-color: #A9A9A9; width: 25px; height: 25px"></div>
443    pub const DARK_GRAY: Color = DARK_GRAY;
444    /// <div style="background-color: #006400; width: 25px; height: 25px"></div>
445    pub const DARK_GREEN: Color = DARK_GREEN;
446    /// <div style="background-color: #BDB76B; width: 25px; height: 25px"></div>
447    pub const DARK_KHAKI: Color = DARK_KHAKI;
448    /// <div style="background-color: #8B008B; width: 25px; height: 25px"></div>
449    pub const DARK_MAGENTA: Color = DARK_MAGENTA;
450    /// <div style="background-color: #556B2F; width: 25px; height: 25px"></div>
451    pub const DARK_OLIVEGREEN: Color = DARK_OLIVEGREEN;
452    /// <div style="background-color: #FF8C00; width: 25px; height: 25px"></div>
453    pub const DARK_ORANGE: Color = DARK_ORANGE;
454    /// <div style="background-color: #9932CC; width: 25px; height: 25px"></div>
455    pub const DARK_ORCHID: Color = DARK_ORCHID;
456    /// <div style="background-color: #8B0000; width: 25px; height: 25px"></div>
457    pub const DARK_RED: Color = DARK_RED;
458    /// <div style="background-color: #E9967A; width: 25px; height: 25px"></div>
459    pub const DARK_SALMON: Color = DARK_SALMON;
460    /// <div style="background-color: #8FBC8F; width: 25px; height: 25px"></div>
461    pub const DARK_SEAGREEN: Color = DARK_SEAGREEN;
462    /// <div style="background-color: #483D8B; width: 25px; height: 25px"></div>
463    pub const DARK_SLATEBLUE: Color = DARK_SLATEBLUE;
464    /// <div style="background-color: #2F4F4F; width: 25px; height: 25px"></div>
465    pub const DARK_SLATEGRAY: Color = DARK_SLATEGRAY;
466    /// <div style="background-color: #00CED1; width: 25px; height: 25px"></div>
467    pub const DARK_TURQUOISE: Color = DARK_TURQUOISE;
468    /// <div style="background-color: #9400D3; width: 25px; height: 25px"></div>
469    pub const DARK_VIOLET: Color = DARK_VIOLET;
470    /// <div style="background-color: #FF1493; width: 25px; height: 25px"></div>
471    pub const DEEP_PINK: Color = DEEP_PINK;
472    /// <div style="background-color: #00BFFF; width: 25px; height: 25px"></div>
473    pub const DEEP_SKYBLUE: Color = DEEP_SKYBLUE;
474    /// <div style="background-color: #696969; width: 25px; height: 25px"></div>
475    pub const DIM_GRAY: Color = DIM_GRAY;
476    /// <div style="background-color: #1E90FF; width: 25px; height: 25px"></div>
477    pub const DODGER_BLUE: Color = DODGER_BLUE;
478    /// <div style="background-color: #B22222; width: 25px; height: 25px"></div>
479    pub const FIREBRICK: Color = FIREBRICK;
480    /// <div style="background-color: #FFFAF0; width: 25px; height: 25px"></div>
481    pub const FLORAL_WHITE: Color = FLORAL_WHITE;
482    /// <div style="background-color: #228B22; width: 25px; height: 25px"></div>
483    pub const FOREST_GREEN: Color = FOREST_GREEN;
484    /// <div style="background-color: #FF00FF; width: 25px; height: 25px"></div>
485    pub const FUCHSIA: Color = FUCHSIA;
486    /// <div style="background-color: #DCDCDC; width: 25px; height: 25px"></div>
487    pub const GAINSBORO: Color = GAINSBORO;
488    /// <div style="background-color: #F8F8FF; width: 25px; height: 25px"></div>
489    pub const GHOST_WHITE: Color = GHOST_WHITE;
490    /// <div style="background-color: #FFD700; width: 25px; height: 25px"></div>
491    pub const GOLD: Color = GOLD;
492    /// <div style="background-color: #DAA520; width: 25px; height: 25px"></div>
493    pub const GOLDENROD: Color = GOLDENROD;
494    /// <div style="background-color: #808080; width: 25px; height: 25px"></div>
495    pub const GRAY: Color = GRAY;
496    /// <div style="background-color: #008000; width: 25px; height: 25px"></div>
497    pub const GREEN: Color = GREEN;
498    /// <div style="background-color: #ADFF2F; width: 25px; height: 25px"></div>
499    pub const GREEN_YELLOW: Color = GREEN_YELLOW;
500    /// <div style="background-color: #F0FFF0; width: 25px; height: 25px"></div>
501    pub const HONEYDEW: Color = HONEYDEW;
502    /// <div style="background-color: #FF69B4; width: 25px; height: 25px"></div>
503    pub const HOT_PINK: Color = HOT_PINK;
504    /// <div style="background-color: #CD5C5C; width: 25px; height: 25px"></div>
505    pub const INDIAN_RED: Color = INDIAN_RED;
506    /// <div style="background-color: #4B0082; width: 25px; height: 25px"></div>
507    pub const INDIGO: Color = INDIGO;
508    /// <div style="background-color: #FFFFF0; width: 25px; height: 25px"></div>
509    pub const IVORY: Color = IVORY;
510    /// <div style="background-color: #F0E68C; width: 25px; height: 25px"></div>
511    pub const KHAKI: Color = KHAKI;
512    /// <div style="background-color: #E6E6FA; width: 25px; height: 25px"></div>
513    pub const LAVENDER: Color = LAVENDER;
514    /// <div style="background-color: #FFF0F5; width: 25px; height: 25px"></div>
515    pub const LAVENDER_BLUSH: Color = LAVENDER_BLUSH;
516    /// <div style="background-color: #7CFC00; width: 25px; height: 25px"></div>
517    pub const LAWN_GREEN: Color = LAWN_GREEN;
518    /// <div style="background-color: #FFFACD; width: 25px; height: 25px"></div>
519    pub const LEMON_CHIFFON: Color = LEMON_CHIFFON;
520    /// <div style="background-color: #ADD8E6; width: 25px; height: 25px"></div>
521    pub const LIGHT_BLUE: Color = LIGHT_BLUE;
522    /// <div style="background-color: #F08080; width: 25px; height: 25px"></div>
523    pub const LIGHT_CORAL: Color = LIGHT_CORAL;
524    /// <div style="background-color: #E0FFFF; width: 25px; height: 25px"></div>
525    pub const LIGHT_CYAN: Color = LIGHT_CYAN;
526    /// <div style="background-color: #FAFAD2; width: 25px; height: 25px"></div>
527    pub const LIGHT_GOLDENRODYELLOW: Color = LIGHT_GOLDENRODYELLOW;
528    /// <div style="background-color: #90EE90; width: 25px; height: 25px"></div>
529    pub const LIGHT_GREEN: Color = LIGHT_GREEN;
530    /// <div style="background-color: #D3D3D3; width: 25px; height: 25px"></div>
531    pub const LIGHT_GRAY: Color = LIGHT_GRAY;
532    /// <div style="background-color: #FFB6C1; width: 25px; height: 25px"></div>
533    pub const LIGHT_PINK: Color = LIGHT_PINK;
534    /// <div style="background-color: #FFA07A; width: 25px; height: 25px"></div>
535    pub const LIGHT_SALMON: Color = LIGHT_SALMON;
536    /// <div style="background-color: #20B2AA; width: 25px; height: 25px"></div>
537    pub const LIGHT_SEAGREEN: Color = LIGHT_SEAGREEN;
538    /// <div style="background-color: #87CEFA; width: 25px; height: 25px"></div>
539    pub const LIGHT_SKYBLUE: Color = LIGHT_SKYBLUE;
540    /// <div style="background-color: #778899; width: 25px; height: 25px"></div>
541    pub const LIGHT_SLATEGRAY: Color = LIGHT_SLATEGRAY;
542    /// <div style="background-color: #B0C4DE; width: 25px; height: 25px"></div>
543    pub const LIGHT_STEELBLUE: Color = LIGHT_STEELBLUE;
544    /// <div style="background-color: #FFFFE0; width: 25px; height: 25px"></div>
545    pub const LIGHT_YELLOW: Color = LIGHT_YELLOW;
546    /// <div style="background-color: #00FF00; width: 25px; height: 25px"></div>
547    pub const LIME: Color = LIME;
548    /// <div style="background-color: #32CD32; width: 25px; height: 25px"></div>
549    pub const LIME_GREEN: Color = LIME_GREEN;
550    /// <div style="background-color: #FAF0E6; width: 25px; height: 25px"></div>
551    pub const LINEN: Color = LINEN;
552    /// <div style="background-color: #FF00FF; width: 25px; height: 25px"></div>
553    pub const MAGENTA: Color = MAGENTA;
554    /// <div style="background-color: #800000; width: 25px; height: 25px"></div>
555    pub const MAROON: Color = MAROON;
556    /// <div style="background-color: #66CDAA; width: 25px; height: 25px"></div>
557    pub const MEDIUM_AQUAMARINE: Color = MEDIUM_AQUAMARINE;
558    /// <div style="background-color: #0000CD; width: 25px; height: 25px"></div>
559    pub const MEDIUM_BLUE: Color = MEDIUM_BLUE;
560    /// <div style="background-color: #BA55D3; width: 25px; height: 25px"></div>
561    pub const MEDIUM_ORCHID: Color = MEDIUM_ORCHID;
562    /// <div style="background-color: #9370DB; width: 25px; height: 25px"></div>
563    pub const MEDIUM_PURPLE: Color = MEDIUM_PURPLE;
564    /// <div style="background-color: #3CB371; width: 25px; height: 25px"></div>
565    pub const MEDIUM_SEAGREEN: Color = MEDIUM_SEAGREEN;
566    /// <div style="background-color: #7B68EE; width: 25px; height: 25px"></div>
567    pub const MEDIUM_SLATEBLUE: Color = MEDIUM_SLATEBLUE;
568    /// <div style="background-color: #00FA9A; width: 25px; height: 25px"></div>
569    pub const MEDIUM_SPRINGGREEN: Color = MEDIUM_SPRINGGREEN;
570    /// <div style="background-color: #48D1CC; width: 25px; height: 25px"></div>
571    pub const MEDIUM_TURQUOISE: Color = MEDIUM_TURQUOISE;
572    /// <div style="background-color: #C71585; width: 25px; height: 25px"></div>
573    pub const MEDIUM_VIOLETRED: Color = MEDIUM_VIOLETRED;
574    /// <div style="background-color: #191970; width: 25px; height: 25px"></div>
575    pub const MIDNIGHT_BLUE: Color = MIDNIGHT_BLUE;
576    /// <div style="background-color: #F5FFFA; width: 25px; height: 25px"></div>
577    pub const MINT_CREAM: Color = MINT_CREAM;
578    /// <div style="background-color: #FFE4E1; width: 25px; height: 25px"></div>
579    pub const MISTY_ROSE: Color = MISTY_ROSE;
580    /// <div style="background-color: #FFE4B5; width: 25px; height: 25px"></div>
581    pub const MOCCASIN: Color = MOCCASIN;
582    /// <div style="background-color: #FFDEAD; width: 25px; height: 25px"></div>
583    pub const NAVAJO_WHITE: Color = NAVAJO_WHITE;
584    /// <div style="background-color: #000080; width: 25px; height: 25px"></div>
585    pub const NAVY: Color = NAVY;
586    /// <div style="background-color: #FDF5E6; width: 25px; height: 25px"></div>
587    pub const OLD_LACE: Color = OLD_LACE;
588    /// <div style="background-color: #808000; width: 25px; height: 25px"></div>
589    pub const OLIVE: Color = OLIVE;
590    /// <div style="background-color: #6B8E23; width: 25px; height: 25px"></div>
591    pub const OLIVE_DRAB: Color = OLIVE_DRAB;
592    /// <div style="background-color: #FFA500; width: 25px; height: 25px"></div>
593    pub const ORANGE: Color = ORANGE;
594    /// <div style="background-color: #FF4500; width: 25px; height: 25px"></div>
595    pub const ORANGE_RED: Color = ORANGE_RED;
596    /// <div style="background-color: #DA70D6; width: 25px; height: 25px"></div>
597    pub const ORCHID: Color = ORCHID;
598    /// <div style="background-color: #EEE8AA; width: 25px; height: 25px"></div>
599    pub const PALE_GOLDENROD: Color = PALE_GOLDENROD;
600    /// <div style="background-color: #98FB98; width: 25px; height: 25px"></div>
601    pub const PALE_GREEN: Color = PALE_GREEN;
602    /// <div style="background-color: #AFEEEE; width: 25px; height: 25px"></div>
603    pub const PALE_TURQUOISE: Color = PALE_TURQUOISE;
604    /// <div style="background-color: #DB7093; width: 25px; height: 25px"></div>
605    pub const PALE_VIOLETRED: Color = PALE_VIOLETRED;
606    /// <div style="background-color: #FFEFD5; width: 25px; height: 25px"></div>
607    pub const PAPAYA_WHIP: Color = PAPAYA_WHIP;
608    /// <div style="background-color: #FFDAB9; width: 25px; height: 25px"></div>
609    pub const PEACH_PUFF: Color = PEACH_PUFF;
610    /// <div style="background-color: #CD853F; width: 25px; height: 25px"></div>
611    pub const PERU: Color = PERU;
612    /// <div style="background-color: #FFC0CB; width: 25px; height: 25px"></div>
613    pub const PINK: Color = PINK;
614    /// <div style="background-color: #DDA0DD; width: 25px; height: 25px"></div>
615    pub const PLUM: Color = PLUM;
616    /// <div style="background-color: #B0E0E6; width: 25px; height: 25px"></div>
617    pub const POWDER_BLUE: Color = POWDER_BLUE;
618    /// <div style="background-color: #800080; width: 25px; height: 25px"></div>
619    pub const PURPLE: Color = PURPLE;
620    /// <div style="background-color: #FF0000; width: 25px; height: 25px"></div>
621    pub const RED: Color = RED;
622    /// <div style="background-color: #BC8F8F; width: 25px; height: 25px"></div>
623    pub const ROSY_BROWN: Color = ROSY_BROWN;
624    /// <div style="background-color: #4169E1; width: 25px; height: 25px"></div>
625    pub const ROYAL_BLUE: Color = ROYAL_BLUE;
626    /// <div style="background-color: #8B4513; width: 25px; height: 25px"></div>
627    pub const SADDLE_BROWN: Color = SADDLE_BROWN;
628    /// <div style="background-color: #FA8072; width: 25px; height: 25px"></div>
629    pub const SALMON: Color = SALMON;
630    /// <div style="background-color: #F4A460; width: 25px; height: 25px"></div>
631    pub const SANDY_BROWN: Color = SANDY_BROWN;
632    /// <div style="background-color: #2E8B57; width: 25px; height: 25px"></div>
633    pub const SEA_GREEN: Color = SEA_GREEN;
634    /// <div style="background-color: #FFF5EE; width: 25px; height: 25px"></div>
635    pub const SEA_SHELL: Color = SEA_SHELL;
636    /// <div style="background-color: #A0522D; width: 25px; height: 25px"></div>
637    pub const SIENNA: Color = SIENNA;
638    /// <div style="background-color: #C0C0C0; width: 25px; height: 25px"></div>
639    pub const SILVER: Color = SILVER;
640    /// <div style="background-color: #87CEEB; width: 25px; height: 25px"></div>
641    pub const SKY_BLUE: Color = SKY_BLUE;
642    /// <div style="background-color: #6A5ACD; width: 25px; height: 25px"></div>
643    pub const SLATE_BLUE: Color = SLATE_BLUE;
644    /// <div style="background-color: #708090; width: 25px; height: 25px"></div>
645    pub const SLATE_GRAY: Color = SLATE_GRAY;
646    /// <div style="background-color: #FFFAFA; width: 25px; height: 25px"></div>
647    pub const SNOW: Color = SNOW;
648    /// <div style="background-color: #00FF7F; width: 25px; height: 25px"></div>
649    pub const SPRING_GREEN: Color = SPRING_GREEN;
650    /// <div style="background-color: #4682B4; width: 25px; height: 25px"></div>
651    pub const STEEL_BLUE: Color = STEEL_BLUE;
652    /// <div style="background-color: #D2B48C; width: 25px; height: 25px"></div>
653    pub const TAN: Color = TAN;
654    /// <div style="background-color: #008080; width: 25px; height: 25px"></div>
655    pub const TEAL: Color = TEAL;
656    /// <div style="background-color: #D8BFD8; width: 25px; height: 25px"></div>
657    pub const THISTLE: Color = THISTLE;
658    /// <div style="background-color: #FF6347; width: 25px; height: 25px"></div>
659    pub const TOMATO: Color = TOMATO;
660    /// <div style="background-color: #40E0D0; width: 25px; height: 25px"></div>
661    pub const TURQUOISE: Color = TURQUOISE;
662    /// <div style="background-color: #EE82EE; width: 25px; height: 25px"></div>
663    pub const VIOLET: Color = VIOLET;
664    /// <div style="background-color: #F5DEB3; width: 25px; height: 25px"></div>
665    pub const WHEAT: Color = WHEAT;
666    /// <div style="background-color: #FFFFFF; width: 25px; height: 25px"></div>
667    pub const WHITE: Color = WHITE;
668    /// <div style="background-color: #F5F5F5; width: 25px; height: 25px"></div>
669    pub const WHITE_SMOKE: Color = WHITE_SMOKE;
670    /// <div style="background-color: #FFFF00; width: 25px; height: 25px"></div>
671    pub const YELLOW: Color = YELLOW;
672    /// <div style="background-color: #9ACD32; width: 25px; height: 25px"></div>
673    pub const YELLOW_GREEN: Color = YELLOW_GREEN;
674}
675
676#[cfg(all(test, windows, feature = "d2d"))]
677#[test]
678fn color_d2d_bin_compat() {
679    use std::mem::size_of_val;
680
681    fn ptr_eq<T>(a: &T, b: &T) -> bool {
682        (a as *const T) == (b as *const T)
683    }
684
685    let col = Color::from(0);
686    let d2d = unsafe { &*((&col) as *const _ as *const D2D_COLOR_F) };
687
688    assert!(ptr_eq(&col.r, &d2d.r));
689    assert!(ptr_eq(&col.g, &d2d.g));
690    assert!(ptr_eq(&col.b, &d2d.b));
691    assert!(ptr_eq(&col.a, &d2d.a));
692    assert_eq!(size_of_val(&col), size_of_val(d2d));
693}