Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 2357 → Rev 2358

/programs/develop/libraries/buf2d/trunk/about.htm
127,14 → 127,14
<p>Ðèñóåò â áóôåðå ëèíèþ ïðèíèìàåò òàêèæå ïàðàìåòðû êàê è ôóíêöèÿ <b>buf2d_line</b>. Äàííàÿ ôóíêöèÿ ðèñóåò ñãëàæåííóþ ëèíèþ áîëåå êðàñèâóþ ÷åì <b>buf2d_line</b>, íî ðàáîòàåò ìåäëåííåå íå¸ çà ñ÷åò âû÷èñëåíèÿ ñìåøàííûõ öâåòîâ ôîíà è ñàìîé ëèíèè.</p>
 
<h4>buf2d_rect_by_size</h4>
<p>Ðèñóåò ïðÿìîóãîëüíóþ ðàìêó, ïî äâóì êîîðäèíàòàì, 2-ÿ êîîðäèíàòà çàäàíà ïî ðàçìåðó.</p>
<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>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ïðÿìîóãîëüíèê; 10, 10 - êîîðäèíàòû ëåâîãî âåðõíåãî óãëà (ïðè îòðèöàòåëüíûõ ðàçìåðàõ êîîðäèíàòà ïðàâîãî íèæíåãî); 150, 100 - ðàçìåð ïðÿìîóãîëüíèêà; 0x8080 - öâåò ëèíèè.</p>
 
<h4>buf2d_filled_rect_by_size</h4>
<p>Ðèñóåò çàêðàøåííûé ïðÿìîóãîëüíèê, ïî äâóì êîîðäèíàòàì, 2-ÿ êîîðäèíàòà çàäàíà ïî ðàçìåðó. Åñëè ðàçìåð çàäàòü 1*1, òî áóäåò íàðèñîâàíà òî÷êà ðàçìåðîì â 1 ïèêñåëü, ò.å. ðàçìåð ïðÿìîóãîëüíèêà â ïèêñåëÿõ áóäåò ðàâåí óêàçàííîìó.</p>
<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>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ïðÿìîóãîëüíèê; 10, 10 - êîîðäèíàòû ëåâîãî âåðõíåãî óãëà (ïðè îòðèöàòåëüíûõ ðàçìåðàõ êîîðäèíàòà ïðàâîãî íèæíåãî); 150, 100 - ðàçìåð ïðÿìîóãîëüíèêà; 0x8080 - öâåò ïðÿìîóãîëèêà.</p>
 
<h4>buf2d_circle</h4>
<p>Ðèñóåò â áóôåðå îêðóæíîñòü ñ çàäàííûì öâåòîì è ðàäèóñîì. Ïðèìåð:</p>
176,6 → 176,10
 
