Subversion Repositories Kolibri OS

Rev

Rev 6175 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. <html>
  2. <head>
  3. <title>áèáëèîòåêà äëÿ ðàáîòû ñ 2d áóôåðàìè</title>
  4. <meta charset="WINDOWS-1251">
  5. <style>
  6. body
  7. {
  8.   font-size: 15px;
  9.   font-family: "Bookman Old Style";
  10.   color: black;
  11.   text-align: justify;
  12. }
  13. h1 { color: green; font-size: 23px; }
  14. h2 { color: green; font-size: 21px; }
  15. h3 { color: green; font-size: 19px; }
  16. h4 { color: #803f00; font-size: 17px; }
  17. i { color: #0099cc; }
  18. b { color: #0099cc; }
  19. p {
  20.   text-indent: 1em;
  21.   margin-top: 3px;
  22.   margin-bottom: 2px;
  23.   margin-left: 0px;
  24.   margin-right: 0px;
  25. }
  26. ol, ul, dl{
  27.   margin-top: 3px;
  28.   margin-bottom: 2px;
  29. }
  30. pre
  31. {
  32.   padding: 2px;
  33.   padding-left: 20px;
  34.   margin-top: 5px;
  35.   margin-bottom: 5px;
  36.   margin-left: 0px;
  37.   margin-right: 0px;
  38.   font-family: "Courier New";
  39.   font-size: 15px;
  40.   color: #004000;
  41.   background-color: #ffd0ff;
  42. }
  43. table { font-size: 15px; }
  44. </style>
  45. </head>
  46.  
  47. <body>
  48.  
  49. <h1>Îãëàâëåíèå</h1>
  50. <ul>
  51. <li>Âñòóïëåíèå</li>
  52. <li><a href="#format_buf">Ôîðìàòû áóôåðîâ</a></li>
  53. <li><a href="#fun">Ôóíêöèè</a><br>
  54. <ul>
  55. <li><a href="#f_init">lib_init</a></li>
  56. <li><a href="#f_create">buf2d_create</a></li>
  57. <li><a href="#f_create_f">buf2d_create_f_img</a></li>
  58. <li><a href="#f_clear">buf2d_clear</a></li>
  59. <li><a href="#f_draw">buf2d_draw</a></li>
  60. <li><a href="#f_delete">buf2d_delete</a></li>
  61. <li><a href="#f_rotate">buf2d_rotate</a></li>
  62. <li><a href="#f_resize">buf2d_resize</a></li>
  63. <li><a href="#f_line">buf2d_line</a></li>
  64. <li><a href="#f_line_sm">buf2d_line_sm</a></li>
  65. <li><a href="#f_rect">buf2d_rect_by_size</a></li>
  66. <li><a href="#f_fil_rect">buf2d_filled_rect_by_size</a></li>
  67. <li><a href="#f_circle">buf2d_circle</a></li>
  68. <li><a href="#f_hdiv2">buf2d_img_hdiv2</a></li>
  69. <li><a href="#f_wdiv2">buf2d_img_wdiv2</a></li>
  70. <li>buf2d_conv_24_to_8</li>
  71. <li>buf2d_conv_24_to_32</li>
  72. <li><a href="#f_bit_blt">buf2d_bit_blt</a></li>
  73. <li>buf2d_bit_blt_transp</li>
  74. <li>buf2d_bit_blt_alpha</li>
  75. <li>buf2d_curve_bezier</li>
  76. <li>buf2d_convert_text_matrix</li>
  77. <li>buf2d_draw_text</li>
  78. <li><a href="#f_c_color">buf2d_crop_color</a></li>
  79. <li>buf2d_offset_h</li>
  80. <li>buf2d_flood_fill</li>
  81. <li>buf2d_set_pixel</li>
  82. <li>buf2d_get_pixel</li>
  83. <li><a href="#f_flip_h">buf2d_flip_h</a></li>
  84. <li><a href="#f_flip_v">buf2d_flip_v</a></li>
  85. <li><a href="#f_filter_d">buf2d_filter_dither</a></li>
  86.  
  87. <li><a href="#f_v_brush_c">buf2d_vox_brush_create</a></li>
  88. <li>buf2d_vox_brush_delete</li>
  89. <li>buf2d_vox_obj_draw_1g</li>
  90. <li>buf2d_vox_obj_get_img_w_3g</li>
  91. <li>buf2d_vox_obj_get_img_h_3g</li>
  92. <li>buf2d_vox_obj_draw_3g</li>
  93. <li>buf2d_vox_obj_draw_3g_scaled</li>
  94. <li>buf2d_vox_obj_draw_3g_shadows</li>
  95. <li>buf2d_vox_obj_draw_pl</li>
  96. <li>buf2d_vox_obj_draw_pl_scaled</li>
  97. </ul>
  98. </li>
  99. <li><a href="#const">Êîíñòàíòû</a></li>
  100. <li><a href="#tabl_e">Òàáëèöà ýêñïîðòà</a></li>
  101. <li><a href="#hist">Èñòîðèÿ</a></li>
  102. </ul>
  103.  
  104. <h1>Âñòóïëåíèå</h1>
  105. <p>Äîêóìåíòàöèÿ ê ñâîáîäíîé áèáëèîòåêå <b>buf2d.asm</b>, äëÿ <b>ÎÑ Êîëèáðè</b>.
  106.  Ýòà áèáëèîòåêà ñîçäàíà äëÿ ðàáîòû ñ 2d èçîáðàæåíèÿìè.
  107.  Ñ åå ïîìîùüþ ìîæíî ñîçäàâàòü áóôåðà ñ èçîáðàæåíèÿìè â ïàìÿòè, è ïðè íåîáõîäèìîñòè âûâîäèòü èõ íà ýêðàí.
  108.  Èçîáðàæåíèÿ ìîæíî íàêëàäûâàòü îäíî íà äðóãîå, ïîääåðæèâàåòñÿ ðàáîòà ñ ïðîçðà÷íûìè èçîáðàæåíèÿìè.
  109.  Åñòü ôóíêöèè ðèñîâàíèÿ ëèíèé, êðèâûõ Áåçüå, ïðÿìîóãîëüíèêîâ, îêðóæíîñòåé.
  110.  Òàêæå åñòü ôóíêöèè äëÿ ðèñîâàíèé âîêñåëüíîé ãðàôèêè.</p>
  111.  
  112. <p>Ïîñëåäíåå îáíîâëåíèå áèáëèîòåêè 09.02.16.</p>
  113.  
  114. <h1><a name="format_buf">Ôîðìàòû áóôåðîâ</a></h1>
  115. <p>Ïîääåðæèâàåòñÿ 3 ôîðìàòà áóôåðîâ.
  116.  Êàæäàÿ ôóíêöèÿ ïðè ðàáîòå ñ áóôåðàìè ìîæåò áûòü ðàñ÷èòàíà íà ðàáîòó ñ îïðåäåëåííûìè ôîðìàòàìè èçîáðàæåíèé.</p>
  117.  
  118. <h4>8 áèò</h4>
  119. <p>Ñîæåðæèò àëüôà êàíàë <b>a</b> (ïðîçðà÷íîñòü) èçîáðàæåíèÿ. Íà ýêðàí íå âûâîäèòñÿ. Èñïîëüçóåòñÿ äëÿ ñîçäàíÿ 32-áèòíûõ áóôåðîâ.</p>
  120. <h4>24 áèò</h4>
  121. <p>Äàííûé áóôåð ñîäåðæèò èçîáðàæåíèå â ôîðìàòå <b>rgb</b>. Ìîæåò âûâîäèòñÿ íà ýêðàí.</p>
  122. <h4>32 áèò</h4>
  123. <p>Ñîäåðæèò ïðîçðà÷íîå èçîáðàæåíèå â ôîðìàòå <b>rgba</b>. Íà ýêðàí íå âûâîäèòñÿ. Èñïîëüçóåòñÿ äëÿ íàëîæåíèÿ èçîáðàæåíèé. Åñëè <b>a=255</b> òî ïèêñåëü ïðîçðà÷íûé, åñëè <b>0</b> íå ïðîçðà÷íûé.</p>
  124.  
  125. <h1><a name="fun">Ôóíêöèè</a></h1>
  126.  
  127. <p>Ïî÷òè âñå ôóíêöèè 1-ì ïàðàìåòðîì ïðèíèìàþò óêàçàòåëü íà ñòðóêòóðó áóôåðà,
  128.  èç êîòîðîé ìîãóò èñïîëüçîâàòüñÿ ïàðàìåòðû, íóæíûå äëÿ ðàáîòû êîíêðåòíîé ôóíêöèè.
  129.  Ïðèìåð ñòðóêòóðû áóôåðà èçîáðàæåíèÿ:</p>
  130. <pre>align 4
  131. buf_0:
  132.         dd    0 ;+ 0 óêàçàòåëü íà áóôåð èçîáðàæåíèÿ
  133.         dw  100 ;+ 4 îòñòóï ñëåâà
  134.         dw   10 ;+ 6 îòñòóï ñïðàâà
  135.         dd  150 ;+ 8 øèðèíà
  136.         dd  100 ;+12 âûñîòà
  137.         dd 0x80 ;+16 ôîíîâûé öâåò
  138.         db   24 ;+20 áèò íà ïèêñåëü</pre>
  139.  
  140. <h4><a name="f_init">lib_init</a></h4>
  141. <p>Ýòà ôóíêöèÿ ïîëó÷àåò óêàçàòåëè íà ôóíêöèè ðàáîòû ñ ïàìÿòüþ, âûçûâàòñÿ äîëæíà ïðè çàãðóçêå áèáëèîòåêè. Ìîæåòå èñïîëüçîâàòü ìàêðîñ <b>@use_library_mem</b>, äëÿ åå àâòîìàòè÷åñêîé íàñòðîéêè.</p>
  142.  
  143. <h4><a name="f_create">buf2d_create</a></h4>
  144. <p>Ñîçäàåò áóôåð è ÷èñòèò åãî ôîíîâûì öâåòîì. Ïðèìåð:</p>
  145. <pre>stdcall [buf2d_create], buf_0</pre>
  146. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà.</p>
  147. <p>Ïàðàìåòðû äëÿ ñîçäàíèÿ áóôåðà áåðóòñÿ èç ñòðóêòóðû.</p>
  148.  
  149. <h4><a name="f_create_f">buf2d_create_f_img</a></h4>
  150. <p>Ñîçäàåò áóôåð íà îñíîâå èçîáðàæåíèÿ â ôîðìàòå <b>rgb</b>.</p>
  151. <pre>buf2d_w equ dword[edi+8] ;øèðèíà áóôåðà
  152. buf2d_h equ dword[edi+12] ;âûñîòà áóôåðà
  153. mov edi,buf_i0
  154. mov buf2d_w,320
  155. mov buf2d_h,240
  156. stdcall [buf2d_create_f_img], edi,[open_file_img]</pre>
  157. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà, open_file_img - óêàçàòåëü íà äàííûå èçîáðàæåíèÿ â ôîðìàòå <b>rgb</b>, 320 - øèðèíà èçîáðàæåíèÿ â ïèêñåëÿõ, 240 - âûñîòà èçîáðàæåíèÿ â ïèêñåëÿõ.</p>
  158.  
  159. <h4><a name="f_clear">buf2d_clear</a></h4>
  160. <p>×èñòèò áóôåð óêàçàíûì öâåòîì. Ïðèìåð:</p>
  161. <pre>buf2d_color equ dword[edi+16] ;öâåò ôîíà áóôåðà
  162. mov edi,buf_0
  163. stdcall [buf2d_clear], edi, buf2d_color ;î÷èùàåì ýêðàí ôîíîâûì öâåòîì</pre>
  164. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà.</p>
  165.  
  166. <h4><a name="f_draw">buf2d_draw</a></h4>
  167. <p>Ðèñóåò áóôåð íà ýêðàíå (ðàáîòàåò ÷åðåç ñèñòåìíóþ ô. 7). Ðèñóþòñÿ òîëüêî áóôåðà ñ ãëóáèíîé öâåòà 24 áèòà.</p>
  168.  
  169. <h4><a name="f_delete">buf2d_delete</a></h4>
  170. <p>Îñâîáîæäàåò ïàìÿòü çàíÿòóþ èçîáðàæåíèåì áóôåðà.</p>
  171.  
  172. <h4><a name="f_rotate">buf2d_rotate</a></h4>
  173. <p>Ïîâîðà÷èâàåò áóôåð íà 90 èëè 180 ãðàäóñîâ. Ïðèìåð:</p>
  174. <pre>stdcall [buf2d_rotate], buf_0, 90</pre>
  175. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà (ìîæåò áûòü 8, 24 èëè 32 áèòíûì); 90 - óãîë ïîâîðîòà.</p>
  176.  
  177. <h4><a name="f_resize">buf2d_resize</a></h4>
  178. <p>Èçìåíÿåò ðàçìåðû áóôåðà èëè èçîáðàæåíèÿ â áóôåðå. Ïîêà ïîääåðæèâàþòñÿ áóôåðà ñ ãëóáèíîé öâåòà 24 áèòà.</p>
  179. <p>Ïðèìåð 1:</p>
  180. <pre>stdcall [buf2d_resize], buf_0, 0,300, 1 ;èçìåíÿåì âûñîòó áóôåðà</pre>
  181. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ëèíèÿ; 0 - íîâàÿ øèðèíà áóôåðà (0 îçíà÷àåò íå èçìåíÿòü ðàçìåð); 300 - íîâàÿ âûñîòà áóôåðà; 1 - ïàðàìåòð óêàçûâàþùèé ÷òî èçìåíÿþòñÿ ðàçìåðû áóôåðà.</p>
  182. <p>Ïðèìåð 2:</p>
  183. <pre>stdcall [buf2d_resize], buf_0, 250,0, 2 ;èçìåíÿåì èçîáðàæåíèå â áóôåðå</pre>
  184. <p>ãäå 250 - íîâàÿ øèðèíà áóôåðà; 0 - íîâàÿ âûñîòà áóôåðà (0 îçíà÷àåò íå èçìåíÿòü ðàçìåð); 2 - ïàðàìåòð óêàçûâàþùèé ÷òî èçìåíÿåì èçîáðàæåíèå â áóôåðå.</p>
  185. <p>Åñëè ïîñëåäíèé ïàðàìåòð ðàâåí 2 òî ðàçìåð áóôåðà îñòàåòñÿ íåèçìåííûì è ôóíêöèÿ ðàáîòàåò àíàëîãè÷íî òàê êàê è ôóíêöèè <b>buf2d_img_hdiv2</b>, <b>buf2d_img_wdiv2</b>. Ðàçíèöà â òîì, ÷òî buf2d_resize ìîæåò ñæèìàòü èçîáðàæåíèÿ äî çàäàííîãî ðàçìåðà, à íå ðîâíî â 2 ðàçà.</p>
  186.  
  187. <h4><a name="f_line">buf2d_line</a></h4>
  188. <p>Ðèñóåò â áóôåðå ëèíèþ ñ çàäàííûì öâåòîì è êîîðäèíàòàìè. Ïðèìåð:</p>
  189. <pre>stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;ðèñóåì ëèíèþ</pre>
  190. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ëèíèÿ; 30, 10, 110, 70 - êîîðäèíàòû ëèíèè; 0xffff00 - öâåò ëèíèè.</p>
  191. <p>Äëÿ ðèñîâàíèÿ ñãëàæåííîé ëèíèè èñïîëüçóéòå <b>buf2d_line_sm</b>.</p>
  192.  
  193. <h4><a name="f_line_sm">buf2d_line_sm</a></h4>
  194. <p>Ðèñóåò â áóôåðå ëèíèþ ïðèíèìàåò òàêèæå ïàðàìåòðû êàê è ôóíêöèÿ <b>buf2d_line</b>. Äàííàÿ ôóíêöèÿ ðèñóåò ñãëàæåííóþ ëèíèþ áîëåå êðàñèâóþ ÷åì <b>buf2d_line</b>, íî ðàáîòàåò ìåäëåííåå íå¸ çà ñ÷åò âû÷èñëåíèÿ ñìåøàííûõ öâåòîâ ôîíà è ñàìîé ëèíèè.</p>
  195.  
  196. <h4><a name="f_rect">buf2d_rect_by_size</a></h4>
  197. <p>Ðèñóåò ïðÿìîóãîëüíóþ ðàìêó, ïî äâóì êîîðäèíàòàì, 2-ÿ êîîðäèíàòà çàäàíà ïî ðàçìåðó. Åñëè ðàçìåðû îòðèöàòåëüíûå ðàìêà ðèñóåòñÿ â îáðàòíîì íàïðàâëåíèè.</p>
  198. <pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
  199. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ïðÿìîóãîëüíèê; 10, 10 - êîîðäèíàòû ëåâîãî âåðõíåãî óãëà (ïðè îòðèöàòåëüíûõ ðàçìåðàõ êîîðäèíàòà ïðàâîãî íèæíåãî); 150, 100 - ðàçìåð ïðÿìîóãîëüíèêà; 0x8080 - öâåò ëèíèè.</p>
  200.  
  201. <h4><a name="f_fil_rect">buf2d_filled_rect_by_size</a></h4>
  202. <p>Ðèñóåò çàêðàøåííûé ïðÿìîóãîëüíèê, ïî äâóì êîîðäèíàòàì, 2-ÿ êîîðäèíàòà çàäàíà ïî ðàçìåðó. Åñëè ðàçìåð çàäàòü 1*1, òî áóäåò íàðèñîâàíà òî÷êà ðàçìåðîì â 1 ïèêñåëü, ò.å. ðàçìåð ïðÿìîóãîëüíèêà â ïèêñåëÿõ áóäåò ðàâåí óêàçàííîìó. Åñëè ðàçìåðû îòðèöàòåëüíûå ïðÿìîóãîëüíèê ðèñóåòñÿ â îáðàòíîì íàïðàâëåíèè.</p>
  203. <pre>stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080</pre>
  204. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ ïðÿìîóãîëüíèê; 10, 10 - êîîðäèíàòû ëåâîãî âåðõíåãî óãëà (ïðè îòðèöàòåëüíûõ ðàçìåðàõ êîîðäèíàòà ïðàâîãî íèæíåãî); 150, 100 - ðàçìåð ïðÿìîóãîëüíèêà; 0x8080 - öâåò ïðÿìîóãîëèêà.</p>
  205.  
  206. <h4><a name="f_circle">buf2d_circle</a></h4>
  207. <p>Ðèñóåò â áóôåðå îêðóæíîñòü ñ çàäàííûì öâåòîì è ðàäèóñîì. Ïðèìåð:</p>
  208. <pre>stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000</pre>
  209. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ îêðóæíîñòü; 25, 70 - êîîðäèíàòû öåíòðà; 15 - ðàäèóñ; 0xff0000 - öâåò.</p>
  210.  
  211. <h4><a name="f_hdiv2">buf2d_img_hdiv2</a></h4>
  212. <p>Ñæèìàåò èçîáðàæåíèå â áóôåðå ïî âûñîòå â 2 ðàçà, ïðè ýòîì ðàçìåð ñàìîãî áóôåðà íå óìåíüøàåòñÿ.</p>
  213.  
  214. <h4><a name="f_wdiv2">buf2d_img_wdiv2</a></h4>
  215. <p>Ñæèìàåò èçîáðàæåíèå â áóôåðå ïî øèðèíå â 2 ðàçà, ïðè ýòîì ðàçìåð ñàìîãî áóôåðà íå óìåíüøàåòñÿ.</p>
  216.  
  217. <h4>buf2d_conv_24_to_8</h4>
  218. <p>Ïðåîáðàçîâàíèå áóôåðà èç 24-áèòíîãî â 8-áèòíûé.
  219.  Ïðè ïðåîáðàçîâàíèè óêàçûâàåòñÿ êàêîé öâåò áåðàòü: 0-ñèíèé, 1-çåëåíûé, 2-êðàñíûé.
  220.  Îñòàëüíûå öâåòà ïðè ïðåîáðàçîâàíèè òåðÿþòñÿ.</p>
  221.  
  222. <h4>buf2d_conv_24_to_32</h4>
  223. <p>Ïðåîáðàçîâàíèå áóôåðà èç 24-áèòíîãî â 32-áèòíûé.
  224.  Ïðè ïðåîáðàçîâàíèè óêàçûâàåòñÿ òàêæå 8-áèòíûé áóôåð, êîòîðûé áóäåò èñïîëüçîâàí äëÿ ñîçäàíèÿ àëüôà êàíàëà. Ïðèìåð:</p>
  225. <pre>stdcall [buf2d_conv_24_to_32],buf_a,buf_b ;äåëàåì áóôåð rgba 32áèò</pre>
  226. <p>Äî âûïîëíåíèÿ ôóíêöèè áóôåð buf_a äîëæåí áûòü 24 áèòíûì, à áóôåð buf_b - 8 áèòíûì.
  227.  Ïîñëå âûïîëíåíèÿ ôóíêöèè áóôåð buf_a ñòàíåò 32 áèòíûì, áóôåð buf_b íå èçìåíèòñÿ.</p>
  228.  
  229. <h4><a name="f_bit_blt">buf2d_bit_blt</a></h4>
  230. <p>Ðèñóåò â áóôåðå èçîáðàæåíèå èç äðóãîãî áóôåðà â óêàçàííûõ êîîðäèíàòàõ. Áóôåð â êîòîðîì ðèñóò (ïðèåìíèê) äîëæåí áûòü 24 áèòíûì, à òîò êîòîðûé ðèñóåòñÿ (èñòî÷íèê) 24 èëè 32 áèòíûì. Åñëè áóôåð èñòî÷íèê 32 áèòíûé, òî åãî ïðîçðà÷íîñòü ïðè ðèñîâàíèè íå ó÷èòûâàåòñÿ, äëÿ ó÷åòà ïðîçðà÷íîñòè èñïîëüçóåòñÿ ôóíêöèÿ <i>buf2d_bit_blt_transp</i>. Ïðèìåð:</p>
  231. <pre>stdcall [buf2d_bit_blt], buf_0, 50,30, buf_1 ;ïðîðèñîâêà ñðåäíåãî ñêèíà</pre>
  232. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ èçîáðàæåíèå (ïðèåìíèê);
  233.   buf_1 - ñòðóêòóðà áóôåðà ñ ðèñóåìûì èçîáðàæåíèåì (èñòî÷íèê);
  234.   50,30 - êîîðäèíàòû äëÿ âûâîäà èçîáðàæåíèÿ, îïðåäåëÿþò ïîëîæåíèå ðèñóåìîé êàðòèíêè â buf_0.</p>
  235.  
  236. <h4>buf2d_bit_blt_transp</h4>
  237. <p>Ðèñóåò â áóôåðå èçîáðàæåíèå èç äðóãîãî áóôåðà â óêàçàííûõ êîîðäèíàòàõ, ïðè ýòîì ó÷èòûâàåòñÿ ïðîçðà÷íîñòü.
  238.  Áóôåð êîòîðûé áóäåò íàðèñîâàí äîëæåí áûòü 32 áèòíûì, à òîò â êîòîðîì ðèñóþò 24 áèòíûì.</p>
  239.  
  240. <h4>buf2d_bit_blt_alpha</h4>
  241. <p>Ðèñóåò â áóôåðå èçîáðàæåíèå èç äðóãîãî áóôåðà â óêàçàííûõ êîîðäèíàòàõ, ïðè ýòîì ó÷èòûâàåòñÿ ïðîçðà÷íîñòü.
  242.  Áóôåð êîòîðûé áóäåò íàðèñîâàí äîëæåí áûòü 8 áèòíûì, à òîò â êîòîðîì ðèñóþò 24 áèòíûì.</p>
  243.  
  244. <h4>buf2d_curve_bezier</h4>
  245. <p>Ðèñóåò ïî òðåì òî÷êàì îòðåçîê êðèâîé áåçüå.</p>
  246. <pre>stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff</pre>
  247. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ êðèâàÿ;
  248.   (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90 - êîîðäèíàòû òî÷åê (10,20), (110,10), (50,90);
  249.   0xff - öâåò ïðÿìîé.</p>
  250.  
  251. <h4>buf2d_convert_text_matrix</h4>
  252. <p>Ïðåîáðàçóåò ìàòðèöó ñ òåêñòîì ðàçìåðîì 16*16 â ðàçìåð 1*256. Íåîáõîäèìî äëÿ ñîçäàíèÿ ìàòðèöû äëÿ ðèñîâàíèÿ òåêñòà. Ïåðåä èñïîëüçîâàíèåì äàííîé ôóíêöèè ïðåäïîëàãàåòñÿ ÷òî åñòü èçîáðàæåíèå ñ ïîëíûì íàáîðîì ñèìâîëîâ ðàçìåðîì 16 ñòîëáöîâ íà 16 ñòðîê, èç êîòîðîãî ïðåäâàðèòåëüíî áûë ñîçäàí 8 áèòíûé áóôåð.</p>
  253. <pre>stdcall [buf2d_create_f_img], buf_1,[image_data] ;ñîçäàåì áóôåð 24 áèò íà îñíîâå äàííûõ èçîáðàæåíèÿ
  254. stdcall [buf2d_conv_24_to_8], buf_1,1 ;äåëàåì áóôåð ïðîçðà÷íîñòè 8 áèò
  255. stdcall [buf2d_convert_text_matrix], buf_1</pre>
  256. <p>ãäå buf_1 - ñòðóêòóðà áóôåðà äëÿ ôîðìèðîâàíèÿ òåêñòîâîé ìàòðèöû;
  257.   image_data - äàííûå èçîáðàæåíèÿ òåêñòîâîé ìàòðèöû â ôîðìàòå rgb, ðàçìåðîì 16*16 ñèìâîëîâ.</p>
  258.  
  259. <h4>buf2d_draw_text</h4>
  260. <p>Ðèñóåò òåêñò â áóôåðå, èñïîëüçóÿ ìàòðèöó ñ òåêñòîì ðàçìåðîì 1*256 ñèìâîëîâ. Ïðèìåð:</p>
  261. <pre>stdcall [buf2d_draw_text], buf_0, buf_1,some_text,20,10,0x4040ff ;ðèñóåì ñòðîêó ñ òåêñòîì</pre>
  262. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà â êîòîðîì áóäåò ðèñîâàòüñÿ òåêñò;</p>
  263. <p>buf_1 - ñòðóêòóðà áóôåðà ñ òåêñòîâîé ìàòðèöåé â ôîðìàòå 8 áèò, ðàçìåðîì 1*256 ñèìâîëîâ;</p>
  264. <p>some_text - òåêñò, êîòîðûé áóäåò âûâåäåí â áóôåð buf_0.</p>
  265.  
  266. <h4><a name="f_c_color">buf2d_crop_color</a></h4>
  267. <p>Îáðåçàíèå áóôåðà, ïî óêàçàííîìó öâåòó. Ôóíêöèÿ èñïîëüçóåòñÿ äëÿ óìåíüøåíèÿ ïàìÿòè, çàíèìàåìîé áóôåðîì. Îòðåçàþòñÿ êðàéíèå ÷àñòè áóôåðà èìåþùèå îäèíàêîâûé öâåò. Ïðèìåð:</p>
  268. <pre>stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM</pre>
  269. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà êîòîðûé áóäåò îáðåçàí;</p>
  270. <p>0xffffff - öâåò ïî êîòîðîìó áóäåò îáðåçàòüñÿ áóôåð;</p>
  271. <p>BUF2D_OPT_CROP_TOP è BUF2D_OPT_CROP_BOTTOM - êîíñòàíòû, óêàçûâàþùèå ñ êàêèõ ñòîðîí îáðåçàòü áóôåð.</p>
  272.  
  273. <h4>buf2d_offset_h</h4>
  274. <p>Ñäâèã èçîáðàæåíèÿ â áóôåðå ïî âûñîòå ââåðõ èëè âíèç.</p>
  275.  
  276. <h4>buf2d_flood_fill</h4>
  277. <p>Ôóíêöèÿ äëÿ ðåêóðñèâíîé çàëèâêè âûáðàííûì öâåòîì. Èìååòñÿ äâà âàðèàíòà çàëèâêè. Ïðèìåð:</p>
  278. <pre>stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000</pre>
  279. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà;</p>
  280. <p>100,200 - êîîðäèíàòû òî÷êè, ñ êîòîðîé íà÷íåòñÿ çàëèâêà;</p>
  281. <p>0 - ïàðàìåòð, îïðåäåëÿåò àëãîðèòì çàëèâêè (ìîæåò áûòü 0 èëè 1);</p>
  282. <p>0xff - öâåò çàëèâêè;</p>
  283. <p>0xff0000 - çàâèñèò îò çíà÷åíèÿ 4-ãî ïàðàìåòðà, 1) åñëè 0 - öâåò äî êîòîðîãî áóäåò çàëèâàòüñÿ îáëàñòü; 2) åñëè 1 - öâåò îáëàñòè êîòîðàÿ áóäåò çàëèâàòñÿ;</p>
  284.  
  285. <h4>buf2d_set_pixel</h4>
  286. <p>Ôóíêöèÿ ñòàâèò òî÷êó, ïðèíèìàåò êîîðäèíàòû è öâåò. Ïðèìåð:</p>
  287. <pre>stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000</pre>
  288. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà;</p>
  289. <p>100,150 - êîîðäèíàòû òî÷êè;</p>
  290. <p>0xff0000 - öâåò òî÷êè.</p>
  291.  
  292. <h4>buf2d_get_pixel</h4>
  293. <p>Ôóíêöèÿ çàïèñûâàåò öâåò òî÷êè â ðåãèñòð eax, ïðèíèìàåò êîîðäèíàòû. Ïðèìåð:</p>
  294. <pre>stdcall [buf2d_get_pixel], buf_0, 100,150</pre>
  295. <p>ãäå buf_0 - ñòðóêòóðà áóôåðà;</p>
  296. <p>100,150 - êîîðäèíàòû òî÷êè;</p>
  297. <p>eax - öâåò òî÷êè (äëÿ 8 è 24 áèòíûõ áóôåðîâ íå èñïîëüçóåìûå ñòàðøèå áèòû â eax ðàâíû 0) èëè çíà÷åíèå -1 â ñëó÷àå îøèáêè.</p>
  298.  
  299. <h4><a name="f_flip_h">buf2d_flip_h</a></h4>
  300. <p>Îòðàæàåò èçîáðàæåíèå â áóôåðå ïî ãîðèçîíòàëè (ëåâî è ïðàâî ìåíÿþòñÿ ìåñòàìè). Ïðèìåð:</p>
  301. <pre>stdcall buf2d_flip_h, buf_0</pre>
  302. <p>ãäå buf_0 - ñòðóêòóðà 24-õ èëè 32-õ áèòíîãî áóôåðà.</p>
  303.  
  304. <h4><a name="f_flip_v">buf2d_flip_v</a></h4>
  305. <p>Îòðàæàåò èçîáðàæåíèå â áóôåðå ïî âåðòèêàëè (âåðõ è íèç ìåíÿþòñÿ ìåñòàìè). Ïðèìåð:</p>
  306. <pre>stdcall buf2d_flip_v, buf_0</pre>
  307. <p>ãäå buf_0 - ñòðóêòóðà 24-õ èëè 32-õ áèòíîãî áóôåðà.</p>
  308.  
  309. <h4><a name="f_filter_d">buf2d_filter_dither</a></h4>
  310. <p>Ôèëüòð, êîòîðûé ïðåîáðàçóåò èçîáðàæåíèå èç 24 áèòíîãî áóôåðà â 8-ìè öâåòíîå. Ðàçðÿäíîñòü áóôåðà íå ìåíÿåòñÿ. Ïðèìåð:</p>
  311. <pre>stdcall [buf2d_filter_dither], buf_0, 0</pre>
  312. <p>ãäå buf_0 - ñòðóêòóðà 24-õ áèòíîãî áóôåðà;</p>
  313. <p>0 - àëãîðèòì (âîçìîæíûå çíà÷åíèÿ: 0 - Sierra Lite, 1 - Floyd-Steinberg, 2 - Burkers, 3 - Heavyiron_mod, 4 - Atkinson).</p>
  314.  
  315. <h4><a name="f_v_brush_c">buf2d_vox_brush_create</a></h4>
  316. <p>Ñîçäàíèå âîêñåëüíîé êèñòè. Ïðèìåð:</p>
  317. <pre>stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z
  318.  
  319. .........
  320.  
  321. align 4
  322. vox_6_7_z: ;äàííûå äëÿ ñîçäàíèÿ ìèíèìàëüíîãî åäèíè÷íîãî âîêñåëÿ
  323. dd 0,0,1,1,0,0,\
  324.    0,2,2,2,2,0,\
  325.    2,2,2,2,2,2,\
  326.    2,3,2,2,3,2,\
  327.    2,3,3,3,3,2,\
  328.    0,3,3,3,3,0,\
  329.    0,0,3,3,0,0
  330.  
  331. align 4
  332. buf_vox: ;äàííûå äëÿ ñîçäàíèÿ íàáîðà âîêñåëüíûõ êèñòåé
  333.         db 6,7,4,3 ;w,h,h_osn,n
  334.         rb BUF_STRUCT_SIZE*(3+1)</pre>
  335. <p>ãäå vox_6_7_z - äàííûå äëÿ ñîçäàíèÿ ìèíèìàëüíîãî åäèíè÷íîãî âîêñåëÿ (0 - îçíà÷àåò ïðîçðà÷íûé ïèêñåëü, äðóãèå öèôðû îïðåäåëÿþò ãëóáèíó äëÿ çàïîëíåíèÿ áóôåðà ãëóáèíû);</p>
  336. <p>buf_vox - äàííûå äëÿ ñîçäàíèÿ íàáîðà âîêñåëüíûõ êèñòåé (6 è 7 - ðàçìåð ìèíèìàëüíîãî åäèíè÷íîãî âîêñåëÿ, 4 - âûñîòà âåðõíåãî îñíîâàíèÿ ìèíèìàëüíîãî åäèíè÷íîãî âîêñåëÿ, 3 - ÷èñëî ñîçäàâàåìûõ âîêñåëüíûõ êèñòåé äëÿ ðèñîâàíèÿ âîêñåëåé âåðõíèõ óðîâíåé);</p>
  337.  
  338. <h4>buf2d_vox_brush_delete</h4>
  339. <p>Óäàëåíèå âîêñåëüíîé êèñòè.</p>
  340.  
  341. <h4>buf2d_vox_obj_draw_1g</h4>
  342. <p>Ðèñîâàíèå âîêñåëüíîãî îáúåêòà ñ 1-é ãðàíüþ.</p>
  343.  
  344. <h4>buf2d_vox_obj_get_img_w_3g</h4>
  345. <p>Âîçâðàøàåò øèðèíó âîêñåëüíîãî èçîáðàæåíèÿ ñ 3-ìÿ ãðàíÿìè (êîòîðîå ðèñóåòñÿ ôóíêöèåé <b>buf2d_vox_obj_draw_3g</b>), ïðèíèìàåò óêàçàòåëü íà êèñòü è ìàñøòàá.</p>
  346.  
  347. <h4>buf2d_vox_obj_get_img_h_3g</h4>
  348. <p>Âîçâðàøàåò âûñîòó âîêñåëüíîãî èçîáðàæåíèÿ ñ 3-ìÿ ãðàíÿìè (êîòîðîå ðèñóåòñÿ ôóíêöèåé <b>buf2d_vox_obj_draw_3g</b>), ïðèíèìàåò óêàçàòåëü íà êèñòü è ìàñøòàá.</p>
  349.  
  350. <h4>buf2d_vox_obj_draw_3g</h4>
  351. <p>Ðèñîâàíèå âîêñåëüíîãî îáúåêòà ñ 3-ìÿ ãðàíÿìè.</p>
  352.  
  353. <h4>buf2d_vox_obj_draw_3g_scaled</h4>
  354. <p>Ðèñîâàíèå ÷àñòè âîêñåëüíîãî îáúåêòà.</p>
  355.  
  356. <h4>buf2d_vox_obj_draw_3g_shadows</h4>
  357. <p>Ôóíêöèÿ ðèñóþùàÿ òåíè äëÿ èçîáðàæåíèé íàðèñîâàííûõ ñ ïîìîùüþ ôóíêöèè <b>buf2d_vox_obj_draw_3g</b> èëè <b>buf2d_vox_obj_draw_3g_scaled</b>.</p>
  358.  
  359. <h4>buf2d_vox_obj_draw_pl</h4>
  360. <p>Ôóíêöèÿ ðèñóþùàÿ ñðåç âîêñåëüíîãî îáüåêòà.</p>
  361.  
  362. <h4>buf2d_vox_obj_draw_pl_scaled</h4>
  363. <p>Ôóíêöèÿ ðèñóþùàÿ ñðåç ÷àñòè âîêñåëüíîãî îáüåêòà.</p>
  364.  
  365. <h1><a name="const">Êîíñòàíòû</a></h1>
  366. <h4>BUF2D_OPT_CROP_TOP equ 1</h4>
  367. <p>Êîíñòàíòà äëÿ ôóíêöèè <a href="#f_c_color">buf2d_crop_color</a>, îáîçíà÷àåò îáðåçêó áóôåðà ñâåðõó</p>
  368. <h4>BUF2D_OPT_CROP_LEFT equ 2</h4>
  369. <p>Êîíñòàíòà äëÿ ôóíêöèè <a href="#f_c_color">buf2d_crop_color</a>, îáîçíà÷àåò îáðåçêó áóôåðà ñëåâà</p>
  370. <h4>BUF2D_OPT_CROP_BOTTOM equ 4</h4>
  371. <p>Êîíñòàíòà äëÿ ôóíêöèè <a href="#f_c_color">buf2d_crop_color</a>, îáîçíà÷àåò îáðåçêó áóôåðà ñíèçó</p>
  372. <h4>BUF2D_OPT_CROP_RIGHT equ 8</h4>
  373. <p>Êîíñòàíòà äëÿ ôóíêöèè <a href="#f_c_color">buf2d_crop_color</a>, îáîçíà÷àåò îáðåçêó áóôåðà ñïðàâà</p>
  374.  
  375. <h1><a name="tabl_e">Òàáëèöà ýêñïîðòà</a></h1>
  376. <p>Ïðèìåð òàáëèöû ýêñïîðòà, ðàñ÷èòàííîé íà èñïîëüçîâàíèå ìàêðîñà <b>@use_library_mem</b>:</p>
  377. <pre>align 4
  378. import_buf2d_lib:
  379.         dd sz_lib_init
  380.         buf2d_create dd sz_buf2d_create
  381.         buf2d_create_f_img dd sz_buf2d_create_f_img
  382.         buf2d_clear dd sz_buf2d_clear
  383.         buf2d_draw dd sz_buf2d_draw
  384.         buf2d_delete dd sz_buf2d_delete
  385.         buf2d_rotate dd sz_buf2d_rotate
  386.         buf2d_resize dd sz_buf2d_resize
  387.         buf2d_line dd sz_buf2d_line
  388.         buf2d_line_sm dd sz_buf2d_line_sm
  389.         buf2d_rect_by_size dd sz_buf2d_rect_by_size
  390.         buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size
  391.         buf2d_circle dd sz_buf2d_circle
  392.         buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
  393.         buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
  394.         buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
  395.         buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
  396.         buf2d_bit_blt dd sz_buf2d_bit_blt
  397.         buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
  398.         buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
  399.         buf2d_curve_bezier dd sz_buf2d_curve_bezier
  400.         buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
  401.         buf2d_draw_text dd sz_buf2d_draw_text
  402.         buf2d_crop_color dd sz_buf2d_crop_color
  403.         buf2d_offset_h dd sz_buf2d_offset_h
  404.         buf2d_flood_fill dd sz_buf2d_flood_fill
  405.         buf2d_set_pixel dd sz_buf2d_set_pixel
  406.         buf2d_get_pixel dd sz_buf2d_get_pixel
  407.         buf2d_flip_h dd sz_buf2d_flip_h
  408.         buf2d_flip_v dd sz_buf2d_flip_v
  409.         buf2d_filter_dither dd sz_buf2d_filter_dither
  410.  
  411.         ;âîêñåëüíûå ôóíêöèè:
  412.         buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
  413.         buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete
  414.         buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g
  415.         buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g
  416.         buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g
  417.         buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g
  418.         buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled
  419.         buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows
  420.         buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl
  421.         buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled
  422.  
  423.         dd 0,0
  424.         sz_lib_init db 'lib_init',0
  425.         sz_buf2d_create db 'buf2d_create',0
  426.         sz_buf2d_create_f_img db 'buf2d_create_f_img',0
  427.         sz_buf2d_clear db 'buf2d_clear',0
  428.         sz_buf2d_draw db 'buf2d_draw',0
  429.         sz_buf2d_delete db 'buf2d_delete',0
  430.         sz_buf2d_rotate db 'buf2d_rotate',0
  431.         sz_buf2d_resize db 'buf2d_resize',0
  432.         sz_buf2d_line db 'buf2d_line',0
  433.         sz_buf2d_line_sm db 'buf2d_line_sm',0
  434.         sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0
  435.         sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0
  436.         sz_buf2d_circle db 'buf2d_circle',0
  437.         sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
  438.         sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
  439.         sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
  440.         sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
  441.         sz_buf2d_bit_blt db 'buf2d_bit_blt',0
  442.         sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
  443.         sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
  444.         sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0
  445.         sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
  446.         sz_buf2d_draw_text db 'buf2d_draw_text',0
  447.         sz_buf2d_crop_color db 'buf2d_crop_color',0
  448.         sz_buf2d_offset_h db 'buf2d_offset_h',0
  449.         sz_buf2d_flood_fill db 'buf2d_flood_fill',0
  450.         sz_buf2d_set_pixel db 'buf2d_set_pixel',0
  451.         sz_buf2d_get_pixel db 'buf2d_get_pixel',0
  452.         sz_buf2d_flip_h db 'buf2d_flip_h',0
  453.         sz_buf2d_flip_v db 'buf2d_flip_v',0
  454.         sz_buf2d_filter_dither db 'buf2d_filter_dither',0
  455.  
  456.         ;âîêñåëüíûå ôóíêöèè:
  457.         sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0
  458.         sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0
  459.         sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0
  460.         sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0
  461.         sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0
  462.         sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0
  463.         sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0
  464.         sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0
  465.         sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0
  466.         sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0</pre>
  467.  
  468. <h1><a name="hist">Èñòîðèÿ</a></h1>
  469. <p>02.07.10 - ñàìàÿ ïåðâàÿ âåðñèÿ áèáëèîòåêè, 2 ïðèìåðà èñïîëüçîâàíèÿ.</p>
  470. <p>06.07.10 - ðàñøèðåíû âîçìîæíîñòè ôóíêöèè buf2d_bit_blt, òåïåðü îíà ìîæåò ðèñîâàòü 32 áèòíûå áóôåðû. Äîáàâëåíû 2 íîâûå ôóíêöèè: buf2d_bit_blt_alpha è buf2d_cruve_bezier. Íåáîëüøèå èçìåíåíèÿ â ôóíêöèè buf2d_line.</p>
  471. <p>16.07.10 - èñïðàâëåíî ïî 2 îøèáêè â ôóíêöèÿõ buf2d_img_hdiv2 è buf2d_img_wdiv2, êîòîðûå ìîãëè ïðîÿâëÿòüñÿ ïðè îïðåäåëåííûõ óñëîâèÿõ (åñëè ðàçìåð èçîáðàæåíèÿ áûë êðàòåí 4Êá è äð.). Äîáàâëåíû 2 ôóíêöèè äëÿ âûâîäà òåêñòà â áóôåð buf2d_convert_text_matrix è buf2d_draw_text.</p>
  472. <p>19.07.10 - äîáàâëåíà ôóíêöèÿ ðèñîâàíèÿ îêðóæíîñòè buf2d_circle;
  473.  èçìåíåí ôîðìàò áóôåðà - äëÿ øèðèíû è âûñîòû èñïîëüçóþòñÿ 4-õ áàéòíûå ÷èñëà âìåñòî 2-õ áàéòíûõ.</p>
  474. <p>29.07.10 - äîáàâëåíû ôóíêöèè buf2d_crop_color è buf2d_offset_h;
  475.  èñïðàâëåíèÿ â ôóíêöèè buf2d_delete.</p>
  476. <p>30.09.10 - äîáàâëåíà ôóíêöèÿ buf2d_rect_by_size.</p>
  477. <p>04.10.10 - äîáàâëåíà ôóíêöèÿ buf2d_filled_rect_by_size, äîðàáîòàíà ôóíêöèÿ buf2d_bit_blt_alpha.</p>
  478. <p>07.10.10 - äîðàáîòàíà ôóíêöèÿ buf2d_bit_blt (ïðè ïîïûòêå íàðèñîâàòü èçîáðàæåíèå çà ïðåäåëàìè ïðàâîãî êðàÿ áóôåðà ïðèëîæåíèå âûçâàâøåå ôóíêöèþ ïàäàëî).</p>
  479. <p>11.10.10 - èñïðàâëåíî çàäàíèå öâåòîâ â íåêîòîðûõ ôóíêöèÿõ, êðàñíûé è ñèíèé öâåòà ïîìåíÿë ìåñòàìè. Òåïåðü öâåòà ñîâïàäàþò ñ ñèñåìíûìè ôóíêöèÿìè.</p>
  480. <p>02.11.10 - äîáàâëåíà ôóíêöèÿ buf2d_flood_fill.</p>
  481. <p>22.12.10 - èçìåíåíî èìÿ ôóíêöèè buf2d_cruve_bezier íà buf2d_curve_bezier.</p>
  482. <p>25.03.11 - äîáàâëåíà ôóíêöèÿ äëÿ ðèñîâàíèÿ òî÷êè buf2d_set_pixel.</p>
  483. <p>30.08.11 - äîáàâëåíà ôóíêöèÿ èçìåíåíèÿ ðàçìåðîâ áóôåðà buf2d_resize.</p>
  484. <p>13.09.11 - îïòèìèçèðîâàíà ðàáîòà ôóíêöèé buf2d_filled_rect_by_size buf2d_rect_by_size, äîáàâëåíû ïðèìåðû èñïîëüçîâàíèÿ áèáëèîòåêè.</p>
  485. <p>22.09.11 - äîáàâëåíà ôóíêöèÿ buf2d_line_sm äëÿ ðèñîâàíèÿ ñãëàæåííîé ëèíèè.</p>
  486. <p>20.02.12 - ôóíêöèè buf2d_filled_rect_by_size è buf2d_rect_by_size ìîãóò ïðèíèìàòü îòðèöàòåëüíûå ðàçìåðû äëÿ ïðÿìîóãîëüíèêîâ, â ôóíêöèè buf2d_line ãîðèçîíòàëüíàÿ ëèíèÿ ðèñóåòñÿ íà 1 ïèêñåëü äëèíåå (ðàíüøå íå äîðèñîâûâàëî), íåêîòîðûå ôóíêöèè ìîãóò ðèñîâàòü â 8 áèòíûõ áóôåðàõ.</p>
  487. <p>23.02.12 - ôóíêöèÿ buf2d_bit_blt_alpha ìîæåò ïðèíèìàòü îòðèöàòåëüíûå êîîðäèíàòû â ïîçèöèè êîïèðóåìîãî áóôåðà, íåáîëüøèå äîðàáîòêè â buf2d_bit_blt_transp</p>
  488. <p>11.05.12 - äîáàâëåíà ôóíêöèÿ äëÿ âçÿòèÿ öâåòà òî÷êè buf2d_get_pixel, äîðàáîòêè â buf2d_set_pixel.</p>
  489. <p>12.06.12 - äîáàâëåíû ôóíêöèè äëÿ ðèñîâàíèÿ âîêñåëüíîé ãðàôèêè.</p>
  490. <p>11.08.12 - ôóíêöèè äëÿ ñæàòèÿ èçîáðàæåíèé buf2d_img_hdiv2 è buf2d_img_wdiv2 ðàáîòàþò ñ 32 áèòíûìè áóôåðàìè.</p>
  491. <p>01.10.12 - äîáàâëåíà ôóíêöèÿ ïîâîðîòà èçîáðàæåíèé íà 90 è 180 ãðàäóñîâ buf2d_rotate.</p>
  492. <p>15.11.12 - äîáàâëåíà ôóíêöèÿ îòðàæåíèÿ 24 áèòíûõ èçîáðàæåíèé ïî âåðòèêàëè buf2d_flip_v, èñïðàâëåíèÿ â ôóíêöèè buf2d_img_hdiv2.</p>
  493. <p>14.12.12 - äîáàâëåíà ôóíêöèÿ íàëîæåíèÿ ôèëüòðà buf2d_filter_dither.</p>
  494. <p>24.12.12 - äîáàâëåíû 2 íîâûõ àëãîðèòìà â ôóíêöèþ íàëîæåíèÿ ôèëüòðà buf2d_filter_dither.</p>
  495. <p>30.01.15 - äîáàâëåíà ïîääåðæêà 32 áèòíûõ áóôåðîâ â ôóíêöèþ buf2d_flip_v, äîáàâëåíà ôóíêöèÿ îòðàæåíèÿ ïî ãîðèçîíòàëè buf2d_flip_h.</p>
  496. <p>09.02.16 - èçìåíåíà ôóíêöèÿ buf2d_resize äîáàâëåí äîïîëíèòåëüíûé ïàðàìåòð, êîòîðûé óêàçûâàåò ìåíÿòü ëè èçîáðàæåíèå èëè ðàçìåðû áóôåðà.</p>
  497. <p>04.05.20 - ôóíêöèÿ buf2d_bit_blt ìîæåò ïðèíèìàòü îòðèöàòåëüíûå êîîðäèíàòû â ïîçèöèè êîïèðóåìîãî áóôåðà.</p>
  498. </body>
  499. </html>