A toolkit for working with phylogenetic data.
v0.19.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
names.cpp
Go to the documentation of this file.
1 /*
2  Genesis - A toolkit for working with phylogenetic data.
3  Copyright (C) 2014-2018 Lucas Czech and HITS gGmbH
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17 
18  Contact:
19  Lucas Czech <lucas.czech@h-its.org>
20  Exelixis Lab, Heidelberg Institute for Theoretical Studies
21  Schloss-Wolfsbrunnenweg 35, D-69118 Heidelberg, Germany
22 */
23 
32 
35 
36 #include <algorithm>
37 #include <iterator>
38 #include <stdexcept>
39 #include <vector>
40 
41 namespace genesis {
42 namespace utils {
43 
44 // =================================================================================================
45 // Helper Structs and Typedefs
46 // =================================================================================================
47 
52 struct ColorBytes
53 {
54  unsigned char r;
55  unsigned char g;
56  unsigned char b;
57 };
58 
59 using NamedColorList = std::vector<std::pair<std::string, ColorBytes>>;
60 
61 // =================================================================================================
62 // Web Color Name List
63 // =================================================================================================
64 
72  { "AliceBlue", {240, 248, 255} },
73  { "AntiqueWhite", {250, 235, 215} },
74  { "Aqua", {0, 255, 255} },
75  { "Aquamarine", {127, 255, 212} },
76  { "Azure", {240, 255, 255} },
77  { "Beige", {245, 245, 220} },
78  { "Bisque", {255, 228, 196} },
79  { "Black", {0, 0, 0} },
80  { "BlanchedAlmond", {255, 235, 205} },
81  { "Blue", {0, 0, 255} },
82  { "BlueViolet", {138, 43, 226} },
83  { "Brown", {165, 42, 42} },
84  { "BurlyWood", {222, 184, 135} },
85  { "CadetBlue", {95, 158, 160} },
86  { "Chartreuse", {127, 255, 0} },
87  { "Chocolate", {210, 105, 30} },
88  { "Coral", {255, 127, 80} },
89  { "CornflowerBlue", {100, 149, 237} },
90  { "Cornsilk", {255, 248, 220} },
91  { "Crimson", {220, 20, 60} },
92  { "Cyan", {0, 255, 255} },
93  { "DarkBlue", {0, 0, 139} },
94  { "DarkCyan", {0, 139, 139} },
95  { "DarkGoldenrod", {184, 134, 11} },
96  { "DarkGray", {169, 169, 169} },
97  { "DarkGreen", {0, 100, 0} },
98  { "DarkKhaki", {189, 183, 107} },
99  { "DarkMagenta", {139, 0, 139} },
100  { "DarkOliveGreen", {85, 107, 47} },
101  { "DarkOrange", {255, 140, 0} },
102  { "DarkOrchid", {153, 50, 204} },
103  { "DarkRed", {139, 0, 0} },
104  { "DarkSalmon", {233, 150, 122} },
105  { "DarkSeaGreen", {143, 188, 139} },
106  { "DarkSlateBlue", {72, 61, 139} },
107  { "DarkSlateGray", {47, 79, 79} },
108  { "DarkTurquoise", {0, 206, 209} },
109  { "DarkViolet", {148, 0, 211} },
110  { "DeepPink", {255, 20, 147} },
111  { "DeepSkyBlue", {0, 191, 255} },
112  { "DimGray", {105, 105, 105} },
113  { "DodgerBlue", {30, 144, 255} },
114  { "Firebrick", {178, 34, 34} },
115  { "FloralWhite", {255, 250, 240} },
116  { "ForestGreen", {34, 139, 34} },
117  { "Fuchsia", {255, 0, 255} },
118  { "Gainsboro", {220, 220, 220} },
119  { "GhostWhite", {248, 248, 255} },
120  { "Gold", {255, 215, 0} },
121  { "Goldenrod", {218, 165, 32} },
122  { "Gray", {128, 128, 128} },
123  { "Green", {0, 128, 0} },
124  { "GreenYellow", {173, 255, 47} },
125  { "Honeydew", {240, 255, 240} },
126  { "HotPink", {255, 105, 180} },
127  { "IndianRed", {205, 92, 92} },
128  { "Indigo", {75, 0, 130} },
129  { "Ivory", {255, 255, 240} },
130  { "Khaki", {240, 230, 140} },
131  { "Lavender", {230, 230, 250} },
132  { "LavenderBlush", {255, 240, 245} },
133  { "LawnGreen", {124, 252, 0} },
134  { "LemonChiffon", {255, 250, 205} },
135  { "LightBlue", {173, 216, 230} },
136  { "LightCoral", {240, 128, 128} },
137  { "LightCyan", {224, 255, 255} },
138  { "LightGoldenrodYellow", {250, 250, 210} },
139  { "LightGray", {211, 211, 211} },
140  { "LightGreen", {144, 238, 144} },
141  { "LightPink", {255, 182, 193} },
142  { "LightSalmon", {255, 160, 122} },
143  { "LightSeaGreen", {32, 178, 170} },
144  { "LightSkyBlue", {135, 206, 250} },
145  { "LightSlateGray", {119, 136, 153} },
146  { "LightSteelBlue", {176, 196, 222} },
147  { "LightYellow", {255, 255, 224} },
148  { "Lime", {0, 255, 0} },
149  { "LimeGreen", {50, 205, 50} },
150  { "Linen", {250, 240, 230} },
151  { "Magenta", {255, 0, 255} },
152  { "Maroon", {128, 0, 0} },
153  { "MediumAquamarine", {102, 205, 170} },
154  { "MediumBlue", {0, 0, 205} },
155  { "MediumOrchid", {186, 85, 211} },
156  { "MediumPurple", {147, 112, 219} },
157  { "MediumSeaGreen", {60, 179, 113} },
158  { "MediumSlateBlue", {123, 104, 238} },
159  { "MediumSpringGreen", {0, 250, 154} },
160  { "MediumTurquoise", {72, 209, 204} },
161  { "MediumVioletRed", {199, 21, 133} },
162  { "MidnightBlue", {25, 25, 112} },
163  { "MintCream", {245, 255, 250} },
164  { "MistyRose", {255, 228, 225} },
165  { "Moccasin", {255, 228, 181} },
166  { "NavajoWhite", {255, 222, 173} },
167  { "Navy", {0, 0, 128} },
168  { "OldLace", {253, 245, 230} },
169  { "Olive", {128, 128, 0} },
170  { "OliveDrab", {107, 142, 35} },
171  { "Orange", {255, 165, 0} },
172  { "OrangeRed", {255, 69, 0} },
173  { "Orchid", {218, 112, 214} },
174  { "PaleGoldenrod", {238, 232, 170} },
175  { "PaleGreen", {152, 251, 152} },
176  { "PaleTurquoise", {175, 238, 238} },
177  { "PaleVioletRed", {219, 112, 147} },
178  { "PapayaWhip", {255, 239, 213} },
179  { "PeachPuff", {255, 218, 185} },
180  { "Peru", {205, 133, 63} },
181  { "Pink", {255, 192, 203} },
182  { "Plum", {221, 160, 221} },
183  { "PowderBlue", {176, 224, 230} },
184  { "Purple", {128, 0, 128} },
185  { "Red", {255, 0, 0} },
186  { "RosyBrown", {188, 143, 143} },
187  { "RoyalBlue", {65, 105, 225} },
188  { "SaddleBrown", {139, 69, 19} },
189  { "Salmon", {250, 128, 114} },
190  { "SandyBrown", {244, 164, 96} },
191  { "SeaGreen", {46, 139, 87} },
192  { "SeaShell", {255, 245, 238} },
193  { "Sienna", {160, 82, 45} },
194  { "Silver", {192, 192, 192} },
195  { "SkyBlue", {135, 206, 235} },
196  { "SlateBlue", {106, 90, 205} },
197  { "SlateGray", {112, 128, 144} },
198  { "Snow", {255, 250, 250} },
199  { "SpringGreen", {0, 255, 127} },
200  { "SteelBlue", {70, 130, 180} },
201  { "Tan", {210, 180, 140} },
202  { "Teal", {0, 128, 128} },
203  { "Thistle", {216, 191, 216} },
204  { "Tomato", {255, 99, 71} },
205  { "Turquoise", {64, 224, 208} },
206  { "Violet", {238, 130, 238} },
207  { "Wheat", {245, 222, 179} },
208  { "White", {255, 255, 255} },
209  { "WhiteSmoke", {245, 245, 245} },
210  { "Yellow", {255, 255, 0} },
211  { "YellowGreen", {154, 205, 50} }
212 }};
213 
214 // =================================================================================================
215 // xkcd Color Name List
216 // =================================================================================================
217 
226  { "cloudy blue", { 172, 194, 217 } },
227  { "dark pastel green", { 86, 174, 87 } },
228  { "dust", { 178, 153, 110 } },
229  { "electric lime", { 168, 255, 4 } },
230  { "fresh green", { 105, 216, 79 } },
231  { "light eggplant", { 137, 69, 133 } },
232  { "nasty green", { 112, 178, 63 } },
233  { "really light blue", { 212, 255, 255 } },
234  { "tea", { 101, 171, 124 } },
235  { "warm purple", { 149, 46, 143 } },
236  { "yellowish tan", { 252, 252, 129 } },
237  { "cement", { 165, 163, 145 } },
238  { "dark grass green", { 56, 128, 4 } },
239  { "dusty teal", { 76, 144, 133 } },
240  { "grey teal", { 94, 155, 138 } },
241  { "macaroni and cheese", { 239, 180, 53 } },
242  { "pinkish tan", { 217, 155, 130 } },
243  { "spruce", { 10, 95, 56 } },
244  { "strong blue", { 12, 6, 247 } },
245  { "toxic green", { 97, 222, 42 } },
246  { "windows blue", { 55, 120, 191 } },
247  { "blue blue", { 34, 66, 199 } },
248  { "blue with a hint of purple", { 83, 60, 198 } },
249  { "booger", { 155, 181, 60 } },
250  { "bright sea green", { 5, 255, 166 } },
251  { "dark green blue", { 31, 99, 87 } },
252  { "deep turquoise", { 1, 115, 116 } },
253  { "green teal", { 12, 181, 119 } },
254  { "strong pink", { 255, 7, 137 } },
255  { "bland", { 175, 168, 139 } },
256  { "deep aqua", { 8, 120, 127 } },
257  { "lavender pink", { 221, 133, 215 } },
258  { "light moss green", { 166, 200, 117 } },
259  { "light seafoam green", { 167, 255, 181 } },
260  { "olive yellow", { 194, 183, 9 } },
261  { "pig pink", { 231, 142, 165 } },
262  { "deep lilac", { 150, 110, 189 } },
263  { "desert", { 204, 173, 96 } },
264  { "dusty lavender", { 172, 134, 168 } },
265  { "purpley grey", { 148, 126, 148 } },
266  { "purply", { 152, 63, 178 } },
267  { "candy pink", { 255, 99, 233 } },
268  { "light pastel green", { 178, 251, 165 } },
269  { "boring green", { 99, 179, 101 } },
270  { "kiwi green", { 142, 229, 63 } },
271  { "light grey green", { 183, 225, 161 } },
272  { "orange pink", { 255, 111, 82 } },
273  { "tea green", { 189, 248, 163 } },
274  { "very light brown", { 211, 182, 131 } },
275  { "egg shell", { 255, 252, 196 } },
276  { "eggplant purple", { 67, 5, 65 } },
277  { "powder pink", { 255, 178, 208 } },
278  { "reddish grey", { 153, 117, 112 } },
279  { "baby shit brown", { 173, 144, 13 } },
280  { "liliac", { 196, 142, 253 } },
281  { "stormy blue", { 80, 123, 156 } },
282  { "ugly brown", { 125, 113, 3 } },
283  { "custard", { 255, 253, 120 } },
284  { "darkish pink", { 218, 70, 125 } },
285  { "deep brown", { 65, 2, 0 } },
286  { "greenish beige", { 201, 209, 121 } },
287  { "manilla", { 255, 250, 134 } },
288  { "off blue", { 86, 132, 174 } },
289  { "battleship grey", { 107, 124, 133 } },
290  { "browny green", { 111, 108, 10 } },
291  { "bruise", { 126, 64, 113 } },
292  { "kelley green", { 0, 147, 55 } },
293  { "sickly yellow", { 208, 228, 41 } },
294  { "sunny yellow", { 255, 249, 23 } },
295  { "azul", { 29, 93, 236 } },
296  { "darkgreen", { 5, 73, 7 } },
297  { "green/yellow", { 181, 206, 8 } },
298  { "lichen", { 143, 182, 123 } },
299  { "light light green", { 200, 255, 176 } },
300  { "pale gold", { 253, 222, 108 } },
301  { "sun yellow", { 255, 223, 34 } },
302  { "tan green", { 169, 190, 112 } },
303  { "burple", { 104, 50, 227 } },
304  { "butterscotch", { 253, 177, 71 } },
305  { "toupe", { 199, 172, 125 } },
306  { "dark cream", { 255, 243, 154 } },
307  { "indian red", { 133, 14, 4 } },
308  { "light lavendar", { 239, 192, 254 } },
309  { "poison green", { 64, 253, 20 } },
310  { "baby puke green", { 182, 196, 6 } },
311  { "bright yellow green", { 157, 255, 0 } },
312  { "charcoal grey", { 60, 65, 66 } },
313  { "squash", { 242, 171, 21 } },
314  { "cinnamon", { 172, 79, 6 } },
315  { "light pea green", { 196, 254, 130 } },
316  { "radioactive green", { 44, 250, 31 } },
317  { "raw sienna", { 154, 98, 0 } },
318  { "baby purple", { 202, 155, 247 } },
319  { "cocoa", { 135, 95, 66 } },
320  { "light royal blue", { 58, 46, 254 } },
321  { "orangeish", { 253, 141, 73 } },
322  { "rust brown", { 139, 49, 3 } },
323  { "sand brown", { 203, 165, 96 } },
324  { "swamp", { 105, 131, 57 } },
325  { "tealish green", { 12, 220, 115 } },
326  { "burnt siena", { 183, 82, 3 } },
327  { "camo", { 127, 143, 78 } },
328  { "dusk blue", { 38, 83, 141 } },
329  { "fern", { 99, 169, 80 } },
330  { "old rose", { 200, 127, 137 } },
331  { "pale light green", { 177, 252, 153 } },
332  { "peachy pink", { 255, 154, 138 } },
333  { "rosy pink", { 246, 104, 142 } },
334  { "light bluish green", { 118, 253, 168 } },
335  { "light bright green", { 83, 254, 92 } },
336  { "light neon green", { 78, 253, 84 } },
337  { "light seafoam", { 160, 254, 191 } },
338  { "tiffany blue", { 123, 242, 218 } },
339  { "washed out green", { 188, 245, 166 } },
340  { "browny orange", { 202, 107, 2 } },
341  { "nice blue", { 16, 122, 176 } },
342  { "sapphire", { 33, 56, 171 } },
343  { "greyish teal", { 113, 159, 145 } },
344  { "orangey yellow", { 253, 185, 21 } },
345  { "parchment", { 254, 252, 175 } },
346  { "straw", { 252, 246, 121 } },
347  { "very dark brown", { 29, 2, 0 } },
348  { "terracota", { 203, 104, 67 } },
349  { "ugly blue", { 49, 102, 138 } },
350  { "clear blue", { 36, 122, 253 } },
351  { "creme", { 255, 255, 182 } },
352  { "foam green", { 144, 253, 169 } },
353  { "grey/green", { 134, 161, 125 } },
354  { "light gold", { 253, 220, 92 } },
355  { "seafoam blue", { 120, 209, 182 } },
356  { "topaz", { 19, 187, 175 } },
357  { "violet pink", { 251, 95, 252 } },
358  { "wintergreen", { 32, 249, 134 } },
359  { "yellow tan", { 255, 227, 110 } },
360  { "dark fuchsia", { 157, 7, 89 } },
361  { "indigo blue", { 58, 24, 177 } },
362  { "light yellowish green", { 194, 255, 137 } },
363  { "pale magenta", { 215, 103, 173 } },
364  { "rich purple", { 114, 0, 88 } },
365  { "sunflower yellow", { 255, 218, 3 } },
366  { "green/blue", { 1, 192, 141 } },
367  { "leather", { 172, 116, 52 } },
368  { "racing green", { 1, 70, 0 } },
369  { "vivid purple", { 153, 0, 250 } },
370  { "dark royal blue", { 2, 6, 111 } },
371  { "hazel", { 142, 118, 24 } },
372  { "muted pink", { 209, 118, 143 } },
373  { "booger green", { 150, 180, 3 } },
374  { "canary", { 253, 255, 99 } },
375  { "cool grey", { 149, 163, 166 } },
376  { "dark taupe", { 127, 104, 78 } },
377  { "darkish purple", { 117, 25, 115 } },
378  { "true green", { 8, 148, 4 } },
379  { "coral pink", { 255, 97, 99 } },
380  { "dark sage", { 89, 133, 86 } },
381  { "dark slate blue", { 33, 71, 97 } },
382  { "flat blue", { 60, 115, 168 } },
383  { "mushroom", { 186, 158, 136 } },
384  { "rich blue", { 2, 27, 249 } },
385  { "dirty purple", { 115, 74, 101 } },
386  { "greenblue", { 35, 196, 139 } },
387  { "icky green", { 143, 174, 34 } },
388  { "light khaki", { 230, 242, 162 } },
389  { "warm blue", { 75, 87, 219 } },
390  { "dark hot pink", { 217, 1, 102 } },
391  { "deep sea blue", { 1, 84, 130 } },
392  { "carmine", { 157, 2, 22 } },
393  { "dark yellow green", { 114, 143, 2 } },
394  { "pale peach", { 255, 229, 173 } },
395  { "plum purple", { 78, 5, 80 } },
396  { "golden rod", { 249, 188, 8 } },
397  { "neon red", { 255, 7, 58 } },
398  { "old pink", { 199, 121, 134 } },
399  { "very pale blue", { 214, 255, 254 } },
400  { "blood orange", { 254, 75, 3 } },
401  { "grapefruit", { 253, 89, 86 } },
402  { "sand yellow", { 252, 225, 102 } },
403  { "clay brown", { 178, 113, 61 } },
404  { "dark blue grey", { 31, 59, 77 } },
405  { "flat green", { 105, 157, 76 } },
406  { "light green blue", { 86, 252, 162 } },
407  { "warm pink", { 251, 85, 129 } },
408  { "dodger blue", { 62, 130, 252 } },
409  { "gross green", { 160, 191, 22 } },
410  { "ice", { 214, 255, 250 } },
411  { "metallic blue", { 79, 115, 142 } },
412  { "pale salmon", { 255, 177, 154 } },
413  { "sap green", { 92, 139, 21 } },
414  { "algae", { 84, 172, 104 } },
415  { "bluey grey", { 137, 160, 176 } },
416  { "greeny grey", { 126, 160, 122 } },
417  { "highlighter green", { 27, 252, 6 } },
418  { "light light blue", { 202, 255, 251 } },
419  { "light mint", { 182, 255, 187 } },
420  { "raw umber", { 167, 94, 9 } },
421  { "vivid blue", { 21, 46, 255 } },
422  { "deep lavender", { 141, 94, 183 } },
423  { "dull teal", { 95, 158, 143 } },
424  { "light greenish blue", { 99, 247, 180 } },
425  { "mud green", { 96, 102, 2 } },
426  { "pinky", { 252, 134, 170 } },
427  { "red wine", { 140, 0, 52 } },
428  { "shit green", { 117, 128, 0 } },
429  { "tan brown", { 171, 126, 76 } },
430  { "darkblue", { 3, 7, 100 } },
431  { "rosa", { 254, 134, 164 } },
432  { "lipstick", { 213, 23, 78 } },
433  { "pale mauve", { 254, 208, 252 } },
434  { "claret", { 104, 0, 24 } },
435  { "dandelion", { 254, 223, 8 } },
436  { "orangered", { 254, 66, 15 } },
437  { "poop green", { 111, 124, 0 } },
438  { "ruby", { 202, 1, 71 } },
439  { "dark", { 27, 36, 49 } },
440  { "greenish turquoise", { 0, 251, 176 } },
441  { "pastel red", { 219, 88, 86 } },
442  { "piss yellow", { 221, 214, 24 } },
443  { "bright cyan", { 65, 253, 254 } },
444  { "dark coral", { 207, 82, 78 } },
445  { "algae green", { 33, 195, 111 } },
446  { "darkish red", { 169, 3, 8 } },
447  { "reddy brown", { 110, 16, 5 } },
448  { "blush pink", { 254, 130, 140 } },
449  { "camouflage green", { 75, 97, 19 } },
450  { "lawn green", { 77, 164, 9 } },
451  { "putty", { 190, 174, 138 } },
452  { "vibrant blue", { 3, 57, 248 } },
453  { "dark sand", { 168, 143, 89 } },
454  { "purple/blue", { 93, 33, 208 } },
455  { "saffron", { 254, 178, 9 } },
456  { "twilight", { 78, 81, 139 } },
457  { "warm brown", { 150, 78, 2 } },
458  { "bluegrey", { 133, 163, 178 } },
459  { "bubble gum pink", { 255, 105, 175 } },
460  { "duck egg blue", { 195, 251, 244 } },
461  { "greenish cyan", { 42, 254, 183 } },
462  { "petrol", { 0, 95, 106 } },
463  { "royal", { 12, 23, 147 } },
464  { "butter", { 255, 255, 129 } },
465  { "dusty orange", { 240, 131, 58 } },
466  { "off yellow", { 241, 243, 63 } },
467  { "pale olive green", { 177, 210, 123 } },
468  { "orangish", { 252, 130, 74 } },
469  { "leaf", { 113, 170, 52 } },
470  { "light blue grey", { 183, 201, 226 } },
471  { "dried blood", { 75, 1, 1 } },
472  { "lightish purple", { 165, 82, 230 } },
473  { "rusty red", { 175, 47, 13 } },
474  { "lavender blue", { 139, 136, 248 } },
475  { "light grass green", { 154, 247, 100 } },
476  { "light mint green", { 166, 251, 178 } },
477  { "sunflower", { 255, 197, 18 } },
478  { "velvet", { 117, 8, 81 } },
479  { "brick orange", { 193, 74, 9 } },
480  { "lightish red", { 254, 47, 74 } },
481  { "pure blue", { 2, 3, 226 } },
482  { "twilight blue", { 10, 67, 122 } },
483  { "violet red", { 165, 0, 85 } },
484  { "yellowy brown", { 174, 139, 12 } },
485  { "carnation", { 253, 121, 143 } },
486  { "muddy yellow", { 191, 172, 5 } },
487  { "dark seafoam green", { 62, 175, 118 } },
488  { "deep rose", { 199, 71, 103 } },
489  { "dusty red", { 185, 72, 78 } },
490  { "grey/blue", { 100, 125, 142 } },
491  { "lemon lime", { 191, 254, 40 } },
492  { "purple/pink", { 215, 37, 222 } },
493  { "brown yellow", { 178, 151, 5 } },
494  { "purple brown", { 103, 58, 63 } },
495  { "wisteria", { 168, 125, 194 } },
496  { "banana yellow", { 250, 254, 75 } },
497  { "lipstick red", { 192, 2, 47 } },
498  { "water blue", { 14, 135, 204 } },
499  { "brown grey", { 141, 132, 104 } },
500  { "vibrant purple", { 173, 3, 222 } },
501  { "baby green", { 140, 255, 158 } },
502  { "barf green", { 148, 172, 2 } },
503  { "eggshell blue", { 196, 255, 247 } },
504  { "sandy yellow", { 253, 238, 115 } },
505  { "cool green", { 51, 184, 100 } },
506  { "pale", { 255, 249, 208 } },
507  { "blue/grey", { 117, 141, 163 } },
508  { "hot magenta", { 245, 4, 201 } },
509  { "greyblue", { 119, 161, 181 } },
510  { "purpley", { 135, 86, 228 } },
511  { "baby shit green", { 136, 151, 23 } },
512  { "brownish pink", { 194, 126, 121 } },
513  { "dark aquamarine", { 1, 115, 113 } },
514  { "diarrhea", { 159, 131, 3 } },
515  { "light mustard", { 247, 213, 96 } },
516  { "pale sky blue", { 189, 246, 254 } },
517  { "turtle green", { 117, 184, 79 } },
518  { "bright olive", { 156, 187, 4 } },
519  { "dark grey blue", { 41, 70, 91 } },
520  { "greeny brown", { 105, 96, 6 } },
521  { "lemon green", { 173, 248, 2 } },
522  { "light periwinkle", { 193, 198, 252 } },
523  { "seaweed green", { 53, 173, 107 } },
524  { "sunshine yellow", { 255, 253, 55 } },
525  { "ugly purple", { 164, 66, 160 } },
526  { "medium pink", { 243, 97, 150 } },
527  { "puke brown", { 148, 119, 6 } },
528  { "very light pink", { 255, 244, 242 } },
529  { "viridian", { 30, 145, 103 } },
530  { "bile", { 181, 195, 6 } },
531  { "faded yellow", { 254, 255, 127 } },
532  { "very pale green", { 207, 253, 188 } },
533  { "vibrant green", { 10, 221, 8 } },
534  { "bright lime", { 135, 253, 5 } },
535  { "spearmint", { 30, 248, 118 } },
536  { "light aquamarine", { 123, 253, 199 } },
537  { "light sage", { 188, 236, 172 } },
538  { "yellowgreen", { 187, 249, 15 } },
539  { "baby poo", { 171, 144, 4 } },
540  { "dark seafoam", { 31, 181, 122 } },
541  { "deep teal", { 0, 85, 90 } },
542  { "heather", { 164, 132, 172 } },
543  { "rust orange", { 196, 85, 8 } },
544  { "dirty blue", { 63, 130, 157 } },
545  { "fern green", { 84, 141, 68 } },
546  { "bright lilac", { 201, 94, 251 } },
547  { "weird green", { 58, 229, 127 } },
548  { "peacock blue", { 1, 103, 149 } },
549  { "avocado green", { 135, 169, 34 } },
550  { "faded orange", { 240, 148, 77 } },
551  { "grape purple", { 93, 20, 81 } },
552  { "hot green", { 37, 255, 41 } },
553  { "lime yellow", { 208, 254, 29 } },
554  { "mango", { 255, 166, 43 } },
555  { "shamrock", { 1, 180, 76 } },
556  { "bubblegum", { 255, 108, 181 } },
557  { "purplish brown", { 107, 66, 71 } },
558  { "vomit yellow", { 199, 193, 12 } },
559  { "pale cyan", { 183, 255, 250 } },
560  { "key lime", { 174, 255, 110 } },
561  { "tomato red", { 236, 45, 1 } },
562  { "lightgreen", { 118, 255, 123 } },
563  { "merlot", { 115, 0, 57 } },
564  { "night blue", { 4, 3, 72 } },
565  { "purpleish pink", { 223, 78, 200 } },
566  { "apple", { 110, 203, 60 } },
567  { "baby poop green", { 143, 152, 5 } },
568  { "green apple", { 94, 220, 31 } },
569  { "heliotrope", { 217, 79, 245 } },
570  { "yellow/green", { 200, 253, 61 } },
571  { "almost black", { 7, 13, 13 } },
572  { "cool blue", { 73, 132, 184 } },
573  { "leafy green", { 81, 183, 59 } },
574  { "mustard brown", { 172, 126, 4 } },
575  { "dusk", { 78, 84, 129 } },
576  { "dull brown", { 135, 110, 75 } },
577  { "frog green", { 88, 188, 8 } },
578  { "vivid green", { 47, 239, 16 } },
579  { "bright light green", { 45, 254, 84 } },
580  { "fluro green", { 10, 255, 2 } },
581  { "kiwi", { 156, 239, 67 } },
582  { "seaweed", { 24, 209, 123 } },
583  { "navy green", { 53, 83, 10 } },
584  { "ultramarine blue", { 24, 5, 219 } },
585  { "iris", { 98, 88, 196 } },
586  { "pastel orange", { 255, 150, 79 } },
587  { "yellowish orange", { 255, 171, 15 } },
588  { "perrywinkle", { 143, 140, 231 } },
589  { "tealish", { 36, 188, 168 } },
590  { "dark plum", { 63, 1, 44 } },
591  { "pear", { 203, 248, 95 } },
592  { "pinkish orange", { 255, 114, 76 } },
593  { "midnight purple", { 40, 1, 55 } },
594  { "light urple", { 179, 111, 246 } },
595  { "dark mint", { 72, 192, 114 } },
596  { "greenish tan", { 188, 203, 122 } },
597  { "light burgundy", { 168, 65, 91 } },
598  { "turquoise blue", { 6, 177, 196 } },
599  { "ugly pink", { 205, 117, 132 } },
600  { "sandy", { 241, 218, 122 } },
601  { "electric pink", { 255, 4, 144 } },
602  { "muted purple", { 128, 91, 135 } },
603  { "mid green", { 80, 167, 71 } },
604  { "greyish", { 168, 164, 149 } },
605  { "neon yellow", { 207, 255, 4 } },
606  { "banana", { 255, 255, 126 } },
607  { "carnation pink", { 255, 127, 167 } },
608  { "tomato", { 239, 64, 38 } },
609  { "sea", { 60, 153, 146 } },
610  { "muddy brown", { 136, 104, 6 } },
611  { "turquoise green", { 4, 244, 137 } },
612  { "buff", { 254, 246, 158 } },
613  { "fawn", { 207, 175, 123 } },
614  { "muted blue", { 59, 113, 159 } },
615  { "pale rose", { 253, 193, 197 } },
616  { "dark mint green", { 32, 192, 115 } },
617  { "amethyst", { 155, 95, 192 } },
618  { "blue/green", { 15, 155, 142 } },
619  { "chestnut", { 116, 40, 2 } },
620  { "sick green", { 157, 185, 44 } },
621  { "pea", { 164, 191, 32 } },
622  { "rusty orange", { 205, 89, 9 } },
623  { "stone", { 173, 165, 135 } },
624  { "rose red", { 190, 1, 60 } },
625  { "pale aqua", { 184, 255, 235 } },
626  { "deep orange", { 220, 77, 1 } },
627  { "earth", { 162, 101, 62 } },
628  { "mossy green", { 99, 139, 39 } },
629  { "grassy green", { 65, 156, 3 } },
630  { "pale lime green", { 177, 255, 101 } },
631  { "light grey blue", { 157, 188, 212 } },
632  { "pale grey", { 253, 253, 254 } },
633  { "asparagus", { 119, 171, 86 } },
634  { "blueberry", { 70, 65, 150 } },
635  { "purple red", { 153, 1, 71 } },
636  { "pale lime", { 190, 253, 115 } },
637  { "greenish teal", { 50, 191, 132 } },
638  { "caramel", { 175, 111, 9 } },
639  { "deep magenta", { 160, 2, 92 } },
640  { "light peach", { 255, 216, 177 } },
641  { "milk chocolate", { 127, 78, 30 } },
642  { "ocher", { 191, 155, 12 } },
643  { "off green", { 107, 163, 83 } },
644  { "purply pink", { 240, 117, 230 } },
645  { "lightblue", { 123, 200, 246 } },
646  { "dusky blue", { 71, 95, 148 } },
647  { "golden", { 245, 191, 3 } },
648  { "light beige", { 255, 254, 182 } },
649  { "butter yellow", { 255, 253, 116 } },
650  { "dusky purple", { 137, 91, 123 } },
651  { "french blue", { 67, 107, 173 } },
652  { "ugly yellow", { 208, 193, 1 } },
653  { "greeny yellow", { 198, 248, 8 } },
654  { "orangish red", { 244, 54, 5 } },
655  { "shamrock green", { 2, 193, 77 } },
656  { "orangish brown", { 178, 95, 3 } },
657  { "tree green", { 42, 126, 25 } },
658  { "deep violet", { 73, 6, 72 } },
659  { "gunmetal", { 83, 98, 103 } },
660  { "blue/purple", { 90, 6, 239 } },
661  { "cherry", { 207, 2, 52 } },
662  { "sandy brown", { 196, 166, 97 } },
663  { "warm grey", { 151, 138, 132 } },
664  { "dark indigo", { 31, 9, 84 } },
665  { "midnight", { 3, 1, 45 } },
666  { "bluey green", { 43, 177, 121 } },
667  { "grey pink", { 195, 144, 155 } },
668  { "soft purple", { 166, 111, 181 } },
669  { "blood", { 119, 0, 1 } },
670  { "brown red", { 146, 43, 5 } },
671  { "medium grey", { 125, 127, 124 } },
672  { "berry", { 153, 15, 75 } },
673  { "poo", { 143, 115, 3 } },
674  { "purpley pink", { 200, 60, 185 } },
675  { "light salmon", { 254, 169, 147 } },
676  { "snot", { 172, 187, 13 } },
677  { "easter purple", { 192, 113, 254 } },
678  { "light yellow green", { 204, 253, 127 } },
679  { "dark navy blue", { 0, 2, 46 } },
680  { "drab", { 130, 131, 68 } },
681  { "light rose", { 255, 197, 203 } },
682  { "rouge", { 171, 18, 57 } },
683  { "purplish red", { 176, 5, 75 } },
684  { "slime green", { 153, 204, 4 } },
685  { "baby poop", { 147, 124, 0 } },
686  { "irish green", { 1, 149, 41 } },
687  { "pink/purple", { 239, 29, 231 } },
688  { "dark navy", { 0, 4, 53 } },
689  { "greeny blue", { 66, 179, 149 } },
690  { "light plum", { 157, 87, 131 } },
691  { "pinkish grey", { 200, 172, 169 } },
692  { "dirty orange", { 200, 118, 6 } },
693  { "rust red", { 170, 39, 4 } },
694  { "pale lilac", { 228, 203, 255 } },
695  { "orangey red", { 250, 66, 36 } },
696  { "primary blue", { 8, 4, 249 } },
697  { "kermit green", { 92, 178, 0 } },
698  { "brownish purple", { 118, 66, 78 } },
699  { "murky green", { 108, 122, 14 } },
700  { "wheat", { 251, 221, 126 } },
701  { "very dark purple", { 42, 1, 52 } },
702  { "bottle green", { 4, 74, 5 } },
703  { "watermelon", { 253, 70, 89 } },
704  { "deep sky blue", { 13, 117, 248 } },
705  { "fire engine red", { 254, 0, 2 } },
706  { "yellow ochre", { 203, 157, 6 } },
707  { "pumpkin orange", { 251, 125, 7 } },
708  { "pale olive", { 185, 204, 129 } },
709  { "light lilac", { 237, 200, 255 } },
710  { "lightish green", { 97, 225, 96 } },
711  { "carolina blue", { 138, 184, 254 } },
712  { "mulberry", { 146, 10, 78 } },
713  { "shocking pink", { 254, 2, 162 } },
714  { "auburn", { 154, 48, 1 } },
715  { "bright lime green", { 101, 254, 8 } },
716  { "celadon", { 190, 253, 183 } },
717  { "pinkish brown", { 177, 114, 97 } },
718  { "poo brown", { 136, 95, 1 } },
719  { "bright sky blue", { 2, 204, 254 } },
720  { "celery", { 193, 253, 149 } },
721  { "dirt brown", { 131, 101, 57 } },
722  { "strawberry", { 251, 41, 67 } },
723  { "dark lime", { 132, 183, 1 } },
724  { "copper", { 182, 99, 37 } },
725  { "medium brown", { 127, 81, 18 } },
726  { "muted green", { 95, 160, 82 } },
727  { "robin's egg", { 109, 237, 253 } },
728  { "bright aqua", { 11, 249, 234 } },
729  { "bright lavender", { 199, 96, 255 } },
730  { "ivory", { 255, 255, 203 } },
731  { "very light purple", { 246, 206, 252 } },
732  { "light navy", { 21, 80, 132 } },
733  { "pink red", { 245, 5, 79 } },
734  { "olive brown", { 100, 84, 3 } },
735  { "poop brown", { 122, 89, 1 } },
736  { "mustard green", { 168, 181, 4 } },
737  { "ocean green", { 61, 153, 115 } },
738  { "very dark blue", { 0, 1, 51 } },
739  { "dusty green", { 118, 169, 115 } },
740  { "light navy blue", { 46, 90, 136 } },
741  { "minty green", { 11, 247, 125 } },
742  { "adobe", { 189, 108, 72 } },
743  { "barney", { 172, 29, 184 } },
744  { "jade green", { 43, 175, 106 } },
745  { "bright light blue", { 38, 247, 253 } },
746  { "light lime", { 174, 253, 108 } },
747  { "dark khaki", { 155, 143, 85 } },
748  { "orange yellow", { 255, 173, 1 } },
749  { "ocre", { 198, 156, 4 } },
750  { "maize", { 244, 208, 84 } },
751  { "faded pink", { 222, 157, 172 } },
752  { "british racing green", { 5, 72, 13 } },
753  { "sandstone", { 201, 174, 116 } },
754  { "mud brown", { 96, 70, 15 } },
755  { "light sea green", { 152, 246, 176 } },
756  { "robin egg blue", { 138, 241, 254 } },
757  { "aqua marine", { 46, 232, 187 } },
758  { "dark sea green", { 17, 135, 93 } },
759  { "soft pink", { 253, 176, 192 } },
760  { "orangey brown", { 177, 96, 2 } },
761  { "cherry red", { 247, 2, 42 } },
762  { "burnt yellow", { 213, 171, 9 } },
763  { "brownish grey", { 134, 119, 95 } },
764  { "camel", { 198, 159, 89 } },
765  { "purplish grey", { 122, 104, 127 } },
766  { "marine", { 4, 46, 96 } },
767  { "greyish pink", { 200, 141, 148 } },
768  { "pale turquoise", { 165, 251, 213 } },
769  { "pastel yellow", { 255, 254, 113 } },
770  { "bluey purple", { 98, 65, 199 } },
771  { "canary yellow", { 255, 254, 64 } },
772  { "faded red", { 211, 73, 78 } },
773  { "sepia", { 152, 94, 43 } },
774  { "coffee", { 166, 129, 76 } },
775  { "bright magenta", { 255, 8, 232 } },
776  { "mocha", { 157, 118, 81 } },
777  { "ecru", { 254, 255, 202 } },
778  { "purpleish", { 152, 86, 141 } },
779  { "cranberry", { 158, 0, 58 } },
780  { "darkish green", { 40, 124, 55 } },
781  { "brown orange", { 185, 105, 2 } },
782  { "dusky rose", { 186, 104, 115 } },
783  { "melon", { 255, 120, 85 } },
784  { "sickly green", { 148, 178, 28 } },
785  { "silver", { 197, 201, 199 } },
786  { "purply blue", { 102, 26, 238 } },
787  { "purpleish blue", { 97, 64, 239 } },
788  { "hospital green", { 155, 229, 170 } },
789  { "shit brown", { 123, 88, 4 } },
790  { "mid blue", { 39, 106, 179 } },
791  { "amber", { 254, 179, 8 } },
792  { "easter green", { 140, 253, 126 } },
793  { "soft blue", { 100, 136, 234 } },
794  { "cerulean blue", { 5, 110, 238 } },
795  { "golden brown", { 178, 122, 1 } },
796  { "bright turquoise", { 15, 254, 249 } },
797  { "red pink", { 250, 42, 85 } },
798  { "red purple", { 130, 7, 71 } },
799  { "greyish brown", { 122, 106, 79 } },
800  { "vermillion", { 244, 50, 12 } },
801  { "russet", { 161, 57, 5 } },
802  { "steel grey", { 111, 130, 138 } },
803  { "lighter purple", { 165, 90, 244 } },
804  { "bright violet", { 173, 10, 253 } },
805  { "prussian blue", { 0, 69, 119 } },
806  { "slate green", { 101, 141, 109 } },
807  { "dirty pink", { 202, 123, 128 } },
808  { "dark blue green", { 0, 82, 73 } },
809  { "pine", { 43, 93, 52 } },
810  { "yellowy green", { 191, 241, 40 } },
811  { "dark gold", { 181, 148, 16 } },
812  { "bluish", { 41, 118, 187 } },
813  { "darkish blue", { 1, 65, 130 } },
814  { "dull red", { 187, 63, 63 } },
815  { "pinky red", { 252, 38, 71 } },
816  { "bronze", { 168, 121, 0 } },
817  { "pale teal", { 130, 203, 178 } },
818  { "military green", { 102, 124, 62 } },
819  { "barbie pink", { 254, 70, 165 } },
820  { "bubblegum pink", { 254, 131, 204 } },
821  { "pea soup green", { 148, 166, 23 } },
822  { "dark mustard", { 168, 137, 5 } },
823  { "shit", { 127, 95, 0 } },
824  { "medium purple", { 158, 67, 162 } },
825  { "very dark green", { 6, 46, 3 } },
826  { "dirt", { 138, 110, 69 } },
827  { "dusky pink", { 204, 122, 139 } },
828  { "red violet", { 158, 1, 104 } },
829  { "lemon yellow", { 253, 255, 56 } },
830  { "pistachio", { 192, 250, 139 } },
831  { "dull yellow", { 238, 220, 91 } },
832  { "dark lime green", { 126, 189, 1 } },
833  { "denim blue", { 59, 91, 146 } },
834  { "teal blue", { 1, 136, 159 } },
835  { "lightish blue", { 61, 122, 253 } },
836  { "purpley blue", { 95, 52, 231 } },
837  { "light indigo", { 109, 90, 207 } },
838  { "swamp green", { 116, 133, 0 } },
839  { "brown green", { 112, 108, 17 } },
840  { "dark maroon", { 60, 0, 8 } },
841  { "hot purple", { 203, 0, 245 } },
842  { "dark forest green", { 0, 45, 4 } },
843  { "faded blue", { 101, 140, 187 } },
844  { "drab green", { 116, 149, 81 } },
845  { "light lime green", { 185, 255, 102 } },
846  { "snot green", { 157, 193, 0 } },
847  { "yellowish", { 250, 238, 102 } },
848  { "light blue green", { 126, 251, 179 } },
849  { "bordeaux", { 123, 0, 44 } },
850  { "light mauve", { 194, 146, 161 } },
851  { "ocean", { 1, 123, 146 } },
852  { "marigold", { 252, 192, 6 } },
853  { "muddy green", { 101, 116, 50 } },
854  { "dull orange", { 216, 134, 59 } },
855  { "steel", { 115, 133, 149 } },
856  { "electric purple", { 170, 35, 255 } },
857  { "fluorescent green", { 8, 255, 8 } },
858  { "yellowish brown", { 155, 122, 1 } },
859  { "blush", { 242, 158, 142 } },
860  { "soft green", { 111, 194, 118 } },
861  { "bright orange", { 255, 91, 0 } },
862  { "lemon", { 253, 255, 82 } },
863  { "purple grey", { 134, 111, 133 } },
864  { "acid green", { 143, 254, 9 } },
865  { "pale lavender", { 238, 207, 254 } },
866  { "violet blue", { 81, 10, 201 } },
867  { "light forest green", { 79, 145, 83 } },
868  { "burnt red", { 159, 35, 5 } },
869  { "khaki green", { 114, 134, 57 } },
870  { "cerise", { 222, 12, 98 } },
871  { "faded purple", { 145, 110, 153 } },
872  { "apricot", { 255, 177, 109 } },
873  { "dark olive green", { 60, 77, 3 } },
874  { "grey brown", { 127, 112, 83 } },
875  { "green grey", { 119, 146, 111 } },
876  { "true blue", { 1, 15, 204 } },
877  { "pale violet", { 206, 174, 250 } },
878  { "periwinkle blue", { 143, 153, 251 } },
879  { "light sky blue", { 198, 252, 255 } },
880  { "blurple", { 85, 57, 204 } },
881  { "green brown", { 84, 78, 3 } },
882  { "bluegreen", { 1, 122, 121 } },
883  { "bright teal", { 1, 249, 198 } },
884  { "brownish yellow", { 201, 176, 3 } },
885  { "pea soup", { 146, 153, 1 } },
886  { "forest", { 11, 85, 9 } },
887  { "barney purple", { 160, 4, 152 } },
888  { "ultramarine", { 32, 0, 177 } },
889  { "purplish", { 148, 86, 140 } },
890  { "puke yellow", { 194, 190, 14 } },
891  { "bluish grey", { 116, 139, 151 } },
892  { "dark periwinkle", { 102, 95, 209 } },
893  { "dark lilac", { 156, 109, 165 } },
894  { "reddish", { 196, 66, 64 } },
895  { "light maroon", { 162, 72, 87 } },
896  { "dusty purple", { 130, 95, 135 } },
897  { "terra cotta", { 201, 100, 59 } },
898  { "avocado", { 144, 177, 52 } },
899  { "marine blue", { 1, 56, 106 } },
900  { "teal green", { 37, 163, 111 } },
901  { "slate grey", { 89, 101, 109 } },
902  { "lighter green", { 117, 253, 99 } },
903  { "electric green", { 33, 252, 13 } },
904  { "dusty blue", { 90, 134, 173 } },
905  { "golden yellow", { 254, 198, 21 } },
906  { "bright yellow", { 255, 253, 1 } },
907  { "light lavender", { 223, 197, 254 } },
908  { "umber", { 178, 100, 0 } },
909  { "poop", { 127, 94, 0 } },
910  { "dark peach", { 222, 126, 93 } },
911  { "jungle green", { 4, 130, 67 } },
912  { "eggshell", { 255, 255, 212 } },
913  { "denim", { 59, 99, 140 } },
914  { "yellow brown", { 183, 148, 0 } },
915  { "dull purple", { 132, 89, 126 } },
916  { "chocolate brown", { 65, 25, 0 } },
917  { "wine red", { 123, 3, 35 } },
918  { "neon blue", { 4, 217, 255 } },
919  { "dirty green", { 102, 126, 44 } },
920  { "light tan", { 251, 238, 172 } },
921  { "ice blue", { 215, 255, 254 } },
922  { "cadet blue", { 78, 116, 150 } },
923  { "dark mauve", { 135, 76, 98 } },
924  { "very light blue", { 213, 255, 255 } },
925  { "grey purple", { 130, 109, 140 } },
926  { "pastel pink", { 255, 186, 205 } },
927  { "very light green", { 209, 255, 189 } },
928  { "dark sky blue", { 68, 142, 228 } },
929  { "evergreen", { 5, 71, 42 } },
930  { "dull pink", { 213, 134, 157 } },
931  { "aubergine", { 61, 7, 52 } },
932  { "mahogany", { 74, 1, 0 } },
933  { "reddish orange", { 248, 72, 28 } },
934  { "deep green", { 2, 89, 15 } },
935  { "vomit green", { 137, 162, 3 } },
936  { "purple pink", { 224, 63, 216 } },
937  { "dusty pink", { 213, 138, 148 } },
938  { "faded green", { 123, 178, 116 } },
939  { "camo green", { 82, 101, 37 } },
940  { "pinky purple", { 201, 76, 190 } },
941  { "pink purple", { 219, 75, 218 } },
942  { "brownish red", { 158, 54, 35 } },
943  { "dark rose", { 181, 72, 93 } },
944  { "mud", { 115, 92, 18 } },
945  { "brownish", { 156, 109, 87 } },
946  { "emerald green", { 2, 143, 30 } },
947  { "pale brown", { 177, 145, 110 } },
948  { "dull blue", { 73, 117, 156 } },
949  { "burnt umber", { 160, 69, 14 } },
950  { "medium green", { 57, 173, 72 } },
951  { "clay", { 182, 106, 80 } },
952  { "light aqua", { 140, 255, 219 } },
953  { "light olive green", { 164, 190, 92 } },
954  { "brownish orange", { 203, 119, 35 } },
955  { "dark aqua", { 5, 105, 107 } },
956  { "purplish pink", { 206, 93, 174 } },
957  { "dark salmon", { 200, 90, 83 } },
958  { "greenish grey", { 150, 174, 141 } },
959  { "jade", { 31, 167, 116 } },
960  { "ugly green", { 122, 151, 3 } },
961  { "dark beige", { 172, 147, 98 } },
962  { "emerald", { 1, 160, 73 } },
963  { "pale red", { 217, 84, 77 } },
964  { "light magenta", { 250, 95, 247 } },
965  { "sky", { 130, 202, 252 } },
966  { "light cyan", { 172, 255, 252 } },
967  { "yellow orange", { 252, 176, 1 } },
968  { "reddish purple", { 145, 9, 81 } },
969  { "reddish pink", { 254, 44, 84 } },
970  { "orchid", { 200, 117, 196 } },
971  { "dirty yellow", { 205, 197, 10 } },
972  { "orange red", { 253, 65, 30 } },
973  { "deep red", { 154, 2, 0 } },
974  { "orange brown", { 190, 100, 0 } },
975  { "cobalt blue", { 3, 10, 167 } },
976  { "neon pink", { 254, 1, 154 } },
977  { "rose pink", { 247, 135, 154 } },
978  { "greyish purple", { 136, 113, 145 } },
979  { "raspberry", { 176, 1, 73 } },
980  { "aqua green", { 18, 225, 147 } },
981  { "salmon pink", { 254, 123, 124 } },
982  { "tangerine", { 255, 148, 8 } },
983  { "brownish green", { 106, 110, 9 } },
984  { "red brown", { 139, 46, 22 } },
985  { "greenish brown", { 105, 97, 18 } },
986  { "pumpkin", { 225, 119, 1 } },
987  { "pine green", { 10, 72, 30 } },
988  { "charcoal", { 52, 56, 55 } },
989  { "baby pink", { 255, 183, 206 } },
990  { "cornflower", { 106, 121, 247 } },
991  { "blue violet", { 93, 6, 233 } },
992  { "chocolate", { 61, 28, 2 } },
993  { "greyish green", { 130, 166, 125 } },
994  { "scarlet", { 190, 1, 25 } },
995  { "green yellow", { 201, 255, 39 } },
996  { "dark olive", { 55, 62, 2 } },
997  { "sienna", { 169, 86, 30 } },
998  { "pastel purple", { 202, 160, 255 } },
999  { "terracotta", { 202, 102, 65 } },
1000  { "aqua blue", { 2, 216, 233 } },
1001  { "sage green", { 136, 179, 120 } },
1002  { "blood red", { 152, 0, 2 } },
1003  { "deep pink", { 203, 1, 98 } },
1004  { "grass", { 92, 172, 45 } },
1005  { "moss", { 118, 153, 88 } },
1006  { "pastel blue", { 162, 191, 254 } },
1007  { "bluish green", { 16, 166, 116 } },
1008  { "green blue", { 6, 180, 139 } },
1009  { "dark tan", { 175, 136, 74 } },
1010  { "greenish blue", { 11, 139, 135 } },
1011  { "pale orange", { 255, 167, 86 } },
1012  { "vomit", { 162, 164, 21 } },
1013  { "forrest green", { 21, 68, 6 } },
1014  { "dark lavender", { 133, 103, 152 } },
1015  { "dark violet", { 52, 1, 63 } },
1016  { "purple blue", { 99, 45, 233 } },
1017  { "dark cyan", { 10, 136, 138 } },
1018  { "olive drab", { 111, 118, 50 } },
1019  { "pinkish", { 212, 106, 126 } },
1020  { "cobalt", { 30, 72, 143 } },
1021  { "neon purple", { 188, 19, 254 } },
1022  { "light turquoise", { 126, 244, 204 } },
1023  { "apple green", { 118, 205, 38 } },
1024  { "dull green", { 116, 166, 98 } },
1025  { "wine", { 128, 1, 63 } },
1026  { "powder blue", { 177, 209, 252 } },
1027  { "off white", { 255, 255, 228 } },
1028  { "electric blue", { 6, 82, 255 } },
1029  { "dark turquoise", { 4, 92, 90 } },
1030  { "blue purple", { 87, 41, 206 } },
1031  { "azure", { 6, 154, 243 } },
1032  { "bright red", { 255, 0, 13 } },
1033  { "pinkish red", { 241, 12, 69 } },
1034  { "cornflower blue", { 81, 112, 215 } },
1035  { "light olive", { 172, 191, 105 } },
1036  { "grape", { 108, 52, 97 } },
1037  { "greyish blue", { 94, 129, 157 } },
1038  { "purplish blue", { 96, 30, 249 } },
1039  { "yellowish green", { 176, 221, 22 } },
1040  { "greenish yellow", { 205, 253, 2 } },
1041  { "medium blue", { 44, 111, 187 } },
1042  { "dusty rose", { 192, 115, 122 } },
1043  { "light violet", { 214, 180, 252 } },
1044  { "midnight blue", { 2, 0, 53 } },
1045  { "bluish purple", { 112, 59, 231 } },
1046  { "red orange", { 253, 60, 6 } },
1047  { "dark magenta", { 150, 0, 86 } },
1048  { "greenish", { 64, 163, 104 } },
1049  { "ocean blue", { 3, 113, 156 } },
1050  { "coral", { 252, 90, 80 } },
1051  { "cream", { 255, 255, 194 } },
1052  { "reddish brown", { 127, 43, 10 } },
1053  { "burnt sienna", { 176, 78, 15 } },
1054  { "brick", { 160, 54, 35 } },
1055  { "sage", { 135, 174, 115 } },
1056  { "grey green", { 120, 155, 115 } },
1057  { "white", { 255, 255, 255 } },
1058  { "robin's egg blue", { 152, 239, 249 } },
1059  { "moss green", { 101, 139, 56 } },
1060  { "steel blue", { 90, 125, 154 } },
1061  { "eggplant", { 56, 8, 53 } },
1062  { "light yellow", { 255, 254, 122 } },
1063  { "leaf green", { 92, 169, 4 } },
1064  { "light grey", { 216, 220, 214 } },
1065  { "puke", { 165, 165, 2 } },
1066  { "pinkish purple", { 214, 72, 215 } },
1067  { "sea blue", { 4, 116, 149 } },
1068  { "pale purple", { 183, 144, 212 } },
1069  { "slate blue", { 91, 124, 153 } },
1070  { "blue grey", { 96, 124, 142 } },
1071  { "hunter green", { 11, 64, 8 } },
1072  { "fuchsia", { 237, 13, 217 } },
1073  { "crimson", { 140, 0, 15 } },
1074  { "pale yellow", { 255, 255, 132 } },
1075  { "ochre", { 191, 144, 5 } },
1076  { "mustard yellow", { 210, 189, 10 } },
1077  { "light red", { 255, 71, 76 } },
1078  { "cerulean", { 4, 133, 209 } },
1079  { "pale pink", { 255, 207, 220 } },
1080  { "deep blue", { 4, 2, 115 } },
1081  { "rust", { 168, 60, 9 } },
1082  { "light teal", { 144, 228, 193 } },
1083  { "slate", { 81, 101, 114 } },
1084  { "goldenrod", { 250, 194, 5 } },
1085  { "dark yellow", { 213, 182, 10 } },
1086  { "dark grey", { 54, 55, 55 } },
1087  { "army green", { 75, 93, 22 } },
1088  { "grey blue", { 107, 139, 164 } },
1089  { "seafoam", { 128, 249, 173 } },
1090  { "puce", { 165, 126, 82 } },
1091  { "spring green", { 169, 249, 113 } },
1092  { "dark orange", { 198, 81, 2 } },
1093  { "sand", { 226, 202, 118 } },
1094  { "pastel green", { 176, 255, 157 } },
1095  { "mint", { 159, 254, 176 } },
1096  { "light orange", { 253, 170, 72 } },
1097  { "bright pink", { 254, 1, 177 } },
1098  { "chartreuse", { 193, 248, 10 } },
1099  { "deep purple", { 54, 1, 63 } },
1100  { "dark brown", { 52, 28, 2 } },
1101  { "taupe", { 185, 162, 129 } },
1102  { "pea green", { 142, 171, 18 } },
1103  { "puke green", { 154, 174, 7 } },
1104  { "kelly green", { 2, 171, 46 } },
1105  { "seafoam green", { 122, 249, 171 } },
1106  { "blue green", { 19, 126, 109 } },
1107  { "khaki", { 170, 166, 98 } },
1108  { "burgundy", { 97, 0, 35 } },
1109  { "dark teal", { 1, 77, 78 } },
1110  { "brick red", { 143, 20, 2 } },
1111  { "royal purple", { 75, 0, 110 } },
1112  { "plum", { 88, 15, 65 } },
1113  { "mint green", { 143, 255, 159 } },
1114  { "gold", { 219, 180, 12 } },
1115  { "baby blue", { 162, 207, 254 } },
1116  { "yellow green", { 192, 251, 45 } },
1117  { "bright purple", { 190, 3, 253 } },
1118  { "dark red", { 132, 0, 0 } },
1119  { "pale blue", { 208, 254, 254 } },
1120  { "grass green", { 63, 155, 11 } },
1121  { "navy", { 1, 21, 62 } },
1122  { "aquamarine", { 4, 216, 178 } },
1123  { "burnt orange", { 192, 78, 1 } },
1124  { "neon green", { 12, 255, 12 } },
1125  { "bright blue", { 1, 101, 252 } },
1126  { "rose", { 207, 98, 117 } },
1127  { "light pink", { 255, 209, 223 } },
1128  { "mustard", { 206, 179, 1 } },
1129  { "indigo", { 56, 2, 130 } },
1130  { "lime", { 170, 255, 50 } },
1131  { "sea green", { 83, 252, 161 } },
1132  { "periwinkle", { 142, 130, 254 } },
1133  { "dark pink", { 203, 65, 107 } },
1134  { "olive green", { 103, 122, 4 } },
1135  { "peach", { 255, 176, 124 } },
1136  { "pale green", { 199, 253, 181 } },
1137  { "light brown", { 173, 129, 80 } },
1138  { "hot pink", { 255, 2, 141 } },
1139  { "black", { 0, 0, 0 } },
1140  { "lilac", { 206, 162, 253 } },
1141  { "navy blue", { 0, 17, 70 } },
1142  { "royal blue", { 5, 4, 170 } },
1143  { "beige", { 230, 218, 166 } },
1144  { "salmon", { 255, 121, 108 } },
1145  { "olive", { 110, 117, 14 } },
1146  { "maroon", { 101, 0, 33 } },
1147  { "bright green", { 1, 255, 7 } },
1148  { "dark purple", { 53, 6, 62 } },
1149  { "mauve", { 174, 113, 129 } },
1150  { "forest green", { 6, 71, 12 } },
1151  { "aqua", { 19, 234, 201 } },
1152  { "cyan", { 0, 255, 255 } },
1153  { "tan", { 209, 178, 111 } },
1154  { "dark blue", { 0, 3, 91 } },
1155  { "lavender", { 199, 159, 239 } },
1156  { "turquoise", { 6, 194, 172 } },
1157  { "dark green", { 3, 53, 0 } },
1158  { "violet", { 154, 14, 234 } },
1159  { "light purple", { 191, 119, 246 } },
1160  { "lime green", { 137, 254, 5 } },
1161  { "grey", { 146, 149, 145 } },
1162  { "sky blue", { 117, 187, 253 } },
1163  { "yellow", { 255, 255, 20 } },
1164  { "magenta", { 194, 0, 120 } },
1165  { "light green", { 150, 249, 123 } },
1166  { "orange", { 249, 115, 6 } },
1167  { "teal", { 2, 147, 134 } },
1168  { "light blue", { 149, 208, 252 } },
1169  { "red", { 229, 0, 0 } },
1170  { "brown", { 101, 55, 0 } },
1171  { "pink", { 255, 129, 192 } },
1172  { "blue", { 3, 67, 223 } },
1173  { "green", { 21, 176, 26 } },
1174  { "purple", { 126, 30, 156 } }
1175 }};
1176 
1177 // =================================================================================================
1178 // Helper Functions
1179 // =================================================================================================
1180 
1187 NamedColorList::const_iterator get_color_list_iterator_(
1188  NamedColorList const & list,
1189  std::string name
1190 ) {
1191  name = utils::replace_all(name, " ", "");
1192  name = utils::replace_all(name, "_", "");
1193 
1194  // We also strip spaces and undescores from the list names itself.
1195  // We could store the list in a format that already does that - however,
1196  // to be future-proof, we want to store the names as they appear in the original data.
1197  return std::find_if(
1198  list.begin(),
1199  list.end(),
1200  [&name] ( std::pair<std::string, ColorBytes> const& elem ) {
1201  auto elem_name = utils::replace_all( elem.first, " ", "" );
1202  elem_name = utils::replace_all( elem_name, "_", "" );
1203 
1204  return utils::equals_ci( elem_name, name );
1205  }
1206  );
1207 }
1208 
1212 std::vector<Color> convert_to_palette_( NamedColorList const & list )
1213 {
1214  // We fully convert. This is expensive, but this function is not used often anyway.
1215 
1216  std::vector<Color> result;
1217  result.reserve( list.size() );
1218 
1219  for( auto const& c : list ) {
1220  result.push_back( color_from_bytes( c.second.r, c.second.g, c.second.b ) );
1221  }
1222  return result;
1223 }
1224 
1225 // =================================================================================================
1226 // Color Names
1227 // =================================================================================================
1228 
1229 bool is_color_name( std::string const& name )
1230 {
1231  if( is_web_color_name( name ) ) {
1232  return true;
1233  }
1234  if( is_xkcd_color_name( name ) ) {
1235  return true;
1236  }
1237  return false;
1238 }
1239 
1240 Color color_from_name( std::string const& name )
1241 {
1242  // Lazy...
1243  if( is_web_color_name( name ) ) {
1244  return color_from_name_web( name );
1245  }
1246  if( is_xkcd_color_name( name ) ) {
1247  return color_from_name_xkcd( name );
1248  }
1249  throw std::invalid_argument( "No color named '" + name + "'." );
1250 }
1251 
1252 // =================================================================================================
1253 // Color Names Web
1254 // =================================================================================================
1255 
1256 bool is_web_color_name( std::string const& name )
1257 {
1258  return get_color_list_iterator_( color_list_web_, name ) != color_list_web_.end();
1259 }
1260 
1261 Color color_from_name_web( std::string const& name )
1262 {
1263  auto it = get_color_list_iterator_( color_list_web_, name );
1264  if( it == color_list_web_.end() ) {
1265  throw std::invalid_argument( "No color named " + name + " in web colors." );
1266  }
1267 
1268  auto const c = it->second;
1269  return color_from_bytes( c.r, c.g, c.b );
1270 }
1271 
1272 std::vector<Color> color_palette_web()
1273 {
1275 }
1276 
1277 // =================================================================================================
1278 // Color Name xkcd
1279 // =================================================================================================
1280 
1281 bool is_xkcd_color_name( std::string const& name )
1282 {
1284 }
1285 
1286 Color color_from_name_xkcd( std::string const& name )
1287 {
1288  auto it = get_color_list_iterator_( color_list_xkcd_, name );
1289  if( it == color_list_xkcd_.end() ) {
1290  throw std::invalid_argument( "No color named " + name + " in xkcd colors." );
1291  }
1292 
1293  auto const c = it->second;
1294  return color_from_bytes( c.r, c.g, c.b );
1295 }
1296 
1297 std::vector<Color> color_palette_xkcd()
1298 {
1300 }
1301 
1302 } // namespace utils
1303 } // namespace genesis
std::string replace_all(std::string const &text, std::string const &search, std::string const &replace)
Return a copy of a string, where all occurrences of a search string are replaced by a replace string...
Definition: string.cpp:239
Color color_from_bytes(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
Create a Color given three or four values in the range [ 0, 255 ] for each of the components red...
bool is_xkcd_color_name(std::string const &name)
Return true iff the given name is a named xkcd color.
Definition: names.cpp:1281
const NamedColorList color_list_web_
Struct that stores a static const map of named web colors.
Definition: names.cpp:71
bool is_web_color_name(std::string const &name)
Return true iff the given name is a named web color.
Definition: names.cpp:1256
bool is_color_name(std::string const &name)
Return true if the name represents one of the named colors offered by genesis, which is (currently) a...
Definition: names.cpp:1229
bool equals_ci(std::string const &lhs, std::string const &rhs)
Compare two strings case insensitive.
Definition: string.cpp:59
const NamedColorList color_list_xkcd_
Struct that stores a static const map of named xkcd colors.
Definition: names.cpp:225
Provides some commonly used string utility functions.
Color color_from_name_xkcd(std::string const &name)
Retrieve a named xkcd color by name.
Definition: names.cpp:1286
std::vector< Color > convert_to_palette_(NamedColorList const &list)
Local helper function to convert a list of byte colors into a proper Color vector.
Definition: names.cpp:1212
NamedColorList::const_iterator get_color_list_iterator_(NamedColorList const &list, std::string name)
Internal helper function.
Definition: names.cpp:1187
Color color_from_name(std::string const &name)
Return the color represented by the given name, which is (currently) a shortcut for color_from_name_w...
Definition: names.cpp:1240
Color operators and functions.
std::vector< std::pair< std::string, ColorBytes >> NamedColorList
Definition: names.cpp:59
Color color_from_name_web(std::string const &name)
Retrieve a named web color by name.
Definition: names.cpp:1261
std::vector< Color > color_palette_web()
Definition: names.cpp:1272
std::vector< Color > color_palette_xkcd()
Definition: names.cpp:1297