<h4>buf2d_curve_bezier</h4>
<p>Ðèñóåò ïî òðåì òî÷êàì îòðåçîê êðèâîé áåçüå.</p>
<pre>stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff</pre>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ êðèâàÿ;
(10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90 - êîîðäèíàòû òî÷åê (10,20), (110,10), (50,90);
0xff - öâåò ïðÿìîé.</p>
 
<h4>buf2d_convert_text_matrix</h4>
<p>Ïðåîáðàçóåò ìàòðèöó ñ òåêñòîì ðàçìåðîì 16*16 â ðàçìåð 1*256. Íåîáõîäèìî äëÿ ñîçäàíèÿ ìàòðèöû äëÿ ðèñîâàíèÿ òåêñòà. Ïåðåä èñïîëüçîâàíèåì äàííîé ôóíêöèè ïðåäïîëàãàåòñÿ ÷òî åñòü èçîáðàæåíèå ñ ïîëíûì íàáîðîì ñèìâîëîâ ðàçìåðîì 16 ñòîëáöîâ íà 16 ñòðîê, èç êîòîðîãî ïðåäâàðèòåëüíî áûë ñîçäàí 8 áèòíûé áóôåð.</p>
203,7 → 207,7
<p>Ñäâèã èçîáðàæåíèÿ â áóôåðå ïî âûñîòå ââåðõ èëè âíèç.</p>
 
<h4>buf2d_flood_fill</h4>
<p>Ôóíêöèÿ äëÿ ðåêóðñèâíîé çàëèâêè âûáðàííûì öâåòîì. Èìååòüñÿ äâà âàðèàíòà çàëèâêè. Ïðèìåð:</p>
<p>Ôóíêöèÿ äëÿ ðåêóðñèâíîé çàëèâêè âûáðàííûì öâåòîì. Èìååòñÿ äâà âàðèàíòà çàëèâêè. Ïðèìåð:</p>
<pre>stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000</pre>
<p>ãäå buf_0 - ñòðóêòóðà áóôåðà;
100,200 - êîîðäèíàòû òî÷êè, ñ êîòîðîé íà÷íåòñÿ çàëèâêà;
304,6 → 308,7
<p>25.03.11 - äîáàâëåíà ôóíêöèÿ äëÿ ðèñîâàíèÿ òî÷êè buf2d_set_pixel.</p>
<p>30.08.11 - äîáàâëåíà ôóíêöèÿ èçìåíåíèÿ ðàçìåðîâ áóôåðà buf2d_resize.</p>
<p>13.09.11 - îïòèìèçèðîâàíà ðàáîòà ôóíêöèé buf_filled_rect_by_size buf_rect_by_size, äîáàâëåíû ïðèìåðû èñïîëüçîâàíèÿ áèáëèîòåêè.</p>
<p>22.09.11 - äîáàâëåíà ôóíêöèÿ buf2d_line_sm äëÿ ðèñîâàíèÿ ñãëàæåííîé ëèíèè.</ç>
<p>22.09.11 - äîáàâëåíà ôóíêöèÿ buf2d_line_sm äëÿ ðèñîâàíèÿ ñãëàæåííîé ëèíèè.</p>
<p>20.02.12 - ôóíêöèè buf_filled_rect_by_size è buf_rect_by_size ìîãóò ïðèíèìàòü îòðèöàòåëüíûå ðàçìåðû äëÿ ïðÿìîóãîëüíèêîâ, â ôóíêöèè buf2d_line ãîðèçîíòàëüíàÿ ëèíèÿ ðèñóåòñÿ íà 1 ïèêñåëü äëèíåå (ðàíüøå íå äîðèñîâûâàëî), íåêîòîðûå ôóíêöèè ìîãóò ðèñîâàòü â 8 áèòíûõ áóôåðàõ.</p>
</body>
</html>
/programs/develop/libraries/buf2d/trunk/buf2d.asm
82,13 → 82,19
mov esi,buf2d_w ;size x
imul esi,ecx ;size_x*y
add esi,ebx ;size_x*y+x
cmp buf2d_bits,8
je .beg8
lea esi,[esi+esi*2] ;(size_x*y+x)*3
add esi,buf2d_data ;ptr+(size_x*y+x)*3
 
mov word[esi],dx ;copy pixel color
ror edx,16
mov byte[esi+2],dl
ror edx,16
jmp .end_draw
.beg8: ;à¨á®¢ ­¨¥ â®çª¨ ¢ 8 ¡¨â­®¬ ¡ãä¥à¥
add esi,buf2d_data ;ptr+(size_x*y+x)
mov byte[esi],dl
.end_draw:
pop esi
@@:
ret
1067,8 → 1073,12
 
mov eax,edi
mov edi,[buf_struc]
cmp buf2d_bits,8
je @f
cmp buf2d_bits,24
jne .coord_end
je @f
jmp .coord_end
@@:
 
cmp [napravl],0
jne .coord_yx
1251,9 → 1261,14
align 4
proc buf_line_h, buf_struc:dword, coord_x0:dword, coord_y0:dword, coord_x1:dword, color:dword
pushad
pushfd
mov edi,[buf_struc]
cmp buf2d_bits,8
je @f
cmp buf2d_bits,24
jne .end24
je @f
jmp .end24
@@: ;®¯à¥¤¥«¥­¨¥ ª®®à¤¨­ â «¨­¨¨ ®â­®á¨â¥«ì­® ¡ãä¥à 
 
mov ecx,dword[coord_y0]
bt ecx,31
1279,8 → 1294,27
;dec esi
@@:
cmp ebx,esi
jge .end24 ;¥á«¨ x0 >= x1 ¬®¦¥â ¢®§­¨ª­ãâì ª®£¤  ®¡¥ ª®®à¤¨­ âë x0, x1 ­ å®¤¨«¨áì §  ®¤­¨¬ ¨§ ¯à¥¤¥«®¢ ¡ãä¥à 
jg .end24 ;¥á«¨ x0 > x1 ¬®¦¥â ¢®§­¨ª­ãâì ª®£¤  ®¡¥ ª®®à¤¨­ âë x0, x1 ­ å®¤¨«¨áì §  ®¤­¨¬ ¨§ ¯à¥¤¥«®¢ ¡ãä¥à 
 
cmp buf2d_bits,24
je .beg24
;à¨á®¢ ­¨¥ ¢ 8 ¡¨â­®¬ ¡ãä¥à¥
;¢ edx ¢ëç¨á«ï¥¬ ­ ç «® 1-© â®çª¨ «¨­¨¨ ¢ ¡ãä¥à¥ ¨§®¡à ¦¥­¨ï
mov edx,buf2d_w ;size x
imul edx,ecx ;size_x*y
add edx,ebx ;size_x*y+x
add edx,buf2d_data ;ptr+(size_x*y+x)
mov edi,edx ;⥯¥àì ¬®¦¥¬ ¯®àâ¨âì 㪠§ â¥«ì ­  ¡ãä¥à
 
mov ecx,esi
sub ecx,ebx ;¢ ecx ª®««¨ç¥á⢮ â®ç¥ª «¨­¨¨ ¢ë¢®¤¨¬ëå ¢ ¡ãä¥à
inc ecx ;çâ®-¡ë ¯®á«¥¤­ïï â®çª  «¨­¨¨ â ª¦¥ ®â®¡à ¦ « áì
mov eax,dword[color] ;¡ã¤¥¬ ¨á¯®«ì§®¢ âì ⮫쪮 §­ ç¥­¨¥ ¢ al
cld
rep stosb ;横« ¯® ®á¨ x ®â x0 ¤® x1 (¢ª«îç ï x1)
jmp .end24
 
.beg24: ;à¨á®¢ ­¨¥ ¢ 24 ¡¨â­®¬ ¡ãä¥à¥
;¢ eax ¢ëç¨á«ï¥¬ ­ ç «® 1-© â®çª¨ «¨­¨¨ ¢ ¡ãä¥à¥ ¨§®¡à ¦¥­¨ï
mov eax,buf2d_w ;size x
imul eax,ecx ;size_x*y
1290,16 → 1324,18
 
mov ecx,esi
sub ecx,ebx ;¢ ecx ª®««¨ç¥á⢮ â®ç¥ª «¨­¨¨ ¢ë¢®¤¨¬ëå ¢ ¡ãä¥à
inc ecx ;çâ®-¡ë ¯®á«¥¤­ïï â®çª  «¨­¨¨ â ª¦¥ ®â®¡à ¦ « áì
mov edx,dword[color]
mov ebx,edx ;ª®®à¤¨­ â  x0 ¢ ebx 㦥 ­¥ ­ã¦­ 
ror edx,16 ;¯®¢®à ç¨¢ ¥¬ ॣ¨áâà çâ® ¡ë 3-© ¡ ©â ¯®¯ « ¢ dl
cld
@@: ;横« ¯® ®á¨ x ®â x0 ¤® x1
@@: ;横« ¯® ®á¨ x ®â x0 ¤® x1 (¢ª«îç ï x1)
mov word[eax],bx ;copy pixel color
mov byte[eax+2],dl
add eax,3
loop @b
.end24:
popfd
popad
ret
endp
1308,19 → 1344,37
proc buf_rect_by_size, buf_struc:dword, coord_x:dword,coord_y:dword,w:dword,h:dword, color:dword
pushad
mov edi,[buf_struc]
cmp buf2d_bits,8
je @f
cmp buf2d_bits,24
jne .coord_end
je @f
jmp .coord_end
@@:
 
mov eax,[coord_x]
mov ebx,[coord_y]
mov ecx,[w]
cmp ecx,1
jl .coord_end
;cmp ecx,1
;jl .coord_end
cmp ecx,0
je .coord_end
jg @f
add eax,ecx
inc eax
neg ecx
@@:
add ecx,eax
dec ecx
mov edx,[h]
cmp edx,1
jl .coord_end
;cmp edx,1
;jl .coord_end
cmp edx,0
je .coord_end
jg @f
add ebx,edx
inc ebx
neg edx
@@:
 
add edx,ebx
dec edx
1338,15 → 1392,34
proc buf_filled_rect_by_size, buf_struc:dword, coord_x:dword,coord_y:dword,w:dword,h:dword, color:dword
pushad
mov edi,[buf_struc]
cmp buf2d_bits,8
je @f
cmp buf2d_bits,24
jne .coord_end
je @f
jmp .coord_end
@@:
mov eax,[coord_x]
mov ebx,[coord_y]
mov edx,[w]
cmp edx,0
je .coord_end ;¥á«¨ ¢ëá®â  0 ¯¨ªá¥«¥©
jg @f ;¥á«¨ ¢ëá®â  ¯®«®¦¨â¥«ì­ ï
add eax,edx
inc eax
neg edx ;è¨à¨­ã ¤¥« ¥¬ ¯®«®¦¨â¥«ì­®©
;inc edx ;¯®ç¥¬ã âãâ ­¥ ¤®¡ ¢«ï¥¬ 1-æã ï ­¥ §­ î, ­® á ­¥© à ¡®â ¥â ­¥ ¯à ¢¨«ì­®
@@:
add edx,eax
dec edx
mov ecx,[h]
cmp ecx,1 ;áà ¢­¥­¨¥ á ¬¨­¨¬ «ì­® ¢®§¬®¦­®© ¢ëá®â®©
jl .coord_end ;¥á«¨ ¢ëá®â  ¬¥­ìè¥ 1-£® ¯¨ªá¥«ï
cmp ecx,0
je .coord_end ;¥á«¨ ¢ëá®â  0 ¯¨ªá¥«¥©
jg @f ;¥á«¨ ¢ëá®â  ¯®«®¦¨â¥«ì­ ï
add ebx,ecx ;ᤢ¨£ ¥¬ ¢¥àå­îî ª®®à¤¨­ âã ¯àאַ㣮«ì­¨ª 
inc ebx
neg ecx ;¢ëá®âã ¤¥« ¥¬ ¯®«®¦¨â¥«ì­®©
;inc ecx ;¯®ç¥¬ã âãâ ­¥ ¤®¡ ¢«ï¥¬ 1-æã ï ­¥ §­ î, ­® á ­¥© à ¡®â ¥â ­¥ ¯à ¢¨«ì­®
@@:
mov esi,dword[color]
cld
@@:
1366,8 → 1439,12
endl
pushad
mov edi,dword[buf_struc]
cmp buf2d_bits,8
je @f
cmp buf2d_bits,24
jne .error
je @f
jmp .error
@@:
mov edx,dword[color]
 
finit
1414,7 → 1491,7
jge @b
jmp .exit_fun
.error:
stdcall print_err,sz_buf2d_circle,txt_err_n24b
stdcall print_err,sz_buf2d_circle,txt_err_n8_24b
.exit_fun:
 
popad
1561,8 → 1638,12
proc buf_set_pixel, buf_struc:dword, coord_x:dword, coord_y:dword, color:dword
pushad
mov edi,[buf_struc]
cmp buf2d_bits,8
je @f
cmp buf2d_bits,24
jne .end24
je @f
jmp .end24
@@:
mov ebx,dword[coord_x]
mov ecx,dword[coord_y]
mov edx,dword[color]
2544,6 → 2625,7
 
txt_err_n8b db 'need buffer 8 bit',13,10,0
txt_err_n24b db 'need buffer 24 bit',13,10,0
txt_err_n8_24b db 'need buffer 8 or 24 bit',13,10,0
 
align 16
EXPORTS: