diff --git a/programs/cmm/browser/TWB/TWB.c b/programs/cmm/browser/TWB/TWB.c index 0f95cdf99e..ad43d4598e 100644 --- a/programs/cmm/browser/TWB/TWB.c +++ b/programs/cmm/browser/TWB/TWB.c @@ -3,7 +3,7 @@ #include "TWB\parse_tag.h" #include "TWB\special.h" #include "TWB\tag_list.h" -dword page_bg; +#define DEFAULT_BG_COL 0xffEBE8E9; dword link_color_default; dword link_color_active; #include "TWB\links.h" @@ -22,9 +22,9 @@ struct STYLE { blq, button, image; - dword bg_color; LIST tag_list; dword title; + dword cur_line_h; void reset(); }; @@ -32,6 +32,7 @@ void STYLE::reset() { b = u = s = h = blq = pre = title = false; font = false; + cur_line_h = NULL; tag_list.reset(); } @@ -103,9 +104,10 @@ void TWebBrowser::Paint() start_x = stolbec * list.font_w + BODY_MARGIN + list.x; stolbec_len = strlen(#line) * zoom; line_length = stolbec_len * list.font_w; + style.cur_line_h = math.max(style.cur_line_h, list.item_h); - if (style.bg_color!=page_bg) { - canvas.DrawBar(start_x, draw_y, line_length, list.item_h, style.bg_color); + if (bg_colors.get_last() - bg_colors.get(0)) { + canvas.DrawBar(start_x, draw_y, line_length, list.item_h, bg_colors.get_last()); } if (style.image) { @@ -141,13 +143,15 @@ void TWebBrowser::SetPageDefaults() style.reset(); link_color_default = 0x0000FF; link_color_active = 0xFF0000; - style.bg_color = page_bg = 0xffEBE8E9; //E0E3E3 EBE8E9 - canvas.Fill(0, page_bg); + //style.cur_line_h = list.item_h; links.clear(); anchors.clear(); img_url.drop(); text_colors.drop(); text_colors.add(0); + bg_colors.drop(); + bg_colors.add(DEFAULT_BG_COL); + canvas.Fill(0, DEFAULT_BG_COL); header = NULL; cur_encoding = CH_CP866; draw_y = BODY_MARGIN; @@ -326,7 +330,8 @@ void TWebBrowser::NewLine() } if (t_html) && (!t_body) return; - draw_y += list.item_h; + draw_y += style.cur_line_h; + style.cur_line_h = list.item_h; if (style.blq) stolbec = 6; else stolbec = 0; stolbec += style.tag_list.level * 5; } diff --git a/programs/cmm/browser/TWB/colors.h b/programs/cmm/browser/TWB/colors.h index 97180c45ab..073862dd61 100644 --- a/programs/cmm/browser/TWB/colors.h +++ b/programs/cmm/browser/TWB/colors.h @@ -1,78 +1,75 @@ collection_int text_colors; +collection_int bg_colors; -struct color_spec { +struct WEB_COLORS { char *name; - int rgb; -}; - -struct color_spec color_specs[] = { - "aliceblue", 0xFFF0F8FF, "antiquewhite", 0xFFFAEBD7, "aqua", 0xFF00FFFF, "aquamarine", 0xFF7FFFD4, - "azure", 0xFFF0FFFF, "beige", 0xFFF5F5DC, "bisque", 0xFFFFE4C4, "black", 0xFF000000, - "blanchedalmond", 0xFFFFEBCD, "blue", 0xFF0000FF, "blueviolet", 0xFF8A2BE2, "brown", 0xFFA52A2A, - "burlywood", 0xFFDEB887, "cadetblue", 0xFF5F9EA0, "chartreuse", 0xFF7FFF00, "chocolate", 0xFFD2691E, - "coral", 0xFFFF7F50, "cornflowerblue", 0xFF6495ED, "cornsilk", 0xFFFFF8DC, "crimson", 0xFFDC143C, - "cyan", 0xFF00FFFF, "darkblue", 0xFF00008B, "darkcyan", 0xFF008B8B, "darkgoldenrod", 0xFFB8860B, - "darkgray", 0xFFA9A9A9, "darkgreen", 0xFF006400, "darkkhaki", 0xFFBDB76B, "darkmagenta", 0xFF8B008B, - "darkolivegreen", 0xFF556B2F, "darkorange", 0xFFFF8C00, "darkorchid", 0xFF9932CC, "darkred", 0xFF8B0000, - "darksalmon", 0xFFE9967A, "darkseagreen", 0xFF8FBC8F, "darkslateblue", 0xFF483D8B, "darkslategray", 0xFF2F4F4F, - "darkturquoise", 0xFF00CED1, "darkviolet", 0xFF9400D3, "deeppink", 0xFFFF1493, "deepskyblue", 0xFF00BFFF, - "dimgray", 0xFF696969, "dodgerblue", 0xFF1E90FF, "firebrick", 0xFFB22222, "floralwhite", 0xFFFFFAF0, - "forestgreen", 0xFF228B22, "fuchsia", 0xFFFF00FF, "gainsboro", 0xFFDCDCDC, "ghostwhite", 0xFFF8F8FF, - "gold", 0xFFFFD700, "goldenrod", 0xFFDAA520, "gray", 0xFF808080, "green", 0xFF008000, - "greenyellow", 0xFFADFF2F, "honeydew", 0xFFF0FFF0, "hotpink", 0xFFFF69B4, "indianred", 0xFFCD5C5C, - "indigo", 0xFF4B0082, "ivory", 0xFFFFFFF0, "khaki", 0xFFF0E68C, "lavender", 0xFFE6E6FA, - "lavenderblush", 0xFFFFF0F5, "lawngreen", 0xFF7CFC00, "lemonchiffon", 0xFFFFFACD, "lightblue", 0xFFADD8E6, - "lightcoral", 0xFFF08080, "lightcyan", 0xFFE0FFFF, "lightgreen", 0xFF90EE90, "lightgrey", 0xFFD3D3D3, - "lightpink", 0xFFFFB6C1, "lightsalmon", 0xFFFFA07A, "lightseagreen", 0xFF20B2AA, "lightskyblue", 0xFF87CEFA, - "lightslategray", 0xFF778899, "lightsteelblue", 0xFFB0C4DE, "lightyellow", 0xFFFFFFE0, "lime", 0xFF00FF00, - "limegreen", 0xFF32CD32, "linen", 0xFFFAF0E6, "magenta", 0xFFFF00FF, "maroon", 0xFF800000, - "mediumaquamarine", 0xFF66CDAA, "mediumblue", 0xFF0000CD, "mediumorchid", 0xFFBA55D3, "mediumpurple", 0xFF9370DB, - "mediumseagreen", 0xFF3CB371, "mediumslateblue", 0xFF7B68EE, "mediumspringgreen",0xFF00FA9A, "mediumturquoise", 0xFF48D1CC, - "mediumvioletred", 0xFFC71585, "midnightblue", 0xFF191970, "mintcream", 0xFFF5FFFA, "mistyrose", 0xFFFFE4E1, - "moccasin", 0xFFFFE4B5, "navajowhite", 0xFFFFDEAD, "navy", 0xFF000080, "oldlace", 0xFFFDF5E6, - "olive", 0xFF808000, "olivedrab", 0xFF6B8E23, "orange", 0xFFFFA500, "orangered", 0xFFFF4500, - "orchid", 0xFFDA70D6, "palegoldenrod", 0xFFEEE8AA, "palegreen", 0xFF98FB98, "paleturquoise", 0xFFAFEEEE, - "palevioletred", 0xFFDB7093, "papayawhip", 0xFFFFEFD5, "peachpuff", 0xFFFFDAB9, "peru", 0xFFCD853F, - "pink", 0xFFFFC0CB, "plum", 0xFFDDA0DD, "powderblue", 0xFFB0E0E6, "purple", 0xFF800080, - "red", 0xFFFF0000, "rosybrown", 0xFFBC8F8F, "royalblue", 0xFF4169E1, "saddlebrown", 0xFF8B4513, - "salmon", 0xFFFA8072, "sandybrown", 0xFFF4A460, "seagreen", 0xFF2E8B57, "seashell", 0xFFFFF5EE, - "sienna", 0xFFA0522D, "silver", 0xFFC0C0C0, "skyblue", 0xFF87CEEB, "slateblue", 0xFF6A5ACD, - "slategray", 0xFF708090, "snow", 0xFFFFFAFA, "springgreen", 0xFF00FF7F, "steelblue", 0xFF4682B4, - "tan", 0xFFD2B48C, "teal", 0xFF008080, "thistle", 0xFFD8BFD8, "tomato", 0xFFFF6347, - "turquoise", 0xFF40E0D0, "violet", 0xFFEE82EE, "wheat", 0xFFF5DEB3, "white", 0xFFFFFFFF, - "whitesmoke", 0xFFF5F5F5, "yellow", 0xFFFFFF00, "yellowgreen", 0xFF9ACD32, 0}; + dword rgb; +} web_colors[] = { + "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, "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 GetColor(char* color_str) { int ii; dword textlen=0; - dword color=0xFF000000; + dword color=0; strlwr(color_str); - if (ESBYTE[color_str] == '#') - { - textlen = strlen(color_str); - if (textlen==7) || (textlen==4) + if (ESBYTE[color_str] == '#') { + color_str++; + } else { + for (ii=0; web_colors[ii].name!=0; ii++) { - FOR (ii=1; ii='0') && (BL<='9')) BL -= '0'; - //IF ((BL>='A') && (BL<='F')) BL -= 'A'-10; - IF ((BL>='a') && (BL<='f')) BL -= 'a'-10; - color = color*0x10 + BL; - if (textlen==4) color = color*0x10 + BL; //#abc ->> #aabbcc - } - return color; - } - } - else + if (streq(color_str, web_colors[ii].name)) return web_colors[ii].rgb; + } + } + + textlen = strlen(color_str); + if (textlen==6) || (textlen==3) { - for (ii=0; color_specs[ii].name!=0; ii++) + FOR (ii=0; ii='0') && (BL<='9')) BL -= '0'; + //IF ((BL>='A') && (BL<='F')) BL -= 'A'-10; + IF ((BL>='a') && (BL<='f')) BL -= 'a'-10; + color = color*0x10 + BL; + if (textlen==3) color = color*0x10 + BL; //#abc ->> #aabbcc } + return color; } return text_colors.get(0); } diff --git a/programs/cmm/browser/TWB/links.h b/programs/cmm/browser/TWB/links.h index 4f70346ac1..79f5154cde 100644 --- a/programs/cmm/browser/TWB/links.h +++ b/programs/cmm/browser/TWB/links.h @@ -87,7 +87,7 @@ bool PAGE_LINKS::hover(dword list_y, list_first) CursorPointer.Set(); draw_underline(active, list_first, list_y, link_color_default); - draw_underline(i, list_first, list_y, page_bg); + draw_underline(i, list_first, list_y, DEFAULT_BG_COL); active_url = link.get(i); active = i; diff --git a/programs/cmm/browser/TWB/set_style.h b/programs/cmm/browser/TWB/set_style.h index 68d940946f..dbcd7d73b5 100644 --- a/programs/cmm/browser/TWB/set_style.h +++ b/programs/cmm/browser/TWB/set_style.h @@ -74,17 +74,23 @@ void TWebBrowser::tag_title() void TWebBrowser::tag_font() { style.font = tag.opened; - style.bg_color = page_bg; if (tag.opened) { - if (tag.get_value_of("bg")) style.bg_color = GetColor(tag.value); + if (tag.get_value_of("bg")) { + bg_colors.add(GetColor(tag.value)); + } else { + bg_colors.add(bg_colors.get_last()); + } if (tag.get_value_of("color")) { text_colors.add(GetColor(tag.value)); } else { text_colors.add(text_colors.get_last()); } } - else text_colors.pop(); + else { + text_colors.pop(); + bg_colors.pop(); + } } void TWebBrowser::tag_div() @@ -121,7 +127,6 @@ void TWebBrowser::tag_a() } } else { link = false; - style.bg_color = page_bg; } } @@ -147,9 +152,9 @@ void TWebBrowser::tag_meta_xml() void TWebBrowser::tag_code() { if (style.pre = tag.opened) { - style.bg_color = 0xe4ffcb; + bg_colors.add(0xe4ffcb); } else { - style.bg_color = page_bg; + bg_colors.pop(); } } @@ -205,8 +210,8 @@ void TWebBrowser::tag_body() if (tag.get_value_of("alink")) link_color_active = GetColor(tag.value); if (tag.get_value_of("text")) text_colors.set(0, GetColor(tag.value)); if (tag.get_value_of("bgcolor")) { - style.bg_color = page_bg = GetColor(tag.value); - canvas.Fill(0, page_bg); + bg_colors.set(0, GetColor(tag.value)); + canvas.Fill(0, bg_colors.get(0)); } // Autodetecting encoding if no encoding was set if (tag.opened) && (custom_encoding==-1) && (cur_encoding == CH_CP866) { @@ -247,7 +252,7 @@ void TWebBrowser::tag_h1234_caption() NewLine(); zoom=1; list.font_type = 10011000b; - list.item_h = BASIC_LINE_H; + style.cur_line_h = list.item_h = BASIC_LINE_H; } } } @@ -260,7 +265,7 @@ void TWebBrowser::tag_img() dword cur_img; int img_x, img_y, img_w, img_h; - if (!tag.get_value_of("src")) goto NOIMG; + if (!tag.get_value_of("src")) return; if (streqrp(tag.value, "data:")) { if (!strstr(tag.value, "base64,")) goto NOIMG; @@ -305,11 +310,10 @@ IMGOK: img_w = math.min(img_w, canvas.bufw - img_x); - stolbec += img_w / 6; - if (stolbec > list.column_max) NewLine(); + style.cur_line_h = math.max(list.item_h, img_h); - if (img_h > list.item_h + 5) { - draw_y += img_h - list.item_h; + stolbec += img_w / 6; + if (stolbec > list.column_max) { NewLine(); } diff --git a/programs/cmm/browser/WebView.c b/programs/cmm/browser/WebView.c index b6ab4a32b2..fe05f5c2fa 100644 --- a/programs/cmm/browser/WebView.c +++ b/programs/cmm/browser/WebView.c @@ -41,7 +41,7 @@ // DATA // // // //===================================================// -char version[]="WebView 3.15"; +char version[]="WebView 3.2"; #define DEFAULT_URL URL_SERVICE_HOMEPAGE diff --git a/programs/cmm/browser/res/homepage_ru.htm b/programs/cmm/browser/res/homepage_ru.htm index f01356522a..7237c5366e 100644 --- a/programs/cmm/browser/res/homepage_ru.htm +++ b/programs/cmm/browser/res/homepage_ru.htm @@ -4,8 +4,8 @@ Домашняя страница
Закладки:
-1. Домашняя страница KolibriOS
-2. KolibriN10
+1. Домашняя страница KolibriOS
+2. KolibriN10
 3. Kolibri Store
 
 Кстати, 
diff --git a/programs/cmm/lib/draw_buf.h b/programs/cmm/lib/draw_buf.h
index 80a8621a68..70c9ed3fed 100644
--- a/programs/cmm/lib/draw_buf.h
+++ b/programs/cmm/lib/draw_buf.h
@@ -45,7 +45,7 @@ bool CANVAS::Init(dword i_bufx, i_bufy, i_bufw, i_bufh)
 void CANVAS::Fill(dword start_pointer, i_fill_color)
 {
 	dword max_i = bufw * bufh * 4 - start_pointer/4;
-	fill_color = i_fill_color;
+	fill_color = i_fill_color | 0xFF000000; //set background color non-transparent
 	@MEMSETD(buf_data+start_pointer+8, max_i, fill_color);
 }