forked from KolibriOS/kolibrios
Text-based Browser 0.97.6: fixed stupid bug with TryeType fonts (no it will will be more faster), some small futures
git-svn-id: svn://kolibrios.org@3020 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
591d811406
commit
650e2989bd
@ -47,6 +47,35 @@ mouse m;
|
||||
#include "TWB.h"
|
||||
#include "include\menu_rmb.h"
|
||||
|
||||
/*void tre()
|
||||
{
|
||||
char *font_picture;
|
||||
char text[12];
|
||||
int width=600;
|
||||
int height=40;
|
||||
char palette[256*4];
|
||||
int x;
|
||||
|
||||
|
||||
strcpy(#text, "hello world\0");
|
||||
|
||||
get_width stdcall (#text, -1, height);
|
||||
width=EAX;
|
||||
|
||||
font_picture=mem_Alloc(width*height);
|
||||
truetype stdcall (#text, -1, font_picture, width, height);
|
||||
|
||||
for (x=0;x<256;x++) {
|
||||
palette[x*4]=255-x;
|
||||
palette[x*4+1]=255-x;
|
||||
palette[x*4+2]=255-x;
|
||||
palette[x*4+3]=0;
|
||||
}
|
||||
|
||||
PutPaletteImage(font_picture,width,height,0,0,8,#palette);
|
||||
mem_Free(font_picture);
|
||||
};*/
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
@ -58,7 +87,7 @@ void main()
|
||||
mem_Init();
|
||||
if (load_dll2(libio, #libio_init,1)!=0) debug("Íå óäàëîñü ïîäêëþ÷èòü áèáëèîòåêó libio"w);
|
||||
if (load_dll2(libimg, #libimg_init,1)!=0) debug("Íå óäàëîñü ïîäêëþ÷èòü áèáëèîòåêó libimg"w);
|
||||
if (load_dll2(boxlib, #edit_box_draw,0)!=0) debug("Не удалось подключить библиотеку boxlib"w);
|
||||
if (load_dll2(boxlib, #edit_box_draw,0)!=0) {RunProgram("@notify", "System Error: library doesn't exists /rd/1/lib/box_lib.obj"); ExitProcess();}
|
||||
load_dll2(#abox_lib, #boxlib_init,0);
|
||||
if (load_dll2(libtruetype, #truetype,0)!=0) {debug("Íå óäàëîñü ïîäêëþ÷èòü áèáëèîòåêó TrueType"w); use_truetype = 2;}
|
||||
|
||||
|
@ -1,3 +1,10 @@
|
||||
10.11.12 - 0.97.6
|
||||
- нормальный запуск программы даже без библиотеки lib_img;
|
||||
- оповещение если box_lib не найдена;
|
||||
- исправлена ошибка приводящая к торможению при отображении
|
||||
TrueType шрифтов;
|
||||
- обновление библиотек.
|
||||
|
||||
05.11.12 - 0.97.5
|
||||
Переключалка на шрифты TrueType из меню ПКМ.
|
||||
|
||||
|
@ -8,7 +8,7 @@ dword
|
||||
|
||||
char download_path[]="/rd/1/.download";
|
||||
char search_path[]="http://nigma.ru/index.php?s=";
|
||||
char version[]=" Text-based Browser 0.97.5";
|
||||
char version[]=" Text-based Browser 0.97.6";
|
||||
|
||||
|
||||
struct TWebBrowser {
|
||||
@ -122,8 +122,7 @@ void TWebBrowser::Scan(int id)
|
||||
case 005: //truetype
|
||||
if (use_truetype == 2)
|
||||
{
|
||||
debug("Не удалось подключить библиотеку TrueType");
|
||||
debug("/rd/1/lib/truetype.obj не обнаружен или имеет неправильный формат");
|
||||
RunProgram("@notify", "Library does not exists /rd/1/lib/truetype.obj"w);
|
||||
return;
|
||||
}
|
||||
if (use_truetype == 1) use_truetype=0; else use_truetype=1;
|
||||
@ -550,7 +549,6 @@ void TWebBrowser::DrawPage() //
|
||||
{
|
||||
//line_length = get_length stdcall (#line,-1,16,line_length);
|
||||
text_out stdcall (#line, -1, 17, text_colors[text_color_index], start_x, start_y-3);
|
||||
Pause(10);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -780,7 +778,7 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
|
||||
if (!chTag("img"))
|
||||
{
|
||||
//if (GetFileInfo(#libimg)<>0) return; //если библиотеки нет
|
||||
if (GetFileInfo(libimg)<>0) return; //åñëè áèáëèîòåêè íåò
|
||||
IMG_TAG:
|
||||
if (!strcmp(#parametr,"src=")) //íàäî îáúåäèíèòü ñ GetNewUrl()
|
||||
{
|
||||
@ -806,21 +804,13 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
GOTO IMG_TAG;
|
||||
}
|
||||
|
||||
if (!image)
|
||||
{
|
||||
//debug(#tag);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!image) return;
|
||||
|
||||
if (w>width1) w=width1;
|
||||
|
||||
|
||||
if (stroka==0) DrawBar(left, top, width-15, 15, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó
|
||||
|
||||
stroka+=h/10;
|
||||
|
||||
if (top1+h<WB1.top) || (top1>WB1.top+WB1.height-10) //если ВСЁ изображение ушло ВЕРХ или ВНИЗ
|
||||
return;
|
||||
|
||||
if (top1+h<WB1.top) || (top1>WB1.top+WB1.height-10) return; //åñëè ÂѨ èçîáðàæåíèå óøëî ÂÅÐÕ èëè ÂÍÈÇ
|
||||
if (top1<WB1.top) //åñëè ÷àñòü èçîáðàæåíèÿ ñâåðõó
|
||||
{
|
||||
DrawBar(left, top, width-15, 10, bg_color); //çàêðàøèâàåì ïåðâóþ ñòðîêó
|
||||
@ -828,22 +818,16 @@ void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
|
||||
h=h-img_lines_first;
|
||||
top1=WB1.top;
|
||||
}
|
||||
|
||||
if (top1>WB1.top+WB1.height-h-15) //если часть изображения снизу IF (stroka - 2 < lines.visible)
|
||||
if (top1>WB1.top+WB1.height-h-15) //åñëè ÷àñòü èçîáðàæåíèÿ ñíèçó
|
||||
{
|
||||
h=WB1.top+WB1.height-top1-15;
|
||||
}
|
||||
|
||||
if (h<=0) return;
|
||||
if (anchor) return;
|
||||
|
||||
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)
|
||||
{
|
||||
DefineButton(left1 - 5, top1+10, w, h, blink + BT_HIDE, 0xB5BFC9);
|
||||
}
|
||||
|
||||
IF (link) DefineButton(left1 - 5, top1+10, w, h, blink + BT_HIDE, 0xB5BFC9);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -46,7 +46,7 @@ f70 run_file_70;
|
||||
// Ńîçäŕíčĺ ďŕďęč //
|
||||
///////////////////////////
|
||||
f70 create_dir_70;
|
||||
:int CreateFolder(dword new_folder_path)
|
||||
:int CreateDir(dword new_folder_path)
|
||||
{
|
||||
create_dir_70.func = 9;
|
||||
create_dir_70.param1 =
|
||||
@ -186,4 +186,18 @@ void ReadAttributes(dword read_buffer, file_path)
|
||||
$mov eax,70
|
||||
$mov ebx,#read_file_70.func
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall void SetCurDir( ECX)
|
||||
{
|
||||
$mov eax,30
|
||||
$mov ebx,1
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall void GetCurDir( ECX, EDX)
|
||||
{
|
||||
$mov eax,30
|
||||
$mov ebx,2
|
||||
$int 0x40
|
||||
}
|
@ -306,6 +306,15 @@ void DefineAndDrawWindow(dword x,y, sizeX,sizeY, byte WindowType,dword WindowAre
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall DeleteAllButtons()
|
||||
{
|
||||
EAX = 12; // function 12:tell os about windowdraw
|
||||
EBX = 1;
|
||||
$int 0x40
|
||||
EBX = 2;
|
||||
$int 0x40
|
||||
}
|
||||
|
||||
inline fastcall MoveSize( EBX,ECX,EDX,ESI)
|
||||
{
|
||||
$mov eax, 67
|
||||
|
@ -26,13 +26,6 @@ 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
|
||||
@ -72,30 +65,30 @@ void mem_Free(dword mptr)
|
||||
inline fastcall mem_Move( EDI, ESI, ECX)
|
||||
{
|
||||
asm {
|
||||
mov eax, ecx
|
||||
cmp edi, esi
|
||||
jg l1
|
||||
je l2
|
||||
sar ecx, 2
|
||||
js l2
|
||||
rep movsd
|
||||
mov ecx, eax
|
||||
and ecx, 3
|
||||
rep movsb
|
||||
jmp short l2
|
||||
l1: lea esi, dsdword[ esi+ecx-4]
|
||||
lea edi, dsdword[ edi+ecx-4]
|
||||
sar ecx, 2
|
||||
js l2
|
||||
std
|
||||
rep movsd
|
||||
mov ecx, eax
|
||||
and ecx, 3
|
||||
add esi, 3
|
||||
add edi, 3
|
||||
rep movsb
|
||||
cld
|
||||
l2:
|
||||
MOV EAX, ECX
|
||||
CMP EDI, ESI
|
||||
JG L1
|
||||
JE L2
|
||||
SAR ECX, 2
|
||||
JS L2
|
||||
REP MOVSD
|
||||
MOV ECX, EAX
|
||||
AND ECX, 3
|
||||
REP MOVSB
|
||||
JMP SHORT L2
|
||||
L1: LEA ESI, DSDWORD[ ESI+ECX-4]
|
||||
LEA EDI, DSDWORD[ EDI+ECX-4]
|
||||
SAR ECX, 2
|
||||
JS L2
|
||||
STD
|
||||
REP MOVSD
|
||||
MOV ECX, EAX
|
||||
AND ECX, 3
|
||||
ADD ESI, 3
|
||||
ADD EDI, 3
|
||||
REP MOVSB
|
||||
CLD
|
||||
L2:
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -203,6 +203,8 @@ inline fastcall strupr( ESI)
|
||||
do{
|
||||
AL=DSBYTE[ESI];
|
||||
IF(AL>='a')IF(AL<='z')DSBYTE[ESI]=AL&0x5f;
|
||||
IF (AL>=160) && (AL<=175) DSBYTE[ESI] = AL - 32; //à-ï
|
||||
IF (AL>=224) && (AL<=239) DSBYTE[ESI] = AL - 80; //à-ï
|
||||
ESI++;
|
||||
}while(AL!=0);
|
||||
}
|
||||
@ -236,42 +238,42 @@ inline fastcall strttl( EDX)
|
||||
|
||||
|
||||
|
||||
inline fastcall unsigned int strstr( EBX, EDX)
|
||||
inline fastcall dword 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:
|
||||
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:
|
||||
}
|
||||
}
|
||||
|
||||
@ -298,7 +300,7 @@ divs -
|
||||
не 0, если слово скопировано в dest (передайте это значение
|
||||
в качестве src для последующего поиска) */
|
||||
|
||||
dword fastcall strtok( EDX, ESI, EBX)
|
||||
inline fastcall dword strtok( EDX, ESI, EBX)
|
||||
{
|
||||
asm {
|
||||
XOR ECX, ECX
|
||||
|
Loading…
Reference in New Issue
Block a user