Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2809 → Rev 2810

/programs/network/htmlv/browser/HTMLv.c--
21,10 → 21,10
page_links[12000],
header[512];
 
int max_kolvo_strok, //lines_visible
max_kolvo_stolbcov,
count, //lines_all
za_kadrom, //lines_first
int lines_visible,
lines_all,
lines_first,
lines_column_max,
mouse_dd;
 
edit_box edit1= {250,207,16,0xffffff,0x94AECE,0xffffff,0xffffff,0,248,#editURL,#mouse_dd,2,19,19};
42,7 → 42,7
{
int btn;
byte key;
int scroll_size;
int half_scroll_size;
mem_Init();
load_dll2(libio, #libio_init,1);
50,9 → 50,9
load_dll2(boxlib, #edit_box_draw,0);
load_dll2(#abox_lib, #boxlib_init,0);
if (param) copystr(#param,#URL);
else copystr("/sys/index.htm",#URL);
copystr(#URL,#editURL);
if (param) strcpy(#URL, #param);
else strcpy(#URL, "/sys/index.htm");
strcpy(#editURL, #URL);
OpenPage();
 
64,9 → 64,9
{
CASE evMouse:
/*scrollbar_v_mouse (#scroll1); //êîí÷åíûé ñêðîëë ïðèòîðìàæèìàåò, èä¸ì "ñâîèì ïóò¸ì"
if (za_kadrom <> scroll1.position)
if (lines_first <> scroll1.position)
{
za_kadrom = scroll1.position;
lines_first = scroll1.position;
WB1.ParseHTML(buf, filesize);
//break;
};*/
85,33 → 85,32
 
IF (m.vert==65535) //ïðîêðóòêà êîë¸ñèêîì
{
IF (za_kadrom==0) break;
IF (za_kadrom>3) za_kadrom-=2; ELSE za_kadrom=1;
IF (lines_first==0) break;
IF (lines_first>3) lines_first-=2; ELSE lines_first=1;
WB1.Scan(ID1);
break;
}
IF (m.vert==1)
{
IF(max_kolvo_strok+za_kadrom+3>=count) WB1.Scan(181);
IF(lines_visible+lines_first+3>=lines_all) WB1.Scan(181);
ELSE {
za_kadrom+=2;
lines_first+=2;
WB1.Scan(ID2);
}
break;
}
IF (count<max_kolvo_strok) break;
scroll_size = WB1.height - 16 * max_kolvo_strok / count - 3;
IF (lines_all<lines_visible) break;
half_scroll_size = WB1.height - 16 * lines_visible / lines_all - 3 /2;
if (m.x>=WB1.width-14) && (m.x<=WB1.width+6)
&& (m.y>WB1.top+16) && (m.y<WB1.top+WB1.height-16)
&& (count>max_kolvo_strok) while (m.lkm)
&& (lines_all>lines_visible) while (m.lkm)
{
IF (scroll_size/2+WB1.top>m.y) || (m.y<0) || (m.y>4000) m.y=scroll_size/2+WB1.top; //åñëè êóðñîð íàä îêíîì
btn=za_kadrom; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
j= scroll_size/2;
za_kadrom = m.y -j -WB1.top * count / WB1.height;
IF (max_kolvo_strok+za_kadrom>count) za_kadrom=count-max_kolvo_strok;
IF (btn<>za_kadrom) WB1.ParseHTML(buf, filesize); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
IF (half_scroll_size/2+WB1.top>m.y) || (m.y<0) || (m.y>4000) m.y=half_scroll_size/2+WB1.top; //åñëè êóðñîð íàä îêíîì
btn=lines_first; //ñîõðàíÿåì ñòàðîå êîëè÷åñòâî
lines_first = m.y -half_scroll_size -WB1.top * lines_all / WB1.height;
IF (lines_visible+lines_first>lines_all) lines_first=lines_all-lines_visible;
IF (btn<>lines_first) WB1.ParseHTML(buf, filesize); //÷òîá ëèøíèé ðàç íå ïåðåðèñîâûâàòü
m.get();
}
 
147,10 → 146,10
{
if (GetProcessSlot(downloader_id)<>0) break;
downloader_id=0;
lines_first = lines_all = 0;
ReadHtml();
if (filesize) wintodos(buf);
Draw_Window();
//WB1.ShowPage(#URL);
}
}
}
159,16 → 158,17
 
void Draw_Window()
{
int j;
DefineAndDrawWindow(215,100,640,480,0x73,0x00E4DFE1,0,0,0);
 
GetProcessInfo(#Form, SelfInfo);
IF (Form.status_window>2) //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì
if (Form.status_window>2) //åñëè ñâåðíóòî â çàãîëîâîê, íè÷åãî íå ðèñóåì
{
DrawTitle(#header);
return;
}
IF (Form.height<120) MoveSize(OLD,OLD,OLD,120);
IF (Form.width<280) MoveSize(OLD,OLD,280,OLD);
if (Form.height<120) MoveSize(OLD,OLD,OLD,120);
if (Form.width<280) MoveSize(OLD,OLD,280,OLD);
PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal);
if (GetProcessSlot(downloader_id)<>0) PutImage(#stop_btn,24,24,88,10);
176,7 → 176,7
DrawBar(200,0,onLeft(200,9),43,0xE4DFE1); //çàêðàøèâàåì ôîí ïîä òóëáàðîì
DrawBar(0,42,onLeft(5,4),1,0xE2DBDC); //âûïóêëîñòü
DrawBar(0,43,onLeft(5,4),1,0xD2CED0); //âûïóêëîñòü
FOR (j=0; j<5; j++) DefineButton(j*37+11, 7, 29, 29, 300+j+BT_HIDE, 0x00E4DFE1);
for (j=0; j<5; j++) DefineButton(j*37+11, 7, 29, 29, 300+j+BT_HIDE, 0x00E4DFE1);
PutImage(#URLgoto,40,19,onLeft(57,0),14);
DefineButton(onLeft(37,0),15, 18, 16, GOTOURL+BT_HIDE, 0xE4DFE1);
DefineButton(onLeft(56,0),15, 17, 16, SEARCHWEB+BT_HIDE, 0xE4DFE1);
187,8 → 187,8
WB1.top=44;
WB1.width=Form.width-13;
WB1.height=onTop(43,5);
max_kolvo_stolbcov = WB1.width - 30 / 6;
max_kolvo_strok = WB1.height - 3 / 10 - 2;
lines_column_max = WB1.width - 30 / 6;
lines_visible = WB1.height - 3 / 10 - 2;
 
WB1.ShowPage(#URL);
}
/programs/network/htmlv/browser/TWB.h
1,15 → 1,15
 
int downloader_id;
 
dword j,
dword
buf,
filesize,
blink = 400;
blink;
int i;
 
char download_path[]="/rd/1/.download";
char search_path[]="http://nigma.ru/index.php?s=";
char version[]=" Text-based Browser 0.93e";
char version[]=" Text-based Browser 0.94";
 
 
struct TWebBrowser {
60,13 → 60,11
//#1
if (URL[0] == '#')
{
copystr(#URL+find_symbol(#URL, '#'), #anchor);
strcpy(#anchor, #URL+find_symbol(#URL, '#'));
copystr(BrowserHistory.CurrentUrl(), #URL);
//copystr(#editURL, #URL + strlen(#URL));
//copystr(#URL, #editURL);
strcpy(#URL, BrowserHistory.CurrentUrl());
za_kadrom=count-max_kolvo_strok;
lines_first=lines_all-lines_visible;
ShowPage(#URL);
return;
}
73,7 → 71,7
//liner.ru#1
if (find_symbol(#URL, '#')<>-1)
{
copystr(#URL+find_symbol(#URL, '#'), #anchor);
strcpy(#anchor, #URL+find_symbol(#URL, '#'));
URL[find_symbol(#URL, '#')-1] = 0x00; //çàãëóøêà
}
 
82,7 → 80,7
if (!strcmp(#URL + strlen(#URL) - 4, ".gif")) || (!strcmp(#URL + strlen(#URL) - 4, ".png")) || (!strcmp(#URL + strlen(#URL) - 4, ".jpg"))
{
RunProgram("/sys/media/kiv", #URL);
copystr(BrowserHistory.CurrentUrl(), #URL);
strcpy(#URL, BrowserHistory.CurrentUrl());
return;
}
 
90,7 → 88,7
return;
}
IF(count < max_kolvo_strok) SWITCH(id) //åñëè ìàëî ñòðîê èãíîðèðóåì íåêîòîðûå êíîïêè
IF(lines_all < lines_visible) SWITCH(id) //åñëè ìàëî ñòðîê èãíîðèðóåì íåêîòîðûå êíîïêè
{ CASE 183: CASE 184: CASE 180: CASE 181: return; }
switch (id)
127,7 → 125,7
Draw_Window();
return;
}
anchor_line_num=za_kadrom; //âåñ¸ëûé êîñòûëü :Ð
anchor_line_num=lines_first; //âåñ¸ëûé êîñòûëü :Ð
anchor[0]='|';
OpenPage();
return;
139,44 → 137,44
return;
case HOME:
copystr("http://kolibri-os.narod.ru", #editURL);
strcpy(#editURL, "http://kolibri-os.narod.ru");
case GOTOURL:
case 0x0D: //enter
copystr(#editURL, #URL);
strcpy(#URL, #editURL);
OpenPage();
return;
case 173: //ctrl+enter
case SEARCHWEB:
copystr(#search_path, #URL);
copystr(#editURL, #URL + strlen(#URL));
strcpy(#URL, #search_path);
strcat(#URL, #editURL);
OpenPage();
return;
 
case ID1: //ìîòàåì ââåðõ
IF(za_kadrom <= 0) return;
za_kadrom--;
IF(lines_first <= 0) return;
lines_first--;
break;
case ID2: //ìîòàåì âíèç
IF(max_kolvo_strok + za_kadrom >= count) return;
za_kadrom++;
IF(lines_visible + lines_first >= lines_all) return;
lines_first++;
break;
case 183: //PgDown
IF(za_kadrom == count - max_kolvo_strok) return;
za_kadrom += max_kolvo_strok + 2;
IF(max_kolvo_strok + za_kadrom > count) za_kadrom = count - max_kolvo_strok;
IF(lines_first == lines_all - lines_visible) return;
lines_first += lines_visible + 2;
IF(lines_visible + lines_first > lines_all) lines_first = lines_all - lines_visible;
BREAK;
case 184: //PgUp
IF(za_kadrom == 0) RETURN;
za_kadrom -= max_kolvo_strok - 2;
IF(za_kadrom < 0) za_kadrom = 0;
IF(lines_first == 0) RETURN;
lines_first -= lines_visible - 2;
IF(lines_first < 0) lines_first = 0;
BREAK;
case 180: //home
IF(za_kadrom == 0) RETURN;
za_kadrom = 0;
IF(lines_first == 0) RETURN;
lines_first = 0;
BREAK;
case 181: //end
IF (za_kadrom == count - max_kolvo_strok) RETURN;
za_kadrom = count - max_kolvo_strok;
IF (lines_first == lines_all - lines_visible) RETURN;
lines_first = lines_all - lines_visible;
BREAK;
default:
RETURN;
187,12 → 185,12
 
 
void GetNewUrl(){
IF (!strcmp(get_URL_part(2),"./")) copystr(#URL+2,#URL); //èãíîðèì :)
IF (!strcmp(get_URL_part(2),"./")) strcpy(#URL, #URL+2); //èãíîðèì :)
if (URL[0] <> '/')
&& (strcmp(get_URL_part(5),"http:")<>0) && (strcmp(get_URL_part(5),"mailt")<>0) && (strcmp(get_URL_part(5),"ftp:/")<>0)
{
copystr(BrowserHistory.CurrentUrl(), #editURL); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû
strcpy(#editURL, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû
_CUT_ST_LEVEL_MARK:
203,14 → 201,14
IF (!strcmp(get_URL_part(3),"../")) //íà óðîâåíü ââåðõ
{
copystr(#URL+3,#URL);
strcpy(#URL,#URL+3);
editURL[find_symbol(#editURL, '/')-1] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
goto _CUT_ST_LEVEL_MARK;
}
if (editURL[strlen(#editURL)-1]<>'/') copystr("/", #editURL + strlen(#editURL));
copystr(#URL, #editURL + strlen(#editURL)); //êëåèì íîâûé àäðåñ
copystr(#editURL, #URL);
if (editURL[strlen(#editURL)-1]<>'/') strcat(#editURL, "/");
strcat(#editURL, #URL); //êëåèì íîâûé àäðåñ
strcpy(#URL, #editURL);
}
}
 
239,12 → 237,10
{
if (GetProcessSlot(downloader_id)<>0) PutPaletteImage(#toolbar,200,42,0,0,8,#toolbar_pal);
KillProcess(downloader_id);
copystr(#URL, #editURL);
strcpy(#editURL, #URL);
BrowserHistory.AddUrl();
za_kadrom = count = 0;
if (!strcmp(get_URL_part(5),"http:")))
{
copystr(#version, #header);
KillProcess(downloader_id); //óáèâàåì ñòàðûé ïðîöåññ
DeleteFile(#download_path);
IF (URL[strlen(#URL)-1]=='/') URL[strlen(#URL)-1]='';
262,6 → 258,7
Draw_Window();
return;
}
lines_first = lines_all = 0;
ReadHtml();
if (filesize) wintodos(buf);
WB1.ShowPage(#URL);
294,25 → 291,29
 
void TWebBrowser::ParseHTML(dword bword, fsize){
word bukva[1];
int j;
byte ignor_param = 0;
char temp[768];
stroka = -za_kadrom;
stroka = -lines_first;
stolbec = 0;
FOR(j = 400; j < blink + 1; j++;) DeleteButton(j);
for (j = 400; j < blink + 1; j++;) DeleteButton(j);
blink = 400;
 
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; //îáíóëÿåì òåãè
link_color = 0x0000FF;
bg_color = 0xFFFFFF;
blink = 400;
line = '';
copystr("|", #page_links);
copystr(#version, #header);
IF(!strcmp(#URL + strlen(#URL) - 4, ".txt"))
strcpy(#page_links,"|");
strcpy(#header,#version);
if (!strcmp(#URL + strlen(#URL) - 4, ".txt"))
{
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 (bword = buf; buf + fsize > bword; bword++;) {
bukva = ESBYTE[bword];
switch (bukva) {
328,7 → 329,7
tab_len=strlen(#line)/8;
tab_len=tab_len*8;
tab_len=8+tab_len-strlen(#line);
for (i=0; i<tab_len; i++;) copystr(" ", #line + strlen(#line));
for (i=0; i<tab_len; i++;) strcat(#line," ");
break;
}
case 0x0d:
336,26 → 337,27
goto DEFAULT_MARK;
case '<':
bword++; //ïðîìîòàåì ñèìâîë <
IF(ESBYTE[bword] == '!') //ôèëüòðàöèÿ âíóòðè <!-- -->, äåðçêî
if (ESBYTE[bword] == '!') //ôèëüòðàöèÿ âíóòðè <!-- -->, äåðçêî
{
bword++;
IF(ESBYTE[bword] == '-') {
if (ESBYTE[bword] == '-') {
HH_: do {
bword++;
IF(bword >= buf + fsize) break 1;
} while (ESBYTE[bword] <>'-');
bword++;
IF(ESBYTE[bword] <>'-') GOTO HH_;
if (ESBYTE[bword] <>'-') goto HH_;
}
}
WHILE (ESBYTE[bword] <>'>') && (bword < buf + fsize) //ïîëó÷àåì òåã è åãî ïàðàìåòðû
while (ESBYTE[bword] <>'>') && (bword < buf + fsize) //ïîëó÷àåì òåã è åãî ïàðàìåòðû
{
bukva = ESBYTE[bword];
IF(bukva == '\9') || (bukva == '\x0a') || (bukva == '\x0d') bukva = ' ';
IF(!ignor_param) && (bukva <>' ') copystr(#bukva, #tag + strlen(#tag));
ELSE {
if (bukva == '\9') || (bukva == '\x0a') || (bukva == '\x0d') bukva = ' ';
if (!ignor_param) && (bukva <>' ') strcat(#tag, #bukva);
else
{
ignor_param = true;
copystr(#bukva, #tagparam + strlen(#tagparam));
strcat(#tagparam, #bukva);
}
bword++;
}
362,8 → 364,8
lowcase(#tag);
lowcase(#tagparam);
 
IF (tag[strlen(#tag)-1]=='/') tag[strlen(#tag)-1]=''; //íåáîëüøîé ôèêñ äëÿ ðàáîòû ñ XHTML-òåãàìè òèïà br/
IF(strlen(#tagparam) > 0) && (strlen(#tagparam) < 4000) GetNextParam();
if (tag[strlen(#tag)-1]=='/') tag[strlen(#tag)-1]=''; //íåáîëüøîé ôèêñ äëÿ ðàáîòû ñ XHTML-òåãàìè òèïà br/
if (strlen(#tagparam) > 0) && (strlen(#tagparam) < 4000) GetNextParam();
WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //îáðàáîòêà òåãîâ
 
line = tag = parametr = tagparam = ignor_param = 0; //âñ¸ îáíóëÿåì
370,80 → 372,81
break;
case '=': //ïîääåðæêà øàéòàíñêîé êîäèðîâêè ñòðàíèö, ñîõðàí¸ííûõ ÷åðåç ÈÅ7
IF(strcmp(#URL + strlen(#URL) - 4, ".mht")<>0) goto DEFAULT_MARK;
if (strcmp(#URL + strlen(#URL) - 4, ".mht")<>0) goto DEFAULT_MARK;
 
bword++;
bukva=ESBYTE[bword];
copystr(#bukva, #temp);
strcpy(#temp,#bukva);
 
bword++;
bukva=ESBYTE[bword];
copystr(#bukva, #temp + strlen(#temp));
strcat(#temp,#bukva);
bukva=Hex2Symb(#temp);
IF (bukva) goto DEFAULT_MARK;
if (bukva) goto DEFAULT_MARK;
break;
case '&': //îáðàáîòêà òåãîâ òèïà &nbsp;
IF(ignor_text) break;
if (ignor_text) break;
bword++;
tag='';
FOR (j=0; (ESBYTE[bword] <>';') && (j < 7); j++; bword++;)
for (j=0; (ESBYTE[bword] <>';') && (j < 7); j++, bword++;)
{
bukva = ESBYTE[bword];
copystr(#bukva, #tag + strlen(#tag));
strcat(#tag, #bukva);
}
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(#tag, unicode_tags[j]))
{
copystr(unicode_tags[j+1], #line + strlen(#line));
strcat(#line, unicode_tags[j+1]);
break 1;
}
}
rez = StrToInt(#tag + 1) - 1040;
IF(tag[1] == '1') && (rez>=0) && (rez<=72) && (strlen(#tag) == 5)
if (tag[1] == '1') && (rez>=0) && (rez<=72) && (strlen(#tag) == 5)
{
bukva = unicode_chars[rez];
GOTO DEFAULT_MARK; //îáðàáàòûâàåì áóêâó
}
//WriteDebug(#tag); //òýã íå íàéäåí - âûâîäèì íà äîñêó îòëàäêè
copystr(#tag, #line + strlen(#line)); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò
//debug(#tag); //òýã íå íàéäåí - âûâîäèì íà äîñêó îòëàäêè
strcat(#line,#tag); //âûâîäèì íà ýêðàí íåîáðàáîòàííûé òåã, òàê áðàóçåðû çà÷åì-òî äåëàþò
break;
default:
DEFAULT_MARK:
IF(ignor_text) break;
IF(pre_text == 0) && (bukva == ' ') && (strcmp(#line + strlen(#line) - 1, " ") == 0) continue;
IF(!pre_text) && (bukva == ' ') && (!strcmp(#line + strlen(#line) - 1, " ")) continue;
//
if (stolbec + strlen(#line) > max_kolvo_stolbcov)
if (stolbec + strlen(#line) >lines_column_max)
{
copystr(#line + find_symbol(#line, ' '), #temp); //ïåðåíîñ ïî ñëîâàì
strcpy(#temp, #line + find_symbol(#line, ' ')); //ïåðåíîñ ïî ñëîâàì
line[find_symbol(#line, ' ')] = 0x00;
NEXT_MARK: IF(stroka - 1 > max_kolvo_strok) && (za_kadrom <>0) break 1; //óõîäèì...
NEXT_MARK:
IF(stroka - 1 > lines_visible) && (lines_first <>0) break 1; //óõîäèì...
WhatTextStyle(left + 5, stroka * 10 + top + 5, width - 20); //âûâîä ñòðîêè
TextGoDown(left + 5, stroka * 10 + top + 5, width - 20); //çàêðàøèâàåì ñëåäóùóþ ñòðîêó
copystr(#temp, #line);
strcpy(#line, #temp);
}
IF(pre_text == 0) && (bukva == ' ') && (stolbec == 0) && (strlen(#line) == 0) CONTINUE;
copystr(#bukva, #line + strlen(#line));
if (!pre_text) && (bukva == ' ') && (!stolbec) && (!line) CONTINUE;
strcat(#line, #bukva);
}
}
if (strcmp(#URL + strlen(#URL) - 4, ".txt")<>0) && (body_present==0)
if (strcmp(#URL + strlen(#URL) - 4, ".txt")<>0) && (!body_present)
DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó åñëè êàêîé-òî ðàõèò íå ñîçäàë òåã áîäè
 
if (max_kolvo_strok * 10 + 25 <= height)
DrawBar(left, max_kolvo_strok * 10 + top + 25, width - 15, -max_kolvo_strok * 10 + height - 25, bg_color);
if (lines_visible * 10 + 25 <= height)
DrawBar(left, lines_visible * 10 + top + 25, width - 15, -lines_visible * 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;
if (lines_first == 0) lines_all = stroka;
if (anchor)
{
anchor[0]='';
za_kadrom=anchor_line_num;
anchor='';
lines_first=anchor_line_num;
ParseHTML(buf, filesize);
}
 
466,7 → 469,7
IF (kavichki)
{
i=find_symbol(#tagparam, kavichki);
copystr(#tagparam + i, #options);
strcpy(#options, #tagparam + i);
}
ELSE
{
473,8 → 476,8
WHILE((i > 0) && (tagparam[i] <>'=')) i--; //i=find_symbol(#tagparam, '=')+1;
i++;
copystr(#tagparam + i, #options); //êîïèðóåì îïöèþ
WHILE (options[0] == ' ') copystr(#options + 1, #options);
strcpy(#options, #tagparam + i); //êîïèðóåì îïöèþ
WHILE (options[0] == ' ') strcpy(#options, #options+1);
}
tagparam[i] = 0x00;
 
487,7 → 490,7
}
}
 
copystr(#tagparam + i + 1, #parametr); //êîïèðóåì ïàðàìåòð
strcpy(#parametr, #tagparam + i + 1); //êîïèðóåì ïàðàìåòð
tagparam[i] = 0x00;
}
 
499,13 → 502,13
 
dword image=0;
char temp[4096];
int w, h, img_za_kadrom=0;
int w, h, img_lines_first=0;
 
//ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ
IF(tag[0] == '/')
{
rez = 0;
copystr(#tag + 1, #tag);
strcpy(#tag, #tag+1);
}
ELSE
rez = 1;
519,9 → 522,9
 
if(!chTag("title")) && (!rez)
{
copystr(#line, #header);
copystr(" -", #header + strlen(#header));
copystr(#version, #header + strlen(#header));
strcpy(#header, #line);
strcat(#header, " -");
strcat(#header, #version);
if (stroka==0) DrawTitle(#header);
return;
}
530,10 → 533,10
//
 
//
IF(!chTag("q")) copystr("\"", #line + strlen(#line));
IF(!chTag("q")) strcat(#line, "\"");
//âûâîä íà ýêðàí
if (stroka >= 0) && (stroka - 2 < max_kolvo_strok) && (line) && (!anchor)
if (stroka >= 0) && (stroka - 2 < lines_visible) && (line) && (!anchor)
{
WriteText(stolbec * 6 + left1, top1, 0x80, text_colors[text_color_index], #line, 0); //ìîæåò òóò ðèñîâàòü áåëóþ ñòðîêó?
IF (b_text) { $add ebx, 1<<16 $int 0x40 }
553,7 → 556,7
{
if (!strcmp(#anchor, #options))
{
anchor_line_num=za_kadrom+stroka;
anchor_line_num=lines_first+stroka;
}
}
 
592,20 → 595,20
_A_MARK:
if (!strcmp(#parametr, "href="))
{
if (stroka - 1 > max_kolvo_strok) || (stroka < -2) return;
if (stroka - 1 > lines_visible) || (stroka < -2) return;
if (link == 1) text_color_index--; //åñëè êàêîé-òî äîëáî¸á íå çàêðûë òýã
link = 1;
blink++;
text_color_index++;
text_colors[text_color_index] = link_color;
copystr(#options, #page_links + strlen(#page_links));
copystr("|", #page_links + strlen(#page_links));
strcat(#page_links, #options);
strcat(#page_links, "|");
}
if (anchor) && (!strcmp(#parametr, "name="))
{
if (!strcmp(#anchor, #options))
{
anchor_line_num=za_kadrom+stroka;
anchor_line_num=lines_first+stroka;
}
}
if (tagparam)
623,7 → 626,7
/////////////////////////
if (!chTag("font"))
{
IF (stroka - 1 > max_kolvo_strok) return;
IF (stroka - 1 > lines_visible) return;
COL_MARK:
if (strcmp(#parametr, "color=") == 0) //&& (parametr[1] == '#')
{
638,15 → 641,15
return;
}
//////////////////////////
IF(!chTag("tr")) || (!chTag("br")) {
if(!chTag("tr")) || (!chTag("br")) {
TextGoDown(left1, top1, width1);
return;
}
IF(!chTag("div")) {
if (!chTag("div")) {
IF(oldtag[0] <>'h') TextGoDown(left1, top1, width1);
return;
}
IF(!chTag("p")) {
if (!chTag("p")) {
IF(oldtag[0] == 'h') return;
TextGoDown(left1, top1, width1);
IF(rez) TextGoDown(left1, top1 + 10, width1);
653,19 → 656,22
return;
}
////////////////////////////
IF(!chTag("h1")) || (!chTag("h2")) || (!chTag("h3")) || (!chTag("h4")) {
if (!chTag("h1")) || (!chTag("h2")) || (!chTag("h3")) || (!chTag("h4")) {
TextGoDown(left1, top1, width1);
IF(rez) TextGoDown(left1, top1 + 10, width1);
b_text = rez;
copystr(#tag, #oldtag);
strcpy(#oldtag, #tag);
return;
} ELSE copystr("", #oldtag);
IF(!chTag("b")) || (!chTag("strong")) || (!chTag("big")) {
}
else
oldtag='';
if (!chTag("b")) || (!chTag("strong")) || (!chTag("big")) {
b_text = rez;
return;
}
////////////////////////////
IF(!chTag("i")) || (!chTag("em")) || (!chTag("subtitle")) {
if(!chTag("i")) || (!chTag("em")) || (!chTag("subtitle")) {
i_text = rez;
return;
}
683,7 → 689,7
li_text = rez;
IF(rez == 0) return;
TextGoDown(left1, top1, width1);
IF(stroka > -1) && (stroka - 2 < max_kolvo_strok) DrawBar(li_tab * 5 * 6 + left1 - 5, top1 + 12, 2, 2, 0);
IF(stroka > -1) && (stroka - 2 < lines_visible) DrawBar(li_tab * 5 * 6 + left1 - 5, top1 + 12, 2, 2, 0);
return;
}
////////////////////////////
711,9 → 717,9
IMG_TAG:
IF (strcmp(#parametr,"src=")==0) //íàäî îáúåäèíèòü ñ GetNewUrl()
{
copystr(BrowserHistory.CurrentUrl(), #temp); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû
strcpy(#temp, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû
temp[find_symbol(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
copystr(#options,#temp+strlen(#temp));
strcat(#temp, #options);
image=load_image(#temp);
w=DSWORD[image+4];
735,12 → 741,12
 
if (top1<WB1.top) //åñëè ÷àñòü èçîáðàæåíèÿ ñâåðõó
{
img_za_kadrom=WB1.top-top1;
h=h-img_za_kadrom;
img_lines_first=WB1.top-top1;
h=h-img_lines_first;
top1=WB1.top;
}
if (top1>WB1.top+WB1.height-h-15) //åñëè ÷àñòü èçîáðàæåíèÿ ñíèçó IF (stroka - 2 < max_kolvo_strok)
if (top1>WB1.top+WB1.height-h-15) //åñëè ÷àñòü èçîáðàæåíèÿ ñíèçó IF (stroka - 2 < lines_visible)
{
h=WB1.top+WB1.height-top1-15;
}
747,7 → 753,7
 
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_lines_first);
DrawBar(left1+w - 5, top1 + 10, width1-w + 5, h, bg_color);
IF (link)
{
767,7 → 773,7
META:
if (!strcmp(#parametr, "charset=")) || (!strcmp(#parametr, "content=")) || (!strcmp(#parametr, "encoding="))
{
copystr(#options[find_symbol(#options, '=')],#options); //ïîèñê â content=
strcpy(#options, #options[find_symbol(#options, '=')]); //ïîèñê â content=
 
IF (!strcmp(#options,"utf-8")) || (!strcmp(#options,"utf8"))
{
784,7 → 790,7
ReadHtml();
}
}
IF(tagparam)
if (tagparam)
{
GetNextParam();
goto META;
800,7 → 806,7
IF(blq_text == 1) stolbec = 8;
ELSE stolbec = 0;
IF(li_text == 1) stolbec = li_tab * 5;
IF(stroka >= 0) && (stroka - 2 < max_kolvo_strok) && (!anchor) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, bg_color);
IF(stroka >= 0) && (stroka - 2 < lines_visible) && (!anchor) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, bg_color);
}
 
 
807,9 → 813,9
//ñêðîëë
void TWebBrowser::DrawScroller() //íå îïòèìàëüíàÿ îòðèñîâêà, íî çàòî â îäíîì ìåñòå
{
scroll1.max_area = count;
scroll1.cur_area = max_kolvo_strok;
scroll1.position = za_kadrom;
scroll1.max_area = lines_all;
scroll1.cur_area = lines_visible;
scroll1.position = lines_first;
 
scroll1.all_redraw=1;
scroll1.start_x=Form.width-28; //left + width - 15
/programs/network/htmlv/browser/include/history.h
30,11 → 30,11
history_current/=2;
for (i=0; i<history_current; i++;)
{
copystr(#history_list[MAX_HISTORY_NUM-i].Item, #history_list[i].Item);
strcpy(#history_list[i].Item, #history_list[MAX_HISTORY_NUM-i].Item);
}
}
history_current++;
copystr(#URL,#history_list[history_current].Item);
strcpy(#history_list[history_current].Item, #URL);
history_num=history_current;
}
 
44,7 → 44,7
if (history_current<=1) return 0;
history_current--;
copystr(#history_list[history_current].Item,#URL);
strcpy(#URL, #history_list[history_current].Item);
return 1;
}
 
53,6 → 53,6
{
if (history_current==history_num) return 0;
history_current++;
copystr(#history_list[history_current].Item,#URL);
strcpy(#URL, #history_list[history_current].Item);
return 1;
}
/programs/network/htmlv/browser/include/some_code.h
17,7 → 17,7
 
dword get_URL_part(byte len) {
char temp1[1000];
copystr(#URL, #temp1);
strcpy(#temp1, #URL);
temp1[len] = 0x00;
return #temp1;
}
27,7 → 27,7
 
void GetURLfromPageLinks(int id)
{
j = 0;
int j = 0;
for (i = 0; i <= id - 401; i++)
{
do j++;
34,7 → 34,7
while (page_links[j] <>'|');
}
page_links[j] = 0x00;
copystr(#page_links[find_symbol(#page_links, '|')], #URL);
strcpy(#URL, #page_links[find_symbol(#page_links, '|')]);
}
 
 
/programs/network/htmlv/lib/kolibri.h--
30,7 → 30,8
#define false 0
//-------------------------------------------------------------------------
 
struct mouse{
struct mouse
{
dword x,y,lkm,pkm,hor,vert;
void get();
};
65,10 → 66,12
}
 
 
struct system_colors{
struct system_colors
{
dword frame,grab,grab_button,grab_button_text,grab_text,work,work_button,work_button_text,work_text,work_graph;
void get();
};
 
void system_colors::get()
{
EAX = 48;
80,22 → 83,25
 
//------------------------------------------------------------------------------
 
inline fastcall dword WaitEvent(){
inline fastcall dword WaitEvent()
{
$mov eax,10
$int 0x40
}
 
inline fastcall dword CheckEvent(){
inline fastcall dword CheckEvent()
{
$mov eax,11
$int 0x40
}
 
inline fastcall dword WaitEventTimeout(dword EBX){
inline fastcall dword WaitEventTimeout( EBX)
{
$mov eax,23
$int 0x40
}
inline fastcall SetEventMask(dword EBX)
inline fastcall SetEventMask( EBX)
{
$mov eax,40
$int 0x40
109,7 → 115,8
}
 
 
inline fastcall word GetKey(){ //Gluk fix
inline fastcall word GetKey() //+Gluk fix
{
$push edx
@getkey:
$mov eax,2
127,21 → 134,24
}
 
 
inline fastcall Pause(dword EBX)
{ // ã§ , ¢ á®âëå ¤®«ïå ᥪ㭤ë EBX = value
inline fastcall Pause( EBX)
{
$mov eax, 5
$int 0x40
}
 
//==================================================================
//------------------------------------------------------------------------------
 
inline fastcall word GetButtonID(){
inline fastcall word GetButtonID()
{
$mov eax,17
$int 0x40
$shr eax,8
}
 
struct proc_info{
struct proc_info
{
#define SelfInfo -1
dword use_cpu;
word pos_in_stack,num_slot,rezerv1;
char name[11];
150,12 → 160,11
word status_slot,rezerv3;
dword work_left,work_top,work_width,work_height;
char status_window;
void GetInfo(dword ECX);
void GetInfo( ECX);
byte reserved[1024-71];
#define SelfInfo -1
};
 
void GetProcessInfo(dword EBX, ECX)
void GetProcessInfo( EBX, ECX)
{
$mov eax,9;
$int 0x40
176,28 → 185,30
}
 
 
inline fastcall ExitProcess(){
inline fastcall ExitProcess()
{
$mov eax,-1;
$int 0x40
}
 
inline fastcall int KillProcess(dword ECX){
inline fastcall int KillProcess( ECX)
{
$mov eax,18;
$mov ebx,18;
$int 0x40
}
 
//==================================================================
//------------------------------------------------------------------------------
 
//eax = ÿçûê ñèñòåìû (1=eng, 2=fi, 3=ger, 4=rus)
inline fastcall int GetSystemLanguage(){
inline fastcall int GetSystemLanguage()
{
EAX = 26;
EBX = 5;
$int 0x40
RETURN EAX;
}
 
inline fastcall void DrawTitle(dword ECX)
inline fastcall void DrawTitle( ECX)
{
EAX = 71;
EBX = 1;
228,13 → 239,13
$and eax,0x0000FFFF
}
 
inline fastcall MoveSize(dword EBX,ECX,EDX,ESI)
inline fastcall MoveSize( EBX,ECX,EDX,ESI)
{
EAX = 67;
$int 0x40
}
 
inline fastcall dword LoadLibrary(dword ECX)
inline fastcall dword LoadLibrary( ECX)
{
$mov eax, 68
$mov ebx, 19
242,7 → 253,8
}
 
//------------------------------------------------------------------------------
inline fastcall dword strlen(dword EDI){
inline fastcall dword strlen( EDI)
{
EAX=0;
ECX=-1;
$REPNE $SCASB
249,25 → 261,47
EAX-=2+ECX;
}
 
inline fastcall copystr(dword ESI,EDI)
 
inline fastcall strcpy( EDI, ESI)
{
$cld
l1:
l2:
$lodsb
$stosb
$test al,al
$jnz l1
$jnz l2
}
 
 
byte fastcall TestBit(EAX, CL)
inline fastcall strcat( EDI, ESI)
{
$shr eax,cl
$and eax,1
asm {
MOV EBX, EDI
XOR ECX, ECX
XOR EAX, EAX
DEC ECX
REPNE SCASB
DEC EDI
MOV EDX, EDI
MOV EDI, ESI
XOR ECX, ECX
XOR EAX, EAX
DEC ECX
REPNE SCASB
XOR ECX, 0FFFFFFFFH
MOV EDI, EDX
MOV EDX, ECX
MOV EAX, EDI
SHR ECX, 2
REP MOVSD
MOV ECX, EDX
AND ECX, 3
REP MOVSB
MOV EAX, EBX
}
}
 
char buffer[11]="";
inline fastcall dword IntToStr(dword ESI)
inline fastcall dword IntToStr( ESI)
{
$mov edi, #buffer
$mov ecx, 10
334,7 → 368,7
}
 
 
inline fastcall dword upcase(dword ESI)
inline fastcall dword upcase( ESI)
{
do{
AL=DSBYTE[ESI];
355,7 → 389,16
}while(AL!=0);
}
 
byte fastcall TestBit( EAX, CL)
{
$shr eax,cl
$and eax,1
}
 
//------------------------------------------------------------------------------
 
 
 
void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaColour,byte headerType,dword headerColour,EDI)
{
EAX = 12; // function 12:tell os about windowdraw
375,7 → 418,7
}
 
 
inline fastcall int CreateThread(dword ECX,EDX)
inline fastcall int CreateThread( ECX,EDX)
{
EAX = 51;
EBX = 1;
382,7 → 425,7
$int 0x40
}
 
inline fastcall int GetSlot(dword ECX)
inline fastcall int GetSlot( ECX)
{
EAX = 18;
EBX = 21;
430,7 → 473,8
$int 0x40
}
 
inline fastcall void PutPixel(dword EBX,ECX,EDX){
inline fastcall void PutPixel( EBX,ECX,EDX)
{
EAX=1;
$int 0x40
}
455,7 → 499,7
$int 0x40
}
 
inline fastcall void DeleteButton(dword EDX)
inline fastcall void DeleteButton( EDX)
{
EAX = 8;
EDX += BT_DEL;
500,7 → 544,7
 
//------------------------------------------------------------------------------
 
inline fastcall void debug(dword EDX)
inline fastcall void debug( EDX)
{
$push ebx
$push ecx