mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-24 23:56:49 +03:00
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:
parent
51d197a035
commit
1c3a46e4d1
@ -439,7 +439,7 @@ pushad
|
||||
mov word[w_scr_t1.y_size],ax ;®¢ë¥ à §¬¥àë áªà®««¨£
|
||||
cmp eax,dword[buf_0.h] ;㢥«¨ç¨¢ ¥¬ ¢ëá®âã ¡ãä¥à
|
||||
jle @f
|
||||
stdcall [buf2d_resize],buf_0,0,eax
|
||||
stdcall [buf2d_resize],buf_0,0,eax,1
|
||||
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> à ¬¥âàë ä®®¢®£® ®á¢¥é¥¨ï
|
||||
|
||||
if lang eq ru
|
||||
capt db 'info 3ds ¢¥àá¨ï 19.01.16',0 ;¯®¤¯¨áì ®ª
|
||||
capt db 'info 3ds ¢¥àá¨ï 08.02.16',0 ;¯®¤¯¨áì ®ª
|
||||
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
|
||||
|
||||
align 16
|
||||
|
@ -88,7 +88,7 @@ table { font-size: 15px; }
|
||||
Есть функции рисования линий, кривых Безье, прямоугольников, окружностей.
|
||||
Также есть функции для рисований воксельной графики.</p>
|
||||
|
||||
<p>Последнее обновление библиотеки 30.01.15.</p>
|
||||
<p>Последнее обновление библиотеки 09.02.16.</p>
|
||||
|
||||
<h1><a name="format_buf">Форматы буферов</a></h1>
|
||||
<p>Поддерживается 3 формата буферов.
|
||||
@ -147,9 +147,14 @@ stdcall [buf2d_clear], edi, buf2d_color ;
|
||||
<p>где buf_0 - структура буфера (может быть 8, 24 или 32 битным); 90 - угол поворота.</p>
|
||||
|
||||
<h4><a name="f_b_resize">buf2d_resize</a></h4>
|
||||
<p>Изменяет размеры буфера. Пока поддерживаются буфера с глубиной цвета 24 бита. Пример:</p>
|
||||
<pre>stdcall [buf2d_resize], buf_0, 0,300 ;изменяем высоту буфера</pre>
|
||||
<p>где buf_0 - структура буфера в котором будет рисоваться линия; 0 - новая ширина буфера (0 означает не изменять размер); 300 - новая высота буфера.</p>
|
||||
<p>Изменяет размеры буфера или изображения в буфере. Пока поддерживаются буфера с глубиной цвета 24 бита.</p>
|
||||
<p>Пример 1:</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>
|
||||
<p>Рисует в буфере линию с заданным цветом и координатами. Пример:</p>
|
||||
@ -460,5 +465,6 @@ import_buf2d_lib:
|
||||
<p>14.12.12 - добавлена функция наложения фильтра 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>09.02.16 - изменена функция buf2d_resize добавлен дополнительный параметр, который указывает менять ли изображение или размеры буфера.</p>
|
||||
</body>
|
||||
</html>
|
File diff suppressed because it is too large
Load Diff
1213
programs/develop/libraries/buf2d/trunk/fun_draw.inc
Normal file
1213
programs/develop/libraries/buf2d/trunk/fun_draw.inc
Normal file
File diff suppressed because it is too large
Load Diff
1329
programs/develop/libraries/buf2d/trunk/fun_voxel.inc
Normal file
1329
programs/develop/libraries/buf2d/trunk/fun_voxel.inc
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,11 @@
|
||||
use32
|
||||
org 0x0
|
||||
db 'MENUET01' ;¨¤¥â¨ä. ¨á¯®«ï¥¬®£® ä ©« ¢á¥£¤ 8 ¡ ©â
|
||||
dd 0x1
|
||||
dd start
|
||||
dd i_end ;à §¬¥à ¯à¨«®¦¥¨ï
|
||||
dd mem
|
||||
dd stacktop
|
||||
dd 0
|
||||
dd sys_path
|
||||
dd 1,start,i_end,mem,stacktop,0,sys_path
|
||||
|
||||
include '../../../../programs/macros.inc'
|
||||
include '../../../../programs/proc32.inc'
|
||||
include '../../../../programs/KOSfuncs.inc'
|
||||
include '../../../../programs/develop/libraries/box_lib/load_lib.mac'
|
||||
include '../../../../programs/dll.inc'
|
||||
include '../trunk/str.inc'
|
||||
@ -21,7 +16,7 @@ txt_buf rb 8
|
||||
include '../trunk/vox_rotate.inc'
|
||||
|
||||
@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
|
||||
Function dd ?
|
||||
@ -70,24 +65,22 @@ macro load_image_file path,buf,size { ;
|
||||
db 0
|
||||
@@:
|
||||
;32 - áâ ¤ àâë© ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥ ¡ëâì ¡ãä¥à á á¨áâ¥¬ë¬ ¯ã⥬
|
||||
copy_path .path_str,[32],file_name,0x0
|
||||
copy_path .path_str,[32],file_name,0
|
||||
else
|
||||
copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
|
||||
copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®©
|
||||
end if
|
||||
|
||||
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥¨ï
|
||||
mov [buf],eax
|
||||
|
||||
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨
|
||||
mov [run_file_70.Function], 0
|
||||
mov [run_file_70.Function], SSF_READ_FILE
|
||||
mov [run_file_70.Position], 0
|
||||
mov [run_file_70.Flags], 0
|
||||
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 [run_file_70.FileName], file_name
|
||||
mov ebx,run_file_70
|
||||
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï
|
||||
mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï
|
||||
cmp ebx,0xffffffff
|
||||
je @f
|
||||
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥ë© ¡ãä¥à image_data
|
||||
@ -109,10 +102,10 @@ start:
|
||||
mov ebp,lib_0
|
||||
cmp dword [ebp+ll_struc_size-4],0
|
||||
jz @f
|
||||
mcall -1 ;exit not correct
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
@@:
|
||||
mcall 48,3,sc,sizeof.system_colors
|
||||
mcall 40,0x27
|
||||
mcall SF_STYLE_SETTINGS,SSF_GET_COLORS,sc,sizeof.system_colors
|
||||
mcall SF_SET_EVENTS_MASK,0x27
|
||||
stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª ¤¨ «®£
|
||||
|
||||
stdcall [buf2d_create], buf_0 ;ᮧ¤ ¨¥ ¡ãä¥à
|
||||
@ -126,7 +119,7 @@ start:
|
||||
stdcall mem.Alloc,max_open_file_size
|
||||
mov dword[open_file_img],eax
|
||||
|
||||
mcall 26,9
|
||||
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
|
||||
mov [last_time],eax
|
||||
|
||||
align 4
|
||||
@ -135,7 +128,7 @@ red_win:
|
||||
|
||||
align 4
|
||||
still:
|
||||
mcall 26,9
|
||||
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
|
||||
mov ebx,[last_time]
|
||||
add ebx,10 ;§ ¤¥à¦ª
|
||||
cmp ebx,eax
|
||||
@ -143,11 +136,7 @@ still:
|
||||
mov ebx,eax
|
||||
@@:
|
||||
sub ebx,eax
|
||||
;cmp ebx,10 ;§ ¤¥à¦ª
|
||||
;ja timer_funct
|
||||
;test ebx,ebx
|
||||
;jz timer_funct
|
||||
mcall 23
|
||||
mcall SF_WAIT_EVENT_TIMEOUT
|
||||
cmp eax,0
|
||||
je timer_funct
|
||||
|
||||
@ -166,7 +155,7 @@ timer_funct:
|
||||
je still
|
||||
|
||||
pushad
|
||||
mcall 26,9
|
||||
mcall SF_SYSTEM_GET,SSF_TIME_COUNT
|
||||
mov [last_time],eax
|
||||
|
||||
; ᪨¤ë¢ ¥¬ 㪠§ ⥫¨ ¡ãä¥à®¢ buf_npl_p, buf_npl, buf_npl_n
|
||||
@ -394,17 +383,16 @@ need_node:
|
||||
align 4
|
||||
draw_window:
|
||||
pushad
|
||||
mcall 12,1
|
||||
mcall SF_REDRAW,SSF_BEGIN_DRAW
|
||||
|
||||
; *** à¨á®¢ ¨¥ £« ¢®£® ®ª (¢ë¯®«ï¥âáï 1 à § ¯à¨ § ¯ã᪥) ***
|
||||
xor eax,eax
|
||||
mov edx,[sc.work]
|
||||
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]
|
||||
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 edx,4
|
||||
@ -444,7 +432,7 @@ pushad
|
||||
|
||||
; *** à¨á®¢ ¨¥ ¨ª®®ª ª®¯ª å ***
|
||||
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 edx,(25 shl 16) ;icon open
|
||||
@ -478,7 +466,7 @@ pushad
|
||||
call draw_buffers
|
||||
call draw_pok
|
||||
|
||||
mcall 12,2
|
||||
mcall SF_REDRAW,SSF_END_DRAW
|
||||
popad
|
||||
ret
|
||||
|
||||
@ -513,19 +501,19 @@ draw_pok:
|
||||
mov ecx,[sc.work_text]
|
||||
or ecx,0x80000000 or (1 shl 30)
|
||||
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
|
||||
|
||||
align 4
|
||||
key:
|
||||
mcall 2
|
||||
mcall SF_GET_KEY
|
||||
jmp still
|
||||
|
||||
|
||||
align 4
|
||||
button:
|
||||
mcall 17
|
||||
mcall SF_GET_BUTTON
|
||||
cmp ah,3
|
||||
jne @f
|
||||
call but_new_file
|
||||
@ -581,7 +569,7 @@ button:
|
||||
stdcall mem.Free,[image_data_toolbar]
|
||||
stdcall mem.Free,[open_file_vox]
|
||||
stdcall mem.Free,[open_file_img]
|
||||
mcall -1
|
||||
mcall SF_TERMINATE_PROCESS
|
||||
|
||||
|
||||
align 4
|
||||
@ -641,7 +629,7 @@ but_open_file:
|
||||
cmp bx,28 ;28=0+1+2+...+7
|
||||
jne .err_open
|
||||
|
||||
mcall 71,1,openfile_path
|
||||
mcall SF_SET_CAPTION,1,openfile_path
|
||||
stdcall buf2d_vox_obj_get_size,[open_file_vox]
|
||||
mov [vox_obj_size],eax
|
||||
call draw_object
|
||||
@ -1108,11 +1096,11 @@ proc but_run uses eax ebx edi, mode_add:dword
|
||||
jmp .end_0
|
||||
@@:
|
||||
; *** ¨§¬¥ï¥¬ à §¬¥àë ¡ãä¥à®¢
|
||||
stdcall [buf2d_resize], edi, eax,eax
|
||||
stdcall [buf2d_resize], edi, eax,eax,1
|
||||
mov edi,buf_npl_p
|
||||
stdcall [buf2d_resize], edi, eax,eax
|
||||
stdcall [buf2d_resize], edi, eax,eax,1
|
||||
mov edi,buf_npl_n
|
||||
stdcall [buf2d_resize], edi, eax,eax
|
||||
stdcall [buf2d_resize], edi, eax,eax,1
|
||||
.end_0:
|
||||
mov dword[n_plane],1
|
||||
mov byte[calc],1
|
||||
@ -1205,7 +1193,7 @@ proc open_image_in_buf, buf:dword
|
||||
@@:
|
||||
mov ebx,dword[eax+4]
|
||||
mov ecx,dword[eax+8]
|
||||
stdcall [buf2d_resize], edi, ebx,ecx ;¨§¬¥ï¥¬ à §¬¥àë ¡ãä¥à
|
||||
stdcall [buf2d_resize], edi, ebx,ecx,1 ;¨§¬¥ï¥¬ à §¬¥àë ¡ãä¥à
|
||||
imul ecx,ebx
|
||||
lea ecx,[ecx+ecx*2]
|
||||
mov edi,buf2d_data
|
||||
|
Loading…
Reference in New Issue
Block a user