From 832a6dcbfe997a3b809ffa0fb6a11801a88b1dca Mon Sep 17 00:00:00 2001 From: pavelyakov Date: Mon, 7 Sep 2015 11:33:25 +0000 Subject: [PATCH] Update: lib font.h, fixed bugs, new font software_widget.c git-svn-id: svn://kolibrios.org@5814 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/cmm/eolite/Eolite.c | 6 +-- programs/cmm/lib/font.h | 28 +++++++------ .../cmm/software_widget/software_widget.c | 41 ++++++++++++++----- 3 files changed, 48 insertions(+), 27 deletions(-) diff --git a/programs/cmm/eolite/Eolite.c b/programs/cmm/eolite/Eolite.c index ab119d0ea..5a25a12b2 100644 --- a/programs/cmm/eolite/Eolite.c +++ b/programs/cmm/eolite/Eolite.c @@ -6,7 +6,7 @@ #endif //libraries -#define MEMSIZE 530000 +#define MEMSIZE 540000 #include "..\lib\clipboard.h" #include "..\lib\strings.h" #include "..\lib\mem.h" @@ -708,8 +708,8 @@ void Line_ReDraw(dword bgcol, filenum){ else { font.bg_color = bgcol; - font.prepare(0, 0, file_name_off); - font.show(files.x + 23, files.line_h - font.height / 2 + y); + font.prepare(files.x + 23, files.line_h - font.height / 2 + y, file_name_off); + font.show(); } DrawBar(files.x+files.w-141,y,1,files.line_h,system.color.work); //gray line 1 DrawBar(files.x+files.w-68,y,1,files.line_h,system.color.work); //gray line 2 diff --git a/programs/cmm/lib/font.h b/programs/cmm/lib/font.h index 1d71f7c38..0ab13a554 100644 --- a/programs/cmm/lib/font.h +++ b/programs/cmm/lib/font.h @@ -26,6 +26,7 @@ __SIZE size; byte r,g,b,weight,italic, smooth; byte width,height; + word left,top; byte encoding; dword color; dword file_size; @@ -39,7 +40,7 @@ byte symbol_size(byte s); dword prepare(word x,y;dword text1); void prepare_buf(word x,y,w,h;dword text1); - void show(word x,y); + void show(); byte textcenter(word x,y,w,h;dword txt); dword getsize(dword text1); byte changeSIZE(); @@ -92,7 +93,7 @@ FONT font = 0; ECX = size.width/2; EDX -= ECX; x += EDX; - return text(x,y,txt); + prepare(x,y,txt); } :dword FONT::getsize(dword text1) { @@ -178,12 +179,13 @@ FONT font = 0; proc_info Form_SELF_FONTS; dword c; c = color; + left = x; IF(!text1)return false; IF(size.text)IF(!changeSIZE())return false; AX = c; r = AL; g = AH; c>>=16; AX = c; b = AL; getsize(text1); y -= size.offset.y; - + top = y; EDX = size.width*size.height*3; IF(!buffer_size) { @@ -209,7 +211,6 @@ FONT font = 0; ELSE { GetProcessInfo(#Form_SELF_FONTS, SelfInfo); - y-=size.offset.y; CopyScreen(buffer,x+Form_SELF_FONTS.left+5,y+Form_SELF_FONTS.top+GetSkinHeight(),size.width,size.height); } len = size.offset.x; @@ -223,10 +224,9 @@ FONT font = 0; IF (no_bg_copy) && (!color) SmoothFont(buffer, size.width, size.height); return len; } -:void FONT::show(word x,y) +:void FONT::show() { - y-=size.offset.y; - _PutImage(x,y,size.width,size.height,buffer); + _PutImage(left,top,size.width,size.height,buffer); } inline fastcall dword b24(EBX) { return DSDWORD[EBX] << 8; } :void SmoothFont(dword image, w, h) @@ -252,12 +252,12 @@ inline fastcall dword b24(EBX) { return DSDWORD[EBX] << 8; } :byte FONT::symbol(signed x,y;byte s) { dword xi,yi; - dword _; dword iii; float ital = -size.w_italic; dword ___x; - byte _TMP_WEIGHT; + //byte _TMP_WEIGHT; byte rw=0; + //_TMP_WEIGHT=2; IF(s==32)return width/4; IF(s==9)return width; IF(!encoding) @@ -291,10 +291,12 @@ inline fastcall dword b24(EBX) { return DSDWORD[EBX] << 8; } ___x = x+xi; IF(italic)___x+=math.ceil(ital); PixelRGB(___x,EDI); - FOR(_TMP_WEIGHT=size.TMP_WEIGHT; _TMP_WEIGHT; _TMP_WEIGHT--) - { - IF(weight) PixelRGB(___x+_TMP_WEIGHT,EDI); - } + //_TMP_WEIGHT = 2; + //WHILE(_TMP_WEIGHT) + //{ + // _TMP_WEIGHT--; + IF(weight) PixelRGB(___x+1,EDI); + //} } iii++; } diff --git a/programs/cmm/software_widget/software_widget.c b/programs/cmm/software_widget/software_widget.c index 6f08c79c1..87c1bc178 100644 --- a/programs/cmm/software_widget/software_widget.c +++ b/programs/cmm/software_widget/software_widget.c @@ -2,7 +2,7 @@ SOFTWARE CENTER v2.32 */ -#define MEMSIZE 0x5000 +#define MEMSIZE 0x9000 #include "..\lib\strings.h" #include "..\lib\mem.h" #include "..\lib\file_system.h" @@ -11,7 +11,7 @@ SOFTWARE CENTER v2.32 #include "..\lib\obj\libio_lib.h" #include "..\lib\obj\libimg_lib.h" #include "..\lib\obj\libini.h" - +#include "..\lib\font.h" #include "..\lib\patterns\libimg_load_skin.h" proc_info Form; @@ -58,7 +58,7 @@ void load_config() void main() { dword id, key; - + font.load("/sys/fonts/Tahoma.kf"); load_dll(libio, #libio_init,1); load_dll(libimg, #libimg_init,1); load_dll(libini, #lib_init,1); @@ -145,8 +145,16 @@ byte draw_icons_from_section(dword key_value, key_name, sec_name, f_name) icon_char_pos = strchr(key_value, ','); if (icon_char_pos) icon_id = atoi(icon_char_pos+1); else icon_id = default_icon; img_draw stdcall(skin.image, col*cell_w+tmp-10, row*cell_h+5 + list_pos, 32, 32, 0, icon_id*32); - WriteTextCenter(col*cell_w+7,row*cell_h+47 + list_pos,cell_w,0xDCDCDC,key_name); - WriteTextCenter(col*cell_w+6,row*cell_h+46 + list_pos,cell_w,0x000000,key_name); + //WriteTextCenter(col*cell_w+7,row*cell_h+47 + list_pos,cell_w,0xDCDCDC,key_name); + //WriteTextCenter(col*cell_w+6,row*cell_h+46 + list_pos,cell_w,0x000000,key_name); + font.size = 12; + font.color = 0xDCDCDC; + font.weight = false; + font.textcenter(col*cell_w+7,row*cell_h+47 + list_pos,cell_w,0,key_name); + font.show(); + font.color = 0; + font.textcenter(col*cell_w+6,row*cell_h+46 + list_pos,cell_w,0,key_name); + font.show(); current_item_id++; col++; return true; @@ -165,7 +173,7 @@ byte process_sections(dword sec_name, f_name) { if ((col==0) && (row==old_row)) { - list_pos -= 20; + list_pos -= 25; } else { @@ -173,9 +181,13 @@ byte process_sections(dword sec_name, f_name) } col = 0; old_row = row; - DrawBar(0, row * cell_h + list_pos, Form.cwidth , 20, LIST_BACKGROUND_COLOR); - WriteTextB(10, row * cell_h + 9 + list_pos, 0x90, 0x000000, sec_name); - list_pos += 20; + DrawBar(0, row * cell_h + list_pos, Form.cwidth , 26, LIST_BACKGROUND_COLOR); + //WriteTextB(10, row * cell_h + 9 + list_pos, 0x90, 0x000000, sec_name); + font.size=14; + font.weight = true; + font.prepare(10, row * cell_h + 9 + list_pos,sec_name); + font.show(); + list_pos += 26; ini_enum_keys stdcall (f_name, sec_name, #draw_icons_from_section); } return true; @@ -183,10 +195,17 @@ byte process_sections(dword sec_name, f_name) void draw_top_bar() { - int top_position = 25; + int top_position = 26; DrawBar(0,0,Form.cwidth, top_position-1, system.color.work); DrawBar(0,top_position-1, Form.cwidth, 1, system.color.work_graph); - WriteTextB(Form.cwidth/2-70, 9, 0x90, system.color.work_text, #window_title); + //WriteTextB(Form.cwidth/2-70, 9, 0x90, system.color.work_text, #window_title); + font.size = 19; + font.getsize(#window_title); + ECX = EAX/2; + EBX = Form.cwidth/2-ECX; + font.weight = false; + font.prepare(EBX,0,#window_title); + font.show(); list_top = top_position; list_pos = list_top; row = -1;