mirror of
https://github.com/KolibriOS/kolibrios.git
synced 2024-12-25 16:16:50 +03:00
buf2d.obj - small update
asm.inc - add new keywords git-svn-id: svn://kolibrios.org@3040 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8afe7310a7
commit
e7017abcd7
@ -62,6 +62,8 @@ table { font-size: 15px; }
|
||||
<li><a href="#f_b_hdiv2">buf2d_img_hdiv2</a></li>
|
||||
<li><a href="#f_b_wdiv2">buf2d_img_wdiv2</a></li>
|
||||
<li><a href="#f_c_color">buf2d_crop_color</a></li>
|
||||
<li><a href="#f_flip_v">buf2d_flip_v</a></li>
|
||||
|
||||
<li><a href="#f_v_brush_c">buf2d_vox_brush_create</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
@ -78,7 +80,7 @@ table { font-size: 15px; }
|
||||
Есть функции рисования линий, кривых Безье, прямоугольников, окружностей.
|
||||
Также есть функции для рисований воксельной графики.</p>
|
||||
|
||||
<p>Последнее обновление библиотеки 01.10.12.</p>
|
||||
<p>Последнее обновление библиотеки 15.11.12.</p>
|
||||
|
||||
<h1><a name="format_buf">Форматы буферов</a></h1>
|
||||
<p>Поддерживается 3 формата буферов.
|
||||
@ -240,21 +242,46 @@ stdcall [buf2d_convert_text_matrix], buf_1</pre>
|
||||
<p>0xff0000 - зависит от значения 4-го параметра, 1) если 0 - цвет до которого будет заливаться область; 2) если 1 - цвет области которая будет заливатся;</p>
|
||||
|
||||
<h4>buf2d_set_pixel</h4>
|
||||
<p>Функция ставит точку, принимает координаты и цвет.</p>
|
||||
<p>Функция ставит точку, принимает координаты и цвет. Пример:</p>
|
||||
<pre>stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000</pre>
|
||||
<p>где buf_0 - структура буфера;</p>
|
||||
<p>100,150 - координаты точки;</p>
|
||||
<p>0xff0000 - цвет точки.</p>
|
||||
|
||||
<h4>buf2d_get_pixel</h4>
|
||||
<p>Функция записывает цвет точки в регистр eax, принимает координаты.</p>
|
||||
<p>Функция записывает цвет точки в регистр eax, принимает координаты. Пример:</p>
|
||||
<pre>stdcall [buf2d_get_pixel], buf_0, 100,150</pre>
|
||||
<p>где buf_0 - структура буфера;</p>
|
||||
<p>100,150 - координаты точки;</p>
|
||||
<p>eax - цвет точки (для 8 и 24 битных буферов не используемые старшие биты в eax равны 0) или значение -1 в случае ошибки.</p>
|
||||
|
||||
<h4><a name="f_flip_v">buf2d_flip_v</a></h4>
|
||||
<p>Отражает изображение в буфере по вертикали (верх и низ меняются местами). Пример:</p>
|
||||
<pre>stdcall buf2d_flip_v, buf_0</pre>
|
||||
<p>где buf_0 - структура 24-х битного буфера.</p>
|
||||
|
||||
<h4><a name="f_v_brush_c">buf2d_vox_brush_create</a></h4>
|
||||
<p>Создание воксельной кисти.</p>
|
||||
<p>Создание воксельной кисти. Пример:</p>
|
||||
<pre>stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z
|
||||
|
||||
.........
|
||||
|
||||
align 4
|
||||
vox_6_7_z: ;данные для создания минимального единичного вокселя
|
||||
dd 0,0,1,1,0,0,\
|
||||
0,2,2,2,2,0,\
|
||||
2,2,2,2,2,2,\
|
||||
2,3,2,2,3,2,\
|
||||
2,3,3,3,3,2,\
|
||||
0,3,3,3,3,0,\
|
||||
0,0,3,3,0,0
|
||||
|
||||
align 4
|
||||
buf_vox: ;данные для создания набора воксельных кистей
|
||||
db 6,7,4,3 ;w,h,h_osn,n
|
||||
rb BUF_STRUCT_SIZE*(3+1)</pre>
|
||||
<p>где vox_6_7_z - данные для создания минимального единичного вокселя (0 - означает прозрачный пиксель, другие цифры определяют глубину для заполнения буфера глубины);</p>
|
||||
<p>buf_vox - данные для создания набора воксельных кистей (6 и 7 - размер минимального единичного вокселя, 4 - высота верхнего основания минимального единичного вокселя, 3 - число создаваемых воксельных кистей для рисования вокселей верхних уровней);</p>
|
||||
|
||||
<h4>buf2d_vox_brush_delete</h4>
|
||||
<p>Удаление воксельной кисти.</p>
|
||||
@ -325,6 +352,7 @@ import_buf2d_lib:
|
||||
buf2d_flood_fill dd sz_buf2d_flood_fill
|
||||
buf2d_set_pixel dd sz_buf2d_set_pixel
|
||||
buf2d_get_pixel dd sz_buf2d_get_pixel
|
||||
buf2d_flip_v dd sz_buf2d_flip_v
|
||||
|
||||
;воксельные функции:
|
||||
buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
|
||||
@ -367,6 +395,7 @@ import_buf2d_lib:
|
||||
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
|
||||
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
|
||||
sz_buf2d_get_pixel db 'buf2d_get_pixel',0
|
||||
sz_buf2d_flip_v db 'buf2d_flip_v',0
|
||||
|
||||
;воксельные функции:
|
||||
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
|
||||
@ -404,5 +433,6 @@ import_buf2d_lib:
|
||||
<p>12.06.12 - добавлены функции для рисования воксельной графики.</p>
|
||||
<p>11.08.12 - функции для сжатия изображений buf2d_img_hdiv2 и buf2d_img_wdiv2 работают с 32 битными буферами.</p>
|
||||
<p>01.10.12 - добавлена функция поворота изображений на 90 и 180 градусов buf2d_rotate.</p>
|
||||
<p>15.11.12 - добавлена функция отражения 24 битных изображений по вертикали buf_flip_v, исправления в функции buf2d_img_hdiv2.</p>
|
||||
</body>
|
||||
</html>
|
@ -1986,6 +1986,54 @@ proc buf_get_pixel uses ebx ecx edi, buf_struc:dword, coord_x:dword, coord_y:dwo
|
||||
ret
|
||||
endp
|
||||
|
||||
;®âà §¨âì ¯® ¢¥à⨪ «¨ (¢¥àå ¨ ¨§ ¬¥ïîâáï ¬¥áâ ¬¨)
|
||||
align 4
|
||||
proc buf_flip_v, buf_struc:dword
|
||||
locals
|
||||
line_pix dd ? ;ª®«. ¯¨ªá¥«¥© ¢ «¨¨¨ ¡ãä¥à
|
||||
line_2byte dd ? ;ª®«. ¡ ©â ¢ «¨¨¨ ¡ãä¥à * 2
|
||||
endl
|
||||
pushad
|
||||
mov edi,[buf_struc]
|
||||
cmp buf2d_bits,24
|
||||
jne .end_24
|
||||
mov edx,buf2d_w
|
||||
mov [line_pix],edx
|
||||
mov ebx,buf2d_h
|
||||
lea edx,[edx+edx*2]
|
||||
mov esi,edx
|
||||
imul esi,ebx
|
||||
sub esi,edx
|
||||
add esi,buf2d_data ;㪠§ â¥«ì ¨¦îî «¨¨î
|
||||
shr ebx,1 ;ª®«. «¨¥©ëå 横«®¢
|
||||
shl edx,1
|
||||
mov [line_2byte],edx
|
||||
mov edi,buf2d_data
|
||||
xchg edi,esi
|
||||
cld
|
||||
.flip_24:
|
||||
cmp ebx,0
|
||||
jle .end_24
|
||||
mov ecx,[line_pix]
|
||||
@@:
|
||||
lodsw
|
||||
mov dx,word[edi]
|
||||
mov word[esi-2],dx
|
||||
mov [edi],ax
|
||||
lodsb
|
||||
mov ah,byte[edi+2]
|
||||
mov byte[esi-1],ah
|
||||
mov [edi+2],al
|
||||
add edi,3
|
||||
loop @b
|
||||
sub edi,[line_2byte]
|
||||
dec ebx
|
||||
jmp .flip_24
|
||||
.end_24:
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
|
||||
align 4
|
||||
proc buf_img_wdiv2, buf_struc:dword
|
||||
pushad
|
||||
@ -2134,6 +2182,8 @@ proc img_rgba32_wdiv2 data_rgba:dword, size:dword
|
||||
ret
|
||||
endp
|
||||
|
||||
;description:
|
||||
; ᦠ⨥ ¨§®¡à ¦¥¨ï ¯® ¢ëá®â¥ (¢ëá®â ¡ãä¥à ¥ ¬¥ï¥âáï)
|
||||
align 4
|
||||
proc buf_img_hdiv2, buf_struc:dword
|
||||
pushad
|
||||
@ -2144,6 +2194,7 @@ proc buf_img_hdiv2, buf_struc:dword
|
||||
mov ecx,buf2d_h
|
||||
imul ecx,eax
|
||||
stdcall img_8b_hdiv2, buf2d_data,ecx,eax
|
||||
jmp .end_f ;edi ¯®àâ¨âáï ¢ äãªæ¨¨, ¯®â®¬ã ¨á¯®«ì§®¢ ¨¥ buf2d_bits ®¯ á®
|
||||
@@:
|
||||
cmp buf2d_bits,24
|
||||
jne @f
|
||||
@ -2151,6 +2202,7 @@ proc buf_img_hdiv2, buf_struc:dword
|
||||
mov ecx,buf2d_h
|
||||
imul ecx,eax
|
||||
stdcall img_rgb24_hdiv2, buf2d_data,ecx,eax
|
||||
jmp .end_f
|
||||
@@:
|
||||
cmp buf2d_bits,32
|
||||
jne @f
|
||||
@ -2159,7 +2211,9 @@ proc buf_img_hdiv2, buf_struc:dword
|
||||
imul ecx,eax
|
||||
shl eax,2
|
||||
stdcall img_rgba32_hdiv2, buf2d_data,ecx,eax
|
||||
;jmp .end_f
|
||||
@@:
|
||||
.end_f:
|
||||
popad
|
||||
ret
|
||||
endp
|
||||
@ -4761,6 +4815,7 @@ EXPORTS:
|
||||
dd sz_buf2d_flood_fill, buf_flood_fill
|
||||
dd sz_buf2d_set_pixel, buf_set_pixel
|
||||
dd sz_buf2d_get_pixel, buf_get_pixel
|
||||
dd sz_buf2d_flip_v, buf_flip_v
|
||||
dd sz_buf2d_vox_brush_create, vox_brush_create
|
||||
dd sz_buf2d_vox_brush_delete, vox_brush_delete
|
||||
dd sz_buf2d_vox_obj_get_img_w_3g, buf_vox_obj_get_img_w_3g
|
||||
@ -4800,6 +4855,7 @@ EXPORTS:
|
||||
sz_buf2d_flood_fill db 'buf2d_flood_fill',0
|
||||
sz_buf2d_set_pixel db 'buf2d_set_pixel',0
|
||||
sz_buf2d_get_pixel db 'buf2d_get_pixel',0
|
||||
sz_buf2d_flip_v db 'buf2d_flip_v',0
|
||||
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
|
||||
sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
|
||||
sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user