diff --git a/programs/network/htmlv/browser/History.txt b/programs/network/htmlv/browser/History.txt
index 95b53c4e92..20bf5eea66 100644
--- a/programs/network/htmlv/browser/History.txt
+++ b/programs/network/htmlv/browser/History.txt
@@ -1,6 +1,7 @@
-16.07.12 - 0.96b
+16.07.12 - 0.96d
- небольшие улучшения в обработке ссылок и изображений;
-- включение обработки разрывов строк через меню.
+- включение обработки разрывов строк через меню;
+- поддержка цветов вида #abc, улучшения в обработке цветов.
14.07.12 - 0.96
- исправлен баг со строкой адреса
diff --git a/programs/network/htmlv/browser/TWB.h b/programs/network/htmlv/browser/TWB.h
index d4ac1b989d..232f81c800 100644
--- a/programs/network/htmlv/browser/TWB.h
+++ b/programs/network/htmlv/browser/TWB.h
@@ -8,7 +8,7 @@ dword
char download_path[]="/rd/1/.download";
char search_path[]="http://nigma.ru/index.php?s=";
-char version[]=" Text-based Browser 0.96b";
+char version[]=" Text-based Browser 0.96d";
struct TWebBrowser {
diff --git a/programs/network/htmlv/browser/include/colors.h b/programs/network/htmlv/browser/include/colors.h
index a9e8dfb7f8..a1ba853236 100644
--- a/programs/network/htmlv/browser/include/colors.h
+++ b/programs/network/htmlv/browser/include/colors.h
@@ -1,323 +1,193 @@
//Надо будет переделать на "дерево поиска" или, что-то подобное
//будет нечитабельно, зато меньше и быстее
-//Имена web цветов
-char *color_names[]={
-"aliceblue",
-"antiquewhite",
-"aqua",
-"aquamarine",
-"azure",
-"beige",
-"bisque",
-"black",
-"blanchedalmond",
-"blue",
-"blueviolet",
-"brown",
-"burlywood",
-"cadetblue",
-"chartreuse",
-"chocolate",
-"coral",
-"cornflowerblue",
-"cornsilk",
-"crimson",
-"cyan",
-"darkblue",
-"darkcyan",
-"darkgoldenrod",
-"darkgray",
-"darkgreen",
-"darkkhaki",
-"darkmagenta",
-"darkolivegreen",
-"darkorange",
-"darkorchid",
-"darkred",
-"darksalmon",
-"darkseagreen",
-"darkslateblue",
-"darkslategray",
-"darkturquoise",
-"darkviolet",
-"deeppink",
-"deepskyblue",
-"dimgray",
-"dodgerblue",
-"firebrick",
-"floralwhite",
-"forestgreen",
-"fuchsia",
-"gainsboro",
-"ghostwhite",
-"gold",
-"goldenrod",
-"gray",
-"green",
-"greenyellow",
-"honeydew",
-"hotpink",
-"indianred",
-"indigo",
-"ivory",
-"khaki",
-"lavender",
-"lavenderblush",
-"lawngreen",
-"lemonchiffon",
-"lightblue",
-"lightcoral",
-"lightcyan",
-"lightgoldenrodyellow",
-"lightgray",
-"lightgreen",
-"lightpink",
-"lightsalmon",
-"lightseagreen",
-"lightskyblue",
-"lightslategray",
-"lightsteelblue",
-"lightyellow",
-"lime",
-"limegreen",
-"linen",
-"magenta",
-"maroon",
-"mediumaquamarine",
-"mediumblue",
-"mediumorchid",
-"mediumpurple",
-"mediumseagreen",
-"mediumslateblue",
-"mediumspringgreen",
-"mediumturquoise",
-"mediumvioletred",
-"midnightblue",
-"mintcream",
-"mistyrose",
-"moccasin",
-"navajowhite",
-"navy",
-"navyblue",
-"oldlace",
-"olive",
-"olivedrab",
-"orange",
-"orangered",
-"orchid",
-"palegoldenrod",
-"paleturquoise",
-"palevioletred",
-"papayawhip",
-"peachpuff",
-"peru",
-"pink",
-"plum",
-"powderblue",
-"purple",
-"red",
-"rosybrown",
-"royalblue",
-"saddlebrown",
-"salmon",
-"sandybrown",
-"seagreen",
-"seashell",
-"sienna",
-"silver",
-"skyblue",
-"slateblue",
-"slategray",
-"snow",
-"springgreen",
-"steelblue",
-"tan",
-"teal",
-"thistle",
-"tomato",
-"turquoise",
-"violet",
-"wheat",
-"white",
-"whitesmoke",
-"yellow",
-"yellowgreen",
-0};
+struct color_spec {
+ char *name;
+ int rgb;
+};
-//соответствующие им значения
-dword *colors[]={
-0xf0f8ff,
-0xfaebd7,
-0x00ffff,
-0x7fffd4,
-0xf0ffff,
-0xf5f5dc,
-0xffe4c4,
-0x000000,
-0xffebcd,
-0x0000ff,
-0x8a2be2,
-0xa52a2a,
-0xdeb887,
-0x5f9ea0,
-0x7fff00,
-0xd2691e,
-0xff7f50,
-0x6495ed,
-0xfff8dc,
-0xdc143c,
-0x00ffff,
-0x00008b,
-0x008b8b,
-0xb8860b,
-0xa9a9a9,
-0x006400,
-0xbdb76b,
-0x8b008b,
-0x556b2f,
-0xff8c00,
-0x9932cc,
-0x8b0000,
-0xe9967a,
-0x8fbc8f,
-0x483d8b,
-0x2f4f4f,
-0x00ced1,
-0x9400d3,
-0xff1493,
-0x00bfff,
-0x696969,
-0x1e90ff,
-0xb22222,
-0xfffaf0,
-0x228b22,
-0xff00ff,
-0xdcdcdc,
-0xf8f8ff,
-0xffd700,
-0xdaa520,
-0x808080,
-0x008000,
-0xadff2f,
-0xf0fff0,
-0xff69b4,
-0xcd5c5c,
-0x4b0082,
-0xfffff0,
-0xf0e68c,
-0xe6e6fa,
-0xfff0f5,
-0x7cfc00,
-0xfffacd,
-0xadd8e6,
-0xf08080,
-0xe0ffff,
-0xfafad2,
-0xd3d3d3,
-0x90ee90,
-0xffb6c1,
-0xffa07a,
-0x20b2aa,
-0x87cefa,
-0x778899,
-0xb0c4de,
-0xffffe0,
-0x00ff00,
-0x32cd32,
-0xfaf0e6,
-0xff00ff,
-0x800000,
-0x66cdaa,
-0x0000cd,
-0xba55d3,
-0x9370db,
-0x3cb371,
-0x7b68ee,
-0x00fa9a,
-0x48d1cc,
-0xc71585,
-0x191970,
-0xf5fffa,
-0xffe4e1,
-0xffe4b5,
-0xffdead,
-0x000080,
-0x9fafdf,
-0xfdf5e6,
-0x808000,
-0x6b8e23,
-0xffa500,
-0xff4500,
-0xda70d6,
-0xeee8aa,
-0xafeeee,
-0xd87093,
-0xffefd5,
-0xffdab9,
-0xcd853f,
-0xffc0cb,
-0xdda0dd,
-0xb0e0e6,
-0x800080,
-0xff0000,
-0xbc8f8f,
-0x4169e1,
-0x8b4513,
-0xfa8072,
-0xf4a460,
-0x2e8b57,
-0xfff5ee,
-0xa0522d,
-0xc0c0c0,
-0x87ceeb,
-0x6a5acd,
-0x708090,
-0xfffafa,
-0x00ff7f,
-0x4682b4,
-0xd2b48c,
-0x008080,
-0xd8bfd8,
-0xff6347,
-0x40e0d0,
-0xee82ee,
-0xf5deb3,
-0xffffff,
-0xf5f5f5,
-0xffff00,
-0x9acd32};
+struct color_spec color_specs[] = {
+ "aliceblue", 0xF0F8FF,
+ "antiquewhite", 0xFAEBD7,
+ "aqua", 0x00FFFF,
+ "aquamarine", 0x7FFFD4,
+ "azure", 0xF0FFFF,
+ "beige", 0xF5F5DC,
+ "bisque", 0xFFE4C4,
+ "black", 0x000000,
+ "blanchedalmond", 0xFFEBCD,
+ "blue", 0x0000FF,
+ "blueviolet", 0x8A2BE2,
+ "brown", 0xA52A2A,
+ "burlywood", 0xDEB887,
+ "cadetblue", 0x5F9EA0,
+ "chartreuse", 0x7FFF00,
+ "chocolate", 0xD2691E,
+ "coral", 0xFF7F50,
+ "cornflowerblue", 0x6495ED,
+ "cornsilk", 0xFFF8DC,
+ "crimson", 0xDC143C,
+ "cyan", 0x00FFFF,
+ "darkblue", 0x00008B,
+ "darkcyan", 0x008B8B,
+ "darkgoldenrod", 0xB8860B,
+ "darkgray", 0xA9A9A9,
+ "darkgreen", 0x006400,
+ "darkkhaki", 0xBDB76B,
+ "darkmagenta", 0x8B008B,
+ "darkolivegreen", 0x556B2F,
+ "darkorange", 0xFF8C00,
+ "darkorchid", 0x9932CC,
+ "darkred", 0x8B0000,
+ "darksalmon", 0xE9967A,
+ "darkseagreen", 0x8FBC8F,
+ "darkslateblue", 0x483D8B,
+ "darkslategray", 0x2F4F4F,
+ "darkturquoise", 0x00CED1,
+ "darkviolet", 0x9400D3,
+ "deeppink", 0xFF1493,
+ "deepskyblue", 0x00BFFF,
+ "dimgray", 0x696969,
+ "dodgerblue", 0x1E90FF,
+ "firebrick", 0xB22222,
+ "floralwhite", 0xFFFAF0,
+ "forestgreen", 0x228B22,
+ "fuchsia", 0xFF00FF,
+ "gainsboro", 0xDCDCDC,
+ "ghostwhite", 0xF8F8FF,
+ "gold", 0xFFD700,
+ "goldenrod", 0xDAA520,
+ "gray", 0x808080,
+ "green", 0x008000,
+ "greenyellow", 0xADFF2F,
+ "honeydew", 0xF0FFF0,
+ "hotpink", 0xFF69B4,
+ "indianred", 0xCD5C5C,
+ "indigo", 0x4B0082,
+ "ivory", 0xFFFFF0,
+ "khaki", 0xF0E68C,
+ "lavender", 0xE6E6FA,
+ "lavenderblush", 0xFFF0F5,
+ "lawngreen", 0x7CFC00,
+ "lemonchiffon", 0xFFFACD,
+ "lightblue", 0xADD8E6,
+ "lightcoral", 0xF08080,
+ "lightcyan", 0xE0FFFF,
+ "lightgoldenrodyellow", 0xFAFAD2,
+ "lightgreen", 0x90EE90,
+ "lightgrey", 0xD3D3D3,
+ "lightpink", 0xFFB6C1,
+ "lightsalmon", 0xFFA07A,
+ "lightseagreen", 0x20B2AA,
+ "lightskyblue", 0x87CEFA,
+ "lightslategray", 0x778899,
+ "lightsteelblue", 0xB0C4DE,
+ "lightyellow", 0xFFFFE0,
+ "lime", 0x00FF00,
+ "limegreen", 0x32CD32,
+ "linen", 0xFAF0E6,
+ "magenta", 0xFF00FF,
+ "maroon", 0x800000,
+ "mediumaquamarine", 0x66CDAA,
+ "mediumblue", 0x0000CD,
+ "mediumorchid", 0xBA55D3,
+ "mediumpurple", 0x9370DB,
+ "mediumseagreen", 0x3CB371,
+ "mediumslateblue", 0x7B68EE,
+ "mediumspringgreen", 0x00FA9A,
+ "mediumturquoise", 0x48D1CC,
+ "mediumvioletred", 0xC71585,
+ "midnightblue", 0x191970,
+ "mintcream", 0xF5FFFA,
+ "mistyrose", 0xFFE4E1,
+ "moccasin", 0xFFE4B5,
+ "navajowhite", 0xFFDEAD,
+ "navy", 0x000080,
+ "oldlace", 0xFDF5E6,
+ "olive", 0x808000,
+ "olivedrab", 0x6B8E23,
+ "orange", 0xFFA500,
+ "orangered", 0xFF4500,
+ "orchid", 0xDA70D6,
+ "palegoldenrod", 0xEEE8AA,
+ "palegreen", 0x98FB98,
+ "paleturquoise", 0xAFEEEE,
+ "palevioletred", 0xDB7093,
+ "papayawhip", 0xFFEFD5,
+ "peachpuff", 0xFFDAB9,
+ "peru", 0xCD853F,
+ "pink", 0xFFC0CB,
+ "plum", 0xDDA0DD,
+ "powderblue", 0xB0E0E6,
+ "purple", 0x800080,
+ "red", 0xFF0000,
+ "rosybrown", 0xBC8F8F,
+ "royalblue", 0x4169E1,
+ "saddlebrown", 0x8B4513,
+ "salmon", 0xFA8072,
+ "sandybrown", 0xF4A460,
+ "seagreen", 0x2E8B57,
+ "seashell", 0xFFF5EE,
+ "sienna", 0xA0522D,
+ "silver", 0xC0C0C0,
+ "skyblue", 0x87CEEB,
+ "slateblue", 0x6A5ACD,
+ "slategray", 0x708090,
+ "snow", 0xFFFAFA,
+ "springgreen", 0x00FF7F,
+ "steelblue", 0x4682B4,
+ "tan", 0xD2B48C,
+ "teal", 0x008080,
+ "thistle", 0xD8BFD8,
+ "tomato", 0xFF6347,
+ "turquoise", 0x40E0D0,
+ "violet", 0xEE82EE,
+ "wheat", 0xF5DEB3,
+ "white", 0xFFFFFF,
+ "whitesmoke", 0xF5F5F5,
+ "yellow", 0xFFFF00,
+ "yellowgreen", 0x9ACD32,
+0};
dword StrToCol(char* htmlcolor)
{
- dword j=1, color=0;
- char ch=0x00;
-
- IF (ESBYTE[htmlcolor]<>'#') RETURN;
-
- FOR (;j<7;j++)
- {
- ch=ESBYTE[htmlcolor+j];
- IF ((ch>='0') && (ch<='9')) ch -= '0';
- IF ((ch>='A') && (ch<='F')) ch -= 'A'-10;
- IF ((ch>='a') && (ch<='f')) ch -= 'a'-10;
- color = color*0x10 + ch;
- }
-
- return color;
+ dword j=1,
+ color=0,
+ textlen=0;
+ char ch=0x00;
+
+ if (ESBYTE[htmlcolor]<>'#') return;
+
+ textlen= strlen(htmlcolor);
+
+ if (textlen==7) || (textlen==4)
+ {
+ FOR (; j='0') && (ch<='9')) ch -= '0';
+ IF ((ch>='A') && (ch<='F')) ch -= 'A'-10;
+ IF ((ch>='a') && (ch<='f')) ch -= 'a'-10;
+ color = color*0x10 + ch;
+ if (textlen==4) color = color*0x10 + ch; //#abc ->> #aabbcc (слава википедии!!1)
+ }
+ return color;
+ }
+
+ return text_colors[0];
}
dword GetColor(char* color_str)
{
int ii;
- IF (ESBYTE[color_str] == '#')
+ if (ESBYTE[color_str] == '#')
return StrToCol(color_str);
-
- ELSE
- FOR (ii=0; color_names[ii]!=0; ii++)
+ else
+ for (ii=0; color_specs[ii].name!=0; ii++)
{
- IF(!strcmp(color_str, color_names[ii])) return colors[ii];
+ if (!strcmp(color_str, color_specs[ii].name)) return color_specs[ii].rgb;
}
+
return text_colors[0];
}