1use super::*;
2
3macro_rules! simple_from {
4 ($from: ident to $to: ty, via $int: ty) => {
5 impl From<$from> for $to {
6 fn from(value: $from) -> Self {
7 let intermediary: $int = value.into();
8 intermediary.into()
9 }
10 }
11 };
12}
13
14simple_from!(Hsv to A98Rgb, via Srgb);
15simple_from!(Hex to A98Rgb, via Srgb);
16simple_from!(Hsl to A98Rgb, via Srgb);
17simple_from!(Hwb to A98Rgb, via Hsv);
18simple_from!(Lab to A98Rgb, via XyzD50);
19simple_from!(Lch to A98Rgb, via Lab);
20simple_from!(Named to A98Rgb, via Srgb);
21simple_from!(Oklab to A98Rgb, via XyzD65);
22simple_from!(Oklch to A98Rgb, via Oklab);
23simple_from!(Srgb to A98Rgb, via LinearRgb);
24simple_from!(XyzD50 to A98Rgb, via XyzD65);
25simple_from!(XyzD65 to A98Rgb, via LinearRgb);
26
27simple_from!(A98Rgb to Hsv, via LinearRgb);
28simple_from!(A98Rgb to Hex, via Srgb);
29simple_from!(A98Rgb to Hsl, via LinearRgb);
30simple_from!(A98Rgb to Hwb, via LinearRgb);
31simple_from!(A98Rgb to Lab, via LinearRgb);
32simple_from!(A98Rgb to Lch, via LinearRgb);
33simple_from!(A98Rgb to Oklab, via LinearRgb);
34simple_from!(A98Rgb to Oklch, via LinearRgb);
35simple_from!(A98Rgb to Srgb, via LinearRgb);
36simple_from!(A98Rgb to XyzD50, via LinearRgb);
37simple_from!(A98Rgb to XyzD65, via LinearRgb);
38
39simple_from!(Hsv to Hex, via Srgb);
40simple_from!(Hsl to Hex, via Srgb);
41simple_from!(Hwb to Hex, via Srgb);
42simple_from!(Lab to Hex, via Srgb);
43simple_from!(Lch to Hex, via Srgb);
44simple_from!(LinearRgb to Hex, via Srgb);
45simple_from!(Named to Hex, via Srgb);
46simple_from!(Oklab to Hex, via XyzD65);
47simple_from!(Oklch to Hex, via Oklab);
48simple_from!(XyzD50 to Hex, via XyzD65);
49simple_from!(XyzD65 to Hex, via Srgb);
50
51simple_from!(Hex to Hsv, via Srgb);
52simple_from!(Hex to Hsl, via Srgb);
53simple_from!(Hex to Hwb, via Srgb);
54simple_from!(Hex to Lab, via Srgb);
55simple_from!(Hex to Lch, via Srgb);
56simple_from!(Hex to LinearRgb, via Srgb);
57simple_from!(Hex to Oklab, via XyzD65);
58simple_from!(Hex to Oklch, via Oklab);
59simple_from!(Hex to XyzD50, via XyzD65);
60simple_from!(Hex to XyzD65, via Srgb);
61
62simple_from!(Hsl to Hsv, via Srgb);
63simple_from!(Lab to Hsv, via Srgb);
64simple_from!(Lch to Hsv, via Srgb);
65simple_from!(Named to Hsv, via Srgb);
66simple_from!(Oklab to Hsv, via XyzD65);
67simple_from!(Oklch to Hsv, via Oklab);
68simple_from!(XyzD50 to Hsv, via XyzD65);
69simple_from!(XyzD65 to Hsv, via Srgb);
70
71simple_from!(Hsv to Hsl, via Srgb);
72simple_from!(Hsv to Lab, via Srgb);
73simple_from!(Hsv to Lch, via Srgb);
74simple_from!(Hsv to Oklab, via Srgb);
75simple_from!(Hsv to Oklch, via Srgb);
76simple_from!(Hsv to XyzD50, via Srgb);
77simple_from!(Hsv to XyzD65, via Srgb);
78
79simple_from!(Hwb to Hsl, via Hsv);
80simple_from!(Lab to Hsl, via Srgb);
81simple_from!(Lch to Hsl, via Srgb);
82simple_from!(Named to Hsl, via Srgb);
83simple_from!(Oklab to Hsl, via Srgb);
84simple_from!(Oklch to Hsl, via Srgb);
85simple_from!(XyzD50 to Hsl, via Srgb);
86simple_from!(XyzD65 to Hsl, via Srgb);
87
88simple_from!(Hsl to Hwb, via Srgb);
89simple_from!(Hsl to Lab, via Srgb);
90simple_from!(Hsl to Lch, via Srgb);
91simple_from!(Hsl to Oklab, via Srgb);
92simple_from!(Hsl to Oklch, via Srgb);
93simple_from!(Hsl to XyzD50, via Srgb);
94simple_from!(Hsl to XyzD65, via Srgb);
95
96simple_from!(Lab to Hwb, via Srgb);
97simple_from!(Lch to Hwb, via Srgb);
98simple_from!(Named to Hwb, via Srgb);
99simple_from!(Oklab to Hwb, via Srgb);
100simple_from!(Oklch to Hwb, via Srgb);
101simple_from!(XyzD50 to Hwb, via Srgb);
102simple_from!(XyzD65 to Hwb, via Srgb);
103
104simple_from!(Hwb to Lab, via Srgb);
105simple_from!(Hwb to Lch, via Srgb);
106simple_from!(Hwb to Oklab, via Srgb);
107simple_from!(Hwb to Oklch, via Srgb);
108simple_from!(Hwb to XyzD50, via Srgb);
109simple_from!(Hwb to XyzD65, via Srgb);
110
111simple_from!(Named to Lab, via Srgb);
112simple_from!(Oklab to Lab, via Srgb);
113simple_from!(Oklch to Lab, via Srgb);
114simple_from!(XyzD65 to Lab, via Srgb);
115
116simple_from!(Lab to Oklab, via XyzD50);
117simple_from!(Lab to Oklch, via XyzD50);
118simple_from!(Lab to XyzD65, via XyzD50);
119
120simple_from!(Named to Lch, via Srgb);
121simple_from!(Oklab to Lch, via Srgb);
122simple_from!(Oklch to Lch, via Srgb);
123simple_from!(XyzD50 to Lch, via Srgb);
124simple_from!(XyzD65 to Lch, via Srgb);
125
126simple_from!(Lch to Oklab, via Srgb);
127simple_from!(Lch to Oklch, via Srgb);
128simple_from!(Lch to XyzD50, via Srgb);
129simple_from!(Lch to XyzD65, via Srgb);
130
131simple_from!(Hsv to LinearRgb, via Srgb);
132simple_from!(Hsl to LinearRgb, via Srgb);
133simple_from!(Hwb to LinearRgb, via Srgb);
134simple_from!(Lab to LinearRgb, via XyzD50);
135simple_from!(Lch to LinearRgb, via Lab);
136simple_from!(Named to LinearRgb, via Srgb);
137simple_from!(Oklab to LinearRgb, via XyzD65);
138simple_from!(Oklch to LinearRgb, via Oklab);
139simple_from!(XyzD50 to LinearRgb, via XyzD65);
140
141simple_from!(LinearRgb to Hsv, via Srgb);
142simple_from!(LinearRgb to Hsl, via Srgb);
143simple_from!(LinearRgb to Hwb, via Srgb);
144simple_from!(LinearRgb to Lab, via XyzD50);
145simple_from!(LinearRgb to Lch, via Lab);
146simple_from!(LinearRgb to Oklab, via XyzD65);
147simple_from!(LinearRgb to Oklch, via Oklab);
148simple_from!(LinearRgb to XyzD50, via XyzD65);
149
150simple_from!(Named to Oklab, via Srgb);
151simple_from!(XyzD50 to Oklab, via XyzD65);
152
153simple_from!(Oklab to XyzD50, via XyzD65);
154
155simple_from!(Named to Oklch, via Srgb);
156simple_from!(XyzD50 to Oklch, via Oklab);
157simple_from!(XyzD65 to Oklch, via Oklab);
158
159simple_from!(Oklch to XyzD50, via Oklab);
160simple_from!(Oklch to XyzD65, via Oklab);
161
162simple_from!(Named to XyzD50, via Srgb);
163simple_from!(Named to XyzD65, via Srgb);
164
165simple_from!(Srgb to Lab, via XyzD50);
166simple_from!(Srgb to Lch, via Lab);
167simple_from!(Srgb to Oklab, via XyzD65);
168simple_from!(Srgb to Oklch, via Oklab);
169simple_from!(Srgb to XyzD50, via LinearRgb);
170simple_from!(Srgb to XyzD65, via LinearRgb);
171
172simple_from!(XyzD50 to Srgb, via XyzD65);
173simple_from!(XyzD65 to Srgb, via LinearRgb);
174simple_from!(Lab to Srgb, via XyzD50);
175simple_from!(Lch to Srgb, via Lab);
176simple_from!(Oklab to Srgb, via XyzD65);
177simple_from!(Oklch to Srgb, via Oklab);
178simple_from!(Hwb to Srgb, via Hsv);
179simple_from!(Srgb to Hwb, via Hsv);
180
181simple_from!(Color to A98Rgb, via XyzD65);
182simple_from!(Color to Hsv, via XyzD65);
183simple_from!(Color to Hex, via XyzD65);
184simple_from!(Color to Hsl, via XyzD65);
185simple_from!(Color to Hwb, via XyzD65);
186simple_from!(Color to Lab, via XyzD65);
187simple_from!(Color to Lch, via XyzD65);
188simple_from!(Color to LinearRgb, via XyzD65);
189simple_from!(Color to Oklab, via XyzD65);
190simple_from!(Color to Oklch, via XyzD65);
191simple_from!(Color to Srgb, via XyzD65);
192simple_from!(Color to XyzD50, via XyzD65);
193
194#[cfg(feature = "anstyle")]
195simple_from!(Color to anstyle::RgbColor, via Srgb);
196#[cfg(feature = "anstyle")]
197simple_from!(A98Rgb to anstyle::RgbColor, via Srgb);
198#[cfg(feature = "anstyle")]
199simple_from!(Hsv to anstyle::RgbColor, via Srgb);
200#[cfg(feature = "anstyle")]
201simple_from!(Hex to anstyle::RgbColor, via Srgb);
202#[cfg(feature = "anstyle")]
203simple_from!(Hsl to anstyle::RgbColor, via Srgb);
204#[cfg(feature = "anstyle")]
205simple_from!(Hwb to anstyle::RgbColor, via Srgb);
206#[cfg(feature = "anstyle")]
207simple_from!(Lab to anstyle::RgbColor, via Srgb);
208#[cfg(feature = "anstyle")]
209simple_from!(Lch to anstyle::RgbColor, via Srgb);
210#[cfg(feature = "anstyle")]
211simple_from!(LinearRgb to anstyle::RgbColor, via Srgb);
212#[cfg(feature = "anstyle")]
213simple_from!(Named to anstyle::RgbColor, via Srgb);
214#[cfg(feature = "anstyle")]
215simple_from!(Oklab to anstyle::RgbColor, via Srgb);
216#[cfg(feature = "anstyle")]
217simple_from!(Oklch to anstyle::RgbColor, via Srgb);
218#[cfg(feature = "anstyle")]
219simple_from!(XyzD50 to anstyle::RgbColor, via Srgb);
220#[cfg(feature = "anstyle")]
221simple_from!(XyzD65 to anstyle::RgbColor, via Srgb);
222
223#[cfg(feature = "anstyle")]
224simple_from!(Color to anstyle::Color, via anstyle::RgbColor);
225#[cfg(feature = "anstyle")]
226simple_from!(A98Rgb to anstyle::Color, via anstyle::RgbColor);
227#[cfg(feature = "anstyle")]
228simple_from!(Hsv to anstyle::Color, via anstyle::RgbColor);
229#[cfg(feature = "anstyle")]
230simple_from!(Hex to anstyle::Color, via anstyle::RgbColor);
231#[cfg(feature = "anstyle")]
232simple_from!(Hsl to anstyle::Color, via anstyle::RgbColor);
233#[cfg(feature = "anstyle")]
234simple_from!(Hwb to anstyle::Color, via anstyle::RgbColor);
235#[cfg(feature = "anstyle")]
236simple_from!(Lab to anstyle::Color, via anstyle::RgbColor);
237#[cfg(feature = "anstyle")]
238simple_from!(Lch to anstyle::Color, via anstyle::RgbColor);
239#[cfg(feature = "anstyle")]
240simple_from!(LinearRgb to anstyle::Color, via anstyle::RgbColor);
241#[cfg(feature = "anstyle")]
242simple_from!(Named to anstyle::Color, via anstyle::RgbColor);
243#[cfg(feature = "anstyle")]
244simple_from!(Oklab to anstyle::Color, via anstyle::RgbColor);
245#[cfg(feature = "anstyle")]
246simple_from!(Oklch to anstyle::Color, via anstyle::RgbColor);
247#[cfg(feature = "anstyle")]
248simple_from!(Srgb to anstyle::Color, via anstyle::RgbColor);
249#[cfg(feature = "anstyle")]
250simple_from!(XyzD50 to anstyle::Color, via anstyle::RgbColor);
251#[cfg(feature = "anstyle")]
252simple_from!(XyzD65 to anstyle::Color, via anstyle::RgbColor);