css-named-colors 1.0.1

CSS Named Colors
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
//! # CSS Named Colors
//!
//! Adapted from the [official documentation](https://developer.mozilla.org/en-US/docs/Web/CSS/named-color)
//!
//! Notes:
//! 1. `transparent` is a [valid
//!    name](https://developer.mozilla.org/en-US/docs/Web/CSS/named-color#transparent) that
//!    occasionally requires special handling    
//! 2. When color names collide, I have deferred to alphabetic order (`"aqua"` instead of "`cyan"`,
//!    `"fuchsia"` instead of `"magenta`, `"gray"` instead of `"grey"`)

#![no_std]
/// CSS named color
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum NamedColor {
    ALICEBLUE,
    ANTIQUEWHITE,
    AQUA,
    AQUAMARINE,
    AZURE,
    BEIGE,
    BISQUE,
    BLACK,
    BLANCHEDALMOND,
    BLUE,
    BLUEVIOLET,
    BROWN,
    BURLYWOOD,
    CADETBLUE,
    CHARTREUSE,
    CHOCOLATE,
    CORAL,
    CORNFLOWERBLUE,
    CORNSILK,
    CRIMSON,
    CYAN,
    DARKBLUE,
    DARKCYAN,
    DARKGOLDENROD,
    DARKGRAY,
    DARKGREEN,
    DARKGREY,
    DARKKHAKI,
    DARKMAGENTA,
    DARKOLIVEGREEN,
    DARKORANGE,
    DARKORCHID,
    DARKRED,
    DARKSALMON,
    DARKSEAGREEN,
    DARKSLATEBLUE,
    DARKSLATEGRAY,
    DARKSLATEGREY,
    DARKTURQUOISE,
    DARKVIOLET,
    DEEPPINK,
    DEEPSKYBLUE,
    DIMGRAY,
    DIMGREY,
    DODGERBLUE,
    FIREBRICK,
    FLORALWHITE,
    FORESTGREEN,
    FUCHSIA,
    GAINSBORO,
    GHOSTWHITE,
    GOLD,
    GOLDENROD,
    GRAY,
    GREEN,
    GREENYELLOW,
    GREY,
    HONEYDEW,
    HOTPINK,
    INDIANRED,
    INDIGO,
    IVORY,
    KHAKI,
    LAVENDER,
    LAVENDERBLUSH,
    LAWNGREEN,
    LEMONCHIFFON,
    LIGHTBLUE,
    LIGHTCORAL,
    LIGHTCYAN,
    LIGHTGOLDENRODYELLOW,
    LIGHTGRAY,
    LIGHTGREEN,
    LIGHTGREY,
    LIGHTPINK,
    LIGHTSALMON,
    LIGHTSEAGREEN,
    LIGHTSKYBLUE,
    LIGHTSLATEGRAY,
    LIGHTSLATEGREY,
    LIGHTSTEELBLUE,
    LIGHTYELLOW,
    LIME,
    LIMEGREEN,
    LINEN,
    MAGENTA,
    MAROON,
    MEDIUMAQUAMARINE,
    MEDIUMBLUE,
    MEDIUMORCHID,
    MEDIUMPURPLE,
    MEDIUMSEAGREEN,
    MEDIUMSLATEBLUE,
    MEDIUMSPRINGGREEN,
    MEDIUMTURQUOISE,
    MEDIUMVIOLETRED,
    MIDNIGHTBLUE,
    MINTCREAM,
    MISTYROSE,
    MOCCASIN,
    NAVAJOWHITE,
    NAVY,
    OLDLACE,
    OLIVE,
    OLIVEDRAB,
    ORANGE,
    ORANGERED,
    ORCHID,
    PALEGOLDENROD,
    PALEGREEN,
    PALETURQUOISE,
    PALEVIOLETRED,
    PAPAYAWHIP,
    PEACHPUFF,
    PERU,
    PINK,
    PLUM,
    POWDERBLUE,
    PURPLE,
    REBECCAPURPLE,
    RED,
    ROSYBROWN,
    ROYALBLUE,
    SADDLEBROWN,
    SALMON,
    SANDYBROWN,
    SEAGREEN,
    SEASHELL,
    SIENNA,
    SILVER,
    SKYBLUE,
    SLATEBLUE,
    SLATEGRAY,
    SLATEGREY,
    SNOW,
    SPRINGGREEN,
    STEELBLUE,
    TAN,
    TEAL,
    THISTLE,
    TOMATO,
    TRANSPARENT,
    TURQUOISE,
    VIOLET,
    WHEAT,
    WHITE,
    WHITESMOKE,
    YELLOW,
    YELLOWGREEN,
}

