7 {_t(
"transparent"),_t(
"rgba(0, 0, 0, 0)")},
8 {_t(
"AliceBlue"),_t(
"#F0F8FF")},
9 {_t(
"AntiqueWhite"),_t(
"#FAEBD7")},
10 {_t(
"Aqua"),_t(
"#00FFFF")},
11 {_t(
"Aquamarine"),_t(
"#7FFFD4")},
12 {_t(
"Azure"),_t(
"#F0FFFF")},
13 {_t(
"Beige"),_t(
"#F5F5DC")},
14 {_t(
"Bisque"),_t(
"#FFE4C4")},
15 {_t(
"Black"),_t(
"#000000")},
16 {_t(
"BlanchedAlmond"),_t(
"#FFEBCD")},
17 {_t(
"Blue"),_t(
"#0000FF")},
18 {_t(
"BlueViolet"),_t(
"#8A2BE2")},
19 {_t(
"Brown"),_t(
"#A52A2A")},
20 {_t(
"BurlyWood"),_t(
"#DEB887")},
21 {_t(
"CadetBlue"),_t(
"#5F9EA0")},
22 {_t(
"Chartreuse"),_t(
"#7FFF00")},
23 {_t(
"Chocolate"),_t(
"#D2691E")},
24 {_t(
"Coral"),_t(
"#FF7F50")},
25 {_t(
"CornflowerBlue"),_t(
"#6495ED")},
26 {_t(
"Cornsilk"),_t(
"#FFF8DC")},
27 {_t(
"Crimson"),_t(
"#DC143C")},
28 {_t(
"Cyan"),_t(
"#00FFFF")},
29 {_t(
"DarkBlue"),_t(
"#00008B")},
30 {_t(
"DarkCyan"),_t(
"#008B8B")},
31 {_t(
"DarkGoldenRod"),_t(
"#B8860B")},
32 {_t(
"DarkGray"),_t(
"#A9A9A9")},
33 {_t(
"DarkGrey"),_t(
"#A9A9A9")},
34 {_t(
"DarkGreen"),_t(
"#006400")},
35 {_t(
"DarkKhaki"),_t(
"#BDB76B")},
36 {_t(
"DarkMagenta"),_t(
"#8B008B")},
37 {_t(
"DarkOliveGreen"),_t(
"#556B2F")},
38 {_t(
"Darkorange"),_t(
"#FF8C00")},
39 {_t(
"DarkOrchid"),_t(
"#9932CC")},
40 {_t(
"DarkRed"),_t(
"#8B0000")},
41 {_t(
"DarkSalmon"),_t(
"#E9967A")},
42 {_t(
"DarkSeaGreen"),_t(
"#8FBC8F")},
43 {_t(
"DarkSlateBlue"),_t(
"#483D8B")},
44 {_t(
"DarkSlateGray"),_t(
"#2F4F4F")},
45 {_t(
"DarkSlateGrey"),_t(
"#2F4F4F")},
46 {_t(
"DarkTurquoise"),_t(
"#00CED1")},
47 {_t(
"DarkViolet"),_t(
"#9400D3")},
48 {_t(
"DeepPink"),_t(
"#FF1493")},
49 {_t(
"DeepSkyBlue"),_t(
"#00BFFF")},
50 {_t(
"DimGray"),_t(
"#696969")},
51 {_t(
"DimGrey"),_t(
"#696969")},
52 {_t(
"DodgerBlue"),_t(
"#1E90FF")},
53 {_t(
"FireBrick"),_t(
"#B22222")},
54 {_t(
"FloralWhite"),_t(
"#FFFAF0")},
55 {_t(
"ForestGreen"),_t(
"#228B22")},
56 {_t(
"Fuchsia"),_t(
"#FF00FF")},
57 {_t(
"Gainsboro"),_t(
"#DCDCDC")},
58 {_t(
"GhostWhite"),_t(
"#F8F8FF")},
59 {_t(
"Gold"),_t(
"#FFD700")},
60 {_t(
"GoldenRod"),_t(
"#DAA520")},
61 {_t(
"Gray"),_t(
"#808080")},
62 {_t(
"Grey"),_t(
"#808080")},
63 {_t(
"Green"),_t(
"#008000")},
64 {_t(
"GreenYellow"),_t(
"#ADFF2F")},
65 {_t(
"HoneyDew"),_t(
"#F0FFF0")},
66 {_t(
"HotPink"),_t(
"#FF69B4")},
67 {_t(
"Ivory"),_t(
"#FFFFF0")},
68 {_t(
"Khaki"),_t(
"#F0E68C")},
69 {_t(
"Lavender"),_t(
"#E6E6FA")},
70 {_t(
"LavenderBlush"),_t(
"#FFF0F5")},
71 {_t(
"LawnGreen"),_t(
"#7CFC00")},
72 {_t(
"LemonChiffon"),_t(
"#FFFACD")},
73 {_t(
"LightBlue"),_t(
"#ADD8E6")},
74 {_t(
"LightCoral"),_t(
"#F08080")},
75 {_t(
"LightCyan"),_t(
"#E0FFFF")},
76 {_t(
"LightGoldenRodYellow"),_t(
"#FAFAD2")},
77 {_t(
"LightGray"),_t(
"#D3D3D3")},
78 {_t(
"LightGrey"),_t(
"#D3D3D3")},
79 {_t(
"LightGreen"),_t(
"#90EE90")},
80 {_t(
"LightPink"),_t(
"#FFB6C1")},
81 {_t(
"LightSalmon"),_t(
"#FFA07A")},
82 {_t(
"LightSeaGreen"),_t(
"#20B2AA")},
83 {_t(
"LightSkyBlue"),_t(
"#87CEFA")},
84 {_t(
"LightSlateGray"),_t(
"#778899")},
85 {_t(
"LightSlateGrey"),_t(
"#778899")},
86 {_t(
"LightSteelBlue"),_t(
"#B0C4DE")},
87 {_t(
"LightYellow"),_t(
"#FFFFE0")},
88 {_t(
"Lime"),_t(
"#00FF00")},
89 {_t(
"LimeGreen"),_t(
"#32CD32")},
90 {_t(
"Linen"),_t(
"#FAF0E6")},
91 {_t(
"Magenta"),_t(
"#FF00FF")},
92 {_t(
"Maroon"),_t(
"#800000")},
93 {_t(
"MediumAquaMarine"),_t(
"#66CDAA")},
94 {_t(
"MediumBlue"),_t(
"#0000CD")},
95 {_t(
"MediumOrchid"),_t(
"#BA55D3")},
96 {_t(
"MediumPurple"),_t(
"#9370D8")},
97 {_t(
"MediumSeaGreen"),_t(
"#3CB371")},
98 {_t(
"MediumSlateBlue"),_t(
"#7B68EE")},
99 {_t(
"MediumSpringGreen"),_t(
"#00FA9A")},
100 {_t(
"MediumTurquoise"),_t(
"#48D1CC")},
101 {_t(
"MediumVioletRed"),_t(
"#C71585")},
102 {_t(
"MidnightBlue"),_t(
"#191970")},
103 {_t(
"MintCream"),_t(
"#F5FFFA")},
104 {_t(
"MistyRose"),_t(
"#FFE4E1")},
105 {_t(
"Moccasin"),_t(
"#FFE4B5")},
106 {_t(
"NavajoWhite"),_t(
"#FFDEAD")},
107 {_t(
"Navy"),_t(
"#000080")},
108 {_t(
"OldLace"),_t(
"#FDF5E6")},
109 {_t(
"Olive"),_t(
"#808000")},
110 {_t(
"OliveDrab"),_t(
"#6B8E23")},
111 {_t(
"Orange"),_t(
"#FFA500")},
112 {_t(
"OrangeRed"),_t(
"#FF4500")},
113 {_t(
"Orchid"),_t(
"#DA70D6")},
114 {_t(
"PaleGoldenRod"),_t(
"#EEE8AA")},
115 {_t(
"PaleGreen"),_t(
"#98FB98")},
116 {_t(
"PaleTurquoise"),_t(
"#AFEEEE")},
117 {_t(
"PaleVioletRed"),_t(
"#D87093")},
118 {_t(
"PapayaWhip"),_t(
"#FFEFD5")},
119 {_t(
"PeachPuff"),_t(
"#FFDAB9")},
120 {_t(
"Peru"),_t(
"#CD853F")},
121 {_t(
"Pink"),_t(
"#FFC0CB")},
122 {_t(
"Plum"),_t(
"#DDA0DD")},
123 {_t(
"PowderBlue"),_t(
"#B0E0E6")},
124 {_t(
"Purple"),_t(
"#800080")},
125 {_t(
"Red"),_t(
"#FF0000")},
126 {_t(
"RosyBrown"),_t(
"#BC8F8F")},
127 {_t(
"RoyalBlue"),_t(
"#4169E1")},
128 {_t(
"SaddleBrown"),_t(
"#8B4513")},
129 {_t(
"Salmon"),_t(
"#FA8072")},
130 {_t(
"SandyBrown"),_t(
"#F4A460")},
131 {_t(
"SeaGreen"),_t(
"#2E8B57")},
132 {_t(
"SeaShell"),_t(
"#FFF5EE")},
133 {_t(
"Sienna"),_t(
"#A0522D")},
134 {_t(
"Silver"),_t(
"#C0C0C0")},
135 {_t(
"SkyBlue"),_t(
"#87CEEB")},
136 {_t(
"SlateBlue"),_t(
"#6A5ACD")},
137 {_t(
"SlateGray"),_t(
"#708090")},
138 {_t(
"SlateGrey"),_t(
"#708090")},
139 {_t(
"Snow"),_t(
"#FFFAFA")},
140 {_t(
"SpringGreen"),_t(
"#00FF7F")},
141 {_t(
"SteelBlue"),_t(
"#4682B4")},
142 {_t(
"Tan"),_t(
"#D2B48C")},
143 {_t(
"Teal"),_t(
"#008080")},
144 {_t(
"Thistle"),_t(
"#D8BFD8")},
145 {_t(
"Tomato"),_t(
"#FF6347")},
146 {_t(
"Turquoise"),_t(
"#40E0D0")},
147 {_t(
"Violet"),_t(
"#EE82EE")},
148 {_t(
"Wheat"),_t(
"#F5DEB3")},
149 {_t(
"White"),_t(
"#FFFFFF")},
150 {_t(
"WhiteSmoke"),_t(
"#F5F5F5")},
151 {_t(
"Yellow"),_t(
"#FFFF00")},
152 {_t(
"YellowGreen"),_t(
"#9ACD32")},
161 return web_color(0, 0, 0);
163 if(str[0] == _t(
'#'))
165 tstring red = _t(
"");
166 tstring green = _t(
"");
167 tstring blue = _t(
"");
168 tstring alpha = _t(
"FF");
170 if(t_strlen(str + 1) == 3)
179 else if(t_strlen(str + 1) == 4)
190 else if(t_strlen(str + 1) == 6)
199 else if(t_strlen(str + 1) == 8)
212 clr.red = (byte) t_strtol(red.c_str(), &sss, 16);
213 clr.green = (byte) t_strtol(green.c_str(), &sss, 16);
214 clr.blue = (byte) t_strtol(blue.c_str(), &sss, 16);
215 clr.alpha = (byte) t_strtol(alpha.c_str(), &sss, 16);
217 }
else if(!t_strncmp(str, _t(
"rgb"), 3))
221 tstring::size_type pos = s.find_first_of(_t(
"("));
222 if(pos != tstring::npos)
224 s.erase(s.begin(), s.begin() + pos + 1);
226 pos = s.find_last_of(_t(
")"));
227 if(pos != tstring::npos)
229 s.erase(s.begin() + pos, s.end());
232 std::vector<tstring> tokens;
233 split_string(s, tokens, _t(
", \t"));
237 if(tokens.size() >= 1) clr.red = (byte) t_atoi(tokens[0].c_str());
238 if(tokens.size() >= 2) clr.green = (
byte) t_atoi(tokens[1].c_str());
239 if(tokens.size() >= 3) clr.blue = (byte) t_atoi(tokens[2].c_str());
240 if(tokens.size() >= 4) clr.alpha = (
byte) (t_strtod(tokens[3].c_str(), 0) * 255.0);
245 tstring rgb = resolve_name(str, callback);
248 return from_string(rgb.c_str(), callback);
251 return web_color(0, 0, 0);
256 for(
int i=0; g_def_colors[i].name; i++)
258 if(!t_strcasecmp(name, g_def_colors[i].name))
260 return litehtml::tstring(g_def_colors[i].rgb);
265 litehtml::tstring clr = callback->resolve_color(name);
268 return litehtml::tstring();
271bool litehtml::web_color::is_color(
const tchar_t* str)
273 if(!t_strncasecmp(str, _t(
"rgb"), 3) || str[0] == _t(
'#'))
277 if (!t_isdigit(str[0]) && str[0] != _t(
'.'))