Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5388 → Rev 5389

/programs/develop/libraries/buf2d/trunk/about.htm
59,9 → 59,16
<li><a href="#f_b_draw">buf2d_draw</a></li>
<li><a href="#f_b_delete">buf2d_delete</a></li>
<li><a href="#f_b_rotate">buf2d_rotate</a></li>
<li><a href="#f_b_resize">buf2d_resize</a></li>
<li><a href="#f_b_line">buf2d_line</a></li>
<li><a href="#f_b_line_sm">buf2d_line_sm</a></li>
<li><a href="#f_b_rect">buf2d_rect_by_size</a></li>
<li><a href="#f_b_fil_rect">buf2d_filled_rect_by_size</a></li>
<li><a href="#f_b_circle">buf2d_circle</a></li>
<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_h">buf2d_flip_h</a></li>
<li><a href="#f_flip_v">buf2d_flip_v</a></li>
<li><a href="#f_filter_d">buf2d_filter_dither</a></li>
 
81,7 → 88,7
Åñòü ôóíêöèè ðèñîâàíèÿ ëèíèé, êðèâûõ Áåçüå, ïðÿìîóãîëüíèêîâ, îêðóæíîñòåé.
Òàêæå åñòü ôóíêöèè äëÿ ðèñîâàíèé âîêñåëüíîé ãðàôèêè.</p>
 
<p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 15.11.12.</p>
<p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 30.01.15.</p>
 
<h1><a name="format_buf">Ôîðìàòû áóôåðîâ</a></h1>
<p>Ïîääåðæèâàåòñÿ 3 ôîðìàòà áóôåðîâ.
139,31 → 146,31
<pre>stdcall [buf2d_rotate], buf_0, 90</pre>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà (ìîæåò áûòü 8, 24 èëè 32 áèòíûì); 90 - óãîë ïîâîðîòà.</p>
 
<h4>buf2d_resize</h4>
<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>
 
<h4>buf2d_line</h4>
<h4><a name="f_b_line">buf2d_line</a></h4>
<p>Ðèñóåò â áóôåðå ëèíèþ ñ çàäàííûì öâåòîì è êîîðäèíàòàìè. Ïðèìåð:</p>
<pre>stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;ðèñóåì ëèíèþ</pre>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ëèíèÿ; 30, 10, 110, 70 - êîîðäèíàòû ëèíèè; 0xffff00 - öâåò ëèíèè.</p>
<p>Äëÿ ðèñîâàíèÿ ñãëàæåííîé ëèíèè èñïîëüçóéòå <b>buf2d_line_sm</b>.</p>
 
<h4>buf2d_line_sm</h4>
<h4><a name="f_b_line_sm">buf2d_line_sm</a></h4>
<p>Ðèñóåò â áóôåðå ëèíèþ ïðèíèìàåò òàêèæå ïàðàìåòðû êàê è ôóíêöèÿ <b>buf2d_line</b>. Äàííàÿ ôóíêöèÿ ðèñóåò ñãëàæåííóþ ëèíèþ áîëåå êðàñèâóþ ÷åì <b>buf2d_line</b>, íî ðàáîòàåò ìåäëåííåå íå¸ çà ñ÷åò âû÷èñëåíèÿ ñìåøàííûõ öâåòîâ ôîíà è ñàìîé ëèíèè.</p>
 
<h4>buf2d_rect_by_size</h4>
<h4><a name="f_b_rect">buf2d_rect_by_size</a></h4>
<p>Ðèñóåò ïðÿìîóãîëüíóþ ðàìêó, ïî äâóì êîîðäèíàòàì, 2-ÿ êîîðäèíàòà çàäàíà ïî ðàçìåðó. Åñëè ðàçìåðû îòðèöàòåëüíûå ðàìêà ðèñóåòñÿ â îáðàòíîì íàïðàâëåíèè.</p>
<pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ïðÿìîóãîëüíèê; 10, 10 - êîîðäèíàòû ëåâîãî âåðõíåãî óãëà (ïðè îòðèöàòåëüíûõ ðàçìåðàõ êîîðäèíàòà ïðàâîãî íèæíåãî); 150, 100 - ðàçìåð ïðÿìîóãîëüíèêà; 0x8080 - öâåò ëèíèè.</p>
 
<h4>buf2d_filled_rect_by_size</h4>
<h4><a name="f_b_fil_rect">buf2d_filled_rect_by_size</a></h4>
<p>Ðèñóåò çàêðàøåííûé ïðÿìîóãîëüíèê, ïî äâóì êîîðäèíàòàì, 2-ÿ êîîðäèíàòà çàäàíà ïî ðàçìåðó. Åñëè ðàçìåð çàäàòü 1*1, òî áóäåò íàðèñîâàíà òî÷êà ðàçìåðîì â 1 ïèêñåëü, ò.å. ðàçìåð ïðÿìîóãîëüíèêà â ïèêñåëÿõ áóäåò ðàâåí óêàçàííîìó. Åñëè ðàçìåðû îòðèöàòåëüíûå ïðÿìîóãîëüíèê ðèñóåòñÿ â îáðàòíîì íàïðàâëåíèè.</p>
<pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ïðÿìîóãîëüíèê; 10, 10 - êîîðäèíàòû ëåâîãî âåðõíåãî óãëà (ïðè îòðèöàòåëüíûõ ðàçìåðàõ êîîðäèíàòà ïðàâîãî íèæíåãî); 150, 100 - ðàçìåð ïðÿìîóãîëüíèêà; 0x8080 - öâåò ïðÿìîóãîëèêà.</p>
 
<h4>buf2d_circle</h4>
<h4><a name="f_b_circle">buf2d_circle</a></h4>
<p>Ðèñóåò â áóôåðå îêðóæíîñòü ñ çàäàííûì öâåòîì è ðàäèóñîì. Ïðèìåð:</p>
<pre>stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000</pre>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ îêðóæíîñòü; 25, 70 - êîîðäèíàòû öåíòðà; 15 - ðàäèóñ; 0xff0000 - öâåò.</p>
256,15 → 263,20
<p>100,150 - êîîðäèíàòû òî÷êè;</p>
<p>eax - öâåò òî÷êè (äëÿ 8 è 24 áèòíûõ áóôåðîâ íå èñïîëüçóåìûå ñòàðøèå áèòû â eax ðàâíû 0) èëè çíà÷åíèå -1 â ñëó÷àå îøèáêè.</p>
 
<h4><a name="f_flip_h">buf2d_flip_h</a></h4>
<p>Îòðàæàåò èçîáðàæåíèå â áóôåðå ïî ãîðèçîíòàëè (ëåâî è ïðàâî ìåíÿþòñÿ ìåñòàìè). Ïðèìåð:</p>
<pre>stdcall buf2d_flip_h, buf_0</pre>
<p>ãäå buf_0 - ñòðóêòóðà 24-õ èëè 32-õ áèòíîãî áóôåðà.</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>
<p>ãäå buf_0 - ñòðóêòóðà 24-õ èëè 32-õ áèòíîãî áóôåðà.</p>
 
<h4><a name="f_filter_d">buf2d_filter_dither</a></h4>
<p>Ôèëüòð, êîòîðûé ïðåîáðàçóåò èçîáðàæåíèå èç 24 áèòíîãî áóôåðà â 8-ìè öâåòíîå. Ðàçðÿäíîñòü áóôåðà íå ìåíÿåòñÿ. Ïðèìåð:</p>
<pre>stdcall [buf2d_filter_dither], buf_0, 0</pre>
<p>ãäå buf_0 - ñòðóêòóðà 24-õ áèòíîãî áóôåðà.</p>
<p>ãäå buf_0 - ñòðóêòóðà 24-õ áèòíîãî áóôåðà;</p>
<p>0 - àëãîðèòì (âîçìîæíûå çíà÷åíèÿ: 0 - Sierra Lite, 1 - Floyd-Steinberg, 2 - Burkers, 3 - Heavyiron_mod, 4 - Atkinson).</p>
 
<h4><a name="f_v_brush_c">buf2d_vox_brush_create</a></h4>
359,6 → 371,7
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_h dd sz_buf2d_flip_h
buf2d_flip_v dd sz_buf2d_flip_v
buf2d_filter_dither dd sz_buf2d_filter_dither
 
403,6 → 416,7
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_h db 'buf2d_flip_h',0
sz_buf2d_flip_v db 'buf2d_flip_v',0
sz_buf2d_filter_dither db 'buf2d_filter_dither',0
 
445,5 → 459,6
<p>15.11.12 - äîáàâëåíà ôóíêöèÿ îòðàæåíèÿ 24 áèòíûõ èçîáðàæåíèé ïî âåðòèêàëè buf_flip_v, èñïðàâëåíèÿ â ôóíêöèè buf2d_img_hdiv2.</p>
<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>
</body>
</html>
/programs/develop/libraries/buf2d/trunk/buf2d.asm
1986,6 → 1986,79
ret
endp
 
