HTMLv 0.77: <body> bgcolor= and text= support, fixes

git-svn-id: svn://kolibrios.org@2420 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Kirill Lipatov (Leency) 2012-02-29 12:29:47 +00:00
parent 26b134521c
commit febf6bf8c4
4 changed files with 38 additions and 25 deletions

View File

@ -1,5 +1,5 @@
//HTML Viewer in C-- //HTML Viewer in C--
//Copyright 2007-2009 by Veliant & Leency //Copyright 2007-20012 by Veliant & Leency
//Asper, Lrz, Nable, lev. //Asper, Lrz, Nable, lev.
#include "..\lib\kolibri.h--" #include "..\lib\kolibri.h--"
@ -56,6 +56,8 @@ void main()
BrowserHistory.AddUrl(); BrowserHistory.AddUrl();
copystr(#URL,#editURL); copystr(#URL,#editURL);
if (!strcmp(get_URL_part(5),"http:"))) HttpLoad();
SetEventMask(0x27); SetEventMask(0x27);
loop() loop()
{ {

View File

@ -1,4 +1,4 @@
//Web-component, Leency & Veliant 2007-2009 //Web-component, Leency & Veliant 2007-20012
//lev //lev
//èäåÿ - ëåâûå ôàéëû îòêðûâàòü ñîîòâåòñòâóþùèìè ïðîãàìè //èäåÿ - ëåâûå ôàéëû îòêðûâàòü ñîîòâåòñòâóþùèìè ïðîãàìè
@ -17,7 +17,7 @@ dword j,
char download_path[]="/rd/1/.download"; char download_path[]="/rd/1/.download";
//char search_path[]="http://nova.rambler.ru/search?words="; //char search_path[]="http://nova.rambler.ru/search?words=";
char search_path[]="http://nigma.ru/index.php?s="; char search_path[]="http://nigma.ru/index.php?s=";
char version[]=" Text-based Browser 0.76"; char version[]=" Text-based Browser 0.77";
struct TWebBrowser { struct TWebBrowser {
@ -34,12 +34,13 @@ struct TWebBrowser {
TWebBrowser WB1; TWebBrowser WB1;
byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text, link, ignor_text, li_tab; byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text, link, ignor_text, li_tab, body_present;
dword text_colors[10], dword text_colors[10],
text_color_index = 0, text_color_index = 0,
link_color; link_color,
bg_color=0xFFFFFF;
int stroka, int stroka,
stolbec, stolbec,
@ -200,6 +201,7 @@ void GetNewUrl(){
void HttpLoad() void HttpLoad()
{ {
//count = 0; ÿ äóìàþ åìó ìåñòî çäåñü //count = 0; ÿ äóìàþ åìó ìåñòî çäåñü
copystr(#version, #header);
KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ
DeleteFile(#download_path); DeleteFile(#download_path);
IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]=''; IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]='';
@ -252,7 +254,6 @@ void TWebBrowser::ShowPage(dword adress) {
return; return;
} }
DrawBar(left, top, width-15, 15, 0xFFFFFF); //çàêðàøèâàåì ïåðâóþ ñòðîêó
wintodos(buf); wintodos(buf);
ParseHTML(buf, filesize); ParseHTML(buf, filesize);
IF (!strcmp(#version, #header)) DrawTitle(#header); IF (!strcmp(#version, #header)) DrawTitle(#header);
@ -267,15 +268,19 @@ void TWebBrowser::ParseHTML(dword bword, fsize){
stroka = -za_kadrom; stroka = -za_kadrom;
stolbec = 0; stolbec = 0;
FOR(j = 400; j < blink + 1; j++;) DeleteButton(j); FOR(j = 400; j < blink + 1; j++;) DeleteButton(j);
b_text = i_text = u_text = s_text = pre_text = blq_text = b_text = i_text = u_text = s_text = pre_text = blq_text = body_present =
li_text = link = ignor_text = text_color_index = text_colors[0] = li_tab = 0; //îáíóëÿåì òåãè li_text = link = ignor_text = text_color_index = text_colors[0] = li_tab = 0; //îáíóëÿåì òåãè
link_color = 0x0000FF; link_color = 0x0000FF;
bg_color = 0xFFFFFF;
blink = 400; blink = 400;
line = ''; line = '';
copystr("|", #page_links); copystr("|", #page_links);
copystr(#version, #header); copystr(#version, #header);
IF(!strcmp(#URL + strlen(#URL) - 4, ".txt")) pre_text = 1; //çà÷¸òíîå îòîáðàæåíèå òåêñòà IF(!strcmp(#URL + strlen(#URL) - 4, ".txt"))
//IF(!strcmp(#URL + strlen(#URL) - 4, ".rtf")) pre_text = 1; {
DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó
pre_text = 1; //çà÷¸òíîå îòîáðàæåíèå òåêñòà
}
IF(!strcmp(#URL + strlen(#URL) - 4, ".mht")) ignor_text = 1; IF(!strcmp(#URL + strlen(#URL) - 4, ".mht")) ignor_text = 1;
for (; buf + fsize > bword; bword++;) { for (; buf + fsize > bword; bword++;) {
bukva = ESBYTE[bword]; bukva = ESBYTE[bword];
@ -394,11 +399,14 @@ void TWebBrowser::ParseHTML(dword bword, fsize){
copystr(#bukva, #line + strlen(#line)); copystr(#bukva, #line + strlen(#line));
} }
} }
IF(max_kolvo_strok * 10 + 25 <= height) if (strcmp(#URL + strlen(#URL) - 4, ".txt")<>0) && (body_present==0)
DrawBar(left, max_kolvo_strok * 10 + top + 25, width - 15, -max_kolvo_strok * 10 + height - 25, 0xFFFFFF); DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó åñëè êàêîé-òî ðàõèò íå ñîçäàë òåã áîäè
IF(stroka * 10 + 15 <= height)
DrawBar(left, stroka * 10 + top + 15, width - 15, -stroka * 10 + height - 15, 0xFFFFFF); //çàêðàøèâàåì âñ¸ äî êîíöà if (max_kolvo_strok * 10 + 25 <= height)
IF(za_kadrom == 0) count = stroka; DrawBar(left, max_kolvo_strok * 10 + top + 25, width - 15, -max_kolvo_strok * 10 + height - 25, bg_color);
if (stroka * 10 + 15 <= height)
DrawBar(left, stroka * 10 + top + 15, width - 15, -stroka * 10 + height - 15, bg_color); //çàêðàøèâàåì âñ¸ äî êîíöà
if (za_kadrom == 0) count = stroka;
DrawScroller(); //ðèñóåì ñêðîëë DrawScroller(); //ðèñóåì ñêðîëë
} }
@ -500,7 +508,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
// //
IF(!tag) return; IF(!tag) return;
stolbec += strlen(#line); stolbec += strlen(#line);
////////////////////////// <body bgcolor="#000000" text="#FFFFFF">
if (!chTag("body")) if (!chTag("body"))
{ {
BODY_MARK: BODY_MARK:
@ -508,22 +516,25 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
if (strcmp(#parametr, "link=") == 0) if (strcmp(#parametr, "link=") == 0)
link_color = GetColor(#options); link_color = GetColor(#options);
/*if (strcmp(#parametr, "text=") == 0) if (strcmp(#parametr, "text=") == 0)
{ {
text_colors[0]=GetColor(#options); text_colors[0]=GetColor(#options);
} }
if (strcmp(#parametr, "bgcolor=") == 0) if (strcmp(#parametr, "bgcolor=") == 0)
{ {
//text_colors[0]=GetColor(#options); bg_color=GetColor(#options);
WriteDebug("bgcolor="); }
WriteDebug(#options);
}*/
IF(tagparam) { IF(tagparam) {
GetNextParam(); GetNextParam();
GOTO BODY_MARK; GOTO BODY_MARK;
} }
body_present = 1; //åñëè êàëè÷ íå ñîçäàë òåã áîäè íóæíî èçâðàùàòüñÿ
if (rez) DrawBar(WB1.left, WB1.top, WB1.width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó
return;
} }
////////////////////////// //////////////////////////
if (!chTag("a")) { if (!chTag("a")) {
@ -669,7 +680,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
IF (h<=0) return; IF (h<=0) return;
img_draw stdcall (image,left1-5,top1+10,w, h,0,img_za_kadrom); img_draw stdcall (image,left1-5,top1+10,w, h,0,img_za_kadrom);
DrawBar(left1+w - 5, top1 + 10, width1-w + 5, h, 0xFFFFFF); DrawBar(left1+w - 5, top1 + 10, width1-w + 5, h, bg_color);
} }
/*else /*else
{ {
@ -715,7 +726,7 @@ void TextGoDown(int left1, top1, width1) {
IF(blq_text == 1) stolbec = 8; IF(blq_text == 1) stolbec = 8;
ELSE stolbec = 0; ELSE stolbec = 0;
IF(li_text == 1) stolbec = li_tab * 5; IF(li_text == 1) stolbec = li_tab * 5;
IF(stroka >= 0) && (stroka - 2 < max_kolvo_strok) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, 0xFFFFFF); IF(stroka >= 0) && (stroka - 2 < max_kolvo_strok) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, bg_color);
} }

View File

@ -1,5 +1,5 @@
..\C--\c-- HTMLv.c-- ..\C--\c-- HTMLv.c--
del HTMLv del HTMLv
rename HTMLv.com HTMLv rename HTMLv.com HTMLv
..\C--\kpack HTMLv rem ..\C--\kpack HTMLv
rem pause rem pause

View File

@ -29,7 +29,7 @@
<font color="#FFC005">c</font> <font color="#FFC005">c</font>
<font color="red">y</font><br> <font color="red">y</font><br>
</b> </b>
ニ頸黑頏 2008-2011 ニ頸黑頏 2008-2012
<p> <p>
Íåáîëüøîé ñïèñîê:<ol> Íåáîëüøîé ñïèñîê:<ol>