max_kolvo_strok) while (m.lkm)
{
IF (razm_scrl/2+WB1.top>m.y) || (m.y<0) || (m.y>4000) m.y=razm_scrl/2+WB1.top; //если курсор над окном
btn=za_kadrom; //сохраняем старое количество
diff --git a/programs/network/htmlv/browser/History.txt b/programs/network/htmlv/browser/History.txt
index 9fd67fb627..cc6258e1a8 100644
--- a/programs/network/htmlv/browser/History.txt
+++ b/programs/network/htmlv/browser/History.txt
@@ -1,3 +1,16 @@
+20.08.11 -- v0.67 -- 11.1 Кб
+- более адекватная прокрутка изображений;
+- корректная обработка табов в тексте и с тегом (спасибо Nazarus и Jaeger);
+- улучшена отзывчивость программы при прокрутке больших страниц (фикс изначально
+ был написан Gluk'ом для игры Косилка по моей просьба, сюда перенесен мной);
+- небольшие исправления в реакции ползунка прокрутки;
+- исправлено залезание текста в наклонном шрифте на левый ободок окна;
+- кнопка "Новая вкладка" и комбинации Ctrl+N, Ctrl+T банально создают новое окно;
+- правильное распознание украинской буквы ґ;
+- поддержка кодировки "UTF8" для универсальности (идея фичи Joaquin).
+
+
+
20.06.11 -- v0.63 -- 11.32 Кб
lev
- наклонный шрифт
diff --git a/programs/network/htmlv/browser/TWB.h-- b/programs/network/htmlv/browser/TWB.h--
index 75cf228977..f4fd86484a 100644
--- a/programs/network/htmlv/browser/TWB.h--
+++ b/programs/network/htmlv/browser/TWB.h--
@@ -1,14 +1,12 @@
//http://jsbeautifier.org/
//Web-component, Leency & Veliant 2007-2009
//lev
+
+
//идея - левые файлы открывать соответствующими прогами
-
-// wintodos(buf); -> в парсе хтмл как и все кодировки
-
+//wintodos(buf); -> в парсе хтмл как и все кодировки
//ol - циферки
-//ускорена загрузка страницы, содержащей изображения
-//уменьшено количество перерисовок заголовка окна при загрузке страницы
dword j,
buf,
@@ -19,11 +17,11 @@ dword j,
char download_path[]="/rd/1/.download";
//char search_path[]="http://nova.rambler.ru/search?words=";
char search_path[]="http://nigma.ru/index.php?s=";
- char version[]=" HTML Viewer v0.63";
+ char version[]=" Text-based Browser 23.67";
struct TWebBrowser {
- dword left,
+ int left,
top,
width,
height;
@@ -64,15 +62,21 @@ void TWebBrowser::Scan(dword id) {
case BACK:
BrowserHistory.GoBack();
return;
- /*case FORWARD:
- WriteDebug(#UrlHistory);
- return;*/
+ case FORWARD:
+ //RunProgram("@notify", "Forward button is not realized yet");
+ return;
case 054: //F5
IF(edit1.flags == 66) break;
case REFRESH:
copystr(#URL, #editURL);
Draw_Window();
return;
+ case 014: //Ctrl+N новое окно
+ case 020: //Ctrl+T новая вкладка
+ case NEWTAB:
+ MoveSize(190,80,OLD,OLD);
+ RunProgram(#program_path, #URL);
+ return;
case HOME:
copystr("/sys/index.htm", #editURL);
case GOTOURL:
@@ -235,7 +239,8 @@ dword text_colors[10],
text_color_index = 0,
link_color;
int stroka,
- stolbec;
+ stolbec,
+ tab_len;
byte line[330],
tag[100],
tagparam[10000],
@@ -271,11 +276,18 @@ void TWebBrowser::ParseHTML(dword bword, fsize){
goto NEXT_MARK;
}
CASE '\9':
- CASE 0x0d:
- //IF(pre_text == 1) {copystr(" ", #line + strlen(#line)); break;} ELSE
+ if (pre_text == 1) //иначе идём на 0x0d
+ {
+ tab_len=strlen(#line)/8;
+ tab_len=tab_len*8;
+ tab_len=8+tab_len-strlen(#line);
+ for (i=0; i, дерзко
{
@@ -325,37 +337,6 @@ void TWebBrowser::ParseHTML(dword bword, fsize){
bukva=Hex2Symb(#temp);
IF (bukva) goto DEFAULT_MARK;
break;
- /*case '\\': //поддержка RTF, http://dev.rembish.ru/rtf.phps
- IF(strcmp(#URL + strlen(#URL) - 4, ".rtf")<>0) goto DEFAULT_MARK;
- rtf_text='';
-
- //
- bword++;
- j = 0;
-
- IF (ESBYTE[bword]=='\'')
- {
- bword++;
- bukva=ESBYTE[bword];
- copystr(#bukva, #rtf_text);
-
- bword++;
- bukva=ESBYTE[bword];
- copystr(#bukva, #rtf_text + strlen(#rtf_text));
-
- bukva=Hex2Symb(#rtf_text);
- IF (bukva) goto DEFAULT_MARK;
- }
-
- WHILE ((ESBYTE[bword] <>' ') && (j < 25) && (ESBYTE[bword] <>'\\') && (ESBYTE[bword] <>0x0d)) {
- bukva = ESBYTE[bword];
- copystr(#bukva, #rtf_text + strlen(#rtf_text));
- bword++;
- j++;
- }
-
- IF (strcmp(#rtf_text,"par")==0) goto NEXT_MARK;
- break;*/
case '&':
IF(ignor_text) break;
bword++;
@@ -457,7 +438,7 @@ void GetNextParam() {
char oldtag[100];
-void TWebBrowser::WhatTextStyle(word left1, top1, width1) {
+void TWebBrowser::WhatTextStyle(int left1, top1, width1) {
dword hr_color;
dword image=0;
@@ -636,13 +617,28 @@ void TWebBrowser::WhatTextStyle(word left1, top1, width1) {
if (image)
{
- IF (width1WB1.top+WB1.height-10) //если ВСЁ изображение ушло ВЕРХ или ВНИЗ
+ return;
+
+ if (top1WB1.top+WB1.height-h-10) //если часть изображения снизу IF (stroka - 2 < max_kolvo_strok)
+ {
+ //WriteDebug(IntToStr(top1));
+ //WriteDebug(IntToStr(WB1.top));
+ //WriteDebug(IntToStr(h));
+ h=WB1.top+WB1.height-top1-10;
+ }
+
+ img_draw stdcall (image,left1-5,top1+10,w, h,0,0);
+ DrawBar(left1+w - 5, top1 + 10, width1-w + 5, h, 0xFFFFFF);
}
- //else WriteDebug(#options);
}
if (!chTag("meta")) {
@@ -651,7 +647,7 @@ void TWebBrowser::WhatTextStyle(word left1, top1, width1) {
{
copystr(#options[find_symbol(#options, '=')],#options); //поиск в content=
- IF (!strcmp(#options,"utf-8"))
+ IF (!strcmp(#options,"utf-8")) || (!strcmp(#options,"utf8"))
{
ReadHtml(DONT_LOAD);
utf8rutodos(buf);
@@ -680,12 +676,4 @@ void TextGoDown(int left1, top1, width1) {
ELSE stolbec = 0;
IF(li_text == 1) stolbec = li_tab * 5;
IF(stroka >= 0) && (stroka - 2 < max_kolvo_strok) DrawBar(left1 - 5, top1 + 10, width1 + 5, 10, 0xFFFFFF);
-}
-
-void TextGoDown2(int left1,top1,width1,height1)//ASPER: Надо заменить эту функцию более правильной.
-{
- stroka+=height1/10;
- IF (blq_text==1) stolbec=8; ELSE stolbec=0;
- IF (li_text==1) stolbec=5;
- IF (stroka>=0) && (stroka-2> 8;
+
+inline fastcall word GetKey(){ //Gluk fix
+ $push edx
+@getkey:
+ $mov eax,2
+ $int 0x40
+ $cmp eax,1
+ $jne getkeyi
+ $mov ah,dh
+ $jmp getkeyii //jz?
+@getkeyi:
+ $mov dh,ah
+ $jmp getkey
+@getkeyii:
+ $pop edx
+ EAX = EAX >> 8;
}
inline fastcall word GetButtonID(){
@@ -356,13 +369,14 @@ inline fastcall wintodos (dword ESI)
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==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==147) || (BL==148) || (BL==171) || (BL==187)) ESBYTE[ESI] = 34;
- IF ((BL==150) || (BL==151)) ESBYTE[ESI] = 45;
+ 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;
}
ESI++;
}