HTMLv 0.94e: kolibri.h cleaning, and forking strings.h
git-svn-id: svn://kolibrios.org@2825 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
7567859abf
commit
4b416faa6e
@ -4,6 +4,7 @@
|
||||
//home icon - rachel fu, GPL licence
|
||||
|
||||
#include "..\lib\kolibri.h"
|
||||
#include "..\lib\strings.h"
|
||||
#include "..\lib\encoding.h"
|
||||
#include "..\lib\file_system.h"
|
||||
#include "..\lib\mem.h"
|
||||
@ -18,6 +19,8 @@
|
||||
#include "img\toolbar_icons.c"
|
||||
#include "img\URLgoto.txt";
|
||||
|
||||
#define DEBUG_ON 0
|
||||
|
||||
|
||||
//ïåðåìåííûå
|
||||
char URL[4096],
|
||||
@ -76,8 +79,8 @@ void main()
|
||||
//break;
|
||||
};*/
|
||||
|
||||
btn=GetSlot(Form.ID);
|
||||
IF (btn<>ActiveProcess()) break; //если окно не активно на события мыши не реагируем
|
||||
btn=GetProcessSlot(Form.ID);
|
||||
IF (btn<>GetActiveProcess()) break; //если окно не активно на события мыши не реагируем
|
||||
|
||||
edit_box_mouse stdcall (#edit1);
|
||||
|
||||
|
@ -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.94d";
|
||||
char version[]=" Text-based Browser 0.94e";
|
||||
|
||||
|
||||
struct TWebBrowser {
|
||||
@ -39,7 +39,7 @@ int stroka,
|
||||
stolbec,
|
||||
tab_len;
|
||||
|
||||
char line[330],
|
||||
char line[500],
|
||||
tag[100],
|
||||
tagparam[10000],
|
||||
parametr[1200],
|
||||
@ -318,7 +318,9 @@ void TWebBrowser::ParseHTML(dword bword){
|
||||
if (!strcmp(#URL + strlen(#URL) - 4, ".txt")) pre_text = 1;
|
||||
if (!strcmp(#URL + strlen(#URL) - 4, ".mht")) ignor_text = 1;
|
||||
|
||||
debug("Start parsing");
|
||||
#ifdef DEBUG_ON
|
||||
debug("Start parsing");
|
||||
#endif
|
||||
|
||||
for ( ; buf+filesize > bword; bword++;) {//ESBYTE[bword]
|
||||
bukva = ESBYTE[bword];
|
||||
@ -462,8 +464,10 @@ void TWebBrowser::ParseHTML(dword bword){
|
||||
lines.first=anchor_line_num;
|
||||
ParseHTML(buf);
|
||||
}
|
||||
|
||||
debug("End parsing");
|
||||
|
||||
#ifdef DEBUG_ON
|
||||
debug("End parsing");
|
||||
#endif
|
||||
DrawScroller(); //ðèñóåì ñêðîëë
|
||||
}
|
||||
|
||||
@ -472,9 +476,9 @@ char oldtag[100];
|
||||
void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
dword hr_color;
|
||||
|
||||
dword image=0;
|
||||
dword image;
|
||||
char temp[4096];
|
||||
int w, h, img_lines_first=0;
|
||||
int w, h, img_lines_first, line_length;
|
||||
|
||||
//ïðîâåðÿåì òåã îòêðûâàåòñÿ èëè çàêðûâàåòñÿ
|
||||
IF(tag[0] == '/')
|
||||
@ -513,15 +517,17 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó
|
||||
first_line_drawed=1;
|
||||
}
|
||||
line_length=strlen(#line)*6;
|
||||
WriteText(stolbec * 6 + left1, top1, 0x80, text_colors[text_color_index], #line, 0); //ìîæåò òóò ðèñîâàòü áåëóþ ñòðîêó?
|
||||
//text_out stdcall (#line, -1, 16, text_colors[text_color_index], stolbec * 6 + left1, top1);
|
||||
//line_length = get_length stdcall (#line,-1,16,line_length);
|
||||
//text_out stdcall (#line, -1, 17, text_colors[text_color_index], stolbec * 6 + left1, top1-2);
|
||||
IF (b_text) { $add ebx, 1<<16 $int 0x40 }
|
||||
IF (i_text) Skew(stolbec * 6 + left1, top1, strlen(#line)+1*6, 10); //íàêëîííûé òåêñò
|
||||
IF (s_text) DrawBar(stolbec * 6 + left1, top1 + 4, strlen(#line) * 6, 1, text_colors[text_color_index]); //çà÷¸ðêíóòûé
|
||||
IF (u_text) DrawBar(stolbec * 6 + left1, top1 + 8, strlen(#line) * 6, 1, text_colors[text_color_index]); //ïîä÷¸ðêíóòûé
|
||||
IF (i_text) Skew(stolbec * 6 + left1, top1, line_length+6, 10); //íàêëîííûé òåêñò
|
||||
IF (s_text) DrawBar(stolbec * 6 + left1, top1 + 4, line_length, 1, text_colors[text_color_index]); //çà÷¸ðêíóòûé
|
||||
IF (u_text) DrawBar(stolbec * 6 + left1, top1 + 8, line_length, 1, text_colors[text_color_index]); //ïîä÷¸ðêíóòûé
|
||||
IF (link) {
|
||||
DefineButton(stolbec * 6 + left1 - 2, top1, strlen(#line) * 6 + 3, 9, blink + BT_HIDE, 0xB5BFC9); //
|
||||
DrawBar(stolbec * 6 + left1, top1 + 8, strlen(#line) * 6, 1, text_colors[text_color_index]);
|
||||
DefineButton(stolbec * 6 + left1 - 2, top1, line_length + 3, 9, blink + BT_HIDE, 0xB5BFC9); //
|
||||
DrawBar(stolbec * 6 + left1, top1 + 8, line_length, 1, text_colors[text_color_index]);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -29,8 +29,8 @@ void menu_rmb()
|
||||
mm.get();
|
||||
|
||||
GetProcessInfo(#MenuForm, SelfInfo);
|
||||
id1=GetSlot(MenuForm.ID);
|
||||
if (id1<>ActiveProcess()) ExitProcess();
|
||||
id1=GetProcessSlot(MenuForm.ID);
|
||||
if (id1<>GetActiveProcess()) ExitProcess();
|
||||
|
||||
id1=mm.y/ITEM_HEIGHT;
|
||||
if (id1<0) || (id1+1>items_num) || (mm.x<0) || (mm.x>ITEM_WIDTH) break;
|
||||
|
@ -141,8 +141,6 @@ inline fastcall Pause( EBX)
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
inline fastcall word GetButtonID()
|
||||
{
|
||||
$mov eax,17
|
||||
@ -171,14 +169,14 @@ void GetProcessInfo( EBX, ECX)
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
int GetProcessSlot( ECX) //ECX = process ID
|
||||
inline fastcall int GetProcessSlot( ECX)
|
||||
{
|
||||
EAX = 18;
|
||||
EBX = 21;
|
||||
$int 0x40;
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall int ActiveProcess()
|
||||
inline fastcall int GetActiveProcess()
|
||||
{
|
||||
EAX = 18;
|
||||
EBX = 7;
|
||||
@ -209,13 +207,6 @@ inline fastcall int GetSystemLanguage()
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall void DrawTitle( ECX)
|
||||
{
|
||||
EAX = 71;
|
||||
EBX = 1;
|
||||
$int 0x40;
|
||||
}
|
||||
|
||||
inline fastcall dword GetSkinWidth()
|
||||
{
|
||||
$push ebx
|
||||
@ -225,7 +216,8 @@ inline fastcall dword GetSkinWidth()
|
||||
$pop ebx
|
||||
}
|
||||
|
||||
inline fastcall void SetSystemSkin(ECX){
|
||||
inline fastcall void SetSystemSkin( ECX)
|
||||
{
|
||||
EAX = 48;
|
||||
EBX = 8;
|
||||
$int 0x40
|
||||
@ -240,12 +232,6 @@ inline fastcall dword GetScreenWidth()
|
||||
$and eax,0x0000FFFF
|
||||
}
|
||||
|
||||
inline fastcall MoveSize( EBX,ECX,EDX,ESI)
|
||||
{
|
||||
EAX = 67;
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall dword LoadLibrary( ECX)
|
||||
{
|
||||
$mov eax, 68
|
||||
@ -253,153 +239,15 @@ inline fastcall dword LoadLibrary( ECX)
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
inline fastcall dword strlen( EDI)
|
||||
{
|
||||
EAX=0;
|
||||
ECX=-1;
|
||||
$REPNE $SCASB
|
||||
EAX-=2+ECX;
|
||||
}
|
||||
|
||||
|
||||
inline fastcall strcpy( EDI, ESI)
|
||||
{
|
||||
$cld
|
||||
l2:
|
||||
$lodsb
|
||||
$stosb
|
||||
$test al,al
|
||||
$jnz l2
|
||||
}
|
||||
|
||||
inline fastcall strcat( EDI, ESI)
|
||||
{
|
||||
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( ESI)
|
||||
{
|
||||
$mov edi, #buffer
|
||||
$mov ecx, 10
|
||||
$test esi, esi
|
||||
$jns f1
|
||||
$mov al, '-'
|
||||
$stosb
|
||||
$neg esi
|
||||
f1:
|
||||
$mov eax, esi
|
||||
$push -'0'
|
||||
f2:
|
||||
$xor edx, edx
|
||||
$div ecx
|
||||
$push edx
|
||||
$test eax, eax
|
||||
$jnz f2
|
||||
f3:
|
||||
$pop eax
|
||||
$add al, '0'
|
||||
$stosb
|
||||
$jnz f3
|
||||
$mov eax, #buffer
|
||||
$ret
|
||||
}
|
||||
|
||||
|
||||
inline fastcall dword StrToInt()
|
||||
{
|
||||
ESI=EDI=EAX;
|
||||
IF(DSBYTE[ESI]=='-')ESI++;
|
||||
EAX=0;
|
||||
BH=AL;
|
||||
do{
|
||||
BL=DSBYTE[ESI]-'0';
|
||||
EAX=EAX*10+EBX;
|
||||
ESI++;
|
||||
}while(DSBYTE[ESI]>0);
|
||||
IF(DSBYTE[EDI]=='-') -EAX;
|
||||
}
|
||||
|
||||
|
||||
inline fastcall int strcmp( ESI, EDI)
|
||||
{
|
||||
loop()
|
||||
{
|
||||
IF (DSBYTE[ESI]<DSBYTE[EDI]) RETURN -1;
|
||||
IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1;
|
||||
IF (DSBYTE[ESI]=='\0') RETURN 0;
|
||||
ESI++;
|
||||
EDI++;
|
||||
}
|
||||
}
|
||||
|
||||
inline fastcall unsigned int find_symbol( ESI,BL)
|
||||
{
|
||||
int jj=0, last=-1;
|
||||
do{
|
||||
jj++;
|
||||
$lodsb
|
||||
IF(AL==BL) last=jj;
|
||||
} while(AL!=0);
|
||||
return last;
|
||||
}
|
||||
|
||||
|
||||
inline fastcall dword upcase( ESI)
|
||||
{
|
||||
do{
|
||||
AL=DSBYTE[ESI];
|
||||
IF(AL>='a')IF(AL<='z')DSBYTE[ESI]=AL&0x5f;
|
||||
ESI++;
|
||||
}while(AL!=0);
|
||||
}
|
||||
|
||||
inline fastcall lowcase( ESI)
|
||||
{
|
||||
do{
|
||||
$LODSB
|
||||
IF(AL>='A')&&(AL<='Z'){
|
||||
AL+=0x20;
|
||||
DSBYTE[ESI-1]=AL;
|
||||
CONTINUE;
|
||||
}
|
||||
}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
|
||||
@ -418,6 +266,18 @@ void DefineAndDrawWindow(dword x,y,sizeX,sizeY,byte mainAreaType,dword mainAreaC
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall MoveSize( EBX,ECX,EDX,ESI)
|
||||
{
|
||||
EAX = 67;
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall void DrawTitle( ECX)
|
||||
{
|
||||
EAX = 71;
|
||||
EBX = 1;
|
||||
$int 0x40;
|
||||
}
|
||||
|
||||
inline fastcall int CreateThread( ECX,EDX)
|
||||
{
|
||||
@ -426,21 +286,6 @@ inline fastcall int CreateThread( ECX,EDX)
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall int GetSlot( ECX)
|
||||
{
|
||||
EAX = 18;
|
||||
EBX = 21;
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall int GetActiveProcess()
|
||||
{
|
||||
EAX = 18;
|
||||
EBX = 7;
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
|
||||
void WriteText(dword x,y,byte fontType, dword color, EDX, ESI)
|
||||
{
|
||||
EAX = 4;
|
||||
@ -503,7 +348,10 @@ inline fastcall void DeleteButton( EDX)
|
||||
$int 0x40;
|
||||
}
|
||||
|
||||
:void DrawRegion(dword x,y,width,height,color1)
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
void DrawRegion(dword x,y,width,height,color1)
|
||||
{
|
||||
DrawBar(x,y,width,1,color1); //¯®«®á £®à ᢥàåã
|
||||
DrawBar(x,y+height,width,1,color1); //¯®«®á £®à ᨧã
|
||||
@ -511,7 +359,7 @@ inline fastcall void DeleteButton( EDX)
|
||||
DrawBar(x+width,y,1,height+1,color1); //¯®«®á ¢¥àåã á¯à ¢
|
||||
}
|
||||
|
||||
:void DrawRegion_3D(dword x,y,width,height,color1,color2)
|
||||
void DrawRegion_3D(dword x,y,width,height,color1,color2)
|
||||
{
|
||||
DrawBar(x,y,width+1,1,color1); //¯®«®á £®à ᢥàåã
|
||||
DrawBar(x,y+1,1,height-1,color1); //¯®«®á á«¥¢
|
||||
@ -525,12 +373,14 @@ void DrawFlatButton(dword x,y,width,height,id,color,text)
|
||||
DrawRegion_3D(x+1,y+1,width-2,height-2,0xFFFFFF,0xC7C7C7);
|
||||
DrawBar(x+2,y+2,width-3,height-3,color); //§ «¨¢ª
|
||||
IF (id<>0) DefineButton(x,y,width,height,id+BT_HIDE,0xEFEBEF); //ª®¯ª
|
||||
WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0);
|
||||
//WriteText(-strlen(text)*6+width/2+x+1,height/2-3+y,0x80,0,text,0);
|
||||
WriteText(width/2+x+1,height/2-3+y,0x80,0,text,0);
|
||||
}
|
||||
|
||||
:void DrawCircle(int x, y, r)
|
||||
void DrawCircle(int x, y, r)
|
||||
{
|
||||
int i; float px=0, py=r, ii = r * 3.1415926 * 2;
|
||||
int i;
|
||||
float px=0, py=r, ii = r * 3.1415926 * 2;
|
||||
FOR (i = 0; i < ii; i++)
|
||||
{
|
||||
PutPixel(px + x, y - py, 0);
|
||||
|
189
programs/network/htmlv/lib/strings.h
Normal file
189
programs/network/htmlv/lib/strings.h
Normal file
@ -0,0 +1,189 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// strlen( EDI)
|
||||
// strcpy( EDI, ESI)
|
||||
// strcat( EDI, ESI)
|
||||
// IntToStr( ESI)
|
||||
// StrToInt()
|
||||
// strcmp( ESI, EDI)
|
||||
// find_symbol( ESI,BL)
|
||||
// upcase( ESI)
|
||||
// lowcase( ESI)
|
||||
// strstr( EBX, EDX)
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
inline fastcall unsigned int strlen( EDI)
|
||||
{
|
||||
$xor eax, eax
|
||||
$mov ecx, -1
|
||||
$REPNE $SCASB
|
||||
EAX-=2+ECX;
|
||||
}
|
||||
|
||||
|
||||
inline fastcall strcpy( EDI, ESI)
|
||||
{
|
||||
$cld
|
||||
l2:
|
||||
$lodsb
|
||||
$stosb
|
||||
$test al,al
|
||||
$jnz l2
|
||||
}
|
||||
|
||||
|
||||
inline fastcall strcat( EDI, ESI)
|
||||
{
|
||||
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( ESI)
|
||||
{
|
||||
$mov edi, #buffer
|
||||
$mov ecx, 10
|
||||
$test esi, esi
|
||||
$jns f1
|
||||
$mov al, '-'
|
||||
$stosb
|
||||
$neg esi
|
||||
f1:
|
||||
$mov eax, esi
|
||||
$push -'0'
|
||||
f2:
|
||||
$xor edx, edx
|
||||
$div ecx
|
||||
$push edx
|
||||
$test eax, eax
|
||||
$jnz f2
|
||||
f3:
|
||||
$pop eax
|
||||
$add al, '0'
|
||||
$stosb
|
||||
$jnz f3
|
||||
$mov eax, #buffer
|
||||
$ret
|
||||
}
|
||||
|
||||
|
||||
inline fastcall dword StrToInt()
|
||||
{
|
||||
ESI=EDI=EAX;
|
||||
IF(DSBYTE[ESI]=='-')ESI++;
|
||||
EAX=0;
|
||||
BH=AL;
|
||||
do{
|
||||
BL=DSBYTE[ESI]-'0';
|
||||
EAX=EAX*10+EBX;
|
||||
ESI++;
|
||||
}while(DSBYTE[ESI]>0);
|
||||
IF(DSBYTE[EDI]=='-') -EAX;
|
||||
}
|
||||
|
||||
|
||||
inline fastcall signed int strcmp( ESI, EDI)
|
||||
{
|
||||
loop()
|
||||
{
|
||||
IF (DSBYTE[ESI]<DSBYTE[EDI]) RETURN -1;
|
||||
IF (DSBYTE[ESI]>DSBYTE[EDI]) RETURN 1;
|
||||
IF (DSBYTE[ESI]=='\0') RETURN 0;
|
||||
ESI++;
|
||||
EDI++;
|
||||
}
|
||||
}
|
||||
|
||||
inline fastcall unsigned int find_symbol( ESI,BL)
|
||||
{
|
||||
int jj=0, last=-1;
|
||||
do{
|
||||
jj++;
|
||||
$lodsb
|
||||
IF(AL==BL) last=jj;
|
||||
} while(AL!=0);
|
||||
return last;
|
||||
}
|
||||
|
||||
|
||||
inline fastcall upcase( ESI)
|
||||
{
|
||||
do{
|
||||
AL=DSBYTE[ESI];
|
||||
IF(AL>='a')IF(AL<='z')DSBYTE[ESI]=AL&0x5f;
|
||||
ESI++;
|
||||
}while(AL!=0);
|
||||
}
|
||||
|
||||
inline fastcall lowcase( ESI)
|
||||
{
|
||||
do{
|
||||
$LODSB
|
||||
IF(AL>='A')&&(AL<='Z'){
|
||||
AL+=0x20;
|
||||
DSBYTE[ESI-1]=AL;
|
||||
CONTINUE;
|
||||
}
|
||||
}while(AL!=0);
|
||||
}
|
||||
|
||||
|
||||
inline fastcall unsigned int strstr( EBX, EDX)
|
||||
{
|
||||
asm {
|
||||
mov edi, edx
|
||||
xor ecx, ecx
|
||||
xor eax, eax
|
||||
dec ecx
|
||||
repne scasb
|
||||
not ecx
|
||||
dec ecx
|
||||
je ls2
|
||||
mov esi, ecx
|
||||
xor ecx, ecx
|
||||
mov edi, ebx
|
||||
dec ecx
|
||||
repne scasb
|
||||
not ecx
|
||||
sub ecx, esi
|
||||
jbe ls2
|
||||
mov edi, ebx
|
||||
lea ebx, dsdword[ esi-1]
|
||||
ls1: mov esi, edx
|
||||
lodsb
|
||||
repne scasb
|
||||
jne ls2
|
||||
mov eax, ecx
|
||||
push edi
|
||||
mov ecx, ebx
|
||||
repe cmpsb
|
||||
pop edi
|
||||
mov ecx, eax
|
||||
jne ls1
|
||||
lea eax, dsdword[ edi-1]
|
||||
jmp short ls3
|
||||
ls2: xor eax, eax
|
||||
ls3:
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user