diff --git a/programs/network/htmlv/browser/HTMLv.c b/programs/network/htmlv/browser/HTMLv.c
index 1512801ac6..b06123946a 100644
--- a/programs/network/htmlv/browser/HTMLv.c
+++ b/programs/network/htmlv/browser/HTMLv.c
@@ -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;}
diff --git a/programs/network/htmlv/browser/History.txt b/programs/network/htmlv/browser/History.txt
index c81a34be97..4c2fd93b87 100644
--- a/programs/network/htmlv/browser/History.txt
+++ b/programs/network/htmlv/browser/History.txt
@@ -1,3 +1,10 @@
+10.11.12 - 0.97.6
+- нормальный запуск программы даже без библиотеки lib_img;
+- оповещение если box_lib не найдена;
+- исправлена ошибка приводящая к торможению при отображении
+ TrueType шрифтов;
+- обновление библиотек.
+
05.11.12 - 0.97.5
Переключалка на шрифты TrueType из меню ПКМ.
diff --git a/programs/network/htmlv/browser/TWB.h b/programs/network/htmlv/browser/TWB.h
index 3639f26e66..06fbf7021a 100644
--- a/programs/network/htmlv/browser/TWB.h
+++ b/programs/network/htmlv/browser/TWB.h
@@ -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+hWB1.top+WB1.height-10) //если ВСЁ изображение ушло ВЕРХ или ВНИЗ
- return;
-
+ if (top1+hWB1.top+WB1.height-10) return; //если ВСЁ изображение ушло ВЕРХ или ВНИЗ
if (top1WB1.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;
}
diff --git a/programs/network/htmlv/lib/file_system.h b/programs/network/htmlv/lib/file_system.h
index 8162c65886..05cba0fc76 100644
--- a/programs/network/htmlv/lib/file_system.h
+++ b/programs/network/htmlv/lib/file_system.h
@@ -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
}
\ No newline at end of file
diff --git a/programs/network/htmlv/lib/kolibri.h b/programs/network/htmlv/lib/kolibri.h
index ee3d4ea88d..f15e4753de 100644
--- a/programs/network/htmlv/lib/kolibri.h
+++ b/programs/network/htmlv/lib/kolibri.h
@@ -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
diff --git a/programs/network/htmlv/lib/mem.h b/programs/network/htmlv/lib/mem.h
index f8848815fe..06fcc894db 100644
--- a/programs/network/htmlv/lib/mem.h
+++ b/programs/network/htmlv/lib/mem.h
@@ -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:
}
}
diff --git a/programs/network/htmlv/lib/strings.h b/programs/network/htmlv/lib/strings.h
index c6f12b574c..aa33f4c809 100644
--- a/programs/network/htmlv/lib/strings.h
+++ b/programs/network/htmlv/lib/strings.h
@@ -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