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:
Kirill Lipatov (Leency) 2020-12-19 00:50:55 +00:00
parent 51f9df912f
commit 132591b85f
7 changed files with 93 additions and 87 deletions

View File

@ -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;
}

View File

@ -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);
}

View File

@ -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;

View File

@ -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();
}

View File

@ -41,7 +41,7 @@
// DATA //
// //
//===================================================//
char version[]="WebView 3.15";
char version[]="WebView 3.2";
#define DEFAULT_URL URL_SERVICE_HOMEPAGE

View File

@ -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>

View File

@ -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);
}