modify function 'buf2d_resize',

split file 'buf2d.asm'

git-svn-id: svn://kolibrios.org@6175 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA 2016-02-08 22:26:02 +00:00
parent 51d197a035
commit 1c3a46e4d1
6 changed files with 2735 additions and 2592 deletions

View File

@ -439,7 +439,7 @@ pushad
mov word[w_scr_t1.y_size],ax ;­®¢ë¥ à §¬¥àë áªà®««¨­£  mov word[w_scr_t1.y_size],ax ;­®¢ë¥ à §¬¥àë áªà®««¨­£ 
cmp eax,dword[buf_0.h] ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ¡ãä¥à  cmp eax,dword[buf_0.h] ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ¡ãä¥à 
jle @f jle @f
stdcall [buf2d_resize],buf_0,0,eax stdcall [buf2d_resize],buf_0,0,eax,1
mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡ãä¥à  ¢ â ©¬¥à¥ mov dword[offs_last_timer],0 ;¤«ï ®¡­®¢«¥­¨ï ¡ãä¥à  ¢ â ©¬¥à¥
@@: @@:
@ -1419,9 +1419,9 @@ white_light dd 0.8, 0.8, 0.8, 1.0 ;
lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20> à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï lmodel_ambient dd 0.3, 0.3, 0.3, 1.0 ; <20> à ¬¥âàë ä®­®¢®£® ®á¢¥é¥­¨ï
if lang eq ru if lang eq ru
capt db 'info 3ds ¢¥àá¨ï 19.01.16',0 ;¯®¤¯¨áì ®ª­  capt db 'info 3ds ¢¥àá¨ï 08.02.16',0 ;¯®¤¯¨áì ®ª­ 
else else
capt db 'info 3ds version 19.01.16',0 ;window caption capt db 'info 3ds version 08.02.16',0 ;window caption
end if end if
align 16 align 16

View File

