css_named_colors/
lib.rs

1//! # CSS Named Colors
2//!
3//! Adapted from the [official documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/named-color)
4//!
5//! Notes:
6//! 1. `transparent` is a [valid
7//!    name](https://developer.mozilla.org/en-US/docs/Web/CSS/named-color#transparent) that
8//!    occasionally requires special handling    
9//! 2. When color names collide, I have deferred to alphabetic order (`"aqua"` instead of "`cyan"`,
10//!    `"fuchsia"` instead of `"magenta`, `"gray"` instead of `"grey"`)
11
12#![no_std]
13/// CSS named color
14#[derive(Clone, Copy, Debug, Eq, PartialEq)]
15pub enum NamedColor {
16    ALICEBLUE,
17    ANTIQUEWHITE,
18    AQUA,
19    AQUAMARINE,
20    AZURE,
21    BEIGE,
22    BISQUE,
23    BLACK,
24    BLANCHEDALMOND,
25    BLUE,
26    BLUEVIOLET,
27    BROWN,
28    BURLYWOOD,
29    CADETBLUE,
30    CHARTREUSE,
31    CHOCOLATE,
32    CORAL,
33    CORNFLOWERBLUE,
34    CORNSILK,
35    CRIMSON,
36    CYAN,
37    DARKBLUE,
38    DARKCYAN,
39    DARKGOLDENROD,
40    DARKGRAY,
41    DARKGREEN,
42    DARKGREY,
43    DARKKHAKI,
44    DARKMAGENTA,
45    DARKOLIVEGREEN,
46    DARKORANGE,
47    DARKORCHID,
48    DARKRED,
49    DARKSALMON,
50    DARKSEAGREEN,
51    DARKSLATEBLUE,
52    DARKSLATEGRAY,
53    DARKSLATEGREY,
54    DARKTURQUOISE,
55    DARKVIOLET,
56    DEEPPINK,
57    DEEPSKYBLUE,
58    DIMGRAY,
59    DIMGREY,
60    DODGERBLUE,
61    FIREBRICK,
62    FLORALWHITE,
63    FORESTGREEN,
64    FUCHSIA,
65    GAINSBORO,
66    GHOSTWHITE,
67    GOLD,
68    GOLDENROD,
69    GRAY,
70    GREEN,
71    GREENYELLOW,
72    GREY,
73    HONEYDEW,
74    HOTPINK,
75    INDIANRED,
76    INDIGO,
77    IVORY,
78    KHAKI,
79    LAVENDER,
80    LAVENDERBLUSH,
81    LAWNGREEN,
82    LEMONCHIFFON,
83    LIGHTBLUE,
84    LIGHTCORAL,
85    LIGHTCYAN,
86    LIGHTGOLDENRODYELLOW,
87    LIGHTGRAY,
88    LIGHTGREEN,
89    LIGHTGREY,
90    LIGHTPINK,
91    LIGHTSALMON,
92    LIGHTSEAGREEN,
93    LIGHTSKYBLUE,
94    LIGHTSLATEGRAY,
95    LIGHTSLATEGREY,
96    LIGHTSTEELBLUE,
97    LIGHTYELLOW,
98    LIME,
99    LIMEGREEN,
100    LINEN,
101    MAGENTA,
102    MAROON,
103    MEDIUMAQUAMARINE,
104    MEDIUMBLUE,
105    MEDIUMORCHID,
106    MEDIUMPURPLE,
107    MEDIUMSEAGREEN,
108    MEDIUMSLATEBLUE,
109    MEDIUMSPRINGGREEN,
110    MEDIUMTURQUOISE,
111    MEDIUMVIOLETRED,
112    MIDNIGHTBLUE,
113    MINTCREAM,
114    MISTYROSE,
115    MOCCASIN,
116    NAVAJOWHITE,
117    NAVY,
118    OLDLACE,
119    OLIVE,
120    OLIVEDRAB,
121    ORANGE,
122    ORANGERED,
123    ORCHID,
124    PALEGOLDENROD,
125    PALEGREEN,
126    PALETURQUOISE,
127    PALEVIOLETRED,
128    PAPAYAWHIP,
129    PEACHPUFF,
130    PERU,
131    PINK,
132    PLUM,
133    POWDERBLUE,
134    PURPLE,
135    REBECCAPURPLE,
136    RED,
137    ROSYBROWN,
138    ROYALBLUE,
139    SADDLEBROWN,
140    SALMON,
141    SANDYBROWN,
142    SEAGREEN,
143    SEASHELL,
144    SIENNA,
145    SILVER,
146    SKYBLUE,
147    SLATEBLUE,
148    SLATEGRAY,
149    SLATEGREY,
150    SNOW,
151    SPRINGGREEN,
152    STEELBLUE,
153    TAN,
154    TEAL,
155    THISTLE,
156    TOMATO,
157    TRANSPARENT,
158    TURQUOISE,
159    VIOLET,
160    WHEAT,
161    WHITE,
162    WHITESMOKE,
163    YELLOW,
164    YELLOWGREEN,
165}
166
167impl NamedColor {
168    /// hex code including the leading '#'    
169    /// [`NamedColor::TRANSPARENT`] is rendered as `"transparent"`
170    pub const fn hex(&self) -> &'static str {
171        use NamedColor::*;
172        match self {
173            ALICEBLUE => "#f0f8ff",
174            ANTIQUEWHITE => "#faebd7",
175            AQUA => "#00ffff",
176            AQUAMARINE => "#7fffd4",
177            AZURE => "#F0ffff",
178            BEIGE => "#F5f5dc",
179            BISQUE => "#ffe4c4",
180            BLACK => "#000000",
181            BLANCHEDALMOND => "#ffebcd",
182            BLUE => "#0000ff",
183            BLUEVIOLET => "#8a2be2",
184            BROWN => "#a52a2a",
185            BURLYWOOD => "#deb887",
186            CADETBLUE => "#5f9ea0",
187            CHARTREUSE => "#7fff00",
188            CHOCOLATE => "#d2691e",
189            CORAL => "#ff7f50",
190            CORNFLOWERBLUE => "#6495ed",
191            CORNSILK => "#fff8dc",
192            CRIMSON => "#dc143c",
193            CYAN => "#00ffff",
194            DARKBLUE => "#00008b",
195            DARKCYAN => "#008b8b",
196            DARKGOLDENROD => "#b8860b",
197            DARKGRAY => "#a9a9a9",
198            DARKGREEN => "#006400",
199            DARKGREY => "#a9a9a9",
200            DARKKHAKI => "#bdb76b",
201            DARKMAGENTA => "#8b008b",
202            DARKOLIVEGREEN => "#556b2f",
203            DARKORANGE => "#ff8c00",
204            DARKORCHID => "#9932cc",
205            DARKRED => "#8b0000",
206            DARKSALMON => "#e9967a",
207            DARKSEAGREEN => "#8fbc8f",
208            DARKSLATEBLUE => "#483d8b",
209            DARKSLATEGRAY => "#2f4f4f",
210            DARKSLATEGREY => "#2f4f4f",
211            DARKTURQUOISE => "#00ced1",
212            DARKVIOLET => "#9400d3",
213            DEEPPINK => "#ff1493",
214            DEEPSKYBLUE => "#00bfff",
215            DIMGRAY => "#696969",
216            DIMGREY => "#696969",
217            DODGERBLUE => "#1e90ff",
218            FIREBRICK => "#b22222",
219            FLORALWHITE => "#fffaf0",
220            FORESTGREEN => "#228b22",
221            FUCHSIA => "#ff00ff",
222            GAINSBORO => "#dcdcdc",
223            GHOSTWHITE => "#f8f8ff",
224            GOLD => "#ffd700",
225            GOLDENROD => "#daa520",
226            GRAY => "#808080",
227            GREEN => "#008000",
228            GREENYELLOW => "#adff2f",
229            GREY => "#808080",
230            HONEYDEW => "#f0fff0",
231            HOTPINK => "#ff69b4",
232            INDIANRED => "#cd5c5c",
233            INDIGO => "#4b0082",
234            IVORY => "#fffff0",
235            KHAKI => "#f0e68c",
236            LAVENDER => "#e6e6fa",
237            LAVENDERBLUSH => "#fff0f5",
238            LAWNGREEN => "#7cfc00",
239            LEMONCHIFFON => "#fffacd",
240            LIGHTBLUE => "#add8e6",
241            LIGHTCORAL => "#f08080",
242            LIGHTCYAN => "#e0ffff",
243            LIGHTGOLDENRODYELLOW => "#fafad2",
244            LIGHTGRAY => "#d3d3d3",
245            LIGHTGREEN => "#90ee90",
246            LIGHTGREY => "#d3d3d3",
247            LIGHTPINK => "#ffb6c1",
248            LIGHTSALMON => "#ffa07a",
249            LIGHTSEAGREEN => "#20b2aa",
250            LIGHTSKYBLUE => "#87cefa",
251            LIGHTSLATEGRAY => "#778899",
252            LIGHTSLATEGREY => "#778899",
253            LIGHTSTEELBLUE => "#b0c4de",
254            LIGHTYELLOW => "#ffffe0",
255            LIME => "#00ff00",
256            LIMEGREEN => "#32cd32",
257            LINEN => "#faf0e6",
258            MAGENTA => "#ff00ff",
259            MAROON => "#800000",
260            MEDIUMAQUAMARINE => "#66cdaa",
261            MEDIUMBLUE => "#0000cd",
262            MEDIUMORCHID => "#ba55d3",
263            MEDIUMPURPLE => "#9370db",
264            MEDIUMSEAGREEN => "#3cb371",
265            MEDIUMSLATEBLUE => "#7b68ee",
266            MEDIUMSPRINGGREEN => "#00fa9a",
267            MEDIUMTURQUOISE => "#48d1cc",
268            MEDIUMVIOLETRED => "#c71585",
269            MIDNIGHTBLUE => "#191970",
270            MINTCREAM => "#f5fffa",
271            MISTYROSE => "#ffe4e1",
272            MOCCASIN => "#ffe4b5",
273            NAVAJOWHITE => "#ffdead",
274            NAVY => "#000080",
275            OLDLACE => "#fdf5e6",
276            OLIVE => "#808000",
277            OLIVEDRAB => "#6b8e23",
278            ORANGE => "#ffa500",
279            ORANGERED => "#ff4500",
280            ORCHID => "#da70d6",
281            PALEGOLDENROD => "#eee8aa",
282            PALEGREEN => "#98fb98",
283            PALETURQUOISE => "#afeeee",
284            PALEVIOLETRED => "#db7093",
285            PAPAYAWHIP => "#ffefd5",
286            PEACHPUFF => "#ffdab9",
287            PERU => "#cd853f",
288            PINK => "#ffc0cb",
289            PLUM => "#dda0dd",
290            POWDERBLUE => "#b0e0e6",
291            PURPLE => "#800080",
292            REBECCAPURPLE => "#663399",
293            RED => "#ff0000",
294            ROSYBROWN => "#bc8f8f",
295            ROYALBLUE => "#4169e1",
296            SADDLEBROWN => "#8b4513",
297            SALMON => "#fa8072",
298            SANDYBROWN => "#f4a460",
299            SEAGREEN => "#2e8b57",
300            SEASHELL => "#fff5ee",
301            SIENNA => "#a0522d",
302            SILVER => "#c0c0c0",
303            SKYBLUE => "#87ceeb",
304            SLATEBLUE => "#6a5acd",
305            SLATEGRAY => "#708090",
306            SLATEGREY => "#708090",
307            SNOW => "#fffafa",
308            SPRINGGREEN => "#00ff7f",
309            STEELBLUE => "#4682b4",
310            TAN => "#d2b48c",
311            TEAL => "#008080",
312            THISTLE => "#d8bfd8",
313            TOMATO => "#ff6347",
314            TRANSPARENT => "transparent",
315            TURQUOISE => "#40e0d0",
316            VIOLET => "#ee82ee",
317            WHEAT => "#f5deb3",
318            WHITE => "#ffffff",
319            WHITESMOKE => "#f5f5f5",
320            YELLOW => "#ffff00",
321            YELLOWGREEN => "#9acd32",
322        }
323    }
324    /// color name
325    pub const fn name(&self) -> &'static str {
326        use NamedColor::*;
327        match self {
328            ALICEBLUE => "aliceblue",
329            ANTIQUEWHITE => "antiquewhite",
330            AQUA => "aqua",
331            AQUAMARINE => "aquamarine",
332            AZURE => "azure",
333            BEIGE => "beige",
334            BISQUE => "bisque",
335            BLACK => "black",
336            BLANCHEDALMOND => "blanchedalmond",
337            BLUE => "blue",
338            BLUEVIOLET => "blueviolet",
339            BROWN => "brown",
340            BURLYWOOD => "burlywood",
341            CADETBLUE => "cadetblue",
342            CHARTREUSE => "chartreuse",
343            CHOCOLATE => "chocolate",
344            CORAL => "coral",
345            CORNFLOWERBLUE => "cornflowerblue",
346            CORNSILK => "cornsilk",
347            CRIMSON => "crimson",
348            CYAN => "cyan",
349            DARKBLUE => "darkblue",
350            DARKCYAN => "darkcyan",
351            DARKGOLDENROD => "darkgoldenrod",
352            DARKGRAY => "darkgray",
353            DARKGREEN => "darkgreen",
354            DARKGREY => "darkgrey",
355            DARKKHAKI => "darkkhaki",
356            DARKMAGENTA => "darkmagenta",
357            DARKOLIVEGREEN => "darkolivegreen",
358            DARKORANGE => "darkorange",
359            DARKORCHID => "darkorchid",
360            DARKRED => "darkred",
361            DARKSALMON => "darksalmon",
362            DARKSEAGREEN => "darkseagreen",
363            DARKSLATEBLUE => "darkslateblue",
364            DARKSLATEGRAY => "darkslategray",
365            DARKSLATEGREY => "darkslategrey",
366            DARKTURQUOISE => "darkturquoise",
367            DARKVIOLET => "darkviolet",
368            DEEPPINK => "deeppink",
369            DEEPSKYBLUE => "deepskyblue",
370            DIMGRAY => "dimgray",
371            DIMGREY => "dimgrey",
372            DODGERBLUE => "dodgerblue",
373            FIREBRICK => "firebrick",
374            FLORALWHITE => "floralwhite",
375            FORESTGREEN => "forestgreen",
376            FUCHSIA => "fuchsia",
377            GAINSBORO => "gainsboro",
378            GHOSTWHITE => "ghostwhite",
379            GOLD => "gold",
380            GOLDENROD => "goldenrod",
381            GRAY => "gray",
382            GREEN => "green",
383            GREENYELLOW => "greenyellow",
384            GREY => "grey",
385            HONEYDEW => "honeydew",
386            HOTPINK => "hotpink",
387            INDIANRED => "indianred",
388            INDIGO => "indigo",
389            IVORY => "ivory",
390            KHAKI => "khaki",
391            LAVENDER => "lavender",
392            LAVENDERBLUSH => "lavenderblush",
393            LAWNGREEN => "lawngreen",
394            LEMONCHIFFON => "lemonchiffon",
395            LIGHTBLUE => "lightblue",
396            LIGHTCORAL => "lightcoral",
397            LIGHTCYAN => "lightcyan",
398            LIGHTGOLDENRODYELLOW => "lightgoldenrodyellow",
399            LIGHTGRAY => "lightgray",
400            LIGHTGREEN => "lightgreen",
401            LIGHTGREY => "lightgrey",
402            LIGHTPINK => "lightpink",
403            LIGHTSALMON => "lightsalmon",
404            LIGHTSEAGREEN => "lightseagreen",
405            LIGHTSKYBLUE => "lightskyblue",
406            LIGHTSLATEGRAY => "lightslategray",
407            LIGHTSLATEGREY => "lightslategrey",
408            LIGHTSTEELBLUE => "lightsteelblue",
409            LIGHTYELLOW => "lightyellow",
410            LIME => "lime",
411            LIMEGREEN => "limegreen",
412            LINEN => "linen",
413            MAGENTA => "magenta",
414            MAROON => "maroon",
415            MEDIUMAQUAMARINE => "mediumaquamarine",
416            MEDIUMBLUE => "mediumblue",
417            MEDIUMORCHID => "mediumorchid",
418            MEDIUMPURPLE => "mediumpurple",
419            MEDIUMSEAGREEN => "mediumseagreen",
420            MEDIUMSLATEBLUE => "mediumslateblue",
421            MEDIUMSPRINGGREEN => "mediumspringgreen",
422            MEDIUMTURQUOISE => "mediumturquoise",
423            MEDIUMVIOLETRED => "mediumvioletred",
424            MIDNIGHTBLUE => "midnightblue",
425            MINTCREAM => "mintcream",
426            MISTYROSE => "mistyrose",
427            MOCCASIN => "moccasin",
428            NAVAJOWHITE => "navajowhite",
429            NAVY => "navy",
430            OLDLACE => "oldlace",
431            OLIVE => "olive",
432            OLIVEDRAB => "olivedrab",
433            ORANGE => "orange",
434            ORANGERED => "orangered",
435            ORCHID => "orchid",
436            PALEGOLDENROD => "palegoldenrod",
437            PALEGREEN => "palegreen",
438            PALETURQUOISE => "paleturquoise",
439            PALEVIOLETRED => "palevioletred",
440            PAPAYAWHIP => "papayawhip",
441            PEACHPUFF => "peachpuff",
442            PERU => "peru",
443            PINK => "pink",
444            PLUM => "plum",
445            POWDERBLUE => "powderblue",
446            PURPLE => "purple",
447            REBECCAPURPLE => "rebeccapurple",
448            RED => "red",
449            ROSYBROWN => "rosybrown",
450            ROYALBLUE => "royalblue",
451            SADDLEBROWN => "saddlebrown",
452            SALMON => "salmon",
453            SANDYBROWN => "sandybrown",
454            SEAGREEN => "seagreen",
455            SEASHELL => "seashell",
456            SIENNA => "sienna",
457            SILVER => "silver",
458            SKYBLUE => "skyblue",
459            SLATEBLUE => "slateblue",
460            SLATEGRAY => "slategray",
461            SLATEGREY => "slategrey",
462            SNOW => "snow",
463            SPRINGGREEN => "springgreen",
464            STEELBLUE => "steelblue",
465            TAN => "tan",
466            TEAL => "teal",
467            THISTLE => "thistle",
468            TOMATO => "tomato",
469            TRANSPARENT => "transparent",
470            TURQUOISE => "turquoise",
471            VIOLET => "violet",
472            WHEAT => "wheat",
473            WHITE => "white",
474            WHITESMOKE => "whitesmoke",
475            YELLOW => "yellow",
476            YELLOWGREEN => "yellowgreen",
477        }
478    }
479    /// possibly convert a [`NamedColor`] from a hex code, including the leading `#`    
480    /// `"transparent"` becomes [`NamedColor::TRANSPARENT`]    
481    /// `"#00ffff"` becomes [`NamedColor::AQUA`]    
482    /// `"#ff00ff"` becomes [`NamedColor::FUCHSIA`]    
483    /// `"#808080"` becomes [`NamedColor::GRAY`],`"#2f4f4f"` becomes [`NamedColor::DARKSLATEGRAY`],
484    /// etc.
485    pub fn from_hex(hex: &str) -> Option<Self> {
486        match hex {
487            "#f0f8ff" => Some(NamedColor::ALICEBLUE),
488            "#faebd7" => Some(NamedColor::ANTIQUEWHITE),
489            "#00ffff" => Some(NamedColor::AQUA),
490            "#7fffd4" => Some(NamedColor::AQUAMARINE),
491            "#f0ffff" => Some(NamedColor::AZURE),
492            "#f5f5dc" => Some(NamedColor::BEIGE),
493            "#ffe4c4" => Some(NamedColor::BISQUE),
494            "#000000" => Some(NamedColor::BLACK),
495            "#ffebcd" => Some(NamedColor::BLANCHEDALMOND),
496            "#0000ff" => Some(NamedColor::BLUE),
497            "#8a2be2" => Some(NamedColor::BLUEVIOLET),
498            "#a52a2a" => Some(NamedColor::BROWN),
499            "#deb887" => Some(NamedColor::BURLYWOOD),
500            "#5f9ea0" => Some(NamedColor::CADETBLUE),
501            "#7fff00" => Some(NamedColor::CHARTREUSE),
502            "#d2691e" => Some(NamedColor::CHOCOLATE),
503            "#ff7f50" => Some(NamedColor::CORAL),
504            "#6495ed" => Some(NamedColor::CORNFLOWERBLUE),
505            "#fff8dc" => Some(NamedColor::CORNSILK),
506            "#dc143c" => Some(NamedColor::CRIMSON),
507            "#00008b" => Some(NamedColor::DARKBLUE),
508            "#008b8b" => Some(NamedColor::DARKCYAN),
509            "#b8860b" => Some(NamedColor::DARKGOLDENROD),
510            "#a9a9a9" => Some(NamedColor::DARKGRAY),
511            "#006400" => Some(NamedColor::DARKGREEN),
512            "#bdb76b" => Some(NamedColor::DARKKHAKI),
513            "#8b008b" => Some(NamedColor::DARKMAGENTA),
514            "#556b2f" => Some(NamedColor::DARKOLIVEGREEN),
515            "#ff8c00" => Some(NamedColor::DARKORANGE),
516            "#9932cc" => Some(NamedColor::DARKORCHID),
517            "#8b0000" => Some(NamedColor::DARKRED),
518            "#e9967a" => Some(NamedColor::DARKSALMON),
519            "#8fbc8f" => Some(NamedColor::DARKSEAGREEN),
520            "#483d8b" => Some(NamedColor::DARKSLATEBLUE),
521            "#2f4f4f" => Some(NamedColor::DARKSLATEGRAY),
522            "#00ced1" => Some(NamedColor::DARKTURQUOISE),
523            "#9400d3" => Some(NamedColor::DARKVIOLET),
524            "#ff1493" => Some(NamedColor::DEEPPINK),
525            "#00bfff" => Some(NamedColor::DEEPSKYBLUE),
526            "#696969" => Some(NamedColor::DIMGRAY),
527            "#1e90ff" => Some(NamedColor::DODGERBLUE),
528            "#b22222" => Some(NamedColor::FIREBRICK),
529            "#fffaf0" => Some(NamedColor::FLORALWHITE),
530            "#228b22" => Some(NamedColor::FORESTGREEN),
531            "#ff00ff" => Some(NamedColor::FUCHSIA),
532            "#dcdcdc" => Some(NamedColor::GAINSBORO),
533            "#f8f8ff" => Some(NamedColor::GHOSTWHITE),
534            "#ffd700" => Some(NamedColor::GOLD),
535            "#daa520" => Some(NamedColor::GOLDENROD),
536            "#808080" => Some(NamedColor::GRAY),
537            "#008000" => Some(NamedColor::GREEN),
538            "#adff2f" => Some(NamedColor::GREENYELLOW),
539            "#f0fff0" => Some(NamedColor::HONEYDEW),
540            "#ff69b4" => Some(NamedColor::HOTPINK),
541            "#cd5c5c" => Some(NamedColor::INDIANRED),
542            "#4b0082" => Some(NamedColor::INDIGO),
543            "#fffff0" => Some(NamedColor::IVORY),
544            "#f0e68c" => Some(NamedColor::KHAKI),
545            "#e6e6fa" => Some(NamedColor::LAVENDER),
546            "#fff0f5" => Some(NamedColor::LAVENDERBLUSH),
547            "#7cfc00" => Some(NamedColor::LAWNGREEN),
548            "#fffacd" => Some(NamedColor::LEMONCHIFFON),
549            "#add8e6" => Some(NamedColor::LIGHTBLUE),
550            "#f08080" => Some(NamedColor::LIGHTCORAL),
551            "#e0ffff" => Some(NamedColor::LIGHTCYAN),
552            "#fafad2" => Some(NamedColor::LIGHTGOLDENRODYELLOW),
553            "#d3d3d3" => Some(NamedColor::LIGHTGRAY),
554            "#90ee90" => Some(NamedColor::LIGHTGREEN),
555            "#ffb6c1" => Some(NamedColor::LIGHTPINK),
556            "#ffa07a" => Some(NamedColor::LIGHTSALMON),
557            "#20b2aa" => Some(NamedColor::LIGHTSEAGREEN),
558            "#87cefa" => Some(NamedColor::LIGHTSKYBLUE),
559            "#778899" => Some(NamedColor::LIGHTSLATEGRAY),
560            "#b0c4de" => Some(NamedColor::LIGHTSTEELBLUE),
561            "#ffffe0" => Some(NamedColor::LIGHTYELLOW),
562            "#00ff00" => Some(NamedColor::LIME),
563            "#32cd32" => Some(NamedColor::LIMEGREEN),
564            "#faf0e6" => Some(NamedColor::LINEN),
565            "#800000" => Some(NamedColor::MAROON),
566            "#66cdaa" => Some(NamedColor::MEDIUMAQUAMARINE),
567            "#0000cd" => Some(NamedColor::MEDIUMBLUE),
568            "#ba55d3" => Some(NamedColor::MEDIUMORCHID),
569            "#9370db" => Some(NamedColor::MEDIUMPURPLE),
570            "#3cb371" => Some(NamedColor::MEDIUMSEAGREEN),
571            "#7b68ee" => Some(NamedColor::MEDIUMSLATEBLUE),
572            "#00fa9a" => Some(NamedColor::MEDIUMSPRINGGREEN),
573            "#48d1cc" => Some(NamedColor::MEDIUMTURQUOISE),
574            "#c71585" => Some(NamedColor::MEDIUMVIOLETRED),
575            "#191970" => Some(NamedColor::MIDNIGHTBLUE),
576            "#f5fffa" => Some(NamedColor::MINTCREAM),
577            "#ffe4e1" => Some(NamedColor::MISTYROSE),
578            "#ffe4b5" => Some(NamedColor::MOCCASIN),
579            "#ffdead" => Some(NamedColor::NAVAJOWHITE),
580            "#000080" => Some(NamedColor::NAVY),
581            "#fdf5e6" => Some(NamedColor::OLDLACE),
582            "#808000" => Some(NamedColor::OLIVE),
583            "#6b8e23" => Some(NamedColor::OLIVEDRAB),
584            "#ffa500" => Some(NamedColor::ORANGE),
585            "#ff4500" => Some(NamedColor::ORANGERED),
586            "#da70d6" => Some(NamedColor::ORCHID),
587            "#eee8aa" => Some(NamedColor::PALEGOLDENROD),
588            "#98fb98" => Some(NamedColor::PALEGREEN),
589            "#afeeee" => Some(NamedColor::PALETURQUOISE),
590            "#db7093" => Some(NamedColor::PALEVIOLETRED),
591            "#ffefd5" => Some(NamedColor::PAPAYAWHIP),
592            "#ffdab9" => Some(NamedColor::PEACHPUFF),
593            "#cd853f" => Some(NamedColor::PERU),
594            "#ffc0cb" => Some(NamedColor::PINK),
595            "#dda0dd" => Some(NamedColor::PLUM),
596            "#b0e0e6" => Some(NamedColor::POWDERBLUE),
597            "#800080" => Some(NamedColor::PURPLE),
598            "#663399" => Some(NamedColor::REBECCAPURPLE),
599            "#ff0000" => Some(NamedColor::RED),
600            "#bc8f8f" => Some(NamedColor::ROSYBROWN),
601            "#4169e1" => Some(NamedColor::ROYALBLUE),
602            "#8b4513" => Some(NamedColor::SADDLEBROWN),
603            "#fa8072" => Some(NamedColor::SALMON),
604            "#f4a460" => Some(NamedColor::SANDYBROWN),
605            "#2e8b57" => Some(NamedColor::SEAGREEN),
606            "#fff5ee" => Some(NamedColor::SEASHELL),
607            "#a0522d" => Some(NamedColor::SIENNA),
608            "#c0c0c0" => Some(NamedColor::SILVER),
609            "#87ceeb" => Some(NamedColor::SKYBLUE),
610            "#6a5acd" => Some(NamedColor::SLATEBLUE),
611            "#708090" => Some(NamedColor::SLATEGRAY),
612            "#fffafa" => Some(NamedColor::SNOW),
613            "#00ff7f" => Some(NamedColor::SPRINGGREEN),
614            "#4682b4" => Some(NamedColor::STEELBLUE),
615            "#d2b48c" => Some(NamedColor::TAN),
616            "#008080" => Some(NamedColor::TEAL),
617            "#d8bfd8" => Some(NamedColor::THISTLE),
618            "#ff6347" => Some(NamedColor::TOMATO),
619            "#40e0d0" => Some(NamedColor::TURQUOISE),
620            "#ee82ee" => Some(NamedColor::VIOLET),
621            "#f5deb3" => Some(NamedColor::WHEAT),
622            "#ffffff" => Some(NamedColor::WHITE),
623            "#f5f5f5" => Some(NamedColor::WHITESMOKE),
624            "#ffff00" => Some(NamedColor::YELLOW),
625            "#9acd32" => Some(NamedColor::YELLOWGREEN),
626            _ => None,
627        }
628    }
629    /// convert from color name to a [`NamedColor`]
630    pub fn from_name(name: &str) -> Option<Self> {
631        match name {
632            "aliceblue" => Some(NamedColor::ALICEBLUE),
633            "antiquewhite" => Some(NamedColor::ANTIQUEWHITE),
634            "aqua" => Some(NamedColor::AQUA),
635            "aquamarine" => Some(NamedColor::AQUAMARINE),
636            "azure" => Some(NamedColor::AZURE),
637            "beige" => Some(NamedColor::BEIGE),
638            "bisque" => Some(NamedColor::BISQUE),
639            "black" => Some(NamedColor::BLACK),
640            "blanchedalmond" => Some(NamedColor::BLANCHEDALMOND),
641            "blue" => Some(NamedColor::BLUE),
642            "blueviolet" => Some(NamedColor::BLUEVIOLET),
643            "brown" => Some(NamedColor::BROWN),
644            "burlywood" => Some(NamedColor::BURLYWOOD),
645            "cadetblue" => Some(NamedColor::CADETBLUE),
646            "chartreuse" => Some(NamedColor::CHARTREUSE),
647            "chocolate" => Some(NamedColor::CHOCOLATE),
648            "coral" => Some(NamedColor::CORAL),
649            "cornflowerblue" => Some(NamedColor::CORNFLOWERBLUE),
650            "cornsilk" => Some(NamedColor::CORNSILK),
651            "crimson" => Some(NamedColor::CRIMSON),
652            "cyan" => Some(NamedColor::CYAN),
653            "darkblue" => Some(NamedColor::DARKBLUE),
654            "darkcyan" => Some(NamedColor::DARKCYAN),
655            "darkgoldenrod" => Some(NamedColor::DARKGOLDENROD),
656            "darkgray" => Some(NamedColor::DARKGRAY),
657            "darkgreen" => Some(NamedColor::DARKGREEN),
658            "darkgrey" => Some(NamedColor::DARKGREY),
659            "darkkhaki" => Some(NamedColor::DARKKHAKI),
660            "darkmagenta" => Some(NamedColor::DARKMAGENTA),
661            "darkolivegreen" => Some(NamedColor::DARKOLIVEGREEN),
662            "darkorange" => Some(NamedColor::DARKORANGE),
663            "darkorchid" => Some(NamedColor::DARKORCHID),
664            "darkred" => Some(NamedColor::DARKRED),
665            "darksalmon" => Some(NamedColor::DARKSALMON),
666            "darkseagreen" => Some(NamedColor::DARKSEAGREEN),
667            "darkslateblue" => Some(NamedColor::DARKSLATEBLUE),
668            "darkslategray" => Some(NamedColor::DARKSLATEGRAY),
669            "darkslategrey" => Some(NamedColor::DARKSLATEGREY),
670            "darkturquoise" => Some(NamedColor::DARKTURQUOISE),
671            "darkviolet" => Some(NamedColor::DARKVIOLET),
672            "deeppink" => Some(NamedColor::DEEPPINK),
673            "deepskyblue" => Some(NamedColor::DEEPSKYBLUE),
674            "dimgray" => Some(NamedColor::DIMGRAY),
675            "dimgrey" => Some(NamedColor::DIMGREY),
676            "dodgerblue" => Some(NamedColor::DODGERBLUE),
677            "firebrick" => Some(NamedColor::FIREBRICK),
678            "floralwhite" => Some(NamedColor::FLORALWHITE),
679            "forestgreen" => Some(NamedColor::FORESTGREEN),
680            "fuchsia" => Some(NamedColor::FUCHSIA),
681            "gainsboro" => Some(NamedColor::GAINSBORO),
682            "ghostwhite" => Some(NamedColor::GHOSTWHITE),
683            "gold" => Some(NamedColor::GOLD),
684            "goldenrod" => Some(NamedColor::GOLDENROD),
685            "gray" => Some(NamedColor::GRAY),
686            "green" => Some(NamedColor::GREEN),
687            "greenyellow" => Some(NamedColor::GREENYELLOW),
688            "grey" => Some(NamedColor::GREY),
689            "honeydew" => Some(NamedColor::HONEYDEW),
690            "hotpink" => Some(NamedColor::HOTPINK),
691            "indianred" => Some(NamedColor::INDIANRED),
692            "indigo" => Some(NamedColor::INDIGO),
693            "ivory" => Some(NamedColor::IVORY),
694            "khaki" => Some(NamedColor::KHAKI),
695            "lavender" => Some(NamedColor::LAVENDER),
696            "lavenderblush" => Some(NamedColor::LAVENDERBLUSH),
697            "lawngreen" => Some(NamedColor::LAWNGREEN),
698            "lemonchiffon" => Some(NamedColor::LEMONCHIFFON),
699            "lightblue" => Some(NamedColor::LIGHTBLUE),
700            "lightcoral" => Some(NamedColor::LIGHTCORAL),
701            "lightcyan" => Some(NamedColor::LIGHTCYAN),
702            "lightgoldenrodyellow" => Some(NamedColor::LIGHTGOLDENRODYELLOW),
703            "lightgray" => Some(NamedColor::LIGHTGRAY),
704            "lightgreen" => Some(NamedColor::LIGHTGREEN),
705            "lightgrey" => Some(NamedColor::LIGHTGREY),
706            "lightpink" => Some(NamedColor::LIGHTPINK),
707            "lightsalmon" => Some(NamedColor::LIGHTSALMON),
708            "lightseagreen" => Some(NamedColor::LIGHTSEAGREEN),
709            "lightskyblue" => Some(NamedColor::LIGHTSKYBLUE),
710            "lightslategray" => Some(NamedColor::LIGHTSLATEGRAY),
711            "lightslategrey" => Some(NamedColor::LIGHTSLATEGREY),
712            "lightsteelblue" => Some(NamedColor::LIGHTSTEELBLUE),
713            "lightyellow" => Some(NamedColor::LIGHTYELLOW),
714            "lime" => Some(NamedColor::LIME),
715            "limegreen" => Some(NamedColor::LIMEGREEN),
716            "linen" => Some(NamedColor::LINEN),
717            "magenta" => Some(NamedColor::MAGENTA),
718            "maroon" => Some(NamedColor::MAROON),
719            "mediumaquamarine" => Some(NamedColor::MEDIUMAQUAMARINE),
720            "mediumblue" => Some(NamedColor::MEDIUMBLUE),
721            "mediumorchid" => Some(NamedColor::MEDIUMORCHID),
722            "mediumpurple" => Some(NamedColor::MEDIUMPURPLE),
723            "mediumseagreen" => Some(NamedColor::MEDIUMSEAGREEN),
724            "mediumslateblue" => Some(NamedColor::MEDIUMSLATEBLUE),
725            "mediumspringgreen" => Some(NamedColor::MEDIUMSPRINGGREEN),
726            "mediumturquoise" => Some(NamedColor::MEDIUMTURQUOISE),
727            "mediumvioletred" => Some(NamedColor::MEDIUMVIOLETRED),
728            "midnightblue" => Some(NamedColor::MIDNIGHTBLUE),
729            "mintcream" => Some(NamedColor::MINTCREAM),
730            "mistyrose" => Some(NamedColor::MISTYROSE),
731            "moccasin" => Some(NamedColor::MOCCASIN),
732            "navajowhite" => Some(NamedColor::NAVAJOWHITE),
733            "navy" => Some(NamedColor::NAVY),
734            "oldlace" => Some(NamedColor::OLDLACE),
735            "olive" => Some(NamedColor::OLIVE),
736            "olivedrab" => Some(NamedColor::OLIVEDRAB),
737            "orange" => Some(NamedColor::ORANGE),
738            "orangered" => Some(NamedColor::ORANGERED),
739            "orchid" => Some(NamedColor::ORCHID),
740            "palegoldenrod" => Some(NamedColor::PALEGOLDENROD),
741            "palegreen" => Some(NamedColor::PALEGREEN),
742            "paleturquoise" => Some(NamedColor::PALETURQUOISE),
743            "palevioletred" => Some(NamedColor::PALEVIOLETRED),
744            "papayawhip" => Some(NamedColor::PAPAYAWHIP),
745            "peachpuff" => Some(NamedColor::PEACHPUFF),
746            "peru" => Some(NamedColor::PERU),
747            "pink" => Some(NamedColor::PINK),
748            "plum" => Some(NamedColor::PLUM),
749            "powderblue" => Some(NamedColor::POWDERBLUE),
750            "purple" => Some(NamedColor::PURPLE),
751            "rebeccapurple" => Some(NamedColor::REBECCAPURPLE),
752            "red" => Some(NamedColor::RED),
753            "rosybrown" => Some(NamedColor::ROSYBROWN),
754            "royalblue" => Some(NamedColor::ROYALBLUE),
755            "saddlebrown" => Some(NamedColor::SADDLEBROWN),
756            "salmon" => Some(NamedColor::SALMON),
757            "sandybrown" => Some(NamedColor::SANDYBROWN),
758            "seagreen" => Some(NamedColor::SEAGREEN),
759            "seashell" => Some(NamedColor::SEASHELL),
760            "sienna" => Some(NamedColor::SIENNA),
761            "silver" => Some(NamedColor::SILVER),
762            "skyblue" => Some(NamedColor::SKYBLUE),
763            "slateblue" => Some(NamedColor::SLATEBLUE),
764            "slategray" => Some(NamedColor::SLATEGRAY),
765            "slategrey" => Some(NamedColor::SLATEGREY),
766            "snow" => Some(NamedColor::SNOW),
767            "springgreen" => Some(NamedColor::SPRINGGREEN),
768            "steelblue" => Some(NamedColor::STEELBLUE),
769            "tan" => Some(NamedColor::TAN),
770            "teal" => Some(NamedColor::TEAL),
771            "thistle" => Some(NamedColor::THISTLE),
772            "tomato" => Some(NamedColor::TOMATO),
773            "transparent" => Some(NamedColor::TRANSPARENT),
774            "turquoise" => Some(NamedColor::TURQUOISE),
775            "violet" => Some(NamedColor::VIOLET),
776            "wheat" => Some(NamedColor::WHEAT),
777            "white" => Some(NamedColor::WHITE),
778            "whitesmoke" => Some(NamedColor::WHITESMOKE),
779            "yellow" => Some(NamedColor::YELLOW),
780            "yellowgreen" => Some(NamedColor::YELLOWGREEN),
781            _ => None,
782        }
783    }
784    /// hex value as a `(red, green, blue)`  tuple    
785    /// [`NamedColor::TRANSPARENT`] doesn't correspond to a hex value
786    pub const fn rgb(&self) -> Option<(u8, u8, u8)> {
787        use NamedColor::*;
788        match self {
789            ALICEBLUE => Some((240, 248, 255)),
790            ANTIQUEWHITE => Some((250, 235, 215)),
791            AQUA => Some((0, 255, 255)),
792            AQUAMARINE => Some((127, 255, 212)),
793            AZURE => Some((240, 255, 255)),
794            BEIGE => Some((245, 245, 220)),
795            BISQUE => Some((255, 228, 196)),
796            BLACK => Some((0, 0, 0)),
797            BLANCHEDALMOND => Some((255, 235, 205)),
798            BLUE => Some((0, 0, 255)),
799            BLUEVIOLET => Some((138, 43, 226)),
800            BROWN => Some((165, 42, 42)),
801            BURLYWOOD => Some((222, 184, 135)),
802            CADETBLUE => Some((95, 158, 160)),
803            CHARTREUSE => Some((127, 255, 0)),
804            CHOCOLATE => Some((210, 105, 30)),
805            CORAL => Some((255, 127, 80)),
806            CORNFLOWERBLUE => Some((100, 149, 237)),
807            CORNSILK => Some((255, 248, 220)),
808            CRIMSON => Some((220, 20, 60)),
809            CYAN => Some((0, 255, 255)),
810            DARKBLUE => Some((0, 0, 139)),
811            DARKCYAN => Some((0, 139, 139)),
812            DARKGOLDENROD => Some((184, 134, 11)),
813            DARKGRAY => Some((169, 169, 169)),
814            DARKGREEN => Some((0, 100, 0)),
815            DARKGREY => Some((169, 169, 169)),
816            DARKKHAKI => Some((189, 183, 107)),
817            DARKMAGENTA => Some((139, 0, 139)),
818            DARKOLIVEGREEN => Some((85, 107, 47)),
819            DARKORANGE => Some((255, 140, 0)),
820            DARKORCHID => Some((153, 50, 204)),
821            DARKRED => Some((139, 0, 0)),
822            DARKSALMON => Some((233, 150, 122)),
823            DARKSEAGREEN => Some((143, 188, 143)),
824            DARKSLATEBLUE => Some((72, 61, 139)),
825            DARKSLATEGRAY => Some((47, 79, 79)),
826            DARKSLATEGREY => Some((47, 79, 79)),
827            DARKTURQUOISE => Some((0, 206, 209)),
828            DARKVIOLET => Some((148, 0, 211)),
829            DEEPPINK => Some((255, 20, 147)),
830            DEEPSKYBLUE => Some((0, 191, 255)),
831            DIMGRAY => Some((105, 105, 105)),
832            DIMGREY => Some((105, 105, 105)),
833            DODGERBLUE => Some((30, 144, 255)),
834            FIREBRICK => Some((178, 34, 34)),
835            FLORALWHITE => Some((255, 250, 240)),
836            FORESTGREEN => Some((34, 139, 34)),
837            FUCHSIA => Some((255, 0, 255)),
838            GAINSBORO => Some((220, 220, 220)),
839            GHOSTWHITE => Some((248, 248, 255)),
840            GOLD => Some((255, 215, 0)),
841            GOLDENROD => Some((218, 165, 32)),
842            GRAY => Some((128, 128, 128)),
843            GREEN => Some((0, 128, 0)),
844            GREENYELLOW => Some((173, 255, 47)),
845            GREY => Some((128, 128, 128)),
846            HONEYDEW => Some((240, 255, 240)),
847            HOTPINK => Some((255, 105, 180)),
848            INDIANRED => Some((205, 92, 92)),
849            INDIGO => Some((75, 0, 130)),
850            IVORY => Some((255, 255, 240)),
851            KHAKI => Some((240, 230, 140)),
852            LAVENDER => Some((230, 230, 250)),
853            LAVENDERBLUSH => Some((255, 240, 245)),
854            LAWNGREEN => Some((124, 252, 0)),
855            LEMONCHIFFON => Some((255, 250, 205)),
856            LIGHTBLUE => Some((173, 216, 230)),
857            LIGHTCORAL => Some((240, 128, 128)),
858            LIGHTCYAN => Some((224, 255, 255)),
859            LIGHTGOLDENRODYELLOW => Some((250, 250, 210)),
860            LIGHTGRAY => Some((211, 211, 211)),
861            LIGHTGREEN => Some((144, 238, 144)),
862            LIGHTGREY => Some((211, 211, 211)),
863            LIGHTPINK => Some((255, 182, 193)),
864            LIGHTSALMON => Some((255, 160, 122)),
865            LIGHTSEAGREEN => Some((32, 178, 170)),
866            LIGHTSKYBLUE => Some((135, 206, 250)),
867            LIGHTSLATEGRAY => Some((119, 136, 153)),
868            LIGHTSLATEGREY => Some((119, 136, 153)),
869            LIGHTSTEELBLUE => Some((176, 196, 222)),
870            LIGHTYELLOW => Some((255, 255, 224)),
871            LIME => Some((0, 255, 0)),
872            LIMEGREEN => Some((50, 205, 50)),
873            LINEN => Some((250, 240, 230)),
874            MAGENTA => Some((255, 0, 255)),
875            MAROON => Some((128, 0, 0)),
876            MEDIUMAQUAMARINE => Some((102, 205, 170)),
877            MEDIUMBLUE => Some((0, 0, 205)),
878            MEDIUMORCHID => Some((186, 85, 211)),
879            MEDIUMPURPLE => Some((147, 112, 219)),
880            MEDIUMSEAGREEN => Some((60, 179, 113)),
881            MEDIUMSLATEBLUE => Some((123, 104, 238)),
882            MEDIUMSPRINGGREEN => Some((0, 250, 154)),
883            MEDIUMTURQUOISE => Some((72, 209, 204)),
884            MEDIUMVIOLETRED => Some((199, 21, 133)),
885            MIDNIGHTBLUE => Some((25, 25, 112)),
886            MINTCREAM => Some((245, 255, 250)),
887            MISTYROSE => Some((255, 228, 225)),
888            MOCCASIN => Some((255, 228, 181)),
889            NAVAJOWHITE => Some((255, 222, 173)),
890            NAVY => Some((0, 0, 128)),
891            OLDLACE => Some((253, 245, 230)),
892            OLIVE => Some((128, 128, 0)),
893            OLIVEDRAB => Some((107, 142, 35)),
894            ORANGE => Some((255, 165, 0)),
895            ORANGERED => Some((255, 69, 0)),
896            ORCHID => Some((218, 112, 214)),
897            PALEGOLDENROD => Some((238, 232, 170)),
898            PALEGREEN => Some((152, 251, 152)),
899            PALETURQUOISE => Some((175, 238, 238)),
900            PALEVIOLETRED => Some((219, 112, 147)),
901            PAPAYAWHIP => Some((255, 239, 213)),
902            PEACHPUFF => Some((255, 218, 185)),
903            PERU => Some((205, 133, 63)),
904            PINK => Some((255, 192, 203)),
905            PLUM => Some((221, 160, 221)),
906            POWDERBLUE => Some((176, 224, 230)),
907            PURPLE => Some((128, 0, 128)),
908            REBECCAPURPLE => Some((102, 51, 153)),
909            RED => Some((255, 0, 0)),
910            ROSYBROWN => Some((188, 143, 143)),
911            ROYALBLUE => Some((65, 105, 225)),
912            SADDLEBROWN => Some((139, 69, 19)),
913            SALMON => Some((250, 128, 114)),
914            SANDYBROWN => Some((244, 164, 96)),
915            SEAGREEN => Some((46, 139, 87)),
916            SEASHELL => Some((255, 245, 238)),
917            SIENNA => Some((160, 82, 45)),
918            SILVER => Some((192, 192, 192)),
919            SKYBLUE => Some((135, 206, 235)),
920            SLATEBLUE => Some((106, 90, 205)),
921            SLATEGRAY => Some((112, 128, 144)),
922            SLATEGREY => Some((112, 128, 144)),
923            SNOW => Some((255, 250, 250)),
924            SPRINGGREEN => Some((0, 255, 127)),
925            STEELBLUE => Some((70, 130, 180)),
926            TAN => Some((210, 180, 140)),
927            TEAL => Some((0, 128, 128)),
928            THISTLE => Some((216, 191, 216)),
929            TOMATO => Some((255, 99, 71)),
930            TRANSPARENT => None,
931            TURQUOISE => Some((64, 224, 208)),
932            VIOLET => Some((238, 130, 238)),
933            WHEAT => Some((245, 222, 179)),
934            WHITE => Some((255, 255, 255)),
935            WHITESMOKE => Some((245, 245, 245)),
936            YELLOW => Some((255, 255, 0)),
937            YELLOWGREEN => Some((154, 205, 50)),
938        }
939    }
940    /// possibly convert a `(red, green, blue)` tuple to a [`NamedColor`]   
941    /// the same rules apply as [`NamedColor::from_hex`]
942    pub const fn from_rgb(rgb: (u8, u8, u8)) -> Option<Self> {
943        use NamedColor::*;
944        match rgb {
945            (240, 248, 255) => Some(ALICEBLUE),
946            (250, 235, 215) => Some(ANTIQUEWHITE),
947            (0, 255, 255) => Some(AQUA),
948            (127, 255, 212) => Some(AQUAMARINE),
949            (240, 255, 255) => Some(AZURE),
950            (245, 245, 220) => Some(BEIGE),
951            (255, 228, 196) => Some(BISQUE),
952            (0, 0, 0) => Some(BLACK),
953            (255, 235, 205) => Some(BLANCHEDALMOND),
954            (0, 0, 255) => Some(BLUE),
955            (138, 43, 226) => Some(BLUEVIOLET),
956            (165, 42, 42) => Some(BROWN),
957            (222, 184, 135) => Some(BURLYWOOD),
958            (95, 158, 160) => Some(CADETBLUE),
959            (127, 255, 0) => Some(CHARTREUSE),
960            (210, 105, 30) => Some(CHOCOLATE),
961            (255, 127, 80) => Some(CORAL),
962            (100, 149, 237) => Some(CORNFLOWERBLUE),
963            (255, 248, 220) => Some(CORNSILK),
964            (220, 20, 60) => Some(CRIMSON),
965            (0, 0, 139) => Some(DARKBLUE),
966            (0, 139, 139) => Some(DARKCYAN),
967            (184, 134, 11) => Some(DARKGOLDENROD),
968            (169, 169, 169) => Some(DARKGRAY),
969            (0, 100, 0) => Some(DARKGREEN),
970            (189, 183, 107) => Some(DARKKHAKI),
971            (139, 0, 139) => Some(DARKMAGENTA),
972            (85, 107, 47) => Some(DARKOLIVEGREEN),
973            (255, 140, 0) => Some(DARKORANGE),
974            (153, 50, 204) => Some(DARKORCHID),
975            (139, 0, 0) => Some(DARKRED),
976            (233, 150, 122) => Some(DARKSALMON),
977            (143, 188, 143) => Some(DARKSEAGREEN),
978            (72, 61, 139) => Some(DARKSLATEBLUE),
979            (47, 79, 79) => Some(DARKSLATEGRAY),
980            (0, 206, 209) => Some(DARKTURQUOISE),
981            (148, 0, 211) => Some(DARKVIOLET),
982            (255, 20, 147) => Some(DEEPPINK),
983            (0, 191, 255) => Some(DEEPSKYBLUE),
984            (105, 105, 105) => Some(DIMGRAY),
985            (30, 144, 255) => Some(DODGERBLUE),
986            (178, 34, 34) => Some(FIREBRICK),
987            (255, 250, 240) => Some(FLORALWHITE),
988            (34, 139, 34) => Some(FORESTGREEN),
989            (220, 220, 220) => Some(GAINSBORO),
990            (248, 248, 255) => Some(GHOSTWHITE),
991            (255, 215, 0) => Some(GOLD),
992            (218, 165, 32) => Some(GOLDENROD),
993            (128, 128, 128) => Some(GRAY),
994            (0, 128, 0) => Some(GREEN),
995            (173, 255, 47) => Some(GREENYELLOW),
996            (240, 255, 240) => Some(HONEYDEW),
997            (255, 105, 180) => Some(HOTPINK),
998            (205, 92, 92) => Some(INDIANRED),
999            (75, 0, 130) => Some(INDIGO),
1000            (255, 255, 240) => Some(IVORY),
1001            (240, 230, 140) => Some(KHAKI),
1002            (230, 230, 250) => Some(LAVENDER),
1003            (255, 240, 245) => Some(LAVENDERBLUSH),
1004            (124, 252, 0) => Some(LAWNGREEN),
1005            (255, 250, 205) => Some(LEMONCHIFFON),
1006            (173, 216, 230) => Some(LIGHTBLUE),
1007            (240, 128, 128) => Some(LIGHTCORAL),
1008            (224, 255, 255) => Some(LIGHTCYAN),
1009            (250, 250, 210) => Some(LIGHTGOLDENRODYELLOW),
1010            (211, 211, 211) => Some(LIGHTGRAY),
1011            (144, 238, 144) => Some(LIGHTGREEN),
1012            (255, 182, 193) => Some(LIGHTPINK),
1013            (255, 160, 122) => Some(LIGHTSALMON),
1014            (32, 178, 170) => Some(LIGHTSEAGREEN),
1015            (135, 206, 250) => Some(LIGHTSKYBLUE),
1016            (119, 136, 153) => Some(LIGHTSLATEGRAY),
1017            (176, 196, 222) => Some(LIGHTSTEELBLUE),
1018            (255, 255, 224) => Some(LIGHTYELLOW),
1019            (0, 255, 0) => Some(LIME),
1020            (50, 205, 50) => Some(LIMEGREEN),
1021            (250, 240, 230) => Some(LINEN),
1022            (128, 0, 0) => Some(MAROON),
1023            (102, 205, 170) => Some(MEDIUMAQUAMARINE),
1024            (0, 0, 205) => Some(MEDIUMBLUE),
1025            (186, 85, 211) => Some(MEDIUMORCHID),
1026            (147, 112, 219) => Some(MEDIUMPURPLE),
1027            (60, 179, 113) => Some(MEDIUMSEAGREEN),
1028            (123, 104, 238) => Some(MEDIUMSLATEBLUE),
1029            (0, 250, 154) => Some(MEDIUMSPRINGGREEN),
1030            (72, 209, 204) => Some(MEDIUMTURQUOISE),
1031            (199, 21, 133) => Some(MEDIUMVIOLETRED),
1032            (25, 25, 112) => Some(MIDNIGHTBLUE),
1033            (245, 255, 250) => Some(MINTCREAM),
1034            (255, 228, 225) => Some(MISTYROSE),
1035            (255, 228, 181) => Some(MOCCASIN),
1036            (255, 222, 173) => Some(NAVAJOWHITE),
1037            (0, 0, 128) => Some(NAVY),
1038            (253, 245, 230) => Some(OLDLACE),
1039            (128, 128, 0) => Some(OLIVE),
1040            (107, 142, 35) => Some(OLIVEDRAB),
1041            (255, 165, 0) => Some(ORANGE),
1042            (255, 69, 0) => Some(ORANGERED),
1043            (218, 112, 214) => Some(ORCHID),
1044            (238, 232, 170) => Some(PALEGOLDENROD),
1045            (152, 251, 152) => Some(PALEGREEN),
1046            (175, 238, 238) => Some(PALETURQUOISE),
1047            (219, 112, 147) => Some(PALEVIOLETRED),
1048            (255, 239, 213) => Some(PAPAYAWHIP),
1049            (255, 218, 185) => Some(PEACHPUFF),
1050            (205, 133, 63) => Some(PERU),
1051            (255, 192, 203) => Some(PINK),
1052            (221, 160, 221) => Some(PLUM),
1053            (176, 224, 230) => Some(POWDERBLUE),
1054            (128, 0, 128) => Some(PURPLE),
1055            (102, 51, 153) => Some(REBECCAPURPLE),
1056            (255, 0, 0) => Some(RED),
1057            (188, 143, 143) => Some(ROSYBROWN),
1058            (65, 105, 225) => Some(ROYALBLUE),
1059            (139, 69, 19) => Some(SADDLEBROWN),
1060            (250, 128, 114) => Some(SALMON),
1061            (244, 164, 96) => Some(SANDYBROWN),
1062            (46, 139, 87) => Some(SEAGREEN),
1063            (255, 245, 238) => Some(SEASHELL),
1064            (160, 82, 45) => Some(SIENNA),
1065            (192, 192, 192) => Some(SILVER),
1066            (135, 206, 235) => Some(SKYBLUE),
1067            (106, 90, 205) => Some(SLATEBLUE),
1068            (112, 128, 144) => Some(SLATEGRAY),
1069            (255, 250, 250) => Some(SNOW),
1070            (0, 255, 127) => Some(SPRINGGREEN),
1071            (70, 130, 180) => Some(STEELBLUE),
1072            (210, 180, 140) => Some(TAN),
1073            (0, 128, 128) => Some(TEAL),
1074            (216, 191, 216) => Some(THISTLE),
1075            (255, 99, 71) => Some(TOMATO),
1076            (64, 224, 208) => Some(TURQUOISE),
1077            (238, 130, 238) => Some(VIOLET),
1078            (245, 222, 179) => Some(WHEAT),
1079            (255, 255, 255) => Some(WHITE),
1080            (245, 245, 245) => Some(WHITESMOKE),
1081            (255, 255, 0) => Some(YELLOW),
1082            (154, 205, 50) => Some(YELLOWGREEN),
1083            _ => None,
1084        }
1085    }
1086}