Subversion Repositories Kolibri OS

Compare Revisions

Ignore whitespace Rev 2824 → Rev 2825

/programs/network/htmlv/browser/HTMLv.c
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,7 → 19,9
#include "img\toolbar_icons.c"
#include "img\URLgoto.txt";
 
#define DEBUG_ON 0
 
 
//ïåðåìåííûå
char URL[4096],
editURL[4096],
76,8 → 79,8
//break;
};*/
btn=GetSlot(Form.ID);
IF (btn<>ActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ðåàãèðóåì
btn=GetProcessSlot(Form.ID);
IF (btn<>GetActiveProcess()) break; //åñëè îêíî íå àêòèâíî íà ñîáûòèÿ ìûøè íå ðåàãèðóåì
 
edit_box_mouse stdcall (#edit1);
 
/programs/network/htmlv/browser/TWB.h
9,7 → 9,7
 
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
stolbec,
tab_len;
char line[330],
char line[500],
tag[100],
tagparam[10000],
parametr[1200],
318,7 → 318,9
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
lines.first=anchor_line_num;
ParseHTML(buf);
}
debug("End parsing");
 
#ifdef DEBUG_ON
debug("End parsing");
#endif
DrawScroller(); //ðèñóåì ñêðîëë
}
 
472,9 → 476,9
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
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]);
}
}
 
/programs/network/htmlv/browser/include/menu_rmb.h
29,8 → 29,8
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;
/programs/network/htmlv/lib/kolibri.h
141,8 → 141,6
$int 0x40
}
 
//------------------------------------------------------------------------------
 
inline fastcall word GetButtonID()
{
$mov eax,17
171,14 → 169,14
$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
$int 0x40
}
 
inline fastcall void DrawTitle( ECX)
{
EAX = 71;
EBX = 1;
$int 0x40;
}
 
inline fastcall dword GetSkinWidth()
{
$push ebx
225,7 → 216,8
$pop ebx
}
 
inline fastcall void SetSystemSkin(ECX){
inline fastcall void SetSystemSkin( ECX)
{
EAX = 48;
EBX = 8;
$int 0x40
240,12 → 232,6
$and eax,0x0000FFFF
}
 
inline fastcall MoveSize( EBX,ECX,EDX,ESI)
{
EAX = 67;
$int 0x40
}
 
inline fastcall dword LoadLibrary( ECX)
{
$mov eax, 68
253,143 → 239,6
$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
396,10 → 245,9
$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,29 → 266,26
$int 0x40
}
 
 
inline fastcall int CreateThread( ECX,EDX)
inline fastcall MoveSize( EBX,ECX,EDX,ESI)
{
EAX = 51;
EBX = 1;
EAX = 67;
$int 0x40
}
 
inline fastcall int GetSlot( ECX)
inline fastcall void DrawTitle( ECX)
{
EAX = 18;
EBX = 21;
$int 0x40
EAX = 71;
EBX = 1;
$int 0x40;
}
 
inline fastcall int GetActiveProcess()
inline fastcall int CreateThread( ECX,EDX)
{
EAX = 18;
EBX = 7;
EAX = 51;
EBX = 1;
$int 0x40
}
 
 
void WriteText(dword x,y,byte fontType, dword color, EDX, ESI)
{
EAX = 4;
503,7 → 348,10
$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
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
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);
/programs/network/htmlv/lib/strings.h
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:
}
}