@ -88,7 +88,7 @@ table { font-size: 15px; }
Есть функции рисования линий, кривых Безье, прямоугольников, окружностей. Есть функции рисования линий, кривых Безье, прямоугольников, окружностей.
Также есть функции для рисований воксельной графики.</p> Также есть функции для рисований воксельной графики.</p>
<p>Последнее обновление библиотеки 30.01.15.</p> <p>Последнее обновление библиотеки 09.02.16.</p>
<h1><a name="format_buf">Форматы буферов</a></h1> <h1><a name="format_buf">Форматы буферов</a></h1>
<p>Поддерживается 3 формата буферов. <p>Поддерживается 3 формата буферов.
@ -147,9 +147,14 @@ stdcall [buf2d_clear], edi, buf2d_color ;
<p>где buf_0 - структура буфера (может быть 8, 24 или 32 битным); 90 - угол поворота.</p> <p>где buf_0 - структура буфера (может быть 8, 24 или 32 битным); 90 - угол поворота.</p>
<h4><a name="f_b_resize">buf2d_resize</a></h4> <h4><a name="f_b_resize">buf2d_resize</a></h4>
<p>Изменяет размеры буфера. Пока поддерживаются буфера с глубиной цвета 24 бита. Пример:</p> <p>Изменяет размеры буфера или изображения в буфере. Пока поддерживаются буфера с глубиной цвета 24 бита.</p>
<pre>stdcall [buf2d_resize], buf_0, 0,300 ;изменяем высоту буфера</pre> <p>Пример 1:</p>
<p>где buf_0 - структура буфера в котором будет рисоваться линия; 0 - новая ширина буфера (0 означает не изменять размер); 300 - новая высота буфера.</p> <pre>stdcall [buf2d_resize], buf_0, 0,300, 1 ;изменяем высоту буфера</pre>
<p>где buf_0 - структура буфера в котором будет рисоваться линия; 0 - новая ширина буфера (0 означает не изменять размер); 300 - новая высота буфера; 1 - параметр указывающий что изменяются размеры буфера.</p>
<p>Пример 2:</p>
<pre>stdcall [buf2d_resize], buf_0, 250,0, 2 ;изменяем изображение в буфере</pre>
<p>где 250 - новая ширина буфера; 0 - новая высота буфера (0 означает не изменять размер); 2 - параметр указывающий что изменяем изображение в буфере.</p>
<p>Если последний параметр равен 2 то размер буфера остается неизменным и функция работает аналогично так как и функции <b>buf2d_img_hdiv2</b>, <b>buf2d_img_wdiv2</b>. Разница в том, что buf2d_resize может сжимать изображения до заданного размера, а не ровно в 2 раза.</p>
<h4><a name="f_b_line">buf2d_line</a></h4> <h4><a name="f_b_line">buf2d_line</a></h4>
<p>Рисует в буфере линию с заданным цветом и координатами. Пример:</p> <p>Рисует в буфере линию с заданным цветом и координатами. Пример:</p>
@ -460,5 +465,6 @@ import_buf2d_lib:
<p>14.12.12 - добавлена функция наложения фильтра buf2d_filter_dither.</p> <p>14.12.12 - добавлена функция наложения фильтра buf2d_filter_dither.</p>
<p>24.12.12 - добавлены 2 новых алгоритма в функцию наложения фильтра buf2d_filter_dither.</p> <p>24.12.12 - добавлены 2 новых алгоритма в функцию наложения фильтра buf2d_filter_dither.</p>
<p>30.01.15 - добавлена поддержка 32 битных буферов в функцию buf_flip_v, добавлена функция отражения по горизонтали buf_flip_h.</p> <p>30.01.15 - добавлена поддержка 32 битных буферов в функцию buf_flip_v, добавлена функция отражения по горизонтали buf_flip_h.</p>
<p>09.02.16 - изменена функция buf2d_resize добавлен дополнительный параметр, который указывает менять ли изображение или размеры буфера.</p>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,16 +1,11 @@
use32 use32
org 0x0 org 0x0
db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â db 'MENUET01' ;¨¤¥­â¨ä. ¨á¯®«­ï¥¬®£® ä ©«  ¢á¥£¤  8 ¡ ©â
dd 0x1 dd 1,start,i_end,mem,stacktop,0,sys_path
dd start
dd i_end ;à §¬¥à ¯à¨«®¦¥­¨ï
dd mem
dd stacktop
dd 0
dd sys_path
include '../../../../programs/macros.inc' include '../../../../programs/macros.inc'
include '../../../../programs/proc32.inc' include '../../../../programs/proc32.inc'
include '../../../../programs/KOSfuncs.inc'
include '../../../../programs/develop/libraries/box_lib/load_lib.mac' include '../../../../programs/develop/libraries/box_lib/load_lib.mac'
include '../../../../programs/dll.inc' include '../../../../programs/dll.inc'
include '../trunk/str.inc' include '../trunk/str.inc'
@ -21,7 +16,7 @@ txt_buf rb 8
include '../trunk/vox_rotate.inc' include '../trunk/vox_rotate.inc'
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
caption db 'Voxel creator 29.01.15',0 ;¯®¤¯¨áì ®ª­  caption db 'Voxel creator 08.02.16',0 ;¯®¤¯¨áì ®ª­ 
struct FileInfoBlock struct FileInfoBlock
Function dd ? Function dd ?
@ -70,24 +65,22 @@ macro load_image_file path,buf,size { ;
db 0 db 0
@@: @@:
;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬ ;32 - áâ ­¤ àâ­ë©  ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥­ ¡ëâì ¡ãä¥à á á¨á⥬­ë¬ ¯ã⥬
copy_path .path_str,[32],file_name,0x0 copy_path .path_str,[32],file_name,0
else else
copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®© copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«­ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥­¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ®­ ¢ ®¤­®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
end if end if
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥­¨ï
mov [buf],eax mov [buf],eax
mov eax,70 ;70-ï äã­ªæ¨ï à ¡®â  á ä ©« ¬¨ mov [run_file_70.Function], SSF_READ_FILE
mov [run_file_70.Function], 0
mov [run_file_70.Position], 0 mov [run_file_70.Position], 0
mov [run_file_70.Flags], 0 mov [run_file_70.Flags], 0
mov [run_file_70.Count], dword size mov [run_file_70.Count], dword size
m2m [run_file_70.Buffer], [buf] mov [run_file_70.Buffer], eax
mov byte[run_file_70+20], 0 mov byte[run_file_70+20], 0
mov [run_file_70.FileName], file_name mov [run_file_70.FileName], file_name
mov ebx,run_file_70 mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥­¨ï
cmp ebx,0xffffffff cmp ebx,0xffffffff
je @f je @f
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data ;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥­¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥­­ë© ¡ãä¥à image_data
@ -109,10 +102,10 @@ start:
mov ebp,lib_0 mov ebp,lib_0
cmp dword [ebp+ll_struc_size-4],0 cmp dword [ebp+ll_struc_size-4],0
jz @f jz @f
mcall -1 ;exit not correct mcall SF_TERMINATE_PROCESS
@@: @@:
mcall 48,3,sc,sizeof.system_colors mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
mcall 40,0x27 mcall SF_SET_EVENTS_MASK,0x27
stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£  stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª  ¤¨ «®£ 
stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à  stdcall [buf2d_create], buf_0 ;ᮧ¤ ­¨¥ ¡ãä¥à 
@ -126,7 +119,7 @@ start:
stdcall mem.Alloc,max_open_file_size stdcall mem.Alloc,max_open_file_size
mov dword[open_file_img],eax mov dword[open_file_img],eax
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov [last_time],eax mov [last_time],eax
align 4 align 4
@ -135,7 +128,7 @@ red_win:
align 4 align 4
still: still:
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov ebx,[last_time] mov ebx,[last_time]
add ebx,10 ;§ ¤¥à¦ª  add ebx,10 ;§ ¤¥à¦ª 
cmp ebx,eax cmp ebx,eax
@ -143,11 +136,7 @@ still:
mov ebx,eax mov ebx,eax
@@: @@:
sub ebx,eax sub ebx,eax
;cmp ebx,10 ;§ ¤¥à¦ª  mcall SF_WAIT_EVENT_TIMEOUT
;ja timer_funct
;test ebx,ebx
;jz timer_funct
mcall 23
cmp eax,0 cmp eax,0
je timer_funct je timer_funct
@ -166,7 +155,7 @@ timer_funct:
je still je still
pushad pushad
mcall 26,9 mcall SF_SYSTEM_GET,SSF_TIME_COUNT
mov [last_time],eax mov [last_time],eax
; ᪨¤ë¢ ¥¬ 㪠§ â¥«¨ ¡ãä¥à®¢ buf_npl_p, buf_npl, buf_npl_n ; ᪨¤ë¢ ¥¬ 㪠§ â¥«¨ ¡ãä¥à®¢ buf_npl_p, buf_npl, buf_npl_n
@ -394,17 +383,16 @@ need_node:
align 4 align 4
draw_window: draw_window:
pushad pushad
mcall 12,1 mcall SF_REDRAW,SSF_BEGIN_DRAW
; *** à¨á®¢ ­¨¥ £« ¢­®£® ®ª­  (¢ë¯®«­ï¥âáï 1 à § ¯à¨ § ¯ã᪥) *** ; *** à¨á®¢ ­¨¥ £« ¢­®£® ®ª­  (¢ë¯®«­ï¥âáï 1 à § ¯à¨ § ¯ã᪥) ***
xor eax,eax
mov edx,[sc.work] mov edx,[sc.work]
or edx,(3 shl 24)+0x30000000 or edx,(3 shl 24)+0x30000000
mcall ,(20 shl 16)+410,(20 shl 16)+520,,,caption mcall SF_CREATE_WINDOW,(20 shl 16)+410,(20 shl 16)+520,,,caption
; *** ᮧ¤ ­¨¥ ª­®¯®ª ­  ¯ ­¥«ì *** ; *** ᮧ¤ ­¨¥ ª­®¯®ª ­  ¯ ­¥«ì ***
mov esi,[sc.work_button] mov esi,[sc.work_button]
mcall 8,(5 shl 16)+20,(5 shl 16)+20,3 mcall SF_DEFINE_BUTTON,(5 shl 16)+20,(5 shl 16)+20,3
mov ebx,(30 shl 16)+20 mov ebx,(30 shl 16)+20
mov edx,4 mov edx,4
@ -444,7 +432,7 @@ pushad
; *** à¨á®¢ ­¨¥ ¨ª®­®ª ­  ª­®¯ª å *** ; *** à¨á®¢ ­¨¥ ¨ª®­®ª ­  ª­®¯ª å ***
mov edx,(7 shl 16)+7 ;icon new mov edx,(7 shl 16)+7 ;icon new
mcall 7,[image_data_toolbar],(16 shl 16)+16 mcall SF_PUT_IMAGE,[image_data_toolbar],(16 shl 16)+16
add ebx,IMAGE_TOOLBAR_ICON_SIZE add ebx,IMAGE_TOOLBAR_ICON_SIZE
add edx,(25 shl 16) ;icon open add edx,(25 shl 16) ;icon open
@ -478,7 +466,7 @@ pushad
call draw_buffers call draw_buffers
call draw_pok call draw_pok
mcall 12,2 mcall SF_REDRAW,SSF_END_DRAW
popad popad
ret ret
@ -513,19 +501,19 @@ draw_pok:
mov ecx,[sc.work_text] mov ecx,[sc.work_text]
or ecx,0x80000000 or (1 shl 30) or ecx,0x80000000 or (1 shl 30)
mov edi,[sc.work] ;梥â ä®­  ®ª­  mov edi,[sc.work] ;梥â ä®­  ®ª­ 
mcall 4,(275 shl 16)+7,,txt_f_size mcall SF_DRAW_TEXT,(275 shl 16)+7,,txt_f_size
ret ret
align 4 align 4
key: key:
mcall 2 mcall SF_GET_KEY
jmp still jmp still
align 4 align 4
button: button:
mcall 17 mcall SF_GET_BUTTON
cmp ah,3 cmp ah,3
jne @f jne @f
call but_new_file call but_new_file
@ -581,7 +569,7 @@ button:
stdcall mem.Free,[image_data_toolbar] stdcall mem.Free,[image_data_toolbar]
stdcall mem.Free,[open_file_vox] stdcall mem.Free,[open_file_vox]
stdcall mem.Free,[open_file_img] stdcall mem.Free,[open_file_img]
mcall -1 mcall SF_TERMINATE_PROCESS
align 4 align 4
@ -641,7 +629,7 @@ but_open_file:
cmp bx,28 ;28=0+1+2+...+7 cmp bx,28 ;28=0+1+2+...+7
jne .err_open jne .err_open
mcall 71,1,openfile_path mcall SF_SET_CAPTION,1,openfile_path
stdcall buf2d_vox_obj_get_size,[open_file_vox] stdcall buf2d_vox_obj_get_size,[open_file_vox]
mov [vox_obj_size],eax mov [vox_obj_size],eax
call draw_object call draw_object
@ -1108,11 +1096,11 @@ proc but_run uses eax ebx edi, mode_add:dword
jmp .end_0 jmp .end_0
@@: @@:
; *** ¨§¬¥­ï¥¬ à §¬¥àë ¡ãä¥à®¢ ; *** ¨§¬¥­ï¥¬ à §¬¥àë ¡ãä¥à®¢
stdcall [buf2d_resize], edi, eax,eax stdcall [buf2d_resize], edi, eax,eax,1
mov edi,buf_npl_p mov edi,buf_npl_p
stdcall [buf2d_resize], edi, eax,eax stdcall [buf2d_resize], edi, eax,eax,1
mov edi,buf_npl_n mov edi,buf_npl_n
stdcall [buf2d_resize], edi, eax,eax stdcall [buf2d_resize], edi, eax,eax,1
.end_0: .end_0:
mov dword[n_plane],1 mov dword[n_plane],1
mov byte[calc],1 mov byte[calc],1
@ -1205,7 +1193,7 @@ proc open_image_in_buf, buf:dword
@@: @@:
mov ebx,dword[eax+4] mov ebx,dword[eax+4]
mov ecx,dword[eax+8] mov ecx,dword[eax+8]
stdcall [buf2d_resize], edi, ebx,ecx ;¨§¬¥­ï¥¬ à §¬¥àë ¡ãä¥à  stdcall [buf2d_resize], edi, ebx,ecx,1 ;¨§¬¥­ï¥¬ à §¬¥àë ¡ãä¥à 
imul ecx,ebx imul ecx,ebx
lea ecx,[ecx+ecx*2] lea ecx,[ecx+ecx*2]
mov edi,buf2d_data mov edi,buf2d_data