impl NamedColor {
    /// hex code including the leading '#'    
    /// [`NamedColor::TRANSPARENT`] is rendered as `"transparent"`
    pub const fn hex(&self) -> &'static str {
        use NamedColor::*;
        match self {
            ALICEBLUE => "#f0f8ff",
            ANTIQUEWHITE => "#faebd7",
            AQUA => "#00ffff",
            AQUAMARINE => "#7fffd4",
            AZURE => "#F0ffff",
            BEIGE => "#F5f5dc",
            BISQUE => "#ffe4c4",
            BLACK => "#000000",
            BLANCHEDALMOND => "#ffebcd",
            BLUE => "#0000ff",
            BLUEVIOLET => "#8a2be2",
            BROWN => "#a52a2a",
            BURLYWOOD => "#deb887",
            CADETBLUE => "#5f9ea0",
            CHARTREUSE => "#7fff00",
            CHOCOLATE => "#d2691e",
            CORAL => "#ff7f50",
            CORNFLOWERBLUE => "#6495ed",
            CORNSILK => "#fff8dc",
            CRIMSON => "#dc143c",
            CYAN => "#00ffff",
            DARKBLUE => "#00008b",
            DARKCYAN => "#008b8b",
            DARKGOLDENROD => "#b8860b",
            DARKGRAY => "#a9a9a9",
            DARKGREEN => "#006400",
            DARKGREY => "#a9a9a9",
            DARKKHAKI => "#bdb76b",
            DARKMAGENTA => "#8b008b",
            DARKOLIVEGREEN => "#556b2f",
            DARKORANGE => "#ff8c00",
            DARKORCHID => "#9932cc",
            DARKRED => "#8b0000",
            DARKSALMON => "#e9967a",
            DARKSEAGREEN => "#8fbc8f",
            DARKSLATEBLUE => "#483d8b",
            DARKSLATEGRAY => "#2f4f4f",
            DARKSLATEGREY => "#2f4f4f",
            DARKTURQUOISE => "#00ced1",
            DARKVIOLET => "#9400d3",
            DEEPPINK => "#ff1493",
            DEEPSKYBLUE => "#00bfff",
            DIMGRAY => "#696969",
            DIMGREY => "#696969",
            DODGERBLUE => "#1e90ff",
            FIREBRICK => "#b22222",
            FLORALWHITE => "#fffaf0",
            FORESTGREEN => "#228b22",
            FUCHSIA => "#ff00ff",
            GAINSBORO => "#dcdcdc",
            GHOSTWHITE => "#f8f8ff",
            GOLD => "#ffd700",
            GOLDENROD => "#daa520",
            GRAY => "#808080",
            GREEN => "#008000",
            GREENYELLOW => "#adff2f",
            GREY => "#808080",
            HONEYDEW => "#f0fff0",
            HOTPINK => "#ff69b4",
            INDIANRED => "#cd5c5c",
            INDIGO => "#4b0082",
            IVORY => "#fffff0",
            KHAKI => "#f0e68c",
            LAVENDER => "#e6e6fa",
            LAVENDERBLUSH => "#fff0f5",
            LAWNGREEN => "#7cfc00",
            LEMONCHIFFON => "#fffacd",
            LIGHTBLUE => "#add8e6",
            LIGHTCORAL => "#f08080",
            LIGHTCYAN => "#e0ffff",
            LIGHTGOLDENRODYELLOW => "#fafad2",
            LIGHTGRAY => "#d3d3d3",
            LIGHTGREEN => "#90ee90",
            LIGHTGREY => "#d3d3d3",
            LIGHTPINK => "#ffb6c1",
            LIGHTSALMON => "#ffa07a",
            LIGHTSEAGREEN => "#20b2aa",
            LIGHTSKYBLUE => "#87cefa",
            LIGHTSLATEGRAY => "#778899",
            LIGHTSLATEGREY => "#778899",
            LIGHTSTEELBLUE => "#b0c4de",
            LIGHTYELLOW => "#ffffe0",
            LIME => "#00ff00",
            LIMEGREEN => "#32cd32",
            LINEN => "#faf0e6",
            MAGENTA => "#ff00ff",
            MAROON => "#800000",
            MEDIUMAQUAMARINE => "#66cdaa",
            MEDIUMBLUE => "#0000cd",
            MEDIUMORCHID => "#ba55d3",
            MEDIUMPURPLE => "#9370db",
            MEDIUMSEAGREEN => "#3cb371",
            MEDIUMSLATEBLUE => "#7b68ee",
            MEDIUMSPRINGGREEN => "#00fa9a",
            MEDIUMTURQUOISE => "#48d1cc",
            MEDIUMVIOLETRED => "#c71585",
            MIDNIGHTBLUE => "#191970",
            MINTCREAM => "#f5fffa",
            MISTYROSE => "#ffe4e1",
            MOCCASIN => "#ffe4b5",
            NAVAJOWHITE => "#ffdead",
            NAVY => "#000080",
            OLDLACE => "#fdf5e6",
            OLIVE => "#808000",
            OLIVEDRAB => "#6b8e23",
            ORANGE => "#ffa500",
            ORANGERED => "#ff4500",
            ORCHID => "#da70d6",
            PALEGOLDENROD => "#eee8aa",
            PALEGREEN => "#98fb98",
            PALETURQUOISE => "#afeeee",
            PALEVIOLETRED => "#db7093",
            PAPAYAWHIP => "#ffefd5",
            PEACHPUFF => "#ffdab9",
            PERU => "#cd853f",
            PINK => "#ffc0cb",
            PLUM => "#dda0dd",
            POWDERBLUE => "#b0e0e6",
            PURPLE => "#800080",
            REBECCAPURPLE => "#663399",
            RED => "#ff0000",
            ROSYBROWN => "#bc8f8f",
            ROYALBLUE => "#4169e1",
            SADDLEBROWN => "#8b4513",
            SALMON => "#fa8072",
            SANDYBROWN => "#f4a460",
            SEAGREEN => "#2e8b57",
            SEASHELL => "#fff5ee",
            SIENNA => "#a0522d",
            SILVER => "#c0c0c0",
            SKYBLUE => "#87ceeb",
            SLATEBLUE => "#6a5acd",
            SLATEGRAY => "#708090",
            SLATEGREY => "#708090",
            SNOW => "#fffafa",
            SPRINGGREEN => "#00ff7f",
            STEELBLUE => "#4682b4",
            TAN => "#d2b48c",
            TEAL => "#008080",
            THISTLE => "#d8bfd8",
            TOMATO => "#ff6347",
            TRANSPARENT => "transparent",
            TURQUOISE => "#40e0d0",
            VIOLET => "#ee82ee",
            WHEAT => "#f5deb3",
            WHITE => "#ffffff",
            WHITESMOKE => "#f5f5f5",
            YELLOW => "#ffff00",
            YELLOWGREEN => "#9acd32",
        }
    }
    /// color name
    pub const fn name(&self) -> &'static str {
        use NamedColor::*;
        match self {
            ALICEBLUE => "aliceblue",
            ANTIQUEWHITE => "antiquewhite",
            AQUA => "aqua",
            AQUAMARINE => "aquamarine",
            AZURE => "azure",
            BEIGE => "beige",
            BISQUE => "bisque",
            BLACK => "black",
            BLANCHEDALMOND => "blanchedalmond",
            BLUE => "blue",
            BLUEVIOLET => "blueviolet",
            BROWN => "brown",
            BURLYWOOD => "burlywood",
            CADETBLUE => "cadetblue",
            CHARTREUSE => "chartreuse",
            CHOCOLATE => "chocolate",
            CORAL => "coral",
            CORNFLOWERBLUE => "cornflowerblue",
            CORNSILK => "cornsilk",
            CRIMSON => "crimson",
            CYAN => "cyan",
            DARKBLUE => "darkblue",
            DARKCYAN => "darkcyan",
            DARKGOLDENROD => "darkgoldenrod",
            DARKGRAY => "darkgray",
            DARKGREEN => "darkgreen",
            DARKGREY => "darkgrey",
            DARKKHAKI => "darkkhaki",
            DARKMAGENTA => "darkmagenta",
            DARKOLIVEGREEN => "darkolivegreen",
            DARKORANGE => "darkorange",
            DARKORCHID => "darkorchid",
            DARKRED => "darkred",
            DARKSALMON => "darksalmon",
            DARKSEAGREEN => "darkseagreen",
            DARKSLATEBLUE => "darkslateblue",
            DARKSLATEGRAY => "darkslategray",
            DARKSLATEGREY => "darkslategrey",
            DARKTURQUOISE => "darkturquoise",
            DARKVIOLET => "darkviolet",
            DEEPPINK => "deeppink",
            DEEPSKYBLUE => "deepskyblue",
            DIMGRAY => "dimgray",
            DIMGREY => "dimgrey",
            DODGERBLUE => "dodgerblue",
            FIREBRICK => "firebrick",
            FLORALWHITE => "floralwhite",
            FORESTGREEN => "forestgreen",
            FUCHSIA => "fuchsia",
            GAINSBORO => "gainsboro",
            GHOSTWHITE => "ghostwhite",
            GOLD => "gold",
            GOLDENROD => "goldenrod",
            GRAY => "gray",
            GREEN => "green",
            GREENYELLOW => "greenyellow",
            GREY => "grey",
            HONEYDEW => "honeydew",
            HOTPINK => "hotpink",
            INDIANRED => "indianred",
            INDIGO => "indigo",
            IVORY => "ivory",
            KHAKI => "khaki",
            LAVENDER => "lavender",
            LAVENDERBLUSH => "lavenderblush",
            LAWNGREEN => "lawngreen",
            LEMONCHIFFON => "lemonchiffon",
            LIGHTBLUE => "lightblue",
            LIGHTCORAL => "lightcoral",
            LIGHTCYAN => "lightcyan",
            LIGHTGOLDENRODYELLOW => "lightgoldenrodyellow",
            LIGHTGRAY => "lightgray",
            LIGHTGREEN => "lightgreen",
            LIGHTGREY => "lightgrey",
            LIGHTPINK => "lightpink",
            LIGHTSALMON => "lightsalmon",
            LIGHTSEAGREEN => "lightseagreen",
            LIGHTSKYBLUE => "lightskyblue",
            LIGHTSLATEGRAY => "lightslategray",
            LIGHTSLATEGREY => "lightslategrey",
            LIGHTSTEELBLUE => "lightsteelblue",
            LIGHTYELLOW => "lightyellow",
            LIME => "lime",
            LIMEGREEN => "limegreen",
            LINEN => "linen",
            MAGENTA => "magenta",
            MAROON => "maroon",
            MEDIUMAQUAMARINE => "mediumaquamarine",
            MEDIUMBLUE => "mediumblue",
            MEDIUMORCHID => "mediumorchid",
            MEDIUMPURPLE => "mediumpurple",
            MEDIUMSEAGREEN => "mediumseagreen",
            MEDIUMSLATEBLUE => "mediumslateblue",
            MEDIUMSPRINGGREEN => "mediumspringgreen",
            MEDIUMTURQUOISE => "mediumturquoise",
            MEDIUMVIOLETRED => "mediumvioletred",
            MIDNIGHTBLUE => "midnightblue",
            MINTCREAM => "mintcream",
            MISTYROSE => "mistyrose",
            MOCCASIN => "moccasin",
            NAVAJOWHITE => "navajowhite",
            NAVY => "navy",
            OLDLACE => "oldlace",
            OLIVE => "olive",
            OLIVEDRAB => "olivedrab",
            ORANGE => "orange",
            ORANGERED => "orangered",
            ORCHID => "orchid",
            PALEGOLDENROD => "palegoldenrod",
            PALEGREEN => "palegreen",
            PALETURQUOISE => "paleturquoise",
            PALEVIOLETRED => "palevioletred",
            PAPAYAWHIP => "papayawhip",
            PEACHPUFF => "peachpuff",
            PERU => "peru",
            PINK => "pink",
            PLUM => "plum",
            POWDERBLUE => "powderblue",
            PURPLE => "purple",
            REBECCAPURPLE => "rebeccapurple",
            RED => "red",
            ROSYBROWN => "rosybrown",
            ROYALBLUE => "royalblue",
            SADDLEBROWN => "saddlebrown",
            SALMON => "salmon",
            SANDYBROWN => "sandybrown",
            SEAGREEN => "seagreen",
            SEASHELL => "seashell",
            SIENNA => "sienna",
            SILVER => "silver",
            SKYBLUE => "skyblue",
            SLATEBLUE => "slateblue",
            SLATEGRAY => "slategray",
            SLATEGREY => "slategrey",
            SNOW => "snow",
            SPRINGGREEN => "springgreen",
            STEELBLUE => "steelblue",
            TAN => "tan",
            TEAL => "teal",
            THISTLE => "thistle",
            TOMATO => "tomato",
            TRANSPARENT => "transparent",
            TURQUOISE => "turquoise",
            VIOLET => "violet",
            WHEAT => "wheat",
            WHITE => "white",
            WHITESMOKE => "whitesmoke",
            YELLOW => "yellow",
            YELLOWGREEN => "yellowgreen",
        }
    }
    /// possibly convert a [`NamedColor`] from a hex code, including the leading `#`    
    /// `"transparent"` becomes [`NamedColor::TRANSPARENT`]    
    /// `"#00ffff"` becomes [`NamedColor::AQUA`]    
    /// `"#ff00ff"` becomes [`NamedColor::FUCHSIA`]    
    /// `"#808080"` becomes [`NamedColor::GRAY`],`"#2f4f4f"` becomes [`NamedColor::DARKSLATEGRAY`],
    /// etc.
    pub fn from_hex(hex: &str) -> Option<Self> {
        match hex {
            "#f0f8ff" => Some(NamedColor::ALICEBLUE),
            "#faebd7" => Some(NamedColor::ANTIQUEWHITE),
            "#00ffff" => Some(NamedColor::AQUA),
            "#7fffd4" => Some(NamedColor::AQUAMARINE),
            "#f0ffff" => Some(NamedColor::AZURE),
            "#f5f5dc" => Some(NamedColor::BEIGE),
            "#ffe4c4" => Some(NamedColor::BISQUE),
            "#000000" => Some(NamedColor::BLACK),
            "#ffebcd" => Some(NamedColor::BLANCHEDALMOND),
            "#0000ff" => Some(NamedColor::BLUE),
            "#8a2be2" => Some(NamedColor::BLUEVIOLET),
            "#a52a2a" => Some(NamedColor::BROWN),
            "#deb887" => Some(NamedColor::BURLYWOOD),
            "#5f9ea0" => Some(NamedColor::CADETBLUE),
            "#7fff00" => Some(NamedColor::CHARTREUSE),
            "#d2691e" => Some(NamedColor::CHOCOLATE),
            "#ff7f50" => Some(NamedColor::CORAL),
            "#6495ed" => Some(NamedColor::CORNFLOWERBLUE),
            "#fff8dc" => Some(NamedColor::CORNSILK),
            "#dc143c" => Some(NamedColor::CRIMSON),
            "#00008b" => Some(NamedColor::DARKBLUE),
            "#008b8b" => Some(NamedColor::DARKCYAN),
            "#b8860b" => Some(NamedColor::DARKGOLDENROD),
            "#a9a9a9" => Some(NamedColor::DARKGRAY),
            "#006400" => Some(NamedColor::DARKGREEN),
            "#bdb76b" => Some(NamedColor::DARKKHAKI),
            "#8b008b" => Some(NamedColor::DARKMAGENTA),
            "#556b2f" => Some(NamedColor::DARKOLIVEGREEN),
            "#ff8c00" => Some(NamedColor::DARKORANGE),
            "#9932cc" => Some(NamedColor::DARKORCHID),
            "#8b0000" => Some(NamedColor::DARKRED),
            "#e9967a" => Some(NamedColor::DARKSALMON),
            "#8fbc8f" => Some(NamedColor::DARKSEAGREEN),
            "#483d8b" => Some(NamedColor::DARKSLATEBLUE),
            "#2f4f4f" => Some(NamedColor::DARKSLATEGRAY),
            "#00ced1" => Some(NamedColor::DARKTURQUOISE),
            "#9400d3" => Some(NamedColor::DARKVIOLET),
            "#ff1493" => Some(NamedColor::DEEPPINK),
            "#00bfff" => Some(NamedColor::DEEPSKYBLUE),
            "#696969" => Some(NamedColor::DIMGRAY),
            "#1e90ff" => Some(NamedColor::DODGERBLUE),
            "#b22222" => Some(NamedColor::FIREBRICK),
            "#fffaf0" => Some(NamedColor::FLORALWHITE),
            "#228b22" => Some(NamedColor::FORESTGREEN),
            "#ff00ff" => Some(NamedColor::FUCHSIA),
            "#dcdcdc" => Some(NamedColor::GAINSBORO),
            "#f8f8ff" => Some(NamedColor::GHOSTWHITE),
            "#ffd700" => Some(NamedColor::GOLD),
            "#daa520" => Some(NamedColor::GOLDENROD),
            "#808080" => Some(NamedColor::GRAY),
            "#008000" => Some(NamedColor::GREEN),
            "#adff2f" => Some(NamedColor::GREENYELLOW),
            "#f0fff0" => Some(NamedColor::HONEYDEW),
            "#ff69b4" => Some(NamedColor::HOTPINK),
            "#cd5c5c" => Some(NamedColor::INDIANRED),
            "#4b0082" => Some(NamedColor::INDIGO),
            "#fffff0" => Some(NamedColor::IVORY),
            "#f0e68c" => Some(NamedColor::KHAKI),
            "#e6e6fa" => Some(NamedColor::LAVENDER),
            "#fff0f5" => Some(NamedColor::LAVENDERBLUSH),
            "#7cfc00" => Some(NamedColor::LAWNGREEN),
            "#fffacd" => Some(NamedColor::LEMONCHIFFON),
            "#add8e6" => Some(NamedColor::LIGHTBLUE),
            "#f08080" => Some(NamedColor::LIGHTCORAL),
            "#e0ffff" => Some(NamedColor::LIGHTCYAN),
            "#fafad2" => Some(NamedColor::LIGHTGOLDENRODYELLOW),
            "#d3d3d3" => Some(NamedColor::LIGHTGRAY),
            "#90ee90" => Some(NamedColor::LIGHTGREEN),
            "#ffb6c1" => Some(NamedColor::LIGHTPINK),
            "#ffa07a" => Some(NamedColor::LIGHTSALMON),
            "#20b2aa" => Some(NamedColor::LIGHTSEAGREEN),
            "#87cefa" => Some(NamedColor::LIGHTSKYBLUE),
            "#778899" => Some(NamedColor::LIGHTSLATEGRAY),
            "#b0c4de" => Some(NamedColor::LIGHTSTEELBLUE),
            "#ffffe0" => Some(NamedColor::LIGHTYELLOW),
            "#00ff00" => Some(NamedColor::LIME),
            "#32cd32" => Some(NamedColor::LIMEGREEN),
            "#faf0e6" => Some(NamedColor::LINEN),
            "#800000" => Some(NamedColor::MAROON),
            "#66cdaa" => Some(NamedColor::MEDIUMAQUAMARINE),
            "#0000cd" => Some(NamedColor::MEDIUMBLUE),
            "#ba55d3" => Some(NamedColor::MEDIUMORCHID),
            "#9370db" => Some(NamedColor::MEDIUMPURPLE),
            "#3cb371" => Some(NamedColor::MEDIUMSEAGREEN),
            "#7b68ee" => Some(NamedColor::MEDIUMSLATEBLUE),
            "#00fa9a" => Some(NamedColor::MEDIUMSPRINGGREEN),
            "#48d1cc" => Some(NamedColor::MEDIUMTURQUOISE),
            "#c71585" => Some(NamedColor::MEDIUMVIOLETRED),
            "#191970" => Some(NamedColor::MIDNIGHTBLUE),
            "#f5fffa" => Some(NamedColor::MINTCREAM),
            "#ffe4e1" => Some(NamedColor::MISTYROSE),
            "#ffe4b5" => Some(NamedColor::MOCCASIN),
            "#ffdead" => Some(NamedColor::NAVAJOWHITE),
            "#000080" => Some(NamedColor::NAVY),
            "#fdf5e6" => Some(NamedColor::OLDLACE),
            "#808000" => Some(NamedColor::OLIVE),
            "#6b8e23" => Some(NamedColor::OLIVEDRAB),
            "#ffa500" => Some(NamedColor::ORANGE),
            "#ff4500" => Some(NamedColor::ORANGERED),
            "#da70d6" => Some(NamedColor::ORCHID),
            "#eee8aa" => Some(NamedColor::PALEGOLDENROD),
            "#98fb98" => Some(NamedColor::PALEGREEN),
            "#afeeee" => Some(NamedColor::PALETURQUOISE),
            "#db7093" => Some(NamedColor::PALEVIOLETRED),
            "#ffefd5" => Some(NamedColor::PAPAYAWHIP),
            "#ffdab9" => Some(NamedColor::PEACHPUFF),
            "#cd853f" => Some(NamedColor::PERU),
            "#ffc0cb" => Some(NamedColor::PINK),
            "#dda0dd" => Some(NamedColor::PLUM),
            "#b0e0e6" => Some(NamedColor::POWDERBLUE),
            "#800080" => Some(NamedColor::PURPLE),
            "#663399" => Some(NamedColor::REBECCAPURPLE),
            "#ff0000" => Some(NamedColor::RED),
            "#bc8f8f" => Some(NamedColor::ROSYBROWN),
            "#4169e1" => Some(NamedColor::ROYALBLUE),
            "#8b4513" => Some(NamedColor::SADDLEBROWN),
            "#fa8072" => Some(NamedColor::SALMON),
            "#f4a460" => Some(NamedColor::SANDYBROWN),
            "#2e8b57" => Some(NamedColor::SEAGREEN),
            "#fff5ee" => Some(NamedColor::SEASHELL),
            "#a0522d" => Some(NamedColor::SIENNA),
            "#c0c0c0" => Some(NamedColor::SILVER),
            "#87ceeb" => Some(NamedColor::SKYBLUE),
            "#6a5acd" => Some(NamedColor::SLATEBLUE),
            "#708090" => Some(NamedColor::SLATEGRAY),
            "#fffafa" => Some(NamedColor::SNOW),
            "#00ff7f" => Some(NamedColor::SPRINGGREEN),
            "#4682b4" => Some(NamedColor::STEELBLUE),
            "#d2b48c" => Some(NamedColor::TAN),
            "#008080" => Some(NamedColor::TEAL),
            "#d8bfd8" => Some(NamedColor::THISTLE),
            "#ff6347" => Some(NamedColor::TOMATO),
            "#40e0d0" => Some(NamedColor::TURQUOISE),
            "#ee82ee" => Some(NamedColor::VIOLET),
            "#f5deb3" => Some(NamedColor::WHEAT),
            "#ffffff" => Some(NamedColor::WHITE),
            "#f5f5f5" => Some(NamedColor::WHITESMOKE),
            "#ffff00" => Some(NamedColor::YELLOW),
            "#9acd32" => Some(NamedColor::YELLOWGREEN),
            _ => None,
        }
    }
    /// convert from color name to a [`NamedColor`]
    pub fn from_name(name: &str) -> Option<Self> {
        match name {
            "aliceblue" => Some(NamedColor::ALICEBLUE),
            "antiquewhite" => Some(NamedColor::ANTIQUEWHITE),
            "aqua" => Some(NamedColor::AQUA),
            "aquamarine" => Some(NamedColor::AQUAMARINE),
            "azure" => Some(NamedColor::AZURE),
            "beige" => Some(NamedColor::BEIGE),
            "bisque" => Some(NamedColor::BISQUE),
            "black" => Some(NamedColor::BLACK),
            "blanchedalmond" => Some(NamedColor::BLANCHEDALMOND),
            "blue" => Some(NamedColor::BLUE),
            "blueviolet" => Some(NamedColor::BLUEVIOLET),
            "brown" => Some(NamedColor::BROWN),
            "burlywood" => Some(NamedColor::BURLYWOOD),
            "cadetblue" => Some(NamedColor::CADETBLUE),
            "chartreuse" => Some(NamedColor::CHARTREUSE),
            "chocolate" => Some(NamedColor::CHOCOLATE),
            "coral" => Some(NamedColor::CORAL),
            "cornflowerblue" => Some(NamedColor::CORNFLOWERBLUE),
            "cornsilk" => Some(NamedColor::CORNSILK),
            "crimson" => Some(NamedColor::CRIMSON),
            "cyan" => Some(NamedColor::CYAN),
            "darkblue" => Some(NamedColor::DARKBLUE),
            "darkcyan" => Some(NamedColor::DARKCYAN),
            "darkgoldenrod" => Some(NamedColor::DARKGOLDENROD),
            "darkgray" => Some(NamedColor::DARKGRAY),
            "darkgreen" => Some(NamedColor::DARKGREEN),
            "darkgrey" => Some(NamedColor::DARKGREY),
            "darkkhaki" => Some(NamedColor::DARKKHAKI),
            "darkmagenta" => Some(NamedColor::DARKMAGENTA),
            "darkolivegreen" => Some(NamedColor::DARKOLIVEGREEN),
            "darkorange" => Some(NamedColor::DARKORANGE),
            "darkorchid" => Some(NamedColor::DARKORCHID),
            "darkred" => Some(NamedColor::DARKRED),
            "darksalmon" => Some(NamedColor::DARKSALMON),
            "darkseagreen" => Some(NamedColor::DARKSEAGREEN),
            "darkslateblue" => Some(NamedColor::DARKSLATEBLUE),
            "darkslategray" => Some(NamedColor::DARKSLATEGRAY),
            "darkslategrey" => Some(NamedColor::DARKSLATEGREY),
            "darkturquoise" => Some(NamedColor::DARKTURQUOISE),
            "darkviolet" => Some(NamedColor::DARKVIOLET),
            "deeppink" => Some(NamedColor::DEEPPINK),
            "deepskyblue" => Some(NamedColor::DEEPSKYBLUE),
            "dimgray" => Some(NamedColor::DIMGRAY),
            "dimgrey" => Some(NamedColor::DIMGREY),
            "dodgerblue" => Some(NamedColor::DODGERBLUE),
            "firebrick" => Some(NamedColor::FIREBRICK),
            "floralwhite" => Some(NamedColor::FLORALWHITE),
            "forestgreen" => Some(NamedColor::FORESTGREEN),
            "fuchsia" => Some(NamedColor::FUCHSIA),
            "gainsboro" => Some(NamedColor::GAINSBORO),
            "ghostwhite" => Some(NamedColor::GHOSTWHITE),
            "gold" => Some(NamedColor::GOLD),
            "goldenrod" => Some(NamedColor::GOLDENROD),
            "gray" => Some(NamedColor::GRAY),
            "green" => Some(NamedColor::GREEN),
            "greenyellow" => Some(NamedColor::GREENYELLOW),
            "grey" => Some(NamedColor::GREY),
            "honeydew" => Some(NamedColor::HONEYDEW),
            "hotpink" => Some(NamedColor::HOTPINK),
            "indianred" => Some(NamedColor::INDIANRED),
            "indigo" => Some(NamedColor::INDIGO),
            "ivory" => Some(NamedColor::IVORY),
            "khaki" => Some(NamedColor::KHAKI),
            "lavender" => Some(NamedColor::LAVENDER),
            "lavenderblush" => Some(NamedColor::LAVENDERBLUSH),
            "lawngreen" => Some(NamedColor::LAWNGREEN),
            "lemonchiffon" => Some(NamedColor::LEMONCHIFFON),
            "lightblue" => Some(NamedColor::LIGHTBLUE),
            "lightcoral" => Some(NamedColor::LIGHTCORAL),
            "lightcyan" => Some(NamedColor::LIGHTCYAN),
            "lightgoldenrodyellow" => Some(NamedColor::LIGHTGOLDENRODYELLOW),
            "lightgray" => Some(NamedColor::LIGHTGRAY),
            "lightgreen" => Some(NamedColor::LIGHTGREEN),
            "lightgrey" => Some(NamedColor::LIGHTGREY),
            "lightpink" => Some(NamedColor::LIGHTPINK),
            "lightsalmon" => Some(NamedColor::LIGHTSALMON),
            "lightseagreen" => Some(NamedColor::LIGHTSEAGREEN),
            "lightskyblue" => Some(NamedColor::LIGHTSKYBLUE),
            "lightslategray" => Some(NamedColor::LIGHTSLATEGRAY),
            "lightslategrey" => Some(NamedColor::LIGHTSLATEGREY),
            "lightsteelblue" => Some(NamedColor::LIGHTSTEELBLUE),
            "lightyellow" => Some(NamedColor::LIGHTYELLOW),
            "lime" => Some(NamedColor::LIME),
            "limegreen" => Some(NamedColor::LIMEGREEN),
            "linen" => Some(NamedColor::LINEN),
            "magenta" => Some(NamedColor::MAGENTA),
            "maroon" => Some(NamedColor::MAROON),
            "mediumaquamarine" => Some(NamedColor::MEDIUMAQUAMARINE),
            "mediumblue" => Some(NamedColor::MEDIUMBLUE),
            "mediumorchid" => Some(NamedColor::MEDIUMORCHID),
            "mediumpurple" => Some(NamedColor::MEDIUMPURPLE),
            "mediumseagreen" => Some(NamedColor::MEDIUMSEAGREEN),
            "mediumslateblue" => Some(NamedColor::MEDIUMSLATEBLUE),
            "mediumspringgreen" => Some(NamedColor::MEDIUMSPRINGGREEN),
            "mediumturquoise" => Some(NamedColor::MEDIUMTURQUOISE),
            "mediumvioletred" => Some(NamedColor::MEDIUMVIOLETRED),
            "midnightblue" => Some(NamedColor::MIDNIGHTBLUE),
            "mintcream" => Some(NamedColor::MINTCREAM),
            "mistyrose" => Some(NamedColor::MISTYROSE),
            "moccasin" => Some(NamedColor::MOCCASIN),
            "navajowhite" => Some(NamedColor::NAVAJOWHITE),
            "navy" => Some(NamedColor::NAVY),
            "oldlace" => Some(NamedColor::OLDLACE),
            "olive" => Some(NamedColor::OLIVE),
            "olivedrab" => Some(NamedColor::OLIVEDRAB),
            "orange" => Some(NamedColor::ORANGE),
            "orangered" => Some(NamedColor::ORANGERED),
            "orchid" => Some(NamedColor::ORCHID),
            "palegoldenrod" => Some(NamedColor::PALEGOLDENROD),
            "palegreen" => Some(NamedColor::PALEGREEN),
            "paleturquoise" => Some(NamedColor::PALETURQUOISE),
            "palevioletred" => Some(NamedColor::PALEVIOLETRED),
            "papayawhip" => Some(NamedColor::PAPAYAWHIP),
            "peachpuff" => Some(NamedColor::PEACHPUFF),
            "peru" => Some(NamedColor::PERU),
            "pink" => Some(NamedColor::PINK),
            "plum" => Some(NamedColor::PLUM),
            "powderblue" => Some(NamedColor::POWDERBLUE),
            "purple" => Some(NamedColor::PURPLE),
            "rebeccapurple" => Some(NamedColor::REBECCAPURPLE),
            "red" => Some(NamedColor::RED),
            "rosybrown" => Some(NamedColor::ROSYBROWN),
            "royalblue" => Some(NamedColor::ROYALBLUE),
            "saddlebrown" => Some(NamedColor::SADDLEBROWN),
            "salmon" => Some(NamedColor::SALMON),
            "sandybrown" => Some(NamedColor::SANDYBROWN),
            "seagreen" => Some(NamedColor::SEAGREEN),
            "seashell" => Some(NamedColor::SEASHELL),
            "sienna" => Some(NamedColor::SIENNA),
            "silver" => Some(NamedColor::SILVER),
            "skyblue" => Some(NamedColor::SKYBLUE),
            "slateblue" => Some(NamedColor::SLATEBLUE),
            "slategray" => Some(NamedColor::SLATEGRAY),
            "slategrey" => Some(NamedColor::SLATEGREY),
            "snow" => Some(NamedColor::SNOW),
            "springgreen" => Some(NamedColor::SPRINGGREEN),
            "steelblue" => Some(NamedColor::STEELBLUE),
            "tan" => Some(NamedColor::TAN),
            "teal" => Some(NamedColor::TEAL),
            "thistle" => Some(NamedColor::THISTLE),
            "tomato" => Some(NamedColor::TOMATO),
            "transparent" => Some(NamedColor::TRANSPARENT),
            "turquoise" => Some(NamedColor::TURQUOISE),
            "violet" => Some(NamedColor::VIOLET),
            "wheat" => Some(NamedColor::WHEAT),
            "white" => Some(NamedColor::WHITE),
            "whitesmoke" => Some(NamedColor::WHITESMOKE),
            "yellow" => Some(NamedColor::YELLOW),
            "yellowgreen" => Some(NamedColor::YELLOWGREEN),
            _ => None,
        }
    }
    /// hex value as a `(red, green, blue)`  tuple    
    /// [`NamedColor::TRANSPARENT`] doesn't correspond to a hex value
    pub const fn rgb(&self) -> Option<(u8, u8, u8)> {
        use NamedColor::*;
        match self {
            ALICEBLUE => Some((240, 248, 255)),
            ANTIQUEWHITE => Some((250, 235, 215)),
            AQUA => Some((0, 255, 255)),
            AQUAMARINE => Some((127, 255, 212)),
            AZURE => Some((240, 255, 255)),
            BEIGE => Some((245, 245, 220)),
            BISQUE => Some((255, 228, 196)),
            BLACK => Some((0, 0, 0)),
            BLANCHEDALMOND => Some((255, 235, 205)),
            BLUE => Some((0, 0, 255)),
            BLUEVIOLET => Some((138, 43, 226)),
            BROWN => Some((165, 42, 42)),
            BURLYWOOD => Some((222, 184, 135)),
            CADETBLUE => Some((95, 158, 160)),
            CHARTREUSE => Some((127, 255, 0)),
            CHOCOLATE => Some((210, 105, 30)),
            CORAL => Some((255, 127, 80)),
            CORNFLOWERBLUE => Some((100, 149, 237)),
            CORNSILK => Some((255, 248, 220)),
            CRIMSON => Some((220, 20, 60)),
            CYAN => Some((0, 255, 255)),
            DARKBLUE => Some((0, 0, 139)),
            DARKCYAN => Some((0, 139, 139)),
            DARKGOLDENROD => Some((184, 134, 11)),
            DARKGRAY => Some((169, 169, 169)),
            DARKGREEN => Some((0, 100, 0)),
            DARKGREY => Some((169, 169, 169)),
            DARKKHAKI => Some((189, 183, 107)),
            DARKMAGENTA => Some((139, 0, 139)),
            DARKOLIVEGREEN => Some((85, 107, 47)),
            DARKORANGE => Some((255, 140, 0)),
            DARKORCHID => Some((153, 50, 204)),
            DARKRED => Some((139, 0, 0)),
            DARKSALMON => Some((233, 150, 122)),
            DARKSEAGREEN => Some((143, 188, 143)),
            DARKSLATEBLUE => Some((72, 61, 139)),
            DARKSLATEGRAY => Some((47, 79, 79)),
            DARKSLATEGREY => Some((47, 79, 79)),
            DARKTURQUOISE => Some((0, 206, 209)),
            DARKVIOLET => Some((148, 0, 211)),
            DEEPPINK => Some((255, 20, 147)),
            DEEPSKYBLUE => Some((0, 191, 255)),
            DIMGRAY => Some((105, 105, 105)),
            DIMGREY => Some((105, 105, 105)),
            DODGERBLUE => Some((30, 144, 255)),
            FIREBRICK => Some((178, 34, 34)),
            FLORALWHITE => Some((255, 250, 240)),
            FORESTGREEN => Some((34, 139, 34)),
            FUCHSIA => Some((255, 0, 255)),
            GAINSBORO => Some((220, 220, 220)),
            GHOSTWHITE => Some((248, 248, 255)),
            GOLD => Some((255, 215, 0)),
            GOLDENROD => Some((218, 165, 32)),
            GRAY => Some((128, 128, 128)),
            GREEN => Some((0, 128, 0)),
            GREENYELLOW => Some((173, 255, 47)),
            GREY => Some((128, 128, 128)),
            HONEYDEW => Some((240, 255, 240)),
            HOTPINK => Some((255, 105, 180)),
            INDIANRED => Some((205, 92, 92)),
            INDIGO => Some((75, 0, 130)),
            IVORY => Some((255, 255, 240)),
            KHAKI => Some((240, 230, 140)),
            LAVENDER => Some((230, 230, 250)),
            LAVENDERBLUSH => Some((255, 240, 245)),
            LAWNGREEN => Some((124, 252, 0)),
            LEMONCHIFFON => Some((255, 250, 205)),
            LIGHTBLUE => Some((173, 216, 230)),
            LIGHTCORAL => Some((240, 128, 128)),
            LIGHTCYAN => Some((224, 255, 255)),
            LIGHTGOLDENRODYELLOW => Some((250, 250, 210)),
            LIGHTGRAY => Some((211, 211, 211)),
            LIGHTGREEN => Some((144, 238, 144)),
            LIGHTGREY => Some((211, 211, 211)),
            LIGHTPINK => Some((255, 182, 193)),
            LIGHTSALMON => Some((255, 160, 122)),
            LIGHTSEAGREEN => Some((32, 178, 170)),
            LIGHTSKYBLUE => Some((135, 206, 250)),
            LIGHTSLATEGRAY => Some((119, 136, 153)),
            LIGHTSLATEGREY => Some((119, 136, 153)),
            LIGHTSTEELBLUE => Some((176, 196, 222)),
            LIGHTYELLOW => Some((255, 255, 224)),
            LIME => Some((0, 255, 0)),
            LIMEGREEN => Some((50, 205, 50)),
            LINEN => Some((250, 240, 230)),
            MAGENTA => Some((255, 0, 255)),
            MAROON => Some((128, 0, 0)),
            MEDIUMAQUAMARINE => Some((102, 205, 170)),
            MEDIUMBLUE => Some((0, 0, 205)),
            MEDIUMORCHID => Some((186, 85, 211)),
            MEDIUMPURPLE => Some((147, 112, 219)),
            MEDIUMSEAGREEN => Some((60, 179, 113)),
            MEDIUMSLATEBLUE => Some((123, 104, 238)),
            MEDIUMSPRINGGREEN => Some((0, 250, 154)),
            MEDIUMTURQUOISE => Some((72, 209, 204)),
            MEDIUMVIOLETRED => Some((199, 21, 133)),
            MIDNIGHTBLUE => Some((25, 25, 112)),
            MINTCREAM => Some((245, 255, 250)),
            MISTYROSE => Some((255, 228, 225)),
            MOCCASIN => Some((255, 228, 181)),
            NAVAJOWHITE => Some((255, 222, 173)),
            NAVY => Some((0, 0, 128)),
            OLDLACE => Some((253, 245, 230)),
            OLIVE => Some((128, 128, 0)),
            OLIVEDRAB => Some((107, 142, 35)),
            ORANGE => Some((255, 165, 0)),
            ORANGERED => Some((255, 69, 0)),
            ORCHID => Some((218, 112, 214)),
            PALEGOLDENROD => Some((238, 232, 170)),
            PALEGREEN => Some((152, 251, 152)),
            PALETURQUOISE => Some((175, 238, 238)),
            PALEVIOLETRED => Some((219, 112, 147)),
            PAPAYAWHIP => Some((255, 239, 213)),
            PEACHPUFF => Some((255, 218, 185)),
            PERU => Some((205, 133, 63)),
            PINK => Some((255, 192, 203)),
            PLUM => Some((221, 160, 221)),
            POWDERBLUE => Some((176, 224, 230)),
            PURPLE => Some((128, 0, 128)),
            REBECCAPURPLE => Some((102, 51, 153)),
            RED => Some((255, 0, 0)),
            ROSYBROWN => Some((188, 143, 143)),
            ROYALBLUE => Some((65, 105, 225)),
            SADDLEBROWN => Some((139, 69, 19)),
            SALMON => Some((250, 128, 114)),
            SANDYBROWN => Some((244, 164, 96)),
            SEAGREEN => Some((46, 139, 87)),
            SEASHELL => Some((255, 245, 238)),
            SIENNA => Some((160, 82, 45)),
            SILVER => Some((192, 192, 192)),
            SKYBLUE => Some((135, 206, 235)),
            SLATEBLUE => Some((106, 90, 205)),
            SLATEGRAY => Some((112, 128, 144)),
            SLATEGREY => Some((112, 128, 144)),
            SNOW => Some((255, 250, 250)),
            SPRINGGREEN => Some((0, 255, 127)),
            STEELBLUE => Some((70, 130, 180)),
            TAN => Some((210, 180, 140)),
            TEAL => Some((0, 128, 128)),
            THISTLE => Some((216, 191, 216)),
            TOMATO => Some((255, 99, 71)),
            TRANSPARENT => None,
            TURQUOISE => Some((64, 224, 208)),
            VIOLET => Some((238, 130, 238)),
            WHEAT => Some((245, 222, 179)),
            WHITE => Some((255, 255, 255)),
            WHITESMOKE => Some((245, 245, 245)),
            YELLOW => Some((255, 255, 0)),
            YELLOWGREEN => Some((154, 205, 50)),
        }
    }
    /// possibly convert a `(red, green, blue)` tuple to a [`NamedColor`]   
    /// the same rules apply as [`NamedColor::from_hex`]
    pub const fn from_rgb(rgb: (u8, u8, u8)) -> Option<Self> {
        use NamedColor::*;
        match rgb {
            (240, 248, 255) => Some(ALICEBLUE),
            (250, 235, 215) => Some(ANTIQUEWHITE),
            (0, 255, 255) => Some(AQUA),
            (127, 255, 212) => Some(AQUAMARINE),
            (240, 255, 255) => Some(AZURE),
            (245, 245, 220) => Some(BEIGE),
            (255, 228, 196) => Some(BISQUE),
            (0, 0, 0) => Some(BLACK),
            (255, 235, 205) => Some(BLANCHEDALMOND),
            (0, 0, 255) => Some(BLUE),
            (138, 43, 226) => Some(BLUEVIOLET),
            (165, 42, 42) => Some(BROWN),
            (222, 184, 135) => Some(BURLYWOOD),
            (95, 158, 160) => Some(CADETBLUE),
            (127, 255, 0) => Some(CHARTREUSE),
            (210, 105, 30) => Some(CHOCOLATE),
            (255, 127, 80) => Some(CORAL),
            (100, 149, 237) => Some(CORNFLOWERBLUE),
            (255, 248, 220) => Some(CORNSILK),
            (220, 20, 60) => Some(CRIMSON),
            (0, 0, 139) => Some(DARKBLUE),
            (0, 139, 139) => Some(DARKCYAN),
            (184, 134, 11) => Some(DARKGOLDENROD),
            (169, 169, 169) => Some(DARKGRAY),
            (0, 100, 0) => Some(DARKGREEN),
            (189, 183, 107) => Some(DARKKHAKI),
            (139, 0, 139) => Some(DARKMAGENTA),
            (85, 107, 47) => Some(DARKOLIVEGREEN),
            (255, 140, 0) => Some(DARKORANGE),
            (153, 50, 204) => Some(DARKORCHID),
            (139, 0, 0) => Some(DARKRED),
            (233, 150, 122) => Some(DARKSALMON),
            (143, 188, 143) => Some(DARKSEAGREEN),
            (72, 61, 139) => Some(DARKSLATEBLUE),
            (47, 79, 79) => Some(DARKSLATEGRAY),
            (0, 206, 209) => Some(DARKTURQUOISE),
            (148, 0, 211) => Some(DARKVIOLET),
            (255, 20, 147) => Some(DEEPPINK),
            (0, 191, 255) => Some(DEEPSKYBLUE),
            (105, 105, 105) => Some(DIMGRAY),
            (30, 144, 255) => Some(DODGERBLUE),
            (178, 34, 34) => Some(FIREBRICK),
            (255, 250, 240) => Some(FLORALWHITE),
            (34, 139, 34) => Some(FORESTGREEN),
            (220, 220, 220) => Some(GAINSBORO),
            (248, 248, 255) => Some(GHOSTWHITE),
            (255, 215, 0) => Some(GOLD),
            (218, 165, 32) => Some(GOLDENROD),
            (128, 128, 128) => Some(GRAY),
            (0, 128, 0) => Some(GREEN),
            (173, 255, 47) => Some(GREENYELLOW),
            (240, 255, 240) => Some(HONEYDEW),
            (255, 105, 180) => Some(HOTPINK),
            (205, 92, 92) => Some(INDIANRED),
            (75, 0, 130) => Some(INDIGO),
            (255, 255, 240) => Some(IVORY),
            (240, 230, 140) => Some(KHAKI),
            (230, 230, 250) => Some(LAVENDER),
            (255, 240, 245) => Some(LAVENDERBLUSH),
            (124, 252, 0) => Some(LAWNGREEN),
            (255, 250, 205) => Some(LEMONCHIFFON),
            (173, 216, 230) => Some(LIGHTBLUE),
            (240, 128, 128) => Some(LIGHTCORAL),
            (224, 255, 255) => Some(LIGHTCYAN),
            (250, 250, 210) => Some(LIGHTGOLDENRODYELLOW),
            (211, 211, 211) => Some(LIGHTGRAY),
            (144, 238, 144) => Some(LIGHTGREEN),
            (255, 182, 193) => Some(LIGHTPINK),
            (255, 160, 122) => Some(LIGHTSALMON),
            (32, 178, 170) => Some(LIGHTSEAGREEN),
            (135, 206, 250) => Some(LIGHTSKYBLUE),
            (119, 136, 153) => Some(LIGHTSLATEGRAY),
            (176, 196, 222) => Some(LIGHTSTEELBLUE),
            (255, 255, 224) => Some(LIGHTYELLOW),
            (0, 255, 0) => Some(LIME),
            (50, 205, 50) => Some(LIMEGREEN),
            (250, 240, 230) => Some(LINEN),
            (128, 0, 0) => Some(MAROON),
            (102, 205, 170) => Some(MEDIUMAQUAMARINE),
            (0, 0, 205) => Some(MEDIUMBLUE),
            (186, 85, 211) => Some(MEDIUMORCHID),
            (147, 112, 219) => Some(MEDIUMPURPLE),
            (60, 179, 113) => Some(MEDIUMSEAGREEN),
            (123, 104, 238) => Some(MEDIUMSLATEBLUE),
            (0, 250, 154) => Some(MEDIUMSPRINGGREEN),
            (72, 209, 204) => Some(MEDIUMTURQUOISE),
            (199, 21, 133) => Some(MEDIUMVIOLETRED),
            (25, 25, 112) => Some(MIDNIGHTBLUE),
            (245, 255, 250) => Some(MINTCREAM),
            (255, 228, 225) => Some(MISTYROSE),
            (255, 228, 181) => Some(MOCCASIN),
            (255, 222, 173) => Some(NAVAJOWHITE),
            (0, 0, 128) => Some(NAVY),
            (253, 245, 230) => Some(OLDLACE),
            (128, 128, 0) => Some(OLIVE),
            (107, 142, 35) => Some(OLIVEDRAB),
            (255, 165, 0) => Some(ORANGE),
            (255, 69, 0) => Some(ORANGERED),
            (218, 112, 214) => Some(ORCHID),
            (238, 232, 170) => Some(PALEGOLDENROD),
            (152, 251, 152) => Some(PALEGREEN),
            (175, 238, 238) => Some(PALETURQUOISE),
            (219, 112, 147) => Some(PALEVIOLETRED),
            (255, 239, 213) => Some(PAPAYAWHIP),
            (255, 218, 185) => Some(PEACHPUFF),
            (205, 133, 63) => Some(PERU),
            (255, 192, 203) => Some(PINK),
            (221, 160, 221) => Some(PLUM),
            (176, 224, 230) => Some(POWDERBLUE),
            (128, 0, 128) => Some(PURPLE),
            (102, 51, 153) => Some(REBECCAPURPLE),
            (255, 0, 0) => Some(RED),
            (188, 143, 143) => Some(ROSYBROWN),
            (65, 105, 225) => Some(ROYALBLUE),
            (139, 69, 19) => Some(SADDLEBROWN),
            (250, 128, 114) => Some(SALMON),
            (244, 164, 96) => Some(SANDYBROWN),
            (46, 139, 87) => Some(SEAGREEN),
            (255, 245, 238) => Some(SEASHELL),
            (160, 82, 45) => Some(SIENNA),
            (192, 192, 192) => Some(SILVER),
            (135, 206, 235) => Some(SKYBLUE),
            (106, 90, 205) => Some(SLATEBLUE),
            (112, 128, 144) => Some(SLATEGRAY),
            (255, 250, 250) => Some(SNOW),
            (0, 255, 127) => Some(SPRINGGREEN),
            (70, 130, 180) => Some(STEELBLUE),
            (210, 180, 140) => Some(TAN),
            (0, 128, 128) => Some(TEAL),
            (216, 191, 216) => Some(THISTLE),
            (255, 99, 71) => Some(TOMATO),
            (64, 224, 208) => Some(TURQUOISE),
            (238, 130, 238) => Some(VIOLET),
            (245, 222, 179) => Some(WHEAT),
            (255, 255, 255) => Some(WHITE),
            (245, 245, 245) => Some(WHITESMOKE),
            (255, 255, 0) => Some(YELLOW),
            (154, 205, 50) => Some(YELLOWGREEN),
            _ => None,
        }
    }
}