forked from KolibriOS/kolibrios
HTMLv 0.94z: overflow checking, small improve in menu, restore editbox line while opening image
git-svn-id: svn://kolibrios.org@2840 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
c96f15b38e
commit
09b1b8dc7e
@ -13,20 +13,18 @@
|
||||
#include "..\lib\libio_lib.h"
|
||||
#include "..\lib\libimg_lib.h"
|
||||
#include "..\lib\edit_box_lib.h"
|
||||
#include "..\lib\scroll_bar\scroll_lib.h"
|
||||
#include "..\lib\scroll_lib.h"
|
||||
#include "..\lib\ttf_fonts.h"
|
||||
//êàðòèíêè
|
||||
#include "img\toolbar_icons.c"
|
||||
#include "img\URLgoto.txt";
|
||||
|
||||
#define DEBUG_ON 0
|
||||
|
||||
|
||||
//ïåðåìåííûå
|
||||
char URL[4096],
|
||||
editURL[4096],
|
||||
page_links[12000],
|
||||
header[512];
|
||||
header[300];
|
||||
|
||||
struct lines{
|
||||
int visible, all, first, column_max;
|
||||
@ -88,6 +86,7 @@ void main()
|
||||
|
||||
if (m.pkm) && (m.y>WB1.top) && (m.y<Form.height) && (filesize)
|
||||
{
|
||||
SwitchToAnotherThread();
|
||||
CreateThread(#menu_rmb,#stak);
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ int i;
|
||||
|
||||
char download_path[]="/rd/1/.download";
|
||||
char search_path[]="http://nigma.ru/index.php?s=";
|
||||
char version[]=" Text-based Browser 0.94u";
|
||||
char version[]=" Text-based Browser 0.94z";
|
||||
|
||||
|
||||
struct TWebBrowser {
|
||||
@ -85,6 +85,7 @@ void TWebBrowser::Scan(int id)
|
||||
if (!strcmp(#URL + strlen(#URL) - 4, ".gif")) || (!strcmp(#URL + strlen(#URL) - 4, ".png")) || (!strcmp(#URL + strlen(#URL) - 4, ".jpg"))
|
||||
{
|
||||
RunProgram("/sys/media/kiv", #URL);
|
||||
strcpy(#editURL, BrowserHistory.CurrentUrl());
|
||||
strcpy(#URL, BrowserHistory.CurrentUrl());
|
||||
return;
|
||||
}
|
||||
@ -320,14 +321,16 @@ void TWebBrowser::ParseHTML(dword bword){
|
||||
|
||||
debug("Start parsing");
|
||||
|
||||
for ( ; buf+filesize > bword; bword++;) {//ESBYTE[bword]
|
||||
for ( ; buf+filesize > bword; bword++;)
|
||||
{
|
||||
bukva = ESBYTE[bword];
|
||||
switch (bukva) {
|
||||
if (ignor_text) && (bukva<>'<') continue;
|
||||
switch (bukva)
|
||||
{
|
||||
case 0x0a:
|
||||
if (pre_text)
|
||||
{
|
||||
bukva = '';
|
||||
temp = '';
|
||||
bukva = temp = '';
|
||||
goto NEXT_MARK;
|
||||
}
|
||||
case '\9':
|
||||
@ -364,11 +367,14 @@ void TWebBrowser::ParseHTML(dword bword){
|
||||
{
|
||||
bukva = ESBYTE[bword];
|
||||
if (bukva == '\9') || (bukva == '\x0a') || (bukva == '\x0d') bukva = ' ';
|
||||
if (!ignor_param) && (bukva <>' ') strcat(#tag, #bukva);
|
||||
if (!ignor_param) && (bukva <>' ')
|
||||
{
|
||||
if (strlen(#tag)<sizeof(tag)) strcat(#tag, #bukva);
|
||||
}
|
||||
else
|
||||
{
|
||||
ignor_param = true;
|
||||
strcat(#tagparam, #bukva);
|
||||
if (!ignor_text) && (strlen(#tagparam)+1<sizeof(tagparam)) strcat(#tagparam, #bukva);
|
||||
}
|
||||
bword++;
|
||||
}
|
||||
@ -401,7 +407,6 @@ void TWebBrowser::ParseHTML(dword bword){
|
||||
break;
|
||||
|
||||
case '&': //îáðàáîòêà òåãîâ òèïà
|
||||
if (ignor_text) break;
|
||||
bword++;
|
||||
tag='';
|
||||
for (j=0; (ESBYTE[bword] <>';') && (j < 7); j++, bword++;)
|
||||
@ -431,7 +436,6 @@ void TWebBrowser::ParseHTML(dword bword){
|
||||
break;
|
||||
default:
|
||||
DEFAULT_MARK:
|
||||
if (ignor_text) break;
|
||||
if (!pre_text) && (bukva == ' ') && (line[strlen(#line)-1]==' ') break;
|
||||
//
|
||||
if (stolbec + strlen(#line) > lines.column_max)
|
||||
@ -501,7 +505,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
return;
|
||||
}
|
||||
|
||||
IF (ignor_text == 1) return;
|
||||
IF (ignor_text) return;
|
||||
|
||||
IF(!chTag("q")) strcat(#line, "\"");
|
||||
|
||||
@ -559,7 +563,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
|
||||
return;
|
||||
}
|
||||
//////////////////////////
|
||||
|
||||
if (!chTag("a"))
|
||||
{
|
||||
if (rez)
|
||||
@ -597,7 +601,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
}
|
||||
return;
|
||||
}
|
||||
/////////////////////////
|
||||
|
||||
if (!chTag("font"))
|
||||
{
|
||||
if (rez)
|
||||
@ -619,7 +623,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
if (text_color_index > 0) text_color_index--;
|
||||
return;
|
||||
}
|
||||
//////////////////////////
|
||||
|
||||
if(!chTag("tr")) || (!chTag("br")) {
|
||||
TextGoDown(left1, top1, width1);
|
||||
return;
|
||||
@ -634,7 +638,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
IF(rez) TextGoDown(left1, top1 + 10, width1);
|
||||
return;
|
||||
}
|
||||
////////////////////////////
|
||||
|
||||
if (!chTag("h1")) || (!chTag("h2")) || (!chTag("h3")) || (!chTag("h4")) {
|
||||
TextGoDown(left1, top1, width1);
|
||||
IF(rez) TextGoDown(left1, top1 + 10, width1);
|
||||
|
@ -10,17 +10,23 @@ void GetNextParam()
|
||||
i--;
|
||||
}
|
||||
|
||||
IF (kavichki)
|
||||
if (kavichki)
|
||||
{
|
||||
i=strrchr(#tagparam, kavichki);
|
||||
if (i>sizeof(options))
|
||||
strcpy(#options, #tagparam + sizeof(options));
|
||||
else
|
||||
strcpy(#options, #tagparam + i);
|
||||
}
|
||||
ELSE
|
||||
else
|
||||
{
|
||||
WHILE((i > 0) && (tagparam[i] <>'=')) i--; //i=strrchr(#tagparam, '=')+1;
|
||||
i++;
|
||||
if (i>sizeof(options))
|
||||
strcpy(#options, #tagparam + sizeof(options));
|
||||
else
|
||||
strcpy(#options, #tagparam + i);
|
||||
|
||||
strcpy(#options, #tagparam + i); //êîïèðóåì îïöèþ
|
||||
WHILE (options[0] == ' ') strcpy(#options, #options+1);
|
||||
}
|
||||
tagparam[i] = 0x00;
|
||||
@ -31,6 +37,10 @@ void GetNextParam()
|
||||
tagparam[i + 1] = 0x00;
|
||||
}
|
||||
|
||||
strcpy(#parametr, #tagparam + i + 1); //êîïèðóåì ïàðàìåòð
|
||||
if (i>sizeof(parametr))
|
||||
strcpy(#parametr, #tagparam + sizeof(parametr));
|
||||
else
|
||||
strcpy(#parametr, #tagparam + i + 1);
|
||||
|
||||
tagparam[i] = 0x00;
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
:int load_dll3(dword dllname, import_table)
|
||||
{
|
||||
EAX = 68;
|
||||
EBX = 19;
|
||||
ECX = dllname;
|
||||
$int 0x40
|
||||
IF(EAX==0) GOTO exit3;
|
||||
|
||||
EDX = EAX;
|
||||
ESI = import_table;
|
||||
|
||||
@import_loop3:
|
||||
$lodsd
|
||||
IF(EAX==0) GOTO import_done3;
|
||||
$push edx
|
||||
@import_find3:
|
||||
EBX = DSDWORD[EDX];
|
||||
IF(EBX==0) GOTO exit3;
|
||||
$push eax
|
||||
@next3:
|
||||
CL = DSBYTE[EAX];
|
||||
$cmp CL,DSBYTE[EBX];
|
||||
$jnz import_find_next3
|
||||
IF (CL==0) GOTO import_found3;
|
||||
EAX++;
|
||||
EBX++;
|
||||
goto next3;
|
||||
@import_find_next3:
|
||||
$pop eax
|
||||
EDX = EDX + 8;
|
||||
goto import_find3;
|
||||
@import_found3:
|
||||
$pop ebx
|
||||
EAX = DSDWORD[EDX+4];
|
||||
DSDWORD[ESI-4] = EAX;
|
||||
$pop edx
|
||||
|
||||
goto import_loop3;
|
||||
@import_done3:
|
||||
return 0;
|
||||
@exit3:
|
||||
return -1;
|
||||
}
|
@ -1,95 +0,0 @@
|
||||
//lev
|
||||
//:dword boxlib = #abox_lib;
|
||||
:char abox_lib[]="/sys/lib/box_lib.obj";
|
||||
|
||||
:char aboxlib_init[] = "lib_init";
|
||||
:char aScrollbar_v_draw = "scrollbar_v_draw";
|
||||
:char aScrollbar_v_mouse = "scrollbar_v_mouse";
|
||||
:char aScrollbar_h_draw = "scrollbar_h_draw";
|
||||
:char aScrollbar_h_mouse = "scrollbar_h_mouse";
|
||||
:char aVersion_scrollbar = "version_scrollbar";
|
||||
|
||||
dword boxlib_init = #aboxlib_init;
|
||||
dword scrollbar_v_draw = #aScrollbar_v_draw;
|
||||
dword scrollbar_v_mouse = #aScrollbar_v_mouse;
|
||||
dword scrollbar_h_draw = #aScrollbar_h_draw;
|
||||
dword scrollbar_h_mouse = #aScrollbar_h_mouse;
|
||||
:dword version_scrollbar = #aVersion_scrollbar;
|
||||
|
||||
dword sc_am__ = 0x0;
|
||||
dword sc_bm__ = 0x0;
|
||||
|
||||
struct scroll_bar
|
||||
{
|
||||
//scroll_bar:
|
||||
word size_x,// equ [edi]
|
||||
start_x,// equ [edi+2]
|
||||
size_y,// equ [edi+4]
|
||||
start_y;// equ [edi+6]
|
||||
dword btn_height, // equ [edi+8]
|
||||
type,// equ [edi+12]
|
||||
max_area,// equ [edi+16]
|
||||
cur_area,// equ [edi+20]
|
||||
position,// equ [edi+24]
|
||||
bckg_col,// equ [edi+28]
|
||||
frnt_col,// equ [edi+32]
|
||||
line_col,// equ [edi+36]
|
||||
redraw;// equ [edi+40]
|
||||
word delta,// equ [edi+44]
|
||||
delta2,// equ [edi+46]
|
||||
r_size_x,// equ [edi+48]
|
||||
r_start_x,// equ [edi+50]
|
||||
r_size_y,// equ [edi+52]
|
||||
r_start_y;// equ [edi+54]
|
||||
dword m_pos,// equ [edi+56]
|
||||
m_pos_2,// equ [edi+60]
|
||||
m_keys,// equ [edi+64]
|
||||
run_size,// equ [edi+68]
|
||||
position2,// equ [edi+72]
|
||||
work_size,// equ [edi+76]
|
||||
all_redraw,// equ [edi+80]
|
||||
ar_offset;// equ [edi+84]
|
||||
};
|
||||
|
||||
/*scroll_bar scroll1 = {
|
||||
18,//word size_x,
|
||||
200, //start_x,
|
||||
398, //size_y,
|
||||
44,//start_y;
|
||||
18,//dword btn_height,
|
||||
0,//type,
|
||||
115,//max_area, (100+cur_area)
|
||||
15,//cur_area,
|
||||
0,//position,
|
||||
0xeeeeee,//bckg_col,
|
||||
0xD2CED0,//frnt_col,
|
||||
0x555555,//line_col,
|
||||
0,//redraw;
|
||||
0,//word delta,
|
||||
0,//delta2,
|
||||
0,//r_size_x,
|
||||
0,//r_start_x,
|
||||
0,//r_size_y,
|
||||
0,//r_start_y;
|
||||
0,//dword m_pos,
|
||||
0,//m_pos_2,
|
||||
0,//m_keys,
|
||||
0,//run_size,
|
||||
0,//position2,
|
||||
0,//work_size,
|
||||
1,//all_redraw,
|
||||
1//ar_offset;
|
||||
};*/
|
||||
|
||||
//btn_height - ¢ëá®â ¡®ª®¢ëå ª®¯®ª («¥¢ ï ¨ ¯à ¢ ï ¤«ï £®à¨§. ¨ ¢¥àåïï ¨ ¨¦ïï ¤«ï ¢¥àâ.)
|
||||
//type - type - 0-1-2, ®áâ «ìë¥ ¢ë£«ï¤ïâ ª ª 0.
|
||||
//max_area - ®¡« áâì ¬ ªá¨¬ «ì ï, ªâã «ì® ª®£¤ ¥ ¢« §¨â ¢ ®â®¡à ¦ ¥¬ãî ®¡« áâì, â.¥. á«ãç © ªâ¨¢®á⨠ª®¬¯®¥â (¢¥áì ¬ ªá¨¬ «ìë© à §¬¥à ¤®ªã¬¥â )
|
||||
//cur_area - à §¬¥à ¡¥£ãª //®¡« áâì ®â®¡à ¦ ¥¬ ï (ª ª ï ç áâì ¤®ªã¬¥â ¢« §¨â ¢ íªà )
|
||||
//position - ¯®§¨æ¨ï ¡¥£ãª ¨§¬¥ï¥¬ ï ®â 0 ¤® § 票ï (max_area-cur_area)
|
||||
//bckg_col - 梥⠢ãâ२©, ¯à¨¬¥ï¥âáï ¤«ï ®¡« á⥩ ¬¥¦¤ã ¡¥£ãª®¬ ¨ ª®ª ¬¨
|
||||
//frnt_col - 梥â àã¦ë©, ¯à¨¬¥ï¥âáï ¤«ï ®¡« á⥩ ®â«¨çëå ®â ¯à¨¬¥ï¥¬ëå ¢ bckg_col
|
||||
//line_col - 梥⠫¨¨© ¨ áâ५®ª ª®¯ª å
|
||||
//redraw - ¨¤¨ª â®à ¥®¡å®¤¨¬®á⨠¯¥à¥à¨á®¢ª¨ ã¯à ¢«ï¥¬®© ®¡« á⨠ãç¨âë¢ ï ¨§¬¥¥¨¥ position ¨ cur_area
|
||||
//delta2 - ¨¤¨ª â®à § å¢ â 䮪ãá áªà®««¡ ஬ (㤥ঠ¨¥ ¡¥£ãª )
|
||||
//all_redraw - ä« £ ãáâ ¢«¨¢ ¥¬ë© ¢ 1 ¤«ï ¯¥à¥à¨á®¢ª¨ ¢á¥£® ª®¬¯®¥â , ¥á«¨ ¯®áâ ¢¨âì 0, â® ¯¥à¥à¨á®¢ª ¯à®¨á室¨â ⮫쪮 ¤«ï ®¡« á⨠¡¥£ãª . ‚¢¥¤¥® ¤«ï ãáª®à¥¨ï ®âà¨á®¢ª¨, ¯®áª®«ìªã ¥ ¢® ¢á¥å á«ãç ïå âॡã¥âáï ¯à¨ã¤¨â¥ì® ®âà¨á®¢ë¢ âì ¢á¥ ç á⨠ª®¬¯®¥â . Š®£¤ ¢ë§ë¢ ¥âáï ¯® ᮡëâ¨î ¬ëè¨ ¢á¥£¤ ®âà¨á®¢ë¢ ¥âáï á ¬¨¬ ª®¬¯®¥â®¬ á® § 票¥¬ 0.
|
||||
//ar_offset - ¢¥«¨ç¨ á¬¥é¥¨ï ¯à¨ ®¤®ªà ⮬ ¦ ⨨ ¡®ª®¢®© ª®¯ª¨.
|
Loading…
Reference in New Issue
Block a user