align 4
proc buf_flip_h, buf_struc:dword
pushad
mov edi,[buf_struc]
cmp buf2d_bits,24
jne .end_24
mov esi,buf2d_data
mov eax,buf2d_w
mov ecx,eax
shr ecx,1
dec eax
lea eax,[eax+eax*2]
mov ebx,buf2d_h
mov edi,esi
add esi,eax
add eax,3
cld
.cycle_24:
push ecx edi esi
align 4
@@:
;swap word[edi] <-> word[esi]
mov dx,[edi]
movsw
mov [esi-2],dx
;swap byte[edi] <-> byte[esi]
mov dl,[edi]
movsb
mov [esi-1],dl
sub esi,6
loop @b
pop esi edi ecx
add edi,eax
add esi,eax
dec ebx
or ebx,ebx
jnz .cycle_24
jmp .end_32
.end_24:
cmp buf2d_bits,32
jne .end_32
mov esi,buf2d_data
mov eax,buf2d_w
dec eax
shl eax,2
mov ebx,buf2d_h
mov edi,esi
add esi,eax
add eax,4
cld
.cycle_32:
mov ecx,eax
shr ecx,3
push edi esi
align 4
@@:
;swap dword[edi] <-> dword[esi]
mov edx,[edi]
movsd
mov [esi-4],edx
sub esi,8
loop @b
pop esi edi
add edi,eax
add esi,eax
dec ebx
or ebx,ebx
jnz .cycle_32
.end_32:
popad
ret
endp
 
;®âà §¨âì ¯® ¢¥à⨪ «¨ (¢¥àå ¨ ­¨§ ¬¥­ïîâáï ¬¥áâ ¬¨)
align 4
proc buf_flip_v, buf_struc:dword
2013,23 → 2086,54
cld
.flip_24:
cmp ebx,0
jle .end_24
jle .end_32 ;§¤¥áì ¢ë室 ¨§ ä㭪樨 (¯®â®¬ã .end_24 ­¥ ¯®¤å®¤¨â)
mov ecx,[line_pix]
align 4
@@:
lodsw
mov dx,word[edi]
mov word[esi-2],dx
mov [edi],ax
stosw
lodsb
mov ah,byte[edi+2]
mov ah,byte[edi]
mov byte[esi-1],ah
mov [edi+2],al
add edi,3
stosb
loop @b
sub edi,[line_2byte]
dec ebx
jmp .flip_24
.end_24:
cmp buf2d_bits,32
jne .end_32
mov edx,buf2d_w
mov [line_pix],edx
mov ebx,buf2d_h
shl 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_32:
cmp ebx,0
jle .end_32
mov ecx,[line_pix]
align 4
@@:
lodsd
mov edx,dword[edi]
mov dword[esi-4],edx
stosd
loop @b
sub edi,[line_2byte]
dec ebx
jmp .flip_32
.end_32:
popad
ret
endp
3318,7 → 3422,6
line_len4i:
push ebp
mov ebp,esp
finit
fild word [ebp+8]
fisub word [ebp+12]
fmul st0,st0 ;st0=x^2
3325,7 → 3428,7
fild word [ebp+10]
fisub word [ebp+14]
fmul st0,st0 ;st0=y^2
fadd st0,st1
faddp
fsqrt
fstp dword [ebp+12]
pop ebp
3353,6 → 3456,7
xor ecx,ecx
 
finit
fldz
 
; calculate delta t
stdcall line_len4i, dword[coord_p1],dword[coord_p0]
3374,7 → 3478,8
@@:
fstp dword[delt_t]
 
finit
ffree st0 ;1.0
fincstp
 
;fild word[coord_p2+2] ;y2
fild word[coord_p1+2] ;y1
3400,10 → 3505,9
mov esi,dword[opr_param]
fstp dword[opr_param]
 
fldz
fadd st0,st1 ;0+t
fmul st0,st0 ;t*t
fmul st0,st5 ;...*x2
fld st0 ;st0=t
fmul st0,st0 ;t^2
fmul st0,st5 ;(t^2)*x2
 
fadd dword[opr_param]
mov dword[opr_param],esi
3424,10 → 3528,9
mov esi,dword[opr_param]
fstp dword[opr_param]
 
fldz
fadd st0,st1 ;0+t
fmul st0,st0 ;t*t
fimul word[coord_p2+2] ;...*y2
fld st0 ;st0=t
fmul st0,st0 ;t^2
fimul word[coord_p2+2] ;(t^2)*y2
 
fadd dword[opr_param]
mov dword[opr_param],esi
5270,6 → 5373,7
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_h, buf_flip_h
dd sz_buf2d_flip_v, buf_flip_v
dd sz_buf2d_filter_dither, buf_filter_dither
dd sz_buf2d_vox_brush_create, vox_brush_create
5311,6 → 5415,7
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_h db 'buf2d_flip_h',0
sz_buf2d_flip_v db 'buf2d_flip_v',0
sz_buf2d_filter_dither db 'buf2d_filter_dither',0
sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0