Rev 2759 | Rev 2920 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1535 | IgorA | 1 | |
2 | |||
3 |
|
||
4 | |||
5 | |||
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 | |||
45 | |||
46 | |||
47 | |||
48 | |||
49 |
|
||
50 | |||
51 | |||
2759 | IgorA | 52 | |
1535 | IgorA | 53 | |
2759 | IgorA | 54 | |
55 | |||
56 | |||
2815 | IgorA | 57 | |
2759 | IgorA | 58 | |
59 | |||
60 | |||
61 | |||
1535 | IgorA | 62 | |
63 | |||
64 | |||
65 | |||
66 |
|
||
67 |
|
||
68 | Эта библиотека создана для работы с 2d изображениями. |
||
1648 | IgorA | 69 | С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран. |
2759 | IgorA | 70 | Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями. |
71 | Есть функции рисования линий, кривых Безье, прямоугольников, окружностей. |
||
72 | Также есть функции для рисований воксельной графики. |
||
1535 | IgorA | 73 | |
2815 | IgorA | 74 |
|
1535 | IgorA | 75 | |
2759 | IgorA | 76 |
|
1535 | IgorA | 77 |
|
78 | Каждая функция при работе с буферами может быть расчитана на работу с определенными форматами изображений. |
||
79 | |||
80 |
|
||
81 |
|
||
82 |
|
||
83 |
|
||
84 |
|
||
85 |
|
||
86 | |||
87 |
|
||
88 | |||
89 |
|
||
90 | из которой могут использоваться параметры, нужные для работы конкретной функции. |
||
91 | Пример структуры буфера изображения: |
||
92 | align 4 |
||
93 | buf_0: |
||
94 | dd 0 ;+ 0 указатель на буфер изображения |
||
95 | dw 100 ;+ 4 отступ слева |
||
96 | dw 10 ;+ 6 отступ справа |
||
97 | dd 150 ;+ 8 ширина |
||
98 | dd 100 ;+12 высота |
||
99 | dd 0x80 ;+16 фоновый цвет |
||
100 | db 24 ;+20 бит на пиксель |
||
101 | |||
2759 | IgorA | 102 |
|
1535 | IgorA | 103 |
|
104 | |||
2759 | IgorA | 105 |
|
106 |
|
||
107 | stdcall [buf2d_create], buf_0 |
||
108 |
|
||
109 |
|
||
1535 | IgorA | 110 | |
111 |
|
||
112 |
|
||
113 | |||
114 |
|
||
2230 | IgorA | 115 |
|
116 | buf2d_color equ dword[edi+16] ;цвет фона буфера |
||
117 | mov edi,buf_0 |
||
118 | stdcall [buf2d_clear], edi, buf2d_color ;очищаем экран фоновым цветом |
||
119 |
|
||
1535 | IgorA | 120 | |
121 |
|
||
122 |
|
||
123 | |||
124 |
|
||
125 |
|
||
126 | |||
2136 | IgorA | 127 |
|
128 |
|
||
129 | stdcall [buf2d_resize], buf_0, 0,300 ;изменяем высоту буфера |
||
130 |
|
||
131 | |||
1535 | IgorA | 132 |
|
1648 | IgorA | 133 |
|
1535 | IgorA | 134 | stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;рисуем линию |
135 |
|
||
2230 | IgorA | 136 |
|
1535 | IgorA | 137 | |
2230 | IgorA | 138 |
|
139 |
|
||
140 | |||
1634 | IgorA | 141 |
|
2358 | IgorA | 142 |
|
1634 | IgorA | 143 | stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080 |
2358 | IgorA | 144 |
|
1634 | IgorA | 145 | |
1642 | IgorA | 146 |
|
2358 | IgorA | 147 |
|
1642 | IgorA | 148 | stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080 |
2358 | IgorA | 149 |
|
1642 | IgorA | 150 | |
1535 | IgorA | 151 |
|
1648 | IgorA | 152 |
|
1535 | IgorA | 153 | stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000 |
154 |
|
||
155 | |||
156 |
|
||
157 |
|
||
158 | |||
159 |
|
||
160 |
|
||
161 | |||
162 |
|
||
163 |
|
||
164 | При преобразовании указывается какой цвет берать: 0-синий, 1-зеленый, 2-красный. |
||
165 | Остальные цвета при преобразовании теряются. |
||
166 | |||
167 |
|
||
168 |
|
||
169 | При преобразовании указывается также 8-битный буфер, который будет использован для создания альфа канала. Пример: |
||
170 | stdcall [buf2d_conv_24_to_32],buf_a,buf_b ;делаем буфер rgba 32бит |
||
171 |
|
||
172 | После выполнения функции буфер buf_a станет 32 битным, буфер buf_b не изменится. |
||
173 | |||
174 |
|
||
1648 | IgorA | 175 |
|
176 | stdcall [buf2d_bit_blt], buf_0, 50,30, buf_1 ;прорисовка среднего скина |
||
177 |
|
||
178 | buf_1 - структура буфера с рисуемым изображением (источник); |
||
179 | 50,30 - координаты для вывода изображения, определяют положение рисуемой картинки в buf_0. |
||
1535 | IgorA | 180 | |
181 |
|
||
182 |
|
||
183 | Буфер который будет нарисован должен быть 32 битным, а тот в котором рисуют 24 битным. |
||
184 | |||
185 |
|
||
186 |
|
||
187 | Буфер который будет нарисован должен быть 8 битным, а тот в котором рисуют 24 битным. |
||
188 | |||
1727 | IgorA | 189 |
|
1535 | IgorA | 190 |
|
2358 | IgorA | 191 | stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff |
192 |
|
||
193 | (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90 - координаты точек (10,20), (110,10), (50,90); |
||
194 | 0xff - цвет прямой. |
||
1535 | IgorA | 195 | |
196 |
|
||
197 |
|
||
198 | stdcall [buf2d_create_f_img], buf_1,[image_data] ;создаем буфер 24 бит на основе данных изображения |
||
199 | stdcall [buf2d_conv_24_to_8], buf_1,1 ;делаем буфер прозрачности 8 бит |
||
200 | stdcall [buf2d_convert_text_matrix], buf_1 |
||
201 |
|
||
202 | image_data - данные изображения текстовой матрицы в формате rgb, размером 16*16 символов. |
||
203 | |||
204 |
|
||
205 |
|
||
206 | stdcall [buf2d_draw_text], buf_0, buf_1,some_text,20,10,0x4040ff ;рисуем строку с текстом |
||
2815 | IgorA | 207 |
|
208 |
|
||
209 |
|
||
1535 | IgorA | 210 | |
2815 | IgorA | 211 |
|
1535 | IgorA | 212 |
|
213 | stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM |
||
2815 | IgorA | 214 |
|
215 |
|
||
216 |
|
||
1535 | IgorA | 217 | |
218 |
|
||
219 |
|
||
220 | |||
1684 | IgorA | 221 |
|
2358 | IgorA | 222 |
|
1684 | IgorA | 223 | stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000 |
2815 | IgorA | 224 |
|
225 |
|
||
226 |
|
||
227 |
|
||
228 |
|
||
1684 | IgorA | 229 | |
1910 | IgorA | 230 |
|
2658 | IgorA | 231 |
|
1910 | IgorA | 232 | stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000 |
2658 | IgorA | 233 |
|
234 |
|
||
235 |
|
||
1910 | IgorA | 236 | |
2658 | IgorA | 237 |
|
238 |
|
||
239 | stdcall [buf2d_get_pixel], buf_0, 100,150 |
||
240 |
|
||
241 |
|
||
242 |
|
||
243 | |||
2759 | IgorA | 244 |
|
245 |
|
||
246 | |||
247 |
|
||
248 |
|
||
249 | |||
2815 | IgorA | 250 |
|
251 |
|
||
252 | |||
2759 | IgorA | 253 |
|
254 |
|
||
255 | |||
256 |
|
||
257 |
|
||
258 | |||
259 |
|
||
260 |
|
||
261 | |||
262 |
|
||
263 |
|
||
264 | |||
265 |
|
||
266 |
|
||
267 | |||
268 |
|
||
269 |
|
||
270 | |||
271 |
|
||
272 |
|
||
273 | |||
1535 | IgorA | 274 |
|
275 |
|
||
2815 | IgorA | 276 |
|
1538 | IgorA | 277 |
|
2815 | IgorA | 278 |
|
1535 | IgorA | 279 |
|
2815 | IgorA | 280 |
|
1535 | IgorA | 281 |
|
2815 | IgorA | 282 |
|
1535 | IgorA | 283 | |
284 |
|
||
285 |
|
||
286 | align 4 |
||
287 | import_buf2d_lib: |
||
288 | dd sz_lib_init |
||
289 | buf2d_create dd sz_buf2d_create |
||
290 | buf2d_create_f_img dd sz_buf2d_create_f_img |
||
291 | buf2d_clear dd sz_buf2d_clear |
||
292 | buf2d_draw dd sz_buf2d_draw |
||
293 | buf2d_delete dd sz_buf2d_delete |
||
2136 | IgorA | 294 | buf2d_resize dd sz_buf2d_resize |
1535 | IgorA | 295 | buf2d_line dd sz_buf2d_line |
2230 | IgorA | 296 | buf2d_line_sm dd sz_buf2d_line_sm |
1634 | IgorA | 297 | buf2d_rect_by_size dd sz_buf2d_rect_by_size |
1642 | IgorA | 298 | buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size |
1535 | IgorA | 299 | buf2d_circle dd sz_buf2d_circle |
300 | buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2 |
||
301 | buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2 |
||
302 | buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8 |
||
303 | buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32 |
||
304 | buf2d_bit_blt dd sz_buf2d_bit_blt |
||
305 | buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp |
||
306 | buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha |
||
1727 | IgorA | 307 | buf2d_curve_bezier dd sz_buf2d_curve_bezier |
1535 | IgorA | 308 | buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix |
309 | buf2d_draw_text dd sz_buf2d_draw_text |
||
310 | buf2d_crop_color dd sz_buf2d_crop_color |
||
311 | buf2d_offset_h dd sz_buf2d_offset_h |
||
1684 | IgorA | 312 | buf2d_flood_fill dd sz_buf2d_flood_fill |
1910 | IgorA | 313 | buf2d_set_pixel dd sz_buf2d_set_pixel |
2658 | IgorA | 314 | buf2d_get_pixel dd sz_buf2d_get_pixel |
1535 | IgorA | 315 | |
2759 | IgorA | 316 | ;воксельные функции: |
317 | buf2d_vox_brush_create dd sz_buf2d_vox_brush_create |
||
318 | buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete |
||
2815 | IgorA | 319 | buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g |
2759 | IgorA | 320 | buf2d_vox_obj_get_img_w_3g dd sz_buf2d_vox_obj_get_img_w_3g |
321 | buf2d_vox_obj_get_img_h_3g dd sz_buf2d_vox_obj_get_img_h_3g |
||
322 | buf2d_vox_obj_draw_3g dd sz_buf2d_vox_obj_draw_3g |
||
323 | buf2d_vox_obj_draw_3g_scaled dd sz_buf2d_vox_obj_draw_3g_scaled |
||
324 | buf2d_vox_obj_draw_3g_shadows dd sz_buf2d_vox_obj_draw_3g_shadows |
||
325 | buf2d_vox_obj_draw_pl dd sz_buf2d_vox_obj_draw_pl |
||
326 | buf2d_vox_obj_draw_pl_scaled dd sz_buf2d_vox_obj_draw_pl_scaled |
||
327 | |||
1535 | IgorA | 328 | dd 0,0 |
329 | sz_lib_init db 'lib_init',0 |
||
330 | sz_buf2d_create db 'buf2d_create',0 |
||
331 | sz_buf2d_create_f_img db 'buf2d_create_f_img',0 |
||
332 | sz_buf2d_clear db 'buf2d_clear',0 |
||
333 | sz_buf2d_draw db 'buf2d_draw',0 |
||
334 | sz_buf2d_delete db 'buf2d_delete',0 |
||
2136 | IgorA | 335 | sz_buf2d_resize db 'buf2d_resize',0 |
1535 | IgorA | 336 | sz_buf2d_line db 'buf2d_line',0 |
2230 | IgorA | 337 | sz_buf2d_line_sm db 'buf2d_line_sm',0 |
1634 | IgorA | 338 | sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 |
1642 | IgorA | 339 | sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0 |
1535 | IgorA | 340 | sz_buf2d_circle db 'buf2d_circle',0 |
341 | sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0 |
||
342 | sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0 |
||
343 | sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0 |
||
344 | sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0 |
||
345 | sz_buf2d_bit_blt db 'buf2d_bit_blt',0 |
||
346 | sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0 |
||
347 | sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0 |
||
1727 | IgorA | 348 | sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0 |
1535 | IgorA | 349 | sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0 |
350 | sz_buf2d_draw_text db 'buf2d_draw_text',0 |
||
351 | sz_buf2d_crop_color db 'buf2d_crop_color',0 |
||
1684 | IgorA | 352 | sz_buf2d_offset_h db 'buf2d_offset_h',0 |
1910 | IgorA | 353 | sz_buf2d_flood_fill db 'buf2d_flood_fill',0 |
2658 | IgorA | 354 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
2759 | IgorA | 355 | sz_buf2d_get_pixel db 'buf2d_get_pixel',0 |
1535 | IgorA | 356 | |
2759 | IgorA | 357 | ;воксельные функции: |
358 | sz_buf2d_vox_brush_create db 'buf2d_vox_brush_create',0 |
||
359 | sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0 |
||
2815 | IgorA | 360 | sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0 |
2759 | IgorA | 361 | sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0 |
362 | sz_buf2d_vox_obj_get_img_h_3g db 'buf2d_vox_obj_get_img_h_3g',0 |
||
363 | sz_buf2d_vox_obj_draw_3g db 'buf2d_vox_obj_draw_3g',0 |
||
364 | sz_buf2d_vox_obj_draw_3g_scaled db 'buf2d_vox_obj_draw_3g_scaled',0 |
||
365 | sz_buf2d_vox_obj_draw_3g_shadows db 'buf2d_vox_obj_draw_3g_shadows',0 |
||
366 | sz_buf2d_vox_obj_draw_pl db 'buf2d_vox_obj_draw_pl',0 |
||
367 | sz_buf2d_vox_obj_draw_pl_scaled db 'buf2d_vox_obj_draw_pl_scaled',0 |
||
368 | |||
1535 | IgorA | 369 |
|
370 |
|
||
371 |
|
||
372 |
|
||
373 |
|
||
374 | изменен формат буфера - для ширины и высоты используются 4-х байтные числа вместо 2-х байтных. |
||
375 |
|
||
376 | исправления в функции buf2d_delete. |
||
1634 | IgorA | 377 |
|
1642 | IgorA | 378 |
|
1648 | IgorA | 379 |
|
1653 | IgorA | 380 |
|
1684 | IgorA | 381 |
|
1727 | IgorA | 382 |
|
2230 | IgorA | 383 |
|
2136 | IgorA | 384 |
|
2383 | IgorA | 385 |
|
2358 | IgorA | 386 |
|
2383 | IgorA | 387 |
|
2658 | IgorA | 388 |
|
389 |
|
||
2759 | IgorA | 390 |
|
2383 | IgorA | 391 | |
1535 | IgorA | 392 |