forked from KolibriOS/kolibrios
HTMLv 0.94u: fixed bug with colors and crash with <i> tag, improvements in menu and strings.h
git-svn-id: svn://kolibrios.org@2839 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
d51745da57
commit
c96f15b38e
@ -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.94e";
|
||||
char version[]=" Text-based Browser 0.94u";
|
||||
|
||||
|
||||
struct TWebBrowser {
|
||||
@ -30,7 +30,7 @@ byte rez, b_text, i_text, u_text, s_text, pre_text, blq_text, li_text,
|
||||
link, ignor_text, li_tab, first_line_drawed;
|
||||
|
||||
|
||||
dword text_colors[30],
|
||||
dword text_colors[300],
|
||||
text_color_index,
|
||||
link_color,
|
||||
bg_color;
|
||||
@ -39,15 +39,15 @@ int stroka,
|
||||
stolbec,
|
||||
tab_len;
|
||||
|
||||
char anchor[256];
|
||||
int anchor_line_num;
|
||||
|
||||
char line[500],
|
||||
tag[100],
|
||||
tagparam[10000],
|
||||
parametr[1200],
|
||||
options[1000];
|
||||
|
||||
char anchor[256];
|
||||
int anchor_line_num;
|
||||
|
||||
|
||||
#include "include\history.h"
|
||||
#include "include\colors.h"
|
||||
@ -65,7 +65,7 @@ void TWebBrowser::Scan(int id)
|
||||
//#1
|
||||
if (URL[0] == '#')
|
||||
{
|
||||
strcpy(#anchor, #URL+find_symbol(#URL, '#'));
|
||||
strcpy(#anchor, #URL+strrchr(#URL, '#'));
|
||||
|
||||
strcpy(#URL, BrowserHistory.CurrentUrl());
|
||||
|
||||
@ -74,10 +74,10 @@ void TWebBrowser::Scan(int id)
|
||||
return;
|
||||
}
|
||||
//liner.ru#1
|
||||
if (find_symbol(#URL, '#')<>-1)
|
||||
if (strrchr(#URL, '#')<>-1)
|
||||
{
|
||||
strcpy(#anchor, #URL+find_symbol(#URL, '#'));
|
||||
URL[find_symbol(#URL, '#')-1] = 0x00; //çàãëóøêà
|
||||
strcpy(#anchor, #URL+strrchr(#URL, '#'));
|
||||
URL[strrchr(#URL, '#')-1] = 0x00; //çàãëóøêà
|
||||
}
|
||||
|
||||
GetNewUrl();
|
||||
@ -197,15 +197,15 @@ void TWebBrowser::GetNewUrl(){
|
||||
|
||||
_CUT_ST_LEVEL_MARK:
|
||||
|
||||
if (editURL[find_symbol(#editURL, '/')-2]<>'/') // åñëè íå http://pagename.ua <-- íàõðåíà ýòà ñòðîêà???
|
||||
if (editURL[strrchr(#editURL, '/')-2]<>'/') // åñëè íå http://pagename.ua <-- íàõðåíà ýòà ñòðîêà???
|
||||
{
|
||||
editURL[find_symbol(#editURL, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
|
||||
editURL[strrchr(#editURL, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
|
||||
}
|
||||
|
||||
IF (!strcmp(get_URL_part(3),"../")) //íà óðîâåíü ââåðõ
|
||||
{
|
||||
strcpy(#URL,#URL+3);
|
||||
editURL[find_symbol(#editURL, '/')-1] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
|
||||
editURL[strrchr(#editURL, '/')-1] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
|
||||
goto _CUT_ST_LEVEL_MARK;
|
||||
}
|
||||
|
||||
@ -318,9 +318,7 @@ 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;
|
||||
|
||||
#ifdef DEBUG_ON
|
||||
debug("Start parsing");
|
||||
#endif
|
||||
debug("Start parsing");
|
||||
|
||||
for ( ; buf+filesize > bword; bword++;) {//ESBYTE[bword]
|
||||
bukva = ESBYTE[bword];
|
||||
@ -438,7 +436,7 @@ void TWebBrowser::ParseHTML(dword bword){
|
||||
//
|
||||
if (stolbec + strlen(#line) > lines.column_max)
|
||||
{
|
||||
perenos_num = find_symbol(#line, ' ');
|
||||
perenos_num = strrchr(#line, ' ');
|
||||
strcpy(#temp, #line + perenos_num); //ïåðåíîñ ïî ñëîâàì
|
||||
line[perenos_num] = 0x00;
|
||||
NEXT_MARK:
|
||||
@ -465,9 +463,7 @@ void TWebBrowser::ParseHTML(dword bword){
|
||||
ParseHTML(buf);
|
||||
}
|
||||
|
||||
#ifdef DEBUG_ON
|
||||
debug("End parsing");
|
||||
#endif
|
||||
debug("End parsing");
|
||||
DrawScroller(); //ðèñóåì ñêðîëë
|
||||
}
|
||||
|
||||
@ -568,14 +564,16 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
{
|
||||
if (rez)
|
||||
{
|
||||
text_color_index++;
|
||||
text_colors[text_color_index] = text_colors[text_color_index-1];
|
||||
|
||||
_A_MARK:
|
||||
if (!strcmp(#parametr, "href="))
|
||||
{
|
||||
if (stroka - 1 > lines.visible) || (stroka < -2) return;
|
||||
if (link == 1) text_color_index--; //åñëè êàêîé-òî äîëáî¸á íå çàêðûë òýã
|
||||
if (link) && (text_color_index > 0) text_color_index--; //åñëè íå çàêðûò òýã
|
||||
link = 1;
|
||||
blink++;
|
||||
text_color_index++;
|
||||
text_colors[text_color_index] = link_color;
|
||||
strcat(#page_links, #options);
|
||||
strcat(#page_links, "|");
|
||||
@ -602,18 +600,23 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
/////////////////////////
|
||||
if (!chTag("font"))
|
||||
{
|
||||
IF (stroka - 1 > lines.visible) return;
|
||||
COL_MARK:
|
||||
if (strcmp(#parametr, "color=") == 0) //&& (parametr[1] == '#')
|
||||
if (rez)
|
||||
{
|
||||
text_color_index++;
|
||||
text_colors[text_color_index] = GetColor(#options);
|
||||
text_colors[text_color_index] = text_colors[text_color_index-1];
|
||||
|
||||
COL_MARK:
|
||||
if (strcmp(#parametr, "color=") == 0) //&& (parametr[1] == '#')
|
||||
{
|
||||
text_colors[text_color_index] = GetColor(#options);
|
||||
}
|
||||
IF(tagparam) {
|
||||
GetNextParam();
|
||||
GOTO COL_MARK;
|
||||
}
|
||||
}
|
||||
IF(tagparam) {
|
||||
GetNextParam();
|
||||
GOTO COL_MARK;
|
||||
}
|
||||
IF(!rez) && (text_color_index > 0) text_color_index--;
|
||||
else
|
||||
if (text_color_index > 0) text_color_index--;
|
||||
return;
|
||||
}
|
||||
//////////////////////////
|
||||
@ -694,18 +697,18 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
if (!strcmp(#parametr,"src=")) //íàäî îáúåäèíèòü ñ GetNewUrl()
|
||||
{
|
||||
strcpy(#temp, BrowserHistory.CurrentUrl()); //äîñòà¸ì àäðåñ òåêóùåé ñòðàíèöû
|
||||
temp[find_symbol(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
|
||||
temp[strrchr(#temp, '/')] = 0x00; //îáðåçàåì å¸ óðë äî ïîñëåäíåãî /
|
||||
strcat(#temp, #options);
|
||||
image=load_image(#temp);
|
||||
w=DSWORD[image+4];
|
||||
h=DSWORD[image+8];
|
||||
}
|
||||
if (!strcmp(#parametr,"alt="))
|
||||
/*if (!strcmp(#parametr,"alt="))
|
||||
{
|
||||
strcpy(#tag, "[Image: ");
|
||||
strcat(#tag, #options);
|
||||
strcat(#tag, "]");
|
||||
}
|
||||
}*/
|
||||
|
||||
IF(tagparam)
|
||||
{
|
||||
@ -758,7 +761,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
META:
|
||||
if (!strcmp(#parametr, "charset=")) || (!strcmp(#parametr, "content=")) || (!strcmp(#parametr, "encoding="))
|
||||
{
|
||||
strcpy(#options, #options[find_symbol(#options, '=')]); //ïîèñê â content=
|
||||
strcpy(#options, #options[strrchr(#options, '=')]); //ïîèñê â content=
|
||||
|
||||
if (!strcmp(#options,"utf-8")) || (!strcmp(#options,"utf8")) ReadHtml(_UTF);
|
||||
if (!strcmp(#options, "koi8-r")) || (!strcmp(#options, "koi8-u")) ReadHtml(_KOI);
|
||||
|
@ -317,10 +317,7 @@ dword GetColor(char* color_str)
|
||||
ELSE
|
||||
FOR (ii=0; color_names[ii]!=0; ii++)
|
||||
{
|
||||
IF(!strcmp(color_str, color_names[ii]))
|
||||
{
|
||||
return colors[ii];
|
||||
}
|
||||
IF(!strcmp(color_str, color_names[ii])) return colors[ii];
|
||||
}
|
||||
return text_colors[0];
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ dword UrlsHistory::CurrentUrl()
|
||||
|
||||
void UrlsHistory::AddUrl() //òóò íóæåí ââîäèìûé ýëåìåíò - äëÿ óíèâåðñàëüíîñòè
|
||||
{
|
||||
int i;
|
||||
if (history_num>0) && (strcmp(#URL,#history_list[history_current].Item)==0) return;
|
||||
|
||||
if (history_current>=MAX_HISTORY_NUM-1)
|
||||
|
@ -4,13 +4,14 @@
|
||||
#define ITEM_WIDTH 138
|
||||
|
||||
char *ITEMS_LIST[]={
|
||||
"View in Tinypad F3",
|
||||
"View in TextEdit F4",
|
||||
"-",
|
||||
"KOI-8 Ctrl+K",
|
||||
"UTF Ctrl+U",
|
||||
"View in Tinypad F3",52,
|
||||
"View in TextEdit F4",53,
|
||||
"-",0,
|
||||
"KOI-8 Ctrl+K",11,
|
||||
"UTF Ctrl+U",21,
|
||||
0};
|
||||
|
||||
|
||||
proc_info MenuForm;
|
||||
|
||||
|
||||
@ -19,7 +20,7 @@ void menu_rmb()
|
||||
|
||||
mouse mm;
|
||||
int items_num, items_cur;
|
||||
int id1, key;
|
||||
int id1, key, i;
|
||||
|
||||
SetEventMask(100111b);
|
||||
|
||||
@ -43,7 +44,9 @@ void menu_rmb()
|
||||
break;
|
||||
|
||||
case evButton:
|
||||
ItemProcess(GetButtonID());
|
||||
id1=GetButtonID()-10;
|
||||
WB1.Scan(ITEMS_LIST[id1*2+1]);
|
||||
ExitProcess();
|
||||
break;
|
||||
|
||||
case evKey:
|
||||
@ -61,19 +64,20 @@ void menu_rmb()
|
||||
}
|
||||
if (key==13)
|
||||
{
|
||||
ItemProcess(items_cur+10);
|
||||
WB1.Scan(ITEMS_LIST[items_cur*2+1]);
|
||||
ExitProcess();
|
||||
}
|
||||
break;
|
||||
|
||||
case evReDraw:
|
||||
for (items_num=0; ITEMS_LIST[items_num]<>0; items_num++;) {};
|
||||
while (ITEMS_LIST[items_num*2]) items_num++;
|
||||
DefineAndDrawWindow(Form.left+m.x,Form.top+m.y+GetSkinWidth()+3,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x01,0x10FFFFFF,0,0,0);
|
||||
|
||||
DrawRegion(0,0,ITEM_WIDTH,items_num*ITEM_HEIGHT+1,0x777777); //îáîäîę
|
||||
_ITEMS_DRAW:
|
||||
for (i=0; i<items_num; i++;)
|
||||
{
|
||||
if (!strcmp(ITEMS_LIST[i],"-"))
|
||||
if (!strcmp(ITEMS_LIST[i*2],"-"))
|
||||
{
|
||||
DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, 0xFFFFFF);
|
||||
DrawBar(1, i*ITEM_HEIGHT+1+9, ITEM_WIDTH-1, 1, 0x999999);
|
||||
@ -82,21 +86,11 @@ void menu_rmb()
|
||||
DefineButton(0, i*ITEM_HEIGHT, ITEM_WIDTH, ITEM_HEIGHT, i+10+BT_HIDE, 0xFFFFFF);
|
||||
if (i<>items_cur) EDX=0xFFFFFF; else EDX=0x94AECE;
|
||||
DrawBar(1, i*ITEM_HEIGHT+1, ITEM_WIDTH-1, ITEM_HEIGHT, EDX);
|
||||
WriteText(8,i*ITEM_HEIGHT+6,0x80,0x000000,ITEMS_LIST[i],0);
|
||||
WriteText(8,i*ITEM_HEIGHT+6,0x80,0x000000,ITEMS_LIST[i*2],0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ItemProcess(int num_id)
|
||||
{
|
||||
if (num_id==10) WB1.Scan(52);
|
||||
if (num_id==11) WB1.Scan(53);
|
||||
//-----------------------
|
||||
if (num_id==13) WB1.Scan(11); //KOI
|
||||
if (num_id==14) WB1.Scan(21); //UTF
|
||||
ExitProcess();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -12,12 +12,12 @@ void GetNextParam()
|
||||
|
||||
IF (kavichki)
|
||||
{
|
||||
i=find_symbol(#tagparam, kavichki);
|
||||
i=strrchr(#tagparam, kavichki);
|
||||
strcpy(#options, #tagparam + i);
|
||||
}
|
||||
ELSE
|
||||
{
|
||||
WHILE((i > 0) && (tagparam[i] <>'=')) i--; //i=find_symbol(#tagparam, '=')+1;
|
||||
WHILE((i > 0) && (tagparam[i] <>'=')) i--; //i=strrchr(#tagparam, '=')+1;
|
||||
i++;
|
||||
|
||||
strcpy(#options, #tagparam + i); //êîïèðóåì îïöèþ
|
||||
|
@ -27,14 +27,14 @@ inline byte chTag(dword text) {return strcmp(#tag,text);}
|
||||
|
||||
void GetURLfromPageLinks(int id)
|
||||
{
|
||||
int j = 0;
|
||||
int i, j = 0;
|
||||
for (i = 0; i <= id - 401; i++)
|
||||
{
|
||||
do j++;
|
||||
while (page_links[j] <>'|');
|
||||
}
|
||||
page_links[j] = 0x00;
|
||||
strcpy(#URL, #page_links[find_symbol(#page_links, '|')]);
|
||||
strcpy(#URL, #page_links[strrchr(#page_links, '|')]);
|
||||
}
|
||||
|
||||
|
||||
@ -49,14 +49,14 @@ inline void Skew(dword x,y,w,h)
|
||||
dword italic_buf;
|
||||
int tile_height=2, //áóäåì âûâîäèòü äâóõïèêñåëüíûìè ïîëîñêàìè
|
||||
shift=-2, //ñ äâóõïèêñåëüíûì ñìåùåíèåì
|
||||
i;
|
||||
i, skin_width;
|
||||
|
||||
italic_buf = mem_Alloc(w*h*3);
|
||||
skin_width = GetSkinWidth();
|
||||
CopyScreen(italic_buf, x+Form.left+2, y+Form.top+skin_width, w, h);
|
||||
|
||||
CopyScreen(italic_buf, x+Form.left+2, GetSkinWidth()+y+Form.top, w, h);
|
||||
|
||||
FOR (i=0;i*tile_height<h;i++){
|
||||
FOR (i=0;i*tile_height<h;i++)
|
||||
PutImage(w*3*tile_height*i+italic_buf,w,tile_height,x+shift-i+1,i*tile_height+y);
|
||||
}
|
||||
|
||||
mem_Free(italic_buf);
|
||||
}
|
||||
|
@ -2,18 +2,6 @@
|
||||
|
||||
byte unicode_chars[] = "€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>徕沅彐玷殛腱眍镳駂<EFBFBD>243i\105\244\0";
|
||||
|
||||
/* IF (BL==178) ESBYTE[ESI] = 73; //I
|
||||
IF (BL==179) ESBYTE[ESI] = 105; //i
|
||||
IF (BL==175) ESBYTE[ESI] = 244; //J
|
||||
IF (BL==191) ESBYTE[ESI] = 245; //j
|
||||
IF (BL==170) ESBYTE[ESI] = 242; //E
|
||||
IF (BL==186) ESBYTE[ESI] = 243; //e
|
||||
IF (BL==168) ESBYTE[ESI] = 240; //à
|
||||
IF (BL==184) ESBYTE[ESI] = 'e'; //e
|
||||
IF (BL==180) ESBYTE[ESI] = 254; //£
|
||||
IF ((BL==147) || (BL==148) || (BL==171) || (BL==187)) ESBYTE[ESI] = 34;
|
||||
IF ((BL==150) || (BL==151)) ESBYTE[ESI] = 45;
|
||||
*/
|
||||
|
||||
char *unicode_tags[]={
|
||||
"nbsp", " ",
|
||||
@ -74,7 +62,7 @@ char *unicode_tags[]={
|
||||
"#1031", "\244",
|
||||
|
||||
"#8470", "N",
|
||||
"bull", "-", //¢®®¡é¥ §¤¥áì â®çª
|
||||
"bull", "-", //вообще здесь точка
|
||||
"percnt","%",
|
||||
|
||||
0};
|
||||
|
@ -148,6 +148,8 @@ inline fastcall word GetButtonID()
|
||||
$shr eax,8
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
|
||||
struct proc_info
|
||||
{
|
||||
#define SelfInfo -1
|
||||
@ -169,6 +171,12 @@ void GetProcessInfo( EBX, ECX)
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall int GetPointOwner( EBX, ECX) //ebx=m.x, ecx=m.y
|
||||
{
|
||||
$mov eax,34
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall int GetProcessSlot( ECX)
|
||||
{
|
||||
EAX = 18;
|
||||
@ -183,6 +191,19 @@ inline fastcall int GetActiveProcess()
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall int CreateThread( ECX,EDX)
|
||||
{
|
||||
$mov eax,51
|
||||
$mov ebx,1
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall void SwitchToAnotherThread()
|
||||
{
|
||||
$mov eax,68
|
||||
$mov ebx,1
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall ExitProcess()
|
||||
{
|
||||
@ -279,13 +300,6 @@ inline fastcall void DrawTitle( ECX)
|
||||
$int 0x40;
|
||||
}
|
||||
|
||||
inline fastcall int CreateThread( ECX,EDX)
|
||||
{
|
||||
EAX = 51;
|
||||
EBX = 1;
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
void WriteText(dword x,y,byte fontType, dword color, EDX, ESI)
|
||||
{
|
||||
EAX = 4;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
//library
|
||||
dword libimg = #alibimg;
|
||||
char alibimg[21] = "/sys/lib/libimg.obj\0"; //"libimg.obj\0";
|
||||
char alibimg[21] = "/sys/lib/libimg.obj\0";
|
||||
|
||||
dword libimg_init = #alibimg_init;
|
||||
dword img_is_img = #aimg_is_img;
|
||||
|
@ -26,9 +26,15 @@ dword mem_Alloc(dword size)
|
||||
}
|
||||
|
||||
//mem.ReAlloc
|
||||
inline fastcall dword mem_ReAllocR( ECX, EDX)
|
||||
{
|
||||
$mov eax, 68
|
||||
$mov ebx, 20
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
stdcall dword mem_ReAlloc(dword mptr, size)
|
||||
{
|
||||
//$push ebx ecx edx
|
||||
$push ebx
|
||||
$push ecx
|
||||
$push edx
|
||||
@ -41,7 +47,6 @@ stdcall dword mem_ReAlloc(dword mptr, size)
|
||||
$pop edx
|
||||
$pop ecx
|
||||
$pop ebx
|
||||
//$pop edx ecx ebx
|
||||
return EAX;
|
||||
}
|
||||
|
||||
|
95
programs/network/htmlv/lib/scroll_lib.h
Normal file
95
programs/network/htmlv/lib/scroll_lib.h
Normal file
@ -0,0 +1,95 @@
|
||||
//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 - ¢¥«¨ç¨ á¬¥é¥¨ï ¯à¨ ®¤®ªà ⮬ ¦ ⨨ ¡®ª®¢®© ª®¯ª¨.
|
@ -1,16 +1,19 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// strcmp( ESI, EDI)
|
||||
// strlen( EDI)
|
||||
// strcpy( EDI, ESI)
|
||||
// strcat( EDI, ESI)
|
||||
// strchr( ESI,BL)
|
||||
// strrchr( ESI,BL)
|
||||
// strstr( EBX, EDX)
|
||||
//
|
||||
// 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
|
||||
@ -59,7 +62,7 @@ inline fastcall strcat( EDI, ESI)
|
||||
}
|
||||
}
|
||||
|
||||
char buffer[11]="";
|
||||
char buffer[11];
|
||||
inline fastcall dword IntToStr( ESI)
|
||||
{
|
||||
$mov edi, #buffer
|
||||
@ -115,7 +118,18 @@ inline fastcall signed int strcmp( ESI, EDI)
|
||||
}
|
||||
}
|
||||
|
||||
inline fastcall unsigned int find_symbol( ESI,BL)
|
||||
inline fastcall unsigned int strchr( ESI,BL)
|
||||
{
|
||||
int jj=0;
|
||||
do{
|
||||
jj++;
|
||||
$lodsb
|
||||
IF(AL==BL) return jj;
|
||||
} while(AL!=0);
|
||||
}
|
||||
|
||||
|
||||
inline fastcall unsigned int strrchr( ESI,BL)
|
||||
{
|
||||
int jj=0, last=-1;
|
||||
do{
|
||||
@ -169,7 +183,7 @@ inline fastcall unsigned int strstr( EBX, EDX)
|
||||
sub ecx, esi
|
||||
jbe ls2
|
||||
mov edi, ebx
|
||||
lea ebx, dsdword[ esi-1]
|
||||
lea ebx, DSDWORD[ esi-1]
|
||||
ls1: mov esi, edx
|
||||
lodsb
|
||||
repne scasb
|
||||
@ -181,7 +195,7 @@ ls1: mov esi, edx
|
||||
pop edi
|
||||
mov ecx, eax
|
||||
jne ls1
|
||||
lea eax, dsdword[ edi-1]
|
||||
lea eax, DSDWORD[ edi-1]
|
||||
jmp short ls3
|
||||
ls2: xor eax, eax
|
||||
ls3:
|
||||
|
Loading…
Reference in New Issue
Block a user