forked from KolibriOS/kolibrios
WebView 1.93:
- handle the case when '&' is written as non special caracter like - handle emply lines of list to aboid more than 2 emply lines for better readability - improve img tag display - show colored background of all text in debug mode - improve page display if no html or body tag but the page is still has tags to display git-svn-id: svn://kolibrios.org@7749 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
f53868d3c8
commit
eaed653ad3
@ -96,6 +96,10 @@ void TWebBrowser::DrawStyle()
|
|||||||
stolbec_len = strlen(#line) * zoom;
|
stolbec_len = strlen(#line) * zoom;
|
||||||
line_length = stolbec_len * list.font_w;
|
line_length = stolbec_len * list.font_w;
|
||||||
|
|
||||||
|
if (debug_mode) {
|
||||||
|
DrawBuf.DrawBar(start_x, draw_y, line_length, list.item_h-1, 0xDDDddd);
|
||||||
|
}
|
||||||
|
|
||||||
if (style.bg_color!=page_bg) {
|
if (style.bg_color!=page_bg) {
|
||||||
DrawBuf.DrawBar(start_x, draw_y, line_length, list.item_h-1, style.bg_color);
|
DrawBuf.DrawBar(start_x, draw_y, line_length, list.item_h-1, style.bg_color);
|
||||||
}
|
}
|
||||||
@ -154,8 +158,10 @@ void TWebBrowser::Prepare(){
|
|||||||
dword bufpos;
|
dword bufpos;
|
||||||
dword line_len;
|
dword line_len;
|
||||||
SetPageDefaults();
|
SetPageDefaults();
|
||||||
|
if (strstri(bufpointer, "<body")==-1) {
|
||||||
|
t_body = true;
|
||||||
if (strstri(bufpointer, "<html")==-1) style.pre = true; //show linebreaks for a plaint text
|
if (strstri(bufpointer, "<html")==-1) style.pre = true; //show linebreaks for a plaint text
|
||||||
else if (strstri(bufpointer, "<body")==-1) t_body = true;
|
}
|
||||||
for (bufpos=bufpointer ; (bufpos < bufpointer+bufsize) && (ESBYTE[bufpos]!=0) ; bufpos++;)
|
for (bufpos=bufpointer ; (bufpos < bufpointer+bufsize) && (ESBYTE[bufpos]!=0) ; bufpos++;)
|
||||||
{
|
{
|
||||||
bukva = ESBYTE[bufpos];
|
bukva = ESBYTE[bufpos];
|
||||||
@ -180,14 +186,17 @@ void TWebBrowser::Prepare(){
|
|||||||
}
|
}
|
||||||
goto DEFAULT_MARK;
|
goto DEFAULT_MARK;
|
||||||
case '&': // and so on
|
case '&': // and so on
|
||||||
bufpos++;
|
for (j=1, tag=0; (ESBYTE[bufpos+j]<>';') && (j<8); j++)
|
||||||
tag=0;
|
|
||||||
for (j=0; (ESBYTE[bufpos]<>';') && (j<7); j++, bufpos++;)
|
|
||||||
{
|
{
|
||||||
bukva = ESBYTE[bufpos];
|
bukva = ESBYTE[bufpos+j];
|
||||||
chrcat(#tag, bukva);
|
chrcat(#tag, bukva);
|
||||||
}
|
}
|
||||||
if (bukva = GetUnicodeSymbol()) goto DEFAULT_MARK;
|
if (bukva = GetUnicodeSymbol(#tag)) {
|
||||||
|
bufpos += j;
|
||||||
|
} else {
|
||||||
|
bukva = '&';
|
||||||
|
}
|
||||||
|
goto DEFAULT_MARK;
|
||||||
break;
|
break;
|
||||||
case '<':
|
case '<':
|
||||||
bufpos++;
|
bufpos++;
|
||||||
@ -224,7 +233,7 @@ void TWebBrowser::Prepare(){
|
|||||||
sprintf(#tagparam, "</%s>", #tag);
|
sprintf(#tagparam, "</%s>", #tag);
|
||||||
j = strstri(bufpos, #tagparam);
|
j = strstri(bufpos, #tagparam);
|
||||||
if (j!=-1) {
|
if (j!=-1) {
|
||||||
bufpos = j;
|
bufpos = j-1;
|
||||||
}
|
}
|
||||||
tag = tagparam = NULL;
|
tag = tagparam = NULL;
|
||||||
break;
|
break;
|
||||||
@ -286,7 +295,7 @@ void TWebBrowser::Perenos()
|
|||||||
}
|
}
|
||||||
//============================================================================================
|
//============================================================================================
|
||||||
void TWebBrowser::SetStyle() {
|
void TWebBrowser::SetStyle() {
|
||||||
char img_path[4096];
|
char img_path[4096]=0;
|
||||||
int left1 = body_magrin + list.x;
|
int left1 = body_magrin + list.x;
|
||||||
int meta_encoding;
|
int meta_encoding;
|
||||||
if (istag("html")) {
|
if (istag("html")) {
|
||||||
@ -396,14 +405,16 @@ void TWebBrowser::SetStyle() {
|
|||||||
if (istag("img")) {
|
if (istag("img")) {
|
||||||
do{
|
do{
|
||||||
if (isattr("src=")) strncpy(#img_path, #val, sizeof(img_path)-1);
|
if (isattr("src=")) strncpy(#img_path, #val, sizeof(img_path)-1);
|
||||||
if (isattr("alt=")) && (strlen(#val)<sizeof(line)-3) sprintf(#line, "[%s]", #val);
|
if (isattr("title=")) && (strlen(#val)<sizeof(line)-3) && (val) sprintf(#line, "[%s]", #val);
|
||||||
if (isattr("title=")) && (strlen(#val)<sizeof(line)-3) sprintf(#line, "[%s]", #val);
|
if (isattr("alt=")) && (strlen(#val)<sizeof(line)-3) && (val) sprintf(#line, "[%s]", #val);
|
||||||
} while(GetNextParam());
|
} while(GetNextParam());
|
||||||
|
if (!img_path) return;
|
||||||
style.image = true;
|
style.image = true;
|
||||||
text_color_index++;
|
text_color_index++;
|
||||||
text_colors[text_color_index] = 0x9A6F29;
|
text_colors[text_color_index] = 0x9A6F29;
|
||||||
if (!line) {
|
if (!line) {
|
||||||
if (!strncmp(#img_path, "data:", 5)) img_path=0;
|
if (!strncmp(#img_path, "data:", 5)) img_path=0;
|
||||||
|
replace_char(#img_path, '?', NULL, strlen(#img_path));
|
||||||
sprintf(#line, "[%s]", #img_path+strrchr(#img_path, '/'));
|
sprintf(#line, "[%s]", #img_path+strrchr(#img_path, '/'));
|
||||||
line[50]= NULL;
|
line[50]= NULL;
|
||||||
}
|
}
|
||||||
@ -532,7 +543,10 @@ void TWebBrowser::NewLine()
|
|||||||
|
|
||||||
if (!stolbec) && (draw_y==body_magrin) return;
|
if (!stolbec) && (draw_y==body_magrin) return;
|
||||||
|
|
||||||
if (!stolbec) {
|
if (style.li) && (stolbec == style.li_tab * 5) {
|
||||||
|
if (empty_line<1) empty_line++;
|
||||||
|
else return;
|
||||||
|
} else if (!stolbec) {
|
||||||
if (empty_line<1) empty_line++;
|
if (empty_line<1) empty_line++;
|
||||||
else return;
|
else return;
|
||||||
} else {
|
} else {
|
||||||
|
@ -67,25 +67,25 @@ char *unicode_tags[]={
|
|||||||
|
|
||||||
byte unicode_chars[] = "€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>徕沅彐玷殛腱眍镳駂<EFBFBD>243i\105\244\0";
|
byte unicode_chars[] = "€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>徕沅彐玷殛腱眍镳駂<EFBFBD>243i\105\244\0";
|
||||||
|
|
||||||
unsigned char GetUnicodeSymbol()
|
bool GetUnicodeSymbol(dword in_tag)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
|
|
||||||
for (j=0; unicode_tags[j]!=0; j+=2;)
|
for (j=0; unicode_tags[j]!=0; j+=2;)
|
||||||
{
|
{
|
||||||
if (!strcmp(#tag, unicode_tags[j]))
|
if (!strcmp(in_tag, unicode_tags[j]))
|
||||||
{
|
{
|
||||||
strcat(#line, unicode_tags[j+1]);
|
strcat(#line, unicode_tags[j+1]);
|
||||||
return NULL;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
j = atoi(#tag + 1) - 1040;
|
j = atoi(in_tag + 1) - 1040;
|
||||||
if (tag[1] == '1') && (j>=0) && (j<=72) && (strlen(#tag) == 5)
|
if (tag[1] == '1') && (j>=0) && (j<=72) && (strlen(in_tag) == 5)
|
||||||
{
|
{
|
||||||
return unicode_chars[j];
|
chrcat(#line, unicode_chars[j]);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
strcat(#line,#tag); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò
|
return false;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ _http http = {0, 0, 0, 0, 0, 0, 0};
|
|||||||
|
|
||||||
|
|
||||||
#ifdef LANG_RUS
|
#ifdef LANG_RUS
|
||||||
char version[]="’¥ªáâ®¢ë© ¡à 㧥à 1.92";
|
char version[]="’¥ªáâ®¢ë© ¡à 㧥à 1.93";
|
||||||
#define T_LOADING "‡ £à㧪 áâà ¨æë..."
|
#define T_LOADING "‡ £à㧪 áâà ¨æë..."
|
||||||
#define T_RENDERING "<22>¥¤¥à¨£..."
|
#define T_RENDERING "<22>¥¤¥à¨£..."
|
||||||
char page_not_found[] = FROM "html\\page_not_found_ru.htm""\0";
|
char page_not_found[] = FROM "html\\page_not_found_ru.htm""\0";
|
||||||
@ -48,7 +48,7 @@ char link_menu[] =
|
|||||||
"Š®¯¨à®¢ âì áá뫪ã
|
"Š®¯¨à®¢ âì áá뫪ã
|
||||||
‘ª ç âì ᮤ¥à¦¨¬®¥ áá뫪¨";
|
‘ª ç âì ᮤ¥à¦¨¬®¥ áá뫪¨";
|
||||||
#else
|
#else
|
||||||
char version[]="Text-based Browser 1.9";
|
char version[]="Text-based Browser 1.93";
|
||||||
#define T_LOADING "Loading..."
|
#define T_LOADING "Loading..."
|
||||||
#define T_RENDERING "Rendering..."
|
#define T_RENDERING "Rendering..."
|
||||||
char page_not_found[] = FROM "html\\page_not_found_en.htm""\0";
|
char page_not_found[] = FROM "html\\page_not_found_en.htm""\0";
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
// strcpy( EDI, ESI) --- 0 if ==
|
// strcpy( EDI, ESI) --- 0 if ==
|
||||||
// strlcpy(dword text1,text2,signed length)
|
// strlcpy(dword text1,text2,signed length)
|
||||||
// strcat( EDI, ESI)
|
// strcat( EDI, ESI)
|
||||||
|
// chrcat(ESI, BL)
|
||||||
// strncat(dword text1,text2,signed length) --- pasting the text of a certain length
|
// strncat(dword text1,text2,signed length) --- pasting the text of a certain length
|
||||||
// strchr( ESI,BL) --- find first BL
|
// strchr( ESI,BL) --- find first BL
|
||||||
// strrchr( ESI,BL) --- find last BL
|
// strrchr( ESI,BL) --- find last BL
|
||||||
|
Loading…
Reference in New Issue
Block a user