|
5 | 5 | use std::ascii::StrAsciiExt;
|
6 | 6 |
|
7 | 7 | use ast::*;
|
8 |
| -use self::color_data::{COLOR_KEYWORDS, COLOR_VALUES}; |
9 |
| - |
10 |
| -mod color_data; |
11 | 8 |
|
12 | 9 |
|
13 | 10 | #[deriving(Clone, Eq)]
|
@@ -43,11 +40,161 @@ impl Color {
|
43 | 40 | #[inline]
|
44 | 41 | fn parse_color_keyword(value: &str) -> Option<Color> {
|
45 | 42 | let lower_value = value.to_ascii_lower();
|
46 |
| - match COLOR_KEYWORDS.bsearch_elem(&lower_value.as_slice()) { |
47 |
| - Some(index) => Some(RGBA(COLOR_VALUES[index])), |
48 |
| - None => if "currentcolor" == lower_value { Some(CurrentColor) } |
49 |
| - else { None } |
50 |
| - } |
| 43 | + let (r, g, b) = match lower_value.as_slice() { |
| 44 | + "black" => (0., 0., 0.), |
| 45 | + "silver" => (192., 192., 192.), |
| 46 | + "gray" => (128., 128., 128.), |
| 47 | + "white" => (255., 255., 255.), |
| 48 | + "maroon" => (128., 0., 0.), |
| 49 | + "red" => (255., 0., 0.), |
| 50 | + "purple" => (128., 0., 128.), |
| 51 | + "fuchsia" => (255., 0., 255.), |
| 52 | + "green" => (0., 128., 0.), |
| 53 | + "lime" => (0., 255., 0.), |
| 54 | + "olive" => (128., 128., 0.), |
| 55 | + "yellow" => (255., 255., 0.), |
| 56 | + "navy" => (0., 0., 128.), |
| 57 | + "blue" => (0., 0., 255.), |
| 58 | + "teal" => (0., 128., 128.), |
| 59 | + "aqua" => (0., 255., 255.), |
| 60 | + |
| 61 | + "aliceblue" => (240., 248., 255.), |
| 62 | + "antiquewhite" => (250., 235., 215.), |
| 63 | + "aquamarine" => (127., 255., 212.), |
| 64 | + "azure" => (240., 255., 255.), |
| 65 | + "beige" => (245., 245., 220.), |
| 66 | + "bisque" => (255., 228., 196.), |
| 67 | + "blanchedalmond" => (255., 235., 205.), |
| 68 | + "blueviolet" => (138., 43., 226.), |
| 69 | + "brown" => (165., 42., 42.), |
| 70 | + "burlywood" => (222., 184., 135.), |
| 71 | + "cadetblue" => (95., 158., 160.), |
| 72 | + "chartreuse" => (127., 255., 0.), |
| 73 | + "chocolate" => (210., 105., 30.), |
| 74 | + "coral" => (255., 127., 80.), |
| 75 | + "cornflowerblue" => (100., 149., 237.), |
| 76 | + "cornsilk" => (255., 248., 220.), |
| 77 | + "crimson" => (220., 20., 60.), |
| 78 | + "cyan" => (0., 255., 255.), |
| 79 | + "darkblue" => (0., 0., 139.), |
| 80 | + "darkcyan" => (0., 139., 139.), |
| 81 | + "darkgoldenrod" => (184., 134., 11.), |
| 82 | + "darkgray" => (169., 169., 169.), |
| 83 | + "darkgreen" => (0., 100., 0.), |
| 84 | + "darkgrey" => (169., 169., 169.), |
| 85 | + "darkkhaki" => (189., 183., 107.), |
| 86 | + "darkmagenta" => (139., 0., 139.), |
| 87 | + "darkolivegreen" => (85., 107., 47.), |
| 88 | + "darkorange" => (255., 140., 0.), |
| 89 | + "darkorchid" => (153., 50., 204.), |
| 90 | + "darkred" => (139., 0., 0.), |
| 91 | + "darksalmon" => (233., 150., 122.), |
| 92 | + "darkseagreen" => (143., 188., 143.), |
| 93 | + "darkslateblue" => (72., 61., 139.), |
| 94 | + "darkslategray" => (47., 79., 79.), |
| 95 | + "darkslategrey" => (47., 79., 79.), |
| 96 | + "darkturquoise" => (0., 206., 209.), |
| 97 | + "darkviolet" => (148., 0., 211.), |
| 98 | + "deeppink" => (255., 20., 147.), |
| 99 | + "deepskyblue" => (0., 191., 255.), |
| 100 | + "dimgray" => (105., 105., 105.), |
| 101 | + "dimgrey" => (105., 105., 105.), |
| 102 | + "dodgerblue" => (30., 144., 255.), |
| 103 | + "firebrick" => (178., 34., 34.), |
| 104 | + "floralwhite" => (255., 250., 240.), |
| 105 | + "forestgreen" => (34., 139., 34.), |
| 106 | + "gainsboro" => (220., 220., 220.), |
| 107 | + "ghostwhite" => (248., 248., 255.), |
| 108 | + "gold" => (255., 215., 0.), |
| 109 | + "goldenrod" => (218., 165., 32.), |
| 110 | + "greenyellow" => (173., 255., 47.), |
| 111 | + "grey" => (128., 128., 128.), |
| 112 | + "honeydew" => (240., 255., 240.), |
| 113 | + "hotpink" => (255., 105., 180.), |
| 114 | + "indianred" => (205., 92., 92.), |
| 115 | + "indigo" => (75., 0., 130.), |
| 116 | + "ivory" => (255., 255., 240.), |
| 117 | + "khaki" => (240., 230., 140.), |
| 118 | + "lavender" => (230., 230., 250.), |
| 119 | + "lavenderblush" => (255., 240., 245.), |
| 120 | + "lawngreen" => (124., 252., 0.), |
| 121 | + "lemonchiffon" => (255., 250., 205.), |
| 122 | + "lightblue" => (173., 216., 230.), |
| 123 | + "lightcoral" => (240., 128., 128.), |
| 124 | + "lightcyan" => (224., 255., 255.), |
| 125 | + "lightgoldenrodyellow" => (250., 250., 210.), |
| 126 | + "lightgray" => (211., 211., 211.), |
| 127 | + "lightgreen" => (144., 238., 144.), |
| 128 | + "lightgrey" => (211., 211., 211.), |
| 129 | + "lightpink" => (255., 182., 193.), |
| 130 | + "lightsalmon" => (255., 160., 122.), |
| 131 | + "lightseagreen" => (32., 178., 170.), |
| 132 | + "lightskyblue" => (135., 206., 250.), |
| 133 | + "lightslategray" => (119., 136., 153.), |
| 134 | + "lightslategrey" => (119., 136., 153.), |
| 135 | + "lightsteelblue" => (176., 196., 222.), |
| 136 | + "lightyellow" => (255., 255., 224.), |
| 137 | + "limegreen" => (50., 205., 50.), |
| 138 | + "linen" => (250., 240., 230.), |
| 139 | + "magenta" => (255., 0., 255.), |
| 140 | + "mediumaquamarine" => (102., 205., 170.), |
| 141 | + "mediumblue" => (0., 0., 205.), |
| 142 | + "mediumorchid" => (186., 85., 211.), |
| 143 | + "mediumpurple" => (147., 112., 219.), |
| 144 | + "mediumseagreen" => (60., 179., 113.), |
| 145 | + "mediumslateblue" => (123., 104., 238.), |
| 146 | + "mediumspringgreen" => (0., 250., 154.), |
| 147 | + "mediumturquoise" => (72., 209., 204.), |
| 148 | + "mediumvioletred" => (199., 21., 133.), |
| 149 | + "midnightblue" => (25., 25., 112.), |
| 150 | + "mintcream" => (245., 255., 250.), |
| 151 | + "mistyrose" => (255., 228., 225.), |
| 152 | + "moccasin" => (255., 228., 181.), |
| 153 | + "navajowhite" => (255., 222., 173.), |
| 154 | + "oldlace" => (253., 245., 230.), |
| 155 | + "olivedrab" => (107., 142., 35.), |
| 156 | + "orange" => (255., 165., 0.), |
| 157 | + "orangered" => (255., 69., 0.), |
| 158 | + "orchid" => (218., 112., 214.), |
| 159 | + "palegoldenrod" => (238., 232., 170.), |
| 160 | + "palegreen" => (152., 251., 152.), |
| 161 | + "paleturquoise" => (175., 238., 238.), |
| 162 | + "palevioletred" => (219., 112., 147.), |
| 163 | + "papayawhip" => (255., 239., 213.), |
| 164 | + "peachpuff" => (255., 218., 185.), |
| 165 | + "peru" => (205., 133., 63.), |
| 166 | + "pink" => (255., 192., 203.), |
| 167 | + "plum" => (221., 160., 221.), |
| 168 | + "powderblue" => (176., 224., 230.), |
| 169 | + "rosybrown" => (188., 143., 143.), |
| 170 | + "royalblue" => (65., 105., 225.), |
| 171 | + "saddlebrown" => (139., 69., 19.), |
| 172 | + "salmon" => (250., 128., 114.), |
| 173 | + "sandybrown" => (244., 164., 96.), |
| 174 | + "seagreen" => (46., 139., 87.), |
| 175 | + "seashell" => (255., 245., 238.), |
| 176 | + "sienna" => (160., 82., 45.), |
| 177 | + "skyblue" => (135., 206., 235.), |
| 178 | + "slateblue" => (106., 90., 205.), |
| 179 | + "slategray" => (112., 128., 144.), |
| 180 | + "slategrey" => (112., 128., 144.), |
| 181 | + "snow" => (255., 250., 250.), |
| 182 | + "springgreen" => (0., 255., 127.), |
| 183 | + "steelblue" => (70., 130., 180.), |
| 184 | + "tan" => (210., 180., 140.), |
| 185 | + "thistle" => (216., 191., 216.), |
| 186 | + "tomato" => (255., 99., 71.), |
| 187 | + "turquoise" => (64., 224., 208.), |
| 188 | + "violet" => (238., 130., 238.), |
| 189 | + "wheat" => (245., 222., 179.), |
| 190 | + "whitesmoke" => (245., 245., 245.), |
| 191 | + "yellowgreen" => (154., 205., 50.), |
| 192 | + |
| 193 | + "transparent" => return Some(RGBA(RGBA { red: 0., green: 0., blue: 0., alpha: 0. })), |
| 194 | + "currentcolor" => return Some(CurrentColor), |
| 195 | + _ => return None, |
| 196 | + }; |
| 197 | + Some(RGBA(RGBA { red: r / 255., green: g / 255., blue: b / 255., alpha: 1. })) |
51 | 198 | }
|
52 | 199 |
|
53 | 200 |
|
|
0 commit comments