1 //! A big dictionary of named colors and their 2 //! corresponding RGBA values 3 4 pub(crate) struct NamedColorMap { 5 name_to_rgba: phf::Map<&'static str, [u8; 4]>, 6 rgba_to_name: phf::Map<[u8; 3], &'static str>, 7 } 8 9 impl NamedColorMap { get_by_name(&self, name: &str) -> Option<&[u8; 4]>10 pub fn get_by_name(&self, name: &str) -> Option<&[u8; 4]> { 11 self.name_to_rgba.get(name) 12 } 13 14 // transparent is not handled get_by_rgba(&self, rgba: [u8; 3]) -> Option<&&str>15 pub fn get_by_rgba(&self, rgba: [u8; 3]) -> Option<&&str> { 16 self.rgba_to_name.get(&rgba) 17 } 18 } 19 20 // Adding one color requires adding to both map due to limitation in phf crate. 21 pub(crate) static NAMED_COLORS: NamedColorMap = NamedColorMap { 22 name_to_rgba: phf::phf_map! { 23 "aliceblue" => [0xF0, 0xF8, 0xFF, 0xFF], 24 "antiquewhite" => [0xFA, 0xEB, 0xD7, 0xFF], 25 "aqua" => [0x00, 0xFF, 0xFF, 0xFF], 26 "aquamarine" => [0x7F, 0xFF, 0xD4, 0xFF], 27 "azure" => [0xF0, 0xFF, 0xFF, 0xFF], 28 "beige" => [0xF5, 0xF5, 0xDC, 0xFF], 29 "bisque" => [0xFF, 0xE4, 0xC4, 0xFF], 30 "black" => [0x00, 0x00, 0x00, 0xFF], 31 "blanchedalmond" => [0xFF, 0xEB, 0xCD, 0xFF], 32 "blue" => [0x00, 0x00, 0xFF, 0xFF], 33 "blueviolet" => [0x8A, 0x2B, 0xE2, 0xFF], 34 "brown" => [0xA5, 0x2A, 0x2A, 0xFF], 35 "burlywood" => [0xDE, 0xB8, 0x87, 0xFF], 36 "cadetblue" => [0x5F, 0x9E, 0xA0, 0xFF], 37 "chartreuse" => [0x7F, 0xFF, 0x00, 0xFF], 38 "chocolate" => [0xD2, 0x69, 0x1E, 0xFF], 39 "coral" => [0xFF, 0x7F, 0x50, 0xFF], 40 "cornflowerblue" => [0x64, 0x95, 0xED, 0xFF], 41 "cornsilk" => [0xFF, 0xF8, 0xDC, 0xFF], 42 "crimson" => [0xDC, 0x14, 0x3C, 0xFF], 43 "darkblue" => [0x00, 0x00, 0x8B, 0xFF], 44 "darkcyan" => [0x00, 0x8B, 0x8B, 0xFF], 45 "darkgoldenrod" => [0xB8, 0x86, 0x0B, 0xFF], 46 "darkgray" => [0xA9, 0xA9, 0xA9, 0xFF], 47 "darkgreen" => [0x00, 0x64, 0x00, 0xFF], 48 "darkkhaki" => [0xBD, 0xB7, 0x6B, 0xFF], 49 "darkmagenta" => [0x8B, 0x00, 0x8B, 0xFF], 50 "darkolivegreen" => [0x55, 0x6B, 0x2F, 0xFF], 51 "darkorange" => [0xFF, 0x8C, 0x00, 0xFF], 52 "darkorchid" => [0x99, 0x32, 0xCC, 0xFF], 53 "darkred" => [0x8B, 0x00, 0x00, 0xFF], 54 "darksalmon" => [0xE9, 0x96, 0x7A, 0xFF], 55 "darkseagreen" => [0x8F, 0xBC, 0x8F, 0xFF], 56 "darkslateblue" => [0x48, 0x3D, 0x8B, 0xFF], 57 "darkslategray" => [0x2F, 0x4F, 0x4F, 0xFF], 58 "darkturquoise" => [0x00, 0xCE, 0xD1, 0xFF], 59 "darkviolet" => [0x94, 0x00, 0xD3, 0xFF], 60 "deeppink" => [0xFF, 0x14, 0x93, 0xFF], 61 "deepskyblue" => [0x00, 0xBF, 0xFF, 0xFF], 62 "dimgray" => [0x69, 0x69, 0x69, 0xFF], 63 "dodgerblue" => [0x1E, 0x90, 0xFF, 0xFF], 64 "firebrick" => [0xB2, 0x22, 0x22, 0xFF], 65 "floralwhite" => [0xFF, 0xFA, 0xF0, 0xFF], 66 "forestgreen" => [0x22, 0x8B, 0x22, 0xFF], 67 "fuchsia" => [0xFF, 0x00, 0xFF, 0xFF], 68 "gainsboro" => [0xDC, 0xDC, 0xDC, 0xFF], 69 "ghostwhite" => [0xF8, 0xF8, 0xFF, 0xFF], 70 "gold" => [0xFF, 0xD7, 0x00, 0xFF], 71 "goldenrod" => [0xDA, 0xA5, 0x20, 0xFF], 72 "gray" => [0x80, 0x80, 0x80, 0xFF], 73 "green" => [0x00, 0x80, 0x00, 0xFF], 74 "greenyellow" => [0xAD, 0xFF, 0x2F, 0xFF], 75 "honeydew" => [0xF0, 0xFF, 0xF0, 0xFF], 76 "hotpink" => [0xFF, 0x69, 0xB4, 0xFF], 77 "indianred" => [0xCD, 0x5C, 0x5C, 0xFF], 78 "indigo" => [0x4B, 0x00, 0x82, 0xFF], 79 "ivory" => [0xFF, 0xFF, 0xF0, 0xFF], 80 "khaki" => [0xF0, 0xE6, 0x8C, 0xFF], 81 "lavender" => [0xE6, 0xE6, 0xFA, 0xFF], 82 "lavenderblush" => [0xFF, 0xF0, 0xF5, 0xFF], 83 "lawngreen" => [0x7C, 0xFC, 0x00, 0xFF], 84 "lemonchiffon" => [0xFF, 0xFA, 0xCD, 0xFF], 85 "lightblue" => [0xAD, 0xD8, 0xE6, 0xFF], 86 "lightcoral" => [0xF0, 0x80, 0x80, 0xFF], 87 "lightcyan" => [0xE0, 0xFF, 0xFF, 0xFF], 88 "lightgoldenrodyellow" => [0xFA, 0xFA, 0xD2, 0xFF], 89 "lightgray" => [0xD3, 0xD3, 0xD3, 0xFF], 90 "lightgreen" => [0x90, 0xEE, 0x90, 0xFF], 91 "lightpink" => [0xFF, 0xB6, 0xC1, 0xFF], 92 "lightsalmon" => [0xFF, 0xA0, 0x7A, 0xFF], 93 "lightseagreen" => [0x20, 0xB2, 0xAA, 0xFF], 94 "lightskyblue" => [0x87, 0xCE, 0xFA, 0xFF], 95 "lightslategray" => [0x77, 0x88, 0x99, 0xFF], 96 "lightsteelblue" => [0xB0, 0xC4, 0xDE, 0xFF], 97 "lightyellow" => [0xFF, 0xFF, 0xE0, 0xFF], 98 "lime" => [0x00, 0xFF, 0x00, 0xFF], 99 "limegreen" => [0x32, 0xCD, 0x32, 0xFF], 100 "linen" => [0xFA, 0xF0, 0xE6, 0xFF], 101 "maroon" => [0x80, 0x00, 0x00, 0xFF], 102 "mediumaquamarine" => [0x66, 0xCD, 0xAA, 0xFF], 103 "mediumblue" => [0x00, 0x00, 0xCD, 0xFF], 104 "mediumorchid" => [0xBA, 0x55, 0xD3, 0xFF], 105 "mediumpurple" => [0x93, 0x70, 0xDB, 0xFF], 106 "mediumseagreen" => [0x3C, 0xB3, 0x71, 0xFF], 107 "mediumslateblue" => [0x7B, 0x68, 0xEE, 0xFF], 108 "mediumspringgreen" => [0x00, 0xFA, 0x9A, 0xFF], 109 "mediumturquoise" => [0x48, 0xD1, 0xCC, 0xFF], 110 "mediumvioletred" => [0xC7, 0x15, 0x85, 0xFF], 111 "midnightblue" => [0x19, 0x19, 0x70, 0xFF], 112 "mintcream" => [0xF5, 0xFF, 0xFA, 0xFF], 113 "mistyrose" => [0xFF, 0xE4, 0xE1, 0xFF], 114 "moccasin" => [0xFF, 0xE4, 0xB5, 0xFF], 115 "navajowhite" => [0xFF, 0xDE, 0xAD, 0xFF], 116 "navy" => [0x00, 0x00, 0x80, 0xFF], 117 "oldlace" => [0xFD, 0xF5, 0xE6, 0xFF], 118 "olive" => [0x80, 0x80, 0x00, 0xFF], 119 "olivedrab" => [0x6B, 0x8E, 0x23, 0xFF], 120 "orange" => [0xFF, 0xA5, 0x00, 0xFF], 121 "orangered" => [0xFF, 0x45, 0x00, 0xFF], 122 "orchid" => [0xDA, 0x70, 0xD6, 0xFF], 123 "palegoldenrod" => [0xEE, 0xE8, 0xAA, 0xFF], 124 "palegreen" => [0x98, 0xFB, 0x98, 0xFF], 125 "paleturquoise" => [0xAF, 0xEE, 0xEE, 0xFF], 126 "palevioletred" => [0xDB, 0x70, 0x93, 0xFF], 127 "papayawhip" => [0xFF, 0xEF, 0xD5, 0xFF], 128 "peachpuff" => [0xFF, 0xDA, 0xB9, 0xFF], 129 "peru" => [0xCD, 0x85, 0x3F, 0xFF], 130 "pink" => [0xFF, 0xC0, 0xCB, 0xFF], 131 "plum" => [0xDD, 0xA0, 0xDD, 0xFF], 132 "powderblue" => [0xB0, 0xE0, 0xE6, 0xFF], 133 "purple" => [0x80, 0x00, 0x80, 0xFF], 134 "rebeccapurple" => [0x66, 0x33, 0x99, 0xFF], 135 "red" => [0xFF, 0x00, 0x00, 0xFF], 136 "rosybrown" => [0xBC, 0x8F, 0x8F, 0xFF], 137 "royalblue" => [0x41, 0x69, 0xE1, 0xFF], 138 "saddlebrown" => [0x8B, 0x45, 0x13, 0xFF], 139 "salmon" => [0xFA, 0x80, 0x72, 0xFF], 140 "sandybrown" => [0xF4, 0xA4, 0x60, 0xFF], 141 "seagreen" => [0x2E, 0x8B, 0x57, 0xFF], 142 "seashell" => [0xFF, 0xF5, 0xEE, 0xFF], 143 "sienna" => [0xA0, 0x52, 0x2D, 0xFF], 144 "silver" => [0xC0, 0xC0, 0xC0, 0xFF], 145 "skyblue" => [0x87, 0xCE, 0xEB, 0xFF], 146 "slateblue" => [0x6A, 0x5A, 0xCD, 0xFF], 147 "slategray" => [0x70, 0x80, 0x90, 0xFF], 148 "snow" => [0xFF, 0xFA, 0xFA, 0xFF], 149 "springgreen" => [0x00, 0xFF, 0x7F, 0xFF], 150 "steelblue" => [0x46, 0x82, 0xB4, 0xFF], 151 "tan" => [0xD2, 0xB4, 0x8C, 0xFF], 152 "teal" => [0x00, 0x80, 0x80, 0xFF], 153 "thistle" => [0xD8, 0xBF, 0xD8, 0xFF], 154 "tomato" => [0xFF, 0x63, 0x47, 0xFF], 155 "turquoise" => [0x40, 0xE0, 0xD0, 0xFF], 156 "violet" => [0xEE, 0x82, 0xEE, 0xFF], 157 "wheat" => [0xF5, 0xDE, 0xB3, 0xFF], 158 "white" => [0xFF, 0xFF, 0xFF, 0xFF], 159 "whitesmoke" => [0xF5, 0xF5, 0xF5, 0xFF], 160 "yellow" => [0xFF, 0xFF, 0x00, 0xFF], 161 "yellowgreen" => [0x9A, 0xCD, 0x32, 0xFF], 162 "transparent" => [0x00, 0x00, 0x00, 0x00], 163 }, 164 rgba_to_name: phf::phf_map! { 165 [0xF0, 0xF8, 0xFF] => "aliceblue", 166 [0xFA, 0xEB, 0xD7] => "antiquewhite", 167 [0x00, 0xFF, 0xFF] => "aqua", 168 [0x7F, 0xFF, 0xD4] => "aquamarine", 169 [0xF0, 0xFF, 0xFF] => "azure", 170 [0xF5, 0xF5, 0xDC] => "beige", 171 [0xFF, 0xE4, 0xC4] => "bisque", 172 [0x00, 0x00, 0x00] => "black", 173 [0xFF, 0xEB, 0xCD] => "blanchedalmond", 174 [0x00, 0x00, 0xFF] => "blue", 175 [0x8A, 0x2B, 0xE2] => "blueviolet", 176 [0xA5, 0x2A, 0x2A] => "brown", 177 [0xDE, 0xB8, 0x87] => "burlywood", 178 [0x5F, 0x9E, 0xA0] => "cadetblue", 179 [0x7F, 0xFF, 0x00] => "chartreuse", 180 [0xD2, 0x69, 0x1E] => "chocolate", 181 [0xFF, 0x7F, 0x50] => "coral", 182 [0x64, 0x95, 0xED] => "cornflowerblue", 183 [0xFF, 0xF8, 0xDC] => "cornsilk", 184 [0xDC, 0x14, 0x3C] => "crimson", 185 [0x00, 0x00, 0x8B] => "darkblue", 186 [0x00, 0x8B, 0x8B] => "darkcyan", 187 [0xB8, 0x86, 0x0B] => "darkgoldenrod", 188 [0xA9, 0xA9, 0xA9] => "darkgray", 189 [0x00, 0x64, 0x00] => "darkgreen", 190 [0xBD, 0xB7, 0x6B] => "darkkhaki", 191 [0x8B, 0x00, 0x8B] => "darkmagenta", 192 [0x55, 0x6B, 0x2F] => "darkolivegreen", 193 [0xFF, 0x8C, 0x00] => "darkorange", 194 [0x99, 0x32, 0xCC] => "darkorchid", 195 [0x8B, 0x00, 0x00] => "darkred", 196 [0xE9, 0x96, 0x7A] => "darksalmon", 197 [0x8F, 0xBC, 0x8F] => "darkseagreen", 198 [0x48, 0x3D, 0x8B] => "darkslateblue", 199 [0x2F, 0x4F, 0x4F] => "darkslategray", 200 [0x00, 0xCE, 0xD1] => "darkturquoise", 201 [0x94, 0x00, 0xD3] => "darkviolet", 202 [0xFF, 0x14, 0x93] => "deeppink", 203 [0x00, 0xBF, 0xFF] => "deepskyblue", 204 [0x69, 0x69, 0x69] => "dimgray", 205 [0x1E, 0x90, 0xFF] => "dodgerblue", 206 [0xB2, 0x22, 0x22] => "firebrick", 207 [0xFF, 0xFA, 0xF0] => "floralwhite", 208 [0x22, 0x8B, 0x22] => "forestgreen", 209 [0xFF, 0x00, 0xFF] => "fuchsia", 210 [0xDC, 0xDC, 0xDC] => "gainsboro", 211 [0xF8, 0xF8, 0xFF] => "ghostwhite", 212 [0xFF, 0xD7, 0x00] => "gold", 213 [0xDA, 0xA5, 0x20] => "goldenrod", 214 [0x80, 0x80, 0x80] => "gray", 215 [0x00, 0x80, 0x00] => "green", 216 [0xAD, 0xFF, 0x2F] => "greenyellow", 217 [0xF0, 0xFF, 0xF0] => "honeydew", 218 [0xFF, 0x69, 0xB4] => "hotpink", 219 [0xCD, 0x5C, 0x5C] => "indianred", 220 [0x4B, 0x00, 0x82] => "indigo", 221 [0xFF, 0xFF, 0xF0] => "ivory", 222 [0xF0, 0xE6, 0x8C] => "khaki", 223 [0xE6, 0xE6, 0xFA] => "lavender", 224 [0xFF, 0xF0, 0xF5] => "lavenderblush", 225 [0x7C, 0xFC, 0x00] => "lawngreen", 226 [0xFF, 0xFA, 0xCD] => "lemonchiffon", 227 [0xAD, 0xD8, 0xE6] => "lightblue", 228 [0xF0, 0x80, 0x80] => "lightcoral", 229 [0xE0, 0xFF, 0xFF] => "lightcyan", 230 [0xFA, 0xFA, 0xD2] => "lightgoldenrodyellow", 231 [0xD3, 0xD3, 0xD3] => "lightgray", 232 [0x90, 0xEE, 0x90] => "lightgreen", 233 [0xFF, 0xB6, 0xC1] => "lightpink", 234 [0xFF, 0xA0, 0x7A] => "lightsalmon", 235 [0x20, 0xB2, 0xAA] => "lightseagreen", 236 [0x87, 0xCE, 0xFA] => "lightskyblue", 237 [0x77, 0x88, 0x99] => "lightslategray", 238 [0xB0, 0xC4, 0xDE] => "lightsteelblue", 239 [0xFF, 0xFF, 0xE0] => "lightyellow", 240 [0x00, 0xFF, 0x00] => "lime", 241 [0x32, 0xCD, 0x32] => "limegreen", 242 [0xFA, 0xF0, 0xE6] => "linen", 243 [0x80, 0x00, 0x00] => "maroon", 244 [0x66, 0xCD, 0xAA] => "mediumaquamarine", 245 [0x00, 0x00, 0xCD] => "mediumblue", 246 [0xBA, 0x55, 0xD3] => "mediumorchid", 247 [0x93, 0x70, 0xDB] => "mediumpurple", 248 [0x3C, 0xB3, 0x71] => "mediumseagreen", 249 [0x7B, 0x68, 0xEE] => "mediumslateblue", 250 [0x00, 0xFA, 0x9A] => "mediumspringgreen", 251 [0x48, 0xD1, 0xCC] => "mediumturquoise", 252 [0xC7, 0x15, 0x85] => "mediumvioletred", 253 [0x19, 0x19, 0x70] => "midnightblue", 254 [0xF5, 0xFF, 0xFA] => "mintcream", 255 [0xFF, 0xE4, 0xE1] => "mistyrose", 256 [0xFF, 0xE4, 0xB5] => "moccasin", 257 [0xFF, 0xDE, 0xAD] => "navajowhite", 258 [0x00, 0x00, 0x80] => "navy", 259 [0xFD, 0xF5, 0xE6] => "oldlace", 260 [0x80, 0x80, 0x00] => "olive", 261 [0x6B, 0x8E, 0x23] => "olivedrab", 262 [0xFF, 0xA5, 0x00] => "orange", 263 [0xFF, 0x45, 0x00] => "orangered", 264 [0xDA, 0x70, 0xD6] => "orchid", 265 [0xEE, 0xE8, 0xAA] => "palegoldenrod", 266 [0x98, 0xFB, 0x98] => "palegreen", 267 [0xAF, 0xEE, 0xEE] => "paleturquoise", 268 [0xDB, 0x70, 0x93] => "palevioletred", 269 [0xFF, 0xEF, 0xD5] => "papayawhip", 270 [0xFF, 0xDA, 0xB9] => "peachpuff", 271 [0xCD, 0x85, 0x3F] => "peru", 272 [0xFF, 0xC0, 0xCB] => "pink", 273 [0xDD, 0xA0, 0xDD] => "plum", 274 [0xB0, 0xE0, 0xE6] => "powderblue", 275 [0x80, 0x00, 0x80] => "purple", 276 [0x66, 0x33, 0x99] => "rebeccapurple", 277 [0xFF, 0x00, 0x00] => "red", 278 [0xBC, 0x8F, 0x8F] => "rosybrown", 279 [0x41, 0x69, 0xE1] => "royalblue", 280 [0x8B, 0x45, 0x13] => "saddlebrown", 281 [0xFA, 0x80, 0x72] => "salmon", 282 [0xF4, 0xA4, 0x60] => "sandybrown", 283 [0x2E, 0x8B, 0x57] => "seagreen", 284 [0xFF, 0xF5, 0xEE] => "seashell", 285 [0xA0, 0x52, 0x2D] => "sienna", 286 [0xC0, 0xC0, 0xC0] => "silver", 287 [0x87, 0xCE, 0xEB] => "skyblue", 288 [0x6A, 0x5A, 0xCD] => "slateblue", 289 [0x70, 0x80, 0x90] => "slategray", 290 [0xFF, 0xFA, 0xFA] => "snow", 291 [0x00, 0xFF, 0x7F] => "springgreen", 292 [0x46, 0x82, 0xB4] => "steelblue", 293 [0xD2, 0xB4, 0x8C] => "tan", 294 [0x00, 0x80, 0x80] => "teal", 295 [0xD8, 0xBF, 0xD8] => "thistle", 296 [0xFF, 0x63, 0x47] => "tomato", 297 [0x40, 0xE0, 0xD0] => "turquoise", 298 [0xEE, 0x82, 0xEE] => "violet", 299 [0xF5, 0xDE, 0xB3] => "wheat", 300 [0xFF, 0xFF, 0xFF] => "white", 301 [0xF5, 0xF5, 0xF5] => "whitesmoke", 302 [0xFF, 0xFF, 0x00] => "yellow", 303 [0x9A, 0xCD, 0x32] => "yellowgreen", 304 }, 305 }; 306