| 1 | // Copyright 2021 the SVG Types Authors |
| 2 | // SPDX-License-Identifier: Apache-2.0 OR MIT |
| 3 | |
| 4 | // This file is autogenerated. Do not edit it! |
| 5 | |
| 6 | use crate::Color; |
| 7 | |
| 8 | static COLORS: Map<Color> = Map { |
| 9 | key: 3213172566270843353, |
| 10 | disps: &[ |
| 11 | (0, 37), |
| 12 | (0, 74), |
| 13 | (1, 0), |
| 14 | (0, 22), |
| 15 | (0, 92), |
| 16 | (2, 125), |
| 17 | (0, 73), |
| 18 | (0, 8), |
| 19 | (0, 2), |
| 20 | (0, 4), |
| 21 | (26, 16), |
| 22 | (67, 121), |
| 23 | (0, 3), |
| 24 | (0, 4), |
| 25 | (0, 60), |
| 26 | (0, 39), |
| 27 | (0, 130), |
| 28 | (0, 15), |
| 29 | (3, 38), |
| 30 | (0, 136), |
| 31 | (7, 75), |
| 32 | (6, 141), |
| 33 | (7, 67), |
| 34 | (0, 14), |
| 35 | (0, 128), |
| 36 | (27, 111), |
| 37 | (1, 31), |
| 38 | (0, 12), |
| 39 | (2, 49), |
| 40 | (0, 2), |
| 41 | ], |
| 42 | entries: &[ |
| 43 | ("lightgrey" , Color { red: 211, green: 211, blue: 211, alpha: 255 }), |
| 44 | ("lavenderblush" , Color { red: 255, green: 240, blue: 245, alpha: 255 }), |
| 45 | ("deeppink" , Color { red: 255, green: 20, blue: 147, alpha: 255 }), |
| 46 | ("seashell" , Color { red: 255, green: 245, blue: 238, alpha: 255 }), |
| 47 | ("lightsalmon" , Color { red: 255, green: 160, blue: 122, alpha: 255 }), |
| 48 | ("green" , Color { red: 0, green: 128, blue: 0, alpha: 255 }), |
| 49 | ("lightgreen" , Color { red: 144, green: 238, blue: 144, alpha: 255 }), |
| 50 | ("black" , Color { red: 0, green: 0, blue: 0, alpha: 255 }), |
| 51 | ("deepskyblue" , Color { red: 0, green: 191, blue: 255, alpha: 255 }), |
| 52 | ("mistyrose" , Color { red: 255, green: 228, blue: 225, alpha: 255 }), |
| 53 | ("silver" , Color { red: 192, green: 192, blue: 192, alpha: 255 }), |
| 54 | ("dimgray" , Color { red: 105, green: 105, blue: 105, alpha: 255 }), |
| 55 | ("navajowhite" , Color { red: 255, green: 222, blue: 173, alpha: 255 }), |
| 56 | ("royalblue" , Color { red: 65, green: 105, blue: 225, alpha: 255 }), |
| 57 | ("peru" , Color { red: 205, green: 133, blue: 63, alpha: 255 }), |
| 58 | ("darkgrey" , Color { red: 169, green: 169, blue: 169, alpha: 255 }), |
| 59 | ("steelblue" , Color { red: 70, green: 130, blue: 180, alpha: 255 }), |
| 60 | ("teal" , Color { red: 0, green: 128, blue: 128, alpha: 255 }), |
| 61 | ("orangered" , Color { red: 255, green: 69, blue: 0, alpha: 255 }), |
| 62 | ("mediumslateblue" , Color { red: 123, green: 104, blue: 238, alpha: 255 }), |
| 63 | ("blueviolet" , Color { red: 138, green: 43, blue: 226, alpha: 255 }), |
| 64 | ("cornflowerblue" , Color { red: 100, green: 149, blue: 237, alpha: 255 }), |
| 65 | ("cyan" , Color { red: 0, green: 255, blue: 255, alpha: 255 }), |
| 66 | ("beige" , Color { red: 245, green: 245, blue: 220, alpha: 255 }), |
| 67 | ("goldenrod" , Color { red: 218, green: 165, blue: 32, alpha: 255 }), |
| 68 | ("rosybrown" , Color { red: 188, green: 143, blue: 143, alpha: 255 }), |
| 69 | ("yellow" , Color { red: 255, green: 255, blue: 0, alpha: 255 }), |
| 70 | ("blue" , Color { red: 0, green: 0, blue: 255, alpha: 255 }), |
| 71 | ("darkblue" , Color { red: 0, green: 0, blue: 139, alpha: 255 }), |
| 72 | ("aliceblue" , Color { red: 240, green: 248, blue: 255, alpha: 255 }), |
| 73 | ("white" , Color { red: 255, green: 255, blue: 255, alpha: 255 }), |
| 74 | ("mediumblue" , Color { red: 0, green: 0, blue: 205, alpha: 255 }), |
| 75 | ("dodgerblue" , Color { red: 30, green: 144, blue: 255, alpha: 255 }), |
| 76 | ("limegreen" , Color { red: 50, green: 205, blue: 50, alpha: 255 }), |
| 77 | ("purple" , Color { red: 128, green: 0, blue: 128, alpha: 255 }), |
| 78 | ("lightsteelblue" , Color { red: 176, green: 196, blue: 222, alpha: 255 }), |
| 79 | ("lightslategray" , Color { red: 119, green: 136, blue: 153, alpha: 255 }), |
| 80 | ("seagreen" , Color { red: 46, green: 139, blue: 87, alpha: 255 }), |
| 81 | ("mediumvioletred" , Color { red: 199, green: 21, blue: 133, alpha: 255 }), |
| 82 | ("slategrey" , Color { red: 112, green: 128, blue: 144, alpha: 255 }), |
| 83 | ("darkslategrey" , Color { red: 47, green: 79, blue: 79, alpha: 255 }), |
| 84 | ("turquoise" , Color { red: 64, green: 224, blue: 208, alpha: 255 }), |
| 85 | ("paleturquoise" , Color { red: 175, green: 238, blue: 238, alpha: 255 }), |
| 86 | ("lightgoldenrodyellow" , Color { red: 250, green: 250, blue: 210, alpha: 255 }), |
| 87 | ("magenta" , Color { red: 255, green: 0, blue: 255, alpha: 255 }), |
| 88 | ("darkseagreen" , Color { red: 143, green: 188, blue: 143, alpha: 255 }), |
| 89 | ("lightcyan" , Color { red: 224, green: 255, blue: 255, alpha: 255 }), |
| 90 | ("lightcoral" , Color { red: 240, green: 128, blue: 128, alpha: 255 }), |
| 91 | ("mediumseagreen" , Color { red: 60, green: 179, blue: 113, alpha: 255 }), |
| 92 | ("palegoldenrod" , Color { red: 238, green: 232, blue: 170, alpha: 255 }), |
| 93 | ("palegreen" , Color { red: 152, green: 251, blue: 152, alpha: 255 }), |
| 94 | ("darkslateblue" , Color { red: 72, green: 61, blue: 139, alpha: 255 }), |
| 95 | ("moccasin" , Color { red: 255, green: 228, blue: 181, alpha: 255 }), |
| 96 | ("forestgreen" , Color { red: 34, green: 139, blue: 34, alpha: 255 }), |
| 97 | ("darkkhaki" , Color { red: 189, green: 183, blue: 107, alpha: 255 }), |
| 98 | ("chartreuse" , Color { red: 127, green: 255, blue: 0, alpha: 255 }), |
| 99 | ("floralwhite" , Color { red: 255, green: 250, blue: 240, alpha: 255 }), |
| 100 | ("snow" , Color { red: 255, green: 250, blue: 250, alpha: 255 }), |
| 101 | ("fuchsia" , Color { red: 255, green: 0, blue: 255, alpha: 255 }), |
| 102 | ("orchid" , Color { red: 218, green: 112, blue: 214, alpha: 255 }), |
| 103 | ("darkorchid" , Color { red: 153, green: 50, blue: 204, alpha: 255 }), |
| 104 | ("darkred" , Color { red: 139, green: 0, blue: 0, alpha: 255 }), |
| 105 | ("darksalmon" , Color { red: 233, green: 150, blue: 122, alpha: 255 }), |
| 106 | ("crimson" , Color { red: 220, green: 20, blue: 60, alpha: 255 }), |
| 107 | ("lime" , Color { red: 0, green: 255, blue: 0, alpha: 255 }), |
| 108 | ("palevioletred" , Color { red: 219, green: 112, blue: 147, alpha: 255 }), |
| 109 | ("lightseagreen" , Color { red: 32, green: 178, blue: 170, alpha: 255 }), |
| 110 | ("ivory" , Color { red: 255, green: 255, blue: 240, alpha: 255 }), |
| 111 | ("powderblue" , Color { red: 176, green: 224, blue: 230, alpha: 255 }), |
| 112 | ("aquamarine" , Color { red: 127, green: 255, blue: 212, alpha: 255 }), |
| 113 | ("darkturquoise" , Color { red: 0, green: 206, blue: 209, alpha: 255 }), |
| 114 | ("lavender" , Color { red: 230, green: 230, blue: 250, alpha: 255 }), |
| 115 | ("azure" , Color { red: 240, green: 255, blue: 255, alpha: 255 }), |
| 116 | ("mediumturquoise" , Color { red: 72, green: 209, blue: 204, alpha: 255 }), |
| 117 | ("lightgray" , Color { red: 211, green: 211, blue: 211, alpha: 255 }), |
| 118 | ("transparent" , Color { red: 0, green: 0, blue: 0, alpha: 0 }), |
| 119 | ("gainsboro" , Color { red: 220, green: 220, blue: 220, alpha: 255 }), |
| 120 | ("olivedrab" , Color { red: 107, green: 142, blue: 35, alpha: 255 }), |
| 121 | ("papayawhip" , Color { red: 255, green: 239, blue: 213, alpha: 255 }), |
| 122 | ("tomato" , Color { red: 255, green: 99, blue: 71, alpha: 255 }), |
| 123 | ("midnightblue" , Color { red: 25, green: 25, blue: 112, alpha: 255 }), |
| 124 | ("pink" , Color { red: 255, green: 192, blue: 203, alpha: 255 }), |
| 125 | ("yellowgreen" , Color { red: 154, green: 205, blue: 50, alpha: 255 }), |
| 126 | ("slategray" , Color { red: 112, green: 128, blue: 144, alpha: 255 }), |
| 127 | ("red" , Color { red: 255, green: 0, blue: 0, alpha: 255 }), |
| 128 | ("indigo" , Color { red: 75, green: 0, blue: 130, alpha: 255 }), |
| 129 | ("orange" , Color { red: 255, green: 165, blue: 0, alpha: 255 }), |
| 130 | ("grey" , Color { red: 128, green: 128, blue: 128, alpha: 255 }), |
| 131 | ("wheat" , Color { red: 245, green: 222, blue: 179, alpha: 255 }), |
| 132 | ("darkgoldenrod" , Color { red: 184, green: 134, blue: 11, alpha: 255 }), |
| 133 | ("lawngreen" , Color { red: 124, green: 252, blue: 0, alpha: 255 }), |
| 134 | ("lightslategrey" , Color { red: 119, green: 136, blue: 153, alpha: 255 }), |
| 135 | ("burlywood" , Color { red: 222, green: 184, blue: 135, alpha: 255 }), |
| 136 | ("aqua" , Color { red: 0, green: 255, blue: 255, alpha: 255 }), |
| 137 | ("saddlebrown" , Color { red: 139, green: 69, blue: 19, alpha: 255 }), |
| 138 | ("oldlace" , Color { red: 253, green: 245, blue: 230, alpha: 255 }), |
| 139 | ("lightskyblue" , Color { red: 135, green: 206, blue: 250, alpha: 255 }), |
| 140 | ("violet" , Color { red: 238, green: 130, blue: 238, alpha: 255 }), |
| 141 | ("dimgrey" , Color { red: 105, green: 105, blue: 105, alpha: 255 }), |
| 142 | ("darkorange" , Color { red: 255, green: 140, blue: 0, alpha: 255 }), |
| 143 | ("lightblue" , Color { red: 173, green: 216, blue: 230, alpha: 255 }), |
| 144 | ("khaki" , Color { red: 240, green: 230, blue: 140, alpha: 255 }), |
| 145 | ("coral" , Color { red: 255, green: 127, blue: 80, alpha: 255 }), |
| 146 | ("brown" , Color { red: 165, green: 42, blue: 42, alpha: 255 }), |
| 147 | ("mediumpurple" , Color { red: 147, green: 112, blue: 219, alpha: 255 }), |
| 148 | ("linen" , Color { red: 250, green: 240, blue: 230, alpha: 255 }), |
| 149 | ("mediumorchid" , Color { red: 186, green: 85, blue: 211, alpha: 255 }), |
| 150 | ("indianred" , Color { red: 205, green: 92, blue: 92, alpha: 255 }), |
| 151 | ("maroon" , Color { red: 128, green: 0, blue: 0, alpha: 255 }), |
| 152 | ("firebrick" , Color { red: 178, green: 34, blue: 34, alpha: 255 }), |
| 153 | ("skyblue" , Color { red: 135, green: 206, blue: 235, alpha: 255 }), |
| 154 | ("darkgray" , Color { red: 169, green: 169, blue: 169, alpha: 255 }), |
| 155 | ("hotpink" , Color { red: 255, green: 105, blue: 180, alpha: 255 }), |
| 156 | ("olive" , Color { red: 128, green: 128, blue: 0, alpha: 255 }), |
| 157 | ("sienna" , Color { red: 160, green: 82, blue: 45, alpha: 255 }), |
| 158 | ("cadetblue" , Color { red: 95, green: 158, blue: 160, alpha: 255 }), |
| 159 | ("darkslategray" , Color { red: 47, green: 79, blue: 79, alpha: 255 }), |
| 160 | ("slateblue" , Color { red: 106, green: 90, blue: 205, alpha: 255 }), |
| 161 | ("plum" , Color { red: 221, green: 160, blue: 221, alpha: 255 }), |
| 162 | ("mediumspringgreen" , Color { red: 0, green: 250, blue: 154, alpha: 255 }), |
| 163 | ("thistle" , Color { red: 216, green: 191, blue: 216, alpha: 255 }), |
| 164 | ("mintcream" , Color { red: 245, green: 255, blue: 250, alpha: 255 }), |
| 165 | ("darkmagenta" , Color { red: 139, green: 0, blue: 139, alpha: 255 }), |
| 166 | ("lemonchiffon" , Color { red: 255, green: 250, blue: 205, alpha: 255 }), |
| 167 | ("bisque" , Color { red: 255, green: 228, blue: 196, alpha: 255 }), |
| 168 | ("antiquewhite" , Color { red: 250, green: 235, blue: 215, alpha: 255 }), |
| 169 | ("darkgreen" , Color { red: 0, green: 100, blue: 0, alpha: 255 }), |
| 170 | ("whitesmoke" , Color { red: 245, green: 245, blue: 245, alpha: 255 }), |
| 171 | ("lightpink" , Color { red: 255, green: 182, blue: 193, alpha: 255 }), |
| 172 | ("darkcyan" , Color { red: 0, green: 139, blue: 139, alpha: 255 }), |
| 173 | ("tan" , Color { red: 210, green: 180, blue: 140, alpha: 255 }), |
| 174 | ("blanchedalmond" , Color { red: 255, green: 235, blue: 205, alpha: 255 }), |
| 175 | ("honeydew" , Color { red: 240, green: 255, blue: 240, alpha: 255 }), |
| 176 | ("salmon" , Color { red: 250, green: 128, blue: 114, alpha: 255 }), |
| 177 | ("lightyellow" , Color { red: 255, green: 255, blue: 224, alpha: 255 }), |
| 178 | ("springgreen" , Color { red: 0, green: 255, blue: 127, alpha: 255 }), |
| 179 | ("cornsilk" , Color { red: 255, green: 248, blue: 220, alpha: 255 }), |
| 180 | ("sandybrown" , Color { red: 244, green: 164, blue: 96, alpha: 255 }), |
| 181 | ("mediumaquamarine" , Color { red: 102, green: 205, blue: 170, alpha: 255 }), |
| 182 | ("darkviolet" , Color { red: 148, green: 0, blue: 211, alpha: 255 }), |
| 183 | ("darkolivegreen" , Color { red: 85, green: 107, blue: 47, alpha: 255 }), |
| 184 | ("gold" , Color { red: 255, green: 215, blue: 0, alpha: 255 }), |
| 185 | ("peachpuff" , Color { red: 255, green: 218, blue: 185, alpha: 255 }), |
| 186 | ("greenyellow" , Color { red: 173, green: 255, blue: 47, alpha: 255 }), |
| 187 | ("gray" , Color { red: 128, green: 128, blue: 128, alpha: 255 }), |
| 188 | ("navy" , Color { red: 0, green: 0, blue: 128, alpha: 255 }), |
| 189 | ("ghostwhite" , Color { red: 248, green: 248, blue: 255, alpha: 255 }), |
| 190 | ("chocolate" , Color { red: 210, green: 105, blue: 30, alpha: 255 }), |
| 191 | ], |
| 192 | }; |
| 193 | |
| 194 | pub fn from_str(text: &str) -> Option<Color> { |
| 195 | COLORS.get(key:text).cloned() |
| 196 | } |
| 197 | |
| 198 | // A stripped down `phf` crate fork. |
| 199 | // |
| 200 | // https://github.com/sfackler/rust-phf |
| 201 | |
| 202 | use std::hash::Hasher; |
| 203 | |
| 204 | pub struct Map<V: 'static> { |
| 205 | pub key: u64, |
| 206 | pub disps: &'static [(u32, u32)], |
| 207 | pub entries: &'static[(&'static str, V)], |
| 208 | } |
| 209 | |
| 210 | impl<V> Map<V> { |
| 211 | pub fn get(&self, key: &str) -> Option<&V> { |
| 212 | let hash: u64 = hash(x:key, self.key); |
| 213 | let index: u32 = get_index(hash, self.disps, self.entries.len()); |
| 214 | let entry: &(&'static str, V) = &self.entries[index as usize]; |
| 215 | if entry.0 == key { |
| 216 | Some(&entry.1) |
| 217 | } else { |
| 218 | None |
| 219 | } |
| 220 | } |
| 221 | } |
| 222 | |
| 223 | #[inline ] |
| 224 | fn hash(x: &str, key: u64) -> u64 { |
| 225 | let mut hasher: SipHasher13 = siphasher::sip::SipHasher13::new_with_keys(key0:0, key1:key); |
| 226 | hasher.write(x.as_bytes()); |
| 227 | hasher.finish() |
| 228 | } |
| 229 | |
| 230 | #[inline ] |
| 231 | fn get_index(hash: u64, disps: &[(u32, u32)], len: usize) -> u32 { |
| 232 | let (g: u32, f1: u32, f2: u32) = split(hash); |
| 233 | let (d1: u32, d2: u32) = disps[(g % (disps.len() as u32)) as usize]; |
| 234 | displace(f1, f2, d1, d2) % (len as u32) |
| 235 | } |
| 236 | |
| 237 | #[inline ] |
| 238 | fn split(hash: u64) -> (u32, u32, u32) { |
| 239 | const BITS: u32 = 21; |
| 240 | const MASK: u64 = (1 << BITS) - 1; |
| 241 | |
| 242 | ((hash & MASK) as u32, |
| 243 | ((hash >> BITS) & MASK) as u32, |
| 244 | ((hash >> (2 * BITS)) & MASK) as u32) |
| 245 | } |
| 246 | |
| 247 | #[inline ] |
| 248 | fn displace(f1: u32, f2: u32, d1: u32, d2: u32) -> u32 { |
| 249 | d2 + f1 * d1 + f2 |
| 250 | } |
| 251 | |