From 2ff524842f03155925cd86efe008715239462012 Mon Sep 17 00:00:00 2001 From: "Alexey Teplov (" Date: Sat, 19 Sep 2009 08:26:53 +0000 Subject: [PATCH] Fix a small bug and optimization some code. git-svn-id: svn://kolibrios.org@1169 a494cfbc-eb01-0410-851d-a64ba20cac60 --- .../libraries/fontslib/trunk/font_ex.asm | 7 ++- .../libraries/fontslib/trunk/fonts_lib.asm | 54 +++++++++---------- .../libraries/fontslib/trunk/readme.txt | 2 +- 3 files changed, 31 insertions(+), 32 deletions(-) diff --git a/programs/develop/libraries/fontslib/trunk/font_ex.asm b/programs/develop/libraries/fontslib/trunk/font_ex.asm index ff81fabcbe..d2d6fd4927 100644 --- a/programs/develop/libraries/fontslib/trunk/font_ex.asm +++ b/programs/develop/libraries/fontslib/trunk/font_ex.asm @@ -85,7 +85,10 @@ button: mcall 17 ;Ї®«гзЁвм Ё¤Ґ­вЁдЁЄ в®а ­ ¦ в®© Є« ўЁиЁ test ah,ah ;Ґб«Ё ў ah 0, в® ЇҐаҐ©вЁ ­  ®Ўа Ў®взЁЄ б®ЎлвЁ© still jz still -exit: mcall -1 +exit: + call [free_fulder_info] + call [free_font] + mcall -1 key: mcall 2 ;§ Јаг§Ё¬ §­ зҐ­ЁҐ 2 ў ॣЁбв®а eax Ё Ї®«гзЁ¬ Є®¤ ­ ¦ в®© Є« ўЁиЁ @@ -111,7 +114,7 @@ draw_window: ; mcall 12,1 xor eax,eax ;®Ў­г«Ёвм eax mov ebx,50*65536+680 ;[Є®®а¤Ё­ в  Ї® ®бЁ x]*65536 + [а §¬Ґа Ї® ®бЁ x] - mov ecx,30*65536+500 ;[Є®®а¤Ё­ в  Ї® ®бЁ y]*65536 + [а §¬Ґа Ї® ®бЁ y] + mov ecx,30*65536+200 ;[Є®®а¤Ё­ в  Ї® ®бЁ y]*65536 + [а §¬Ґа Ї® ®бЁ y] mov edx,[sc.work] ; color of work area RRGGBB,8->color gl or edx,0x34000000 mov edi,hed diff --git a/programs/develop/libraries/fontslib/trunk/fonts_lib.asm b/programs/develop/libraries/fontslib/trunk/fonts_lib.asm index c9fee29291..73dd572a75 100644 --- a/programs/develop/libraries/fontslib/trunk/fonts_lib.asm +++ b/programs/develop/libraries/fontslib/trunk/fonts_lib.asm @@ -24,8 +24,6 @@ ; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ;***************************************************************************** -;Fonts library -; ;;;;;;;;;;;;;;;;;; format MS COFF @@ -98,15 +96,17 @@ align 4 mov ecx,263 repne scasb ;найдем конец строки ;;;;;;;;;;;;;;;;;;;;;;; -.next_a: sub edi,5 ;.ksf,0 - mov esi,dword name_font - mov ecx,name_font_e-name_font - repe cmpsb + lea esi,[name_font] + mov eax,dword[edi] + or eax,0x20202000 ; сделаем расширение строчными буквами. + cmp eax,dword[esi] jnz @f + ;;;;;;;; ура это наш файл т.е. наш шрифт мы нашли нужный файлик )) ;теперь нужно точно убедиться что это наш и только наш файлик ;загрузим заголовок файла и узнаем его размер глифа. + call alloc_mem ; выделим озу своих переменных ; сейчас нам нужно сформировать имя файла с полным путем mov eax,dword [alloc_memory_point] @@ -153,10 +153,8 @@ align 4 mov dword [save_point_nt],ebp pop ecx - mov dword [esp+28],0 - popad - ret - + xor eax,eax + jmp .exit align 4 @@: pop ecx @@ -164,7 +162,7 @@ align 4 dec ecx jnz .start_loop ; loop .start_loop -; xor eax,eax + or eax,-1 ;;;;;;;; прошлись - все интересущющие шрифты переместили в начало блока. align 4 @@ -224,7 +222,7 @@ pushad mov eax,70 mcall test eax,eax - jnz @f + jnz .exit lea eax,[buffer_read_d] mov eax,dword [eax] @@ -233,15 +231,15 @@ pushad ; add eax,dword [eax+8] ; add eax,dword [buffer_read_d] mov dword [font_array_data],eax - mov dword [esp+28],0 -; pop ecx -popad -ret 4 + xor eax,eax + jmp .ok ;here error file system align 4 -@@: - or dword [esp+28],-1 ;вернем ошибку +.exit: + or eax,-1 +align 4 +.ok: mov dword [esp+28],eax ;вернем ошибку popad ret 4 @@ -318,10 +316,10 @@ pushad mov ebx,13 mcall test eax,eax - jnz @f - or dword [esp+28],-1 ;вернем ошибку -align 4 -@@: +; jnz @f + mov dword [esp+28],eax ;вернем ошибку +;align 4 +;@@: popad ret align 4 @@ -333,10 +331,10 @@ pushad mov ebx,13 mcall test eax,eax - jnz @f - or dword [esp+28],-1 ;вернем ошибку -align 4 -@@: +; jnz @f + mov dword [esp+28],eax ;вернем ошибку +;align 4 +;@@: popad ret @@ -415,10 +413,8 @@ save_ebp dd 0x0 save_point_nt dd 0x0 name_fulder db '/sys/FONTS',0 name_fuld_end= ($-name_fulder) -1 -name_font db '.ksf' -name_font_e: +name_font db '.ksf',0 type_fnt db 'kf01' -type_fnt_e: diff --git a/programs/develop/libraries/fontslib/trunk/readme.txt b/programs/develop/libraries/fontslib/trunk/readme.txt index 9833a15142..352fc2d22b 100644 --- a/programs/develop/libraries/fontslib/trunk/readme.txt +++ b/programs/develop/libraries/fontslib/trunk/readme.txt @@ -25,7 +25,7 @@ ;***************************************************************************** Библиотека шрифтов. -Альфа версия 0.00003 Автор Теплов Алексей. +Альфа версия 0.00004 Автор Теплов Алексей. Для демострации примера вам необходимо сделать следующее: 1) поместить библиотека fonts_lib.obj в дирректорию с примером font_ex.kex или лучше будет поместить библиотеку в /sys/lib 2) скопировать файл font01.ksf в дирректорию /sys/FONTS причем имя файла может быть любое обязательно только расширение *.ksf