1use std::collections::HashMap;
5
6use crate::literals::parse_color_literal;
7
8static NAMED_COLORS: std::sync::OnceLock<HashMap<&'static str, u32>> = std::sync::OnceLock::new();
9
10pub fn named_colors() -> &'static HashMap<&'static str, u32> {
11 NAMED_COLORS.get_or_init(|| {
13 HashMap::from([
14 ("aliceblue", parse_color_literal("#F0F8FF").unwrap()),
15 ("antiquewhite", parse_color_literal("#FAEBD7").unwrap()),
16 ("aqua", parse_color_literal("#00FFFF").unwrap()),
17 ("aquamarine", parse_color_literal("#7FFFD4").unwrap()),
18 ("azure", parse_color_literal("#F0FFFF").unwrap()),
19 ("beige", parse_color_literal("#F5F5DC").unwrap()),
20 ("bisque", parse_color_literal("#FFE4C4").unwrap()),
21 ("black", parse_color_literal("#000000").unwrap()),
22 ("blanchedalmond", parse_color_literal("#FFEBCD").unwrap()),
23 ("blue", parse_color_literal("#0000FF").unwrap()),
24 ("blueviolet", parse_color_literal("#8A2BE2").unwrap()),
25 ("brown", parse_color_literal("#A52A2A").unwrap()),
26 ("burlywood", parse_color_literal("#DEB887").unwrap()),
27 ("cadetblue", parse_color_literal("#5F9EA0").unwrap()),
28 ("chartreuse", parse_color_literal("#7FFF00").unwrap()),
29 ("chocolate", parse_color_literal("#D2691E").unwrap()),
30 ("coral", parse_color_literal("#FF7F50").unwrap()),
31 ("cornflowerblue", parse_color_literal("#6495ED").unwrap()),
32 ("cornsilk", parse_color_literal("#FFF8DC").unwrap()),
33 ("crimson", parse_color_literal("#DC143C").unwrap()),
34 ("cyan", parse_color_literal("#00FFFF").unwrap()),
35 ("darkblue", parse_color_literal("#00008B").unwrap()),
36 ("darkcyan", parse_color_literal("#008B8B").unwrap()),
37 ("darkgoldenrod", parse_color_literal("#B8860B").unwrap()),
38 ("darkgray", parse_color_literal("#A9A9A9").unwrap()),
39 ("darkgreen", parse_color_literal("#006400").unwrap()),
40 ("darkgrey", parse_color_literal("#A9A9A9").unwrap()),
41 ("darkkhaki", parse_color_literal("#BDB76B").unwrap()),
42 ("darkmagenta", parse_color_literal("#8B008B").unwrap()),
43 ("darkolivegreen", parse_color_literal("#556B2F").unwrap()),
44 ("darkorange", parse_color_literal("#FF8C00").unwrap()),
45 ("darkorchid", parse_color_literal("#9932CC").unwrap()),
46 ("darkred", parse_color_literal("#8B0000").unwrap()),
47 ("darksalmon", parse_color_literal("#E9967A").unwrap()),
48 ("darkseagreen", parse_color_literal("#8FBC8F").unwrap()),
49 ("darkslateblue", parse_color_literal("#483D8B").unwrap()),
50 ("darkslategray", parse_color_literal("#2F4F4F").unwrap()),
51 ("darkslategrey", parse_color_literal("#2F4F4F").unwrap()),
52 ("darkturquoise", parse_color_literal("#00CED1").unwrap()),
53 ("darkviolet", parse_color_literal("#9400D3").unwrap()),
54 ("deeppink", parse_color_literal("#FF1493").unwrap()),
55 ("deepskyblue", parse_color_literal("#00BFFF").unwrap()),
56 ("dimgray", parse_color_literal("#696969").unwrap()),
57 ("dimgrey", parse_color_literal("#696969").unwrap()),
58 ("dodgerblue", parse_color_literal("#1E90FF").unwrap()),
59 ("firebrick", parse_color_literal("#B22222").unwrap()),
60 ("floralwhite", parse_color_literal("#FFFAF0").unwrap()),
61 ("forestgreen", parse_color_literal("#228B22").unwrap()),
62 ("fuchsia", parse_color_literal("#FF00FF").unwrap()),
63 ("gainsboro", parse_color_literal("#DCDCDC").unwrap()),
64 ("ghostwhite", parse_color_literal("#F8F8FF").unwrap()),
65 ("gold", parse_color_literal("#FFD700").unwrap()),
66 ("goldenrod", parse_color_literal("#DAA520").unwrap()),
67 ("gray", parse_color_literal("#808080").unwrap()),
68 ("green", parse_color_literal("#008000").unwrap()),
69 ("greenyellow", parse_color_literal("#ADFF2F").unwrap()),
70 ("grey", parse_color_literal("#808080").unwrap()),
71 ("honeydew", parse_color_literal("#F0FFF0").unwrap()),
72 ("hotpink", parse_color_literal("#FF69B4").unwrap()),
73 ("indianred", parse_color_literal("#CD5C5C").unwrap()),
74 ("indigo", parse_color_literal("#4B0082").unwrap()),
75 ("ivory", parse_color_literal("#FFFFF0").unwrap()),
76 ("khaki", parse_color_literal("#F0E68C").unwrap()),
77 ("lavender", parse_color_literal("#E6E6FA").unwrap()),
78 ("lavenderblush", parse_color_literal("#FFF0F5").unwrap()),
79 ("lawngreen", parse_color_literal("#7CFC00").unwrap()),
80 ("lemonchiffon", parse_color_literal("#FFFACD").unwrap()),
81 ("lightblue", parse_color_literal("#ADD8E6").unwrap()),
82 ("lightcoral", parse_color_literal("#F08080").unwrap()),
83 ("lightcyan", parse_color_literal("#E0FFFF").unwrap()),
84 ("lightgoldenrodyellow", parse_color_literal("#FAFAD2").unwrap()),
85 ("lightgray", parse_color_literal("#D3D3D3").unwrap()),
86 ("lightgreen", parse_color_literal("#90EE90").unwrap()),
87 ("lightgrey", parse_color_literal("#D3D3D3").unwrap()),
88 ("lightpink", parse_color_literal("#FFB6C1").unwrap()),
89 ("lightsalmon", parse_color_literal("#FFA07A").unwrap()),
90 ("lightseagreen", parse_color_literal("#20B2AA").unwrap()),
91 ("lightskyblue", parse_color_literal("#87CEFA").unwrap()),
92 ("lightslategray", parse_color_literal("#778899").unwrap()),
93 ("lightslategrey", parse_color_literal("#778899").unwrap()),
94 ("lightsteelblue", parse_color_literal("#B0C4DE").unwrap()),
95 ("lightyellow", parse_color_literal("#FFFFE0").unwrap()),
96 ("lime", parse_color_literal("#00FF00").unwrap()),
97 ("limegreen", parse_color_literal("#32CD32").unwrap()),
98 ("linen", parse_color_literal("#FAF0E6").unwrap()),
99 ("magenta", parse_color_literal("#FF00FF").unwrap()),
100 ("maroon", parse_color_literal("#800000").unwrap()),
101 ("mediumaquamarine", parse_color_literal("#66CDAA").unwrap()),
102 ("mediumblue", parse_color_literal("#0000CD").unwrap()),
103 ("mediumorchid", parse_color_literal("#BA55D3").unwrap()),
104 ("mediumpurple", parse_color_literal("#9370DB").unwrap()),
105 ("mediumseagreen", parse_color_literal("#3CB371").unwrap()),
106 ("mediumslateblue", parse_color_literal("#7B68EE").unwrap()),
107 ("mediumspringgreen", parse_color_literal("#00FA9A").unwrap()),
108 ("mediumturquoise", parse_color_literal("#48D1CC").unwrap()),
109 ("mediumvioletred", parse_color_literal("#C71585").unwrap()),
110 ("midnightblue", parse_color_literal("#191970").unwrap()),
111 ("mintcream", parse_color_literal("#F5FFFA").unwrap()),
112 ("mistyrose", parse_color_literal("#FFE4E1").unwrap()),
113 ("moccasin", parse_color_literal("#FFE4B5").unwrap()),
114 ("navajowhite", parse_color_literal("#FFDEAD").unwrap()),
115 ("navy", parse_color_literal("#000080").unwrap()),
116 ("oldlace", parse_color_literal("#FDF5E6").unwrap()),
117 ("olive", parse_color_literal("#808000").unwrap()),
118 ("olivedrab", parse_color_literal("#6B8E23").unwrap()),
119 ("orange", parse_color_literal("#FFA500").unwrap()),
120 ("orangered", parse_color_literal("#FF4500").unwrap()),
121 ("orchid", parse_color_literal("#DA70D6").unwrap()),
122 ("palegoldenrod", parse_color_literal("#EEE8AA").unwrap()),
123 ("palegreen", parse_color_literal("#98FB98").unwrap()),
124 ("paleturquoise", parse_color_literal("#AFEEEE").unwrap()),
125 ("palevioletred", parse_color_literal("#DB7093").unwrap()),
126 ("papayawhip", parse_color_literal("#FFEFD5").unwrap()),
127 ("peachpuff", parse_color_literal("#FFDAB9").unwrap()),
128 ("peru", parse_color_literal("#CD853F").unwrap()),
129 ("pink", parse_color_literal("#FFC0CB").unwrap()),
130 ("plum", parse_color_literal("#DDA0DD").unwrap()),
131 ("powderblue", parse_color_literal("#B0E0E6").unwrap()),
132 ("purple", parse_color_literal("#800080").unwrap()),
133 ("rebeccapurple", parse_color_literal("#663399").unwrap()),
134 ("red", parse_color_literal("#FF0000").unwrap()),
135 ("rosybrown", parse_color_literal("#BC8F8F").unwrap()),
136 ("royalblue", parse_color_literal("#4169E1").unwrap()),
137 ("saddlebrown", parse_color_literal("#8B4513").unwrap()),
138 ("salmon", parse_color_literal("#FA8072").unwrap()),
139 ("sandybrown", parse_color_literal("#F4A460").unwrap()),
140 ("seagreen", parse_color_literal("#2E8B57").unwrap()),
141 ("seashell", parse_color_literal("#FFF5EE").unwrap()),
142 ("sienna", parse_color_literal("#A0522D").unwrap()),
143 ("silver", parse_color_literal("#C0C0C0").unwrap()),
144 ("skyblue", parse_color_literal("#87CEEB").unwrap()),
145 ("slateblue", parse_color_literal("#6A5ACD").unwrap()),
146 ("slategray", parse_color_literal("#708090").unwrap()),
147 ("slategrey", parse_color_literal("#708090").unwrap()),
148 ("snow", parse_color_literal("#FFFAFA").unwrap()),
149 ("springgreen", parse_color_literal("#00FF7F").unwrap()),
150 ("steelblue", parse_color_literal("#4682B4").unwrap()),
151 ("tan", parse_color_literal("#D2B48C").unwrap()),
152 ("teal", parse_color_literal("#008080").unwrap()),
153 ("thistle", parse_color_literal("#D8BFD8").unwrap()),
154 ("tomato", parse_color_literal("#FF6347").unwrap()),
155 ("transparent", parse_color_literal("#00000000").unwrap()),
156 ("turquoise", parse_color_literal("#40E0D0").unwrap()),
157 ("violet", parse_color_literal("#EE82EE").unwrap()),
158 ("wheat", parse_color_literal("#F5DEB3").unwrap()),
159 ("white", parse_color_literal("#FFFFFF").unwrap()),
160 ("whitesmoke", parse_color_literal("#F5F5F5").unwrap()),
161 ("yellow", parse_color_literal("#FFFF00").unwrap()),
162 ("yellowgreen", parse_color_literal("#9ACD32").unwrap()),
163 ])
164 })
165}