Update: lib font.h, fixed bugs, new font software_widget.c

git-svn-id: svn://kolibrios.org@5814 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
pavelyakov 2015-09-07 11:33:25 +00:00
parent 53cb2d6dc4
commit 832a6dcbfe
3 changed files with 48 additions and 27 deletions

View File

@ -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

View File

@ -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++;
}

View File

@ -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;