diff --git a/programs/cmm/TWB/TWB.c b/programs/cmm/TWB/TWB.c
index 2b2ee7dba0..60ffebf631 100644
--- a/programs/cmm/TWB/TWB.c
+++ b/programs/cmm/TWB/TWB.c
@@ -90,7 +90,7 @@ void TWebBrowser::DrawStyle()
{
start_x = stolbec * list.font_w + body_magrin * DrawBuf.zoom + list.x;
start_y = stroka * list.item_h + body_magrin;
- stolbec_len = utf8_strlen(#line) * DrawBuf.zoom;
+ stolbec_len = strlen(#line) * DrawBuf.zoom;
line_length = stolbec_len * list.font_w;
if (style.h) stroka++;
@@ -212,7 +212,7 @@ void TWebBrowser::Prepare(){
default:
DEFAULT_MARK:
if (bukva<=15) bukva=' ';
- line_len = utf8_strlen(#line);
+ line_len = strlen(#line);
if (!style.pre) && (bukva == ' ')
{
if (line[line_len-1]==' ') break; //no double spaces
@@ -238,9 +238,9 @@ void TWebBrowser::Perenos()
{
int perenos_num;
char new_line_text[4096];
- if (utf8_strlen(#line)*DrawBuf.zoom + stolbec < list.column_max) return;
+ if (strlen(#line)*DrawBuf.zoom + stolbec < list.column_max) return;
perenos_num = strrchr(#line, ' ');
- if (!perenos_num) && (utf8_strlen(#line)*DrawBuf.zoom>list.column_max) perenos_num=list.column_max/DrawBuf.zoom;
+ if (!perenos_num) && (strlen(#line)*DrawBuf.zoom>list.column_max) perenos_num=list.column_max/DrawBuf.zoom;
strcpy(#new_line_text, #line + perenos_num);
line[perenos_num] = 0x00;
DrawStyle();
diff --git a/programs/cmm/TWB/absolute_url.h b/programs/cmm/TWB/absolute_url.h
index 9c6c50c389..caf8623b49 100644
--- a/programs/cmm/TWB/absolute_url.h
+++ b/programs/cmm/TWB/absolute_url.h
@@ -34,11 +34,11 @@ void GetAbsoluteURL(dword in_URL)
IF (!strcmpn(in_URL,"./", 2)) in_URL+=2;
if (!http_transfer)
{
- strcpy(#newurl, History.current());
+ strcpy(#newurl, history.current());
}
else
{
- strcpy(#newurl, History.items.get(History.active-2));
+ strcpy(#newurl, history.items.get(history.active-2));
}
if (ESBYTE[in_URL] == '/') //remove everything after site domain name
diff --git a/programs/cmm/browser/WebView.c b/programs/cmm/browser/WebView.c
index b772bb7606..9ab7319be5 100644
--- a/programs/cmm/browser/WebView.c
+++ b/programs/cmm/browser/WebView.c
@@ -218,14 +218,14 @@ void main()
http_free stdcall (http_transfer);
http_transfer=0;
GetAbsoluteURL(#URL);
- History.back();
+ history.back();
strcpy(#editURL, #URL);
DrawEditBox();
OpenPage();
}
else
{
- History.add(#URL);
+ history.add(#URL);
ESI = http_transfer;
bufpointer = ESI.http_msg.content_ptr;
bufsize = ESI.http_msg.content_received;
@@ -295,14 +295,14 @@ void Scan(dword id__)
{
case SCAN_CODE_BS:
case BACK_BUTTON:
- if (History.back()) {
- strcpy(#URL, History.current());
+ if (history.back()) {
+ strcpy(#URL, history.current());
OpenPage();
}
return;
case FORWARD_BUTTON:
- if (History.forward()) {
- strcpy(#URL, History.current());
+ if (history.forward()) {
+ strcpy(#URL, history.current());
OpenPage();
}
return;
@@ -400,7 +400,7 @@ void OpenPage()
StopLoading();
souce_mode = false;
strcpy(#editURL, #URL);
- History.add(#URL);
+ history.add(#URL);
if (!strncmp(#URL,"WebView:",8))
{
SetPageDefaults();
@@ -498,7 +498,7 @@ void ClickLink()
if (http_transfer > 0)
{
StopLoading();
- History.back();
+ history.back();
}
strcpy(#URL, PageLinks.GetURL(PageLinks.active));
@@ -506,7 +506,7 @@ void ClickLink()
if (URL[0] == '#')
{
strcpy(#anchor, #URL+strrchr(#URL, '#'));
- strcpy(#URL, History.current());
+ strcpy(#URL, history.current());
WB1.list.first=WB1.list.count-WB1.list.visible;
ShowPage();
return;
@@ -530,15 +530,15 @@ void ClickLink()
CreateThread(#Downloader,#downloader_stak+4092);
}
else RunProgram("@open", #URL);
- strcpy(#editURL, History.current());
- strcpy(#URL, History.current());
+ strcpy(#editURL, history.current());
+ strcpy(#URL, history.current());
return;
}
if (!strncmp(#URL,"mailto:", 7))
{
notify(#URL);
- strcpy(#editURL, History.current());
- strcpy(#URL, History.current());
+ strcpy(#editURL, history.current());
+ strcpy(#URL, history.current());
return;
}
OpenPage();
diff --git a/programs/cmm/browser/history.h b/programs/cmm/browser/history.h
index 8ec66bbf81..e299d43564 100644
--- a/programs/cmm/browser/history.h
+++ b/programs/cmm/browser/history.h
@@ -5,15 +5,15 @@ ShowHistory()
int t;
free(history_pointer);
- history_pointer = malloc(History.items.data_size+256);
+ history_pointer = malloc(history.items.data_size+256);
strcat(history_pointer, "
HistoryHistory
");
strcat(history_pointer, "Visited pages
");
- for (i=1; i");
- strcat(history_pointer, History.items.get(i));
+ strcat(history_pointer, history.items.get(i));
strcat(history_pointer, "
");
}
strcat(history_pointer, "
Cached images
");
diff --git a/programs/cmm/eolite/Eolite.c b/programs/cmm/eolite/Eolite.c
index 57ed546150..cccb001d40 100644
--- a/programs/cmm/eolite/Eolite.c
+++ b/programs/cmm/eolite/Eolite.c
@@ -170,9 +170,9 @@ void main()
{
if (dif_x > 150)
{
- if (History.forward())
+ if (history.forward())
{
- strcpy(#path, History.current());
+ strcpy(#path, history.current());
files.KeyHome();
Open_Dir(#path,WITH_REDRAW);
}
@@ -324,9 +324,9 @@ void main()
GoBack();
break;
case 22: //Forward
- if (History.forward())
+ if (history.forward())
{
- strcpy(#path, History.current());
+ strcpy(#path, history.current());
files.KeyHome();
Open_Dir(#path,WITH_REDRAW);
}
@@ -743,7 +743,7 @@ void Open_Dir(dword dir_path, redraw){
if (ESBYTE[dir_path+1]!='\0') chrcat(dir_path, '/');
if (errornum)
{
- History.add(#path);
+ history.add(#path);
GoBack();
Write_Error(errornum);
return;
@@ -761,7 +761,7 @@ void Open_Dir(dword dir_path, redraw){
PathShow_prepare stdcall(#PathShow);
PathShow_draw stdcall(#PathShow);
}
- History.add(#path);
+ history.add(#path);
files.visible = files.h / files.item_h;
if (files.count < files.visible) files.visible = files.count;
if (redraw!=ONLY_SHOW) Sorting();
@@ -999,8 +999,8 @@ inline fastcall void GoBack()
char cur_folder[4096];
strcpy(#cur_folder, #path);
cur_folder[strlen(#cur_folder)-1]=0x00; //delete last '/'
- if (History.back()) {
- strcpy(#path, History.current());
+ if (history.back()) {
+ strcpy(#path, history.current());
SelectFileByName(#cur_folder+strrchr(#cur_folder,'/'));
}
}
diff --git a/programs/cmm/lib/font.h b/programs/cmm/lib/font.h
index 6af7dcad84..e746e1ebb5 100644
--- a/programs/cmm/lib/font.h
+++ b/programs/cmm/lib/font.h
@@ -9,6 +9,9 @@
#include "../lib/obj/fs.h"
#endif
+#include "../lib/patterns/rgb.h"
+
+
#define DEFAULT_FONT "/sys/fonts/Tahoma.kf"
:struct __SIZE
@@ -211,20 +214,40 @@ inline fastcall dword b24(EBX) { return DSDWORD[EBX] << 8; }
:void LABEL::apply_smooth()
{
dword i,line_w,to;
+ rgb.DwordToRgb(ShadowPixel(background,2)); //get shadowed pixel
line_w = size.width * 3;
to = size.height - 1 * line_w + raw - 3;
for(i=raw; i < to; i+=3)
{
if(i-raw%line_w +3 == line_w) continue;
+ // pixels position, where b - black, w - write
+ // bw
+ // wb
if(b24(i)==0x000000) && (b24(i+3)!=0x000000) && (b24(i+line_w)!=0x000000) && (b24(i+3+line_w)==0x000000)
{
- ShadowImage(i+3, 1, 1, 2);
- ShadowImage(i+line_w, 1, 1, 2);
+ ESBYTE[i+3] = rgb.b;
+ ESBYTE[i+4] = rgb.g;
+ ESBYTE[i+5] = rgb.r;
+ ESBYTE[i+line_w ] = rgb.b;
+ ESBYTE[i+line_w+1] = rgb.g;
+ ESBYTE[i+line_w+2] = rgb.r;
+ // // I don't know why but underneath code works slower then beneath
+ // DSDWORD[i] = DSDWORD[i] & 0xFF000000 | dark_background;
+ // DSDWORD[i+line_w] = DSDWORD[i+3+line_w] & 0xFF000000 | dark_background;
}
+ // wb
+ // bw
else if(b24(i)!=0x000000) && (b24(i+3)==0x000000) && (b24(i+line_w)==0x000000) && (b24(i+3+line_w)!=0x000000)
{
- ShadowImage(i, 1, 1, 2);
- ShadowImage(i+3+line_w, 1, 1, 2);
+ ESBYTE[i ] = rgb.b;
+ ESBYTE[i+1] = rgb.g;
+ ESBYTE[i+2] = rgb.r;
+ ESBYTE[i+line_w+3] = rgb.b;
+ ESBYTE[i+line_w+4] = rgb.g;
+ ESBYTE[i+line_w+5] = rgb.r;
+ // // I don't know why but underneath code works slower then beneath
+ // DSDWORD[i] = DSDWORD[i] & 0xFF000000 | dark_background;
+ // DSDWORD[i+3+line_w] = DSDWORD[i+3+line_w] & 0xFF000000 | dark_background;
}
}
}
@@ -281,9 +304,11 @@ inline fastcall dword b24(EBX) { return DSDWORD[EBX] << 8; }
IF(!text1)return;
IF(size.pt)IF(!changeSIZE())return;
- size.pt = fontSizePoints;
- getsize(text1);
- y -= size.offset_y;
+ if (size.pt != fontSizePoints) {
+ size.pt = fontSizePoints;
+ getsize(text1);
+ y -= size.offset_y;
+ }
color = _color;
background = _background;
diff --git a/programs/cmm/lib/io.h b/programs/cmm/lib/io.h
index 9697f73401..ab73809da8 100644
--- a/programs/cmm/lib/io.h
+++ b/programs/cmm/lib/io.h
@@ -2,22 +2,22 @@
/*
class IO:
- io.count(path) - количество файлов в дирректории path
- io.size(path) - размер (файла/папки) path
- io.run(path,param) - запустить файл path с параметром param
- io.write(path,data) - записать файл с данными data в дирректорию path
- io.read(path) - прочитать файл path и возвратить указатель на данные
- io.move(path1,path2) - переместить (файл/папку) из path1 в path2
- io.copy(path1,path2) - копировать (файл/папку) из path1 в path2
- io.set(path,attribute) - установить аттрибуты для (файла/папки)
- io.del(path) - удалить (файл/папку)
+ io.count(path) - количество файлов в дирректории path
+ io.size(path) - размер (файла/папки) path
+ io.run(path,param) - запустить файл path с параметром param
+ io.write(size,data,path) - записать файл с данными data в дирректорию path
+ io.read(path) - прочитать файл path и возвратить указатель на данные
+ io.move(path1,path2) - переместить (файл/папку) из path1 в path2
+ io.copy(path1,path2) - копировать (файл/папку) из path1 в path2
+ io.set(path,attribute) - установить аттрибуты для (файла/папки)
+ io.del(path) - удалить (файл/папку)
- io.dir.load(path) - загрузить в буффер данные папки path (следует очищать буффер сомандой free!!!)
- io.dir.position(number) - возвратить указатель имени файла по позиции number
- io.dir.make(path) - создать папку path
+ io.dir.load(path) - загрузить в буффер данные папки path (следует очищать буффер сомандой free!!!)
+ io.dir.position(number) - возвратить указатель имени файла по позиции number
+ io.dir.make(path) - создать папку path
- io.dir.buffer - буффер данных загруженной папки ф-цией (io.dir.load)
- io.dir.count - количество файлов фагруженной ф-цией (io.count)
+ io.dir.buffer - буффер данных загруженной папки ф-цией (io.dir.load)
+ io.dir.count - количество файлов фагруженной ф-цией (io.count)
*/
#ifndef INCLUDE_IO_H
diff --git a/programs/cmm/lib/kolibri.h b/programs/cmm/lib/kolibri.h
index 99d237a58a..a13ee4571b 100644
--- a/programs/cmm/lib/kolibri.h
+++ b/programs/cmm/lib/kolibri.h
@@ -1,4 +1,5 @@
-//CODED by Veliant, Leency, Nable. GNU GPL licence.
+//CODED by Veliant, Leency, Nable, Pavelyakov. GNU GPL licence.
+
#ifndef INCLUDE_KOLIBRI_H
#define INCLUDE_KOLIBRI_H
#print "[include ]\n"
@@ -805,15 +806,14 @@ void ______INIT______()
DOUBLE_CLICK_DELAY = GetMouseDoubleClickDelay();
__generator = GetStartTime();
- $push ebx
- $mov eax, 68
- $mov ebx, 11
- $int 0x40
-
- $pop ebx
+ mem_init();
main();
ExitProcess();
}
______STOP______:
-#endif
\ No newline at end of file
+#endif
+
+#ifndef INCLUDE_MEM_H
+#include "../lib/mem.h"
+#endif
diff --git a/programs/cmm/lib/mem.h b/programs/cmm/lib/mem.h
index 5208253285..b4b2862ebb 100644
--- a/programs/cmm/lib/mem.h
+++ b/programs/cmm/lib/mem.h
@@ -9,61 +9,64 @@
dword mem_init()
{
$push ebx
- $mov eax, 68
- $mov ebx, 11
- $int 0x40
-
- $pop ebx
- return EAX;
+ $mov eax, 68
+ $mov ebx, 11
+ $int 0x40
+
+ $pop ebx
+ return EAX;
}
dword malloc(dword size)
{
- $push ebx
- $push ecx
- $mov eax, 68
- $mov ebx, 12
- $mov ecx, size
- $int 0x40
-
- $pop ecx
- $pop ebx
- return EAX;
+ $push ebx
+ $push ecx
+
+ $mov eax, 68
+ $mov ebx, 12
+ $mov ecx, size
+ $int 0x40
+
+ $pop ecx
+ $pop ebx
+ return EAX;
}
stdcall dword realloc(dword mptr, size)
{
- $push ebx
- $push ecx
- $push edx
- $mov eax, 68
- $mov ebx, 20
- $mov ecx, size
- $mov edx, mptr
- $int 0x40
+ $push ebx
+ $push ecx
+ $push edx
- $pop edx
- $pop ecx
- $pop ebx
- return EAX;
+ $mov eax, 68
+ $mov ebx, 20
+ $mov ecx, size
+ $mov edx, mptr
+ $int 0x40
+
+ $pop edx
+ $pop ecx
+ $pop ebx
+ return EAX;
}
dword free(dword mptr)
{
- $push eax
- $push ebx
- $push ecx
- $mov eax, 68
- $mov ebx, 13
- $mov ecx, mptr
- $test ecx, ecx
- $jz end0
- $int 0x40
+ $push eax
+ $push ebx
+ $push ecx
+
+ $mov eax, 68
+ $mov ebx, 13
+ $mov ecx, mptr
+ $test ecx, ecx
+ $jz end0
+ $int 0x40
@end0:
- $pop ecx
- $pop ebx
- $pop eax
- return 0;
+ $pop ecx
+ $pop ebx
+ $pop eax
+ return 0;
}
inline fastcall memmov( EDI, ESI, ECX)
diff --git a/programs/cmm/lib/patterns/history.h b/programs/cmm/lib/patterns/history.h
index 90c5a3c470..e4ea4ccb8f 100644
--- a/programs/cmm/lib/patterns/history.h
+++ b/programs/cmm/lib/patterns/history.h
@@ -1,15 +1,15 @@
#include "..\lib\collection.h"
-struct _History {
+struct _history {
collection items;
int active;
int add();
int back();
int forward();
dword current();
-} History;
+} history;
-int _History::add(dword in)
+int _history::add(dword in)
{
if (!strcmp(in, items.get(active-1))) return 0;
items.count = active;
@@ -18,21 +18,21 @@ int _History::add(dword in)
return 1;
}
-int _History::back()
+int _history::back()
{
if (active==1) return 0;
active--;
return 1;
}
-int _History::forward()
+int _history::forward()
{
if (active==items.count) return 0;
active++;
return 1;
}
-dword _History::current()
+dword _history::current()
{
return items.get(active-1);
}
\ No newline at end of file
diff --git a/programs/cmm/lib/strings.h b/programs/cmm/lib/strings.h
index 4c00248261..ba5e065bb6 100644
--- a/programs/cmm/lib/strings.h
+++ b/programs/cmm/lib/strings.h
@@ -506,7 +506,7 @@ inline dword strstri(dword searchin, usestr_s)
searchin++;
if (DSBYTE[usestr_e]=='\0') return searchin;
}
- return 0;
+ return -1;
}