forked from KolibriOS/kolibrios
WebView 3.2:
- improve image positioning: inline images, various line height - revert 8443 and fix into enother way - proceed colors without hash symbol git-svn-id: svn://kolibrios.org@8451 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
51f9df912f
commit
132591b85f
@ -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;
|
||||
}
|
||||
|
@ -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<textlen; ii++)
|
||||
{
|
||||
BL = ESBYTE[color_str+ii];
|
||||
IF ((BL>='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;
|
||||
if (streq(color_str, web_colors[ii].name)) return web_colors[ii].rgb;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
textlen = strlen(color_str);
|
||||
if (textlen==6) || (textlen==3)
|
||||
{
|
||||
for (ii=0; color_specs[ii].name!=0; ii++)
|
||||
FOR (ii=0; ii<textlen; ii++)
|
||||
{
|
||||
if (streq(color_str, color_specs[ii].name))
|
||||
return color_specs[ii].rgb;
|
||||
BL = ESBYTE[color_str+ii];
|
||||
IF ((BL>='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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@
|
||||
// DATA //
|
||||
// //
|
||||
//===================================================//
|
||||
char version[]="WebView 3.15";
|
||||
char version[]="WebView 3.2";
|
||||
|
||||
#define DEFAULT_URL URL_SERVICE_HOMEPAGE
|
||||
|
||||
|
@ -4,8 +4,8 @@
|
||||
<title>„®¬ èïï áâà ¨æ </title>
|
||||
</head>
|
||||
<body><pre>‡ ª« ¤ª¨:
|
||||
1. <a href="http://kolibrios.org" id="valera">„®¬ èïï áâà ¨æ KolibriOS</a>
|
||||
2. <a href="http://kolibri-n.org" id="hodor">KolibriN10</a>
|
||||
1. <a href="http://kolibrios.org">„®¬ èïï áâà ¨æ KolibriOS</a>
|
||||
2. <a href="http://kolibri-n.org">KolibriN10</a>
|
||||
3. <a href="http://store.kolibri-n.org">Kolibri Store</a>
|
||||
|
||||
<font bg=#F8F15B>Šáâ â¨,</font>
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user