Rev 6175 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1535 | IgorA | 1 | |
2 | |||
3 |
|
||
7861 | IgorA | 4 | |
1535 | IgorA | 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 | |||
7861 | IgorA | 56 | |
57 | |||
58 | |||
59 | |||
60 | |||
61 | |||
62 | |||
63 | |||
64 | |||
65 | |||
66 | |||
67 | |||
68 | |||
69 | |||
70 | |||
71 | |||
72 | |||
73 | |||
74 | |||
75 | |||
76 | |||
77 | |||
2815 | IgorA | 78 | |
7861 | IgorA | 79 | |
80 | |||
81 | |||
82 | |||
5389 | IgorA | 83 | |
3040 | IgorA | 84 | |
3105 | IgorA | 85 | |
3040 | IgorA | 86 | |
2759 | IgorA | 87 | |
7861 | IgorA | 88 | |
89 | |||
90 | |||
91 | |||
92 | |||
93 | |||
94 | |||
95 | |||
96 | |||
2759 | IgorA | 97 | |
98 | |||
99 | |||
1535 | IgorA | 100 | |
101 | |||
102 | |||
103 | |||
104 |
|
||
105 |
|
||
106 | Эта библиотека создана для работы с 2d изображениями. |
||
1648 | IgorA | 107 | С ее помощью можно создавать буфера с изображениями в памяти, и при необходимости выводить их на экран. |
2759 | IgorA | 108 | Изображения можно накладывать одно на другое, поддерживается работа с прозрачными изображениями. |
109 | Есть функции рисования линий, кривых Безье, прямоугольников, окружностей. |
||
110 | Также есть функции для рисований воксельной графики. |
||
1535 | IgorA | 111 | |
6175 | IgorA | 112 |
|
1535 | IgorA | 113 | |
2759 | IgorA | 114 |
|
1535 | IgorA | 115 |
|
116 | Каждая функция при работе с буферами может быть расчитана на работу с определенными форматами изображений. |
||
117 | |||
118 |
|
||
119 |
|
||
120 |
|
||
121 |
|
||
122 |
|
||
2920 | IgorA | 123 |
|
1535 | IgorA | 124 | |
125 |
|
||
126 | |||
127 |
|
||
128 | из которой могут использоваться параметры, нужные для работы конкретной функции. |
||
129 | Пример структуры буфера изображения: |
||
130 | 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 бит на пиксель |
||
139 | |||
2759 | IgorA | 140 |
|
1535 | IgorA | 141 |
|
142 | |||
7861 | IgorA | 143 |
|
2759 | IgorA | 144 |
|
145 | stdcall [buf2d_create], buf_0 |
||
146 |
|
||
147 |
|
||
1535 | IgorA | 148 | |
7861 | IgorA | 149 |
|
1535 | IgorA | 150 |
|
7861 | IgorA | 151 | 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] |
||
157 |
|
||
1535 | IgorA | 158 | |
7861 | IgorA | 159 |
|
2230 | IgorA | 160 |
|
161 | buf2d_color equ dword[edi+16] ;цвет фона буфера |
||
162 | mov edi,buf_0 |
||
163 | stdcall [buf2d_clear], edi, buf2d_color ;очищаем экран фоновым цветом |
||
164 |
|
||
1535 | IgorA | 165 | |
7861 | IgorA | 166 |
|
1535 | IgorA | 167 |
|
168 | |||
7861 | IgorA | 169 |
|
1535 | IgorA | 170 |
|
171 | |||
7861 | IgorA | 172 |
|
2975 | IgorA | 173 |
|
174 | stdcall [buf2d_rotate], buf_0, 90 |
||
175 |
|
||
176 | |||
7861 | IgorA | 177 |
|
6175 | IgorA | 178 |
|
179 |
|
||
180 | stdcall [buf2d_resize], buf_0, 0,300, 1 ;изменяем высоту буфера |
||
181 |
|
||
182 |
|
||
183 | stdcall [buf2d_resize], buf_0, 250,0, 2 ;изменяем изображение в буфере |
||
184 |
|
||
185 |
|
||
2136 | IgorA | 186 | |
7861 | IgorA | 187 |
|
1648 | IgorA | 188 |
|
1535 | IgorA | 189 | stdcall [buf2d_line], buf_0, 30,10, 110,70, 0xffff00 ;рисуем линию |
190 |
|
||
2230 | IgorA | 191 |
|
1535 | IgorA | 192 | |
7861 | IgorA | 193 |
|
2230 | IgorA | 194 |
|
195 | |||
7861 | IgorA | 196 |
|
2358 | IgorA | 197 |
|
1634 | IgorA | 198 | stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080 |
2358 | IgorA | 199 |
|
1634 | IgorA | 200 | |
7861 | IgorA | 201 |
|
2358 | IgorA | 202 |
|
1642 | IgorA | 203 | stdcall [buf2d_rect_by_size], buf_0, 10,10,150,100, 0x8080 |
2358 | IgorA | 204 |
|
1642 | IgorA | 205 | |
7861 | IgorA | 206 |
|
1648 | IgorA | 207 |
|
1535 | IgorA | 208 | stdcall [buf2d_circle], buf_0, 25, 70, 15, 0xff0000 |
209 |
|
||
210 | |||
7861 | IgorA | 211 |
|
1535 | IgorA | 212 |
|
213 | |||
7861 | IgorA | 214 |
|
1535 | IgorA | 215 |
|
216 | |||
217 |
|
||
218 |
|
||
219 | При преобразовании указывается какой цвет берать: 0-синий, 1-зеленый, 2-красный. |
||
220 | Остальные цвета при преобразовании теряются. |
||
221 | |||
222 |
|
||
223 |
|
||
224 | При преобразовании указывается также 8-битный буфер, который будет использован для создания альфа канала. Пример: |
||
225 | stdcall [buf2d_conv_24_to_32],buf_a,buf_b ;делаем буфер rgba 32бит |
||
226 |
|
||
227 | После выполнения функции буфер buf_a станет 32 битным, буфер buf_b не изменится. |
||
228 | |||
7861 | IgorA | 229 |
|
1648 | IgorA | 230 |
|
231 | stdcall [buf2d_bit_blt], buf_0, 50,30, buf_1 ;прорисовка среднего скина |
||
232 |
|
||
233 | buf_1 - структура буфера с рисуемым изображением (источник); |
||
234 | 50,30 - координаты для вывода изображения, определяют положение рисуемой картинки в buf_0. |
||
1535 | IgorA | 235 | |
236 |
|
||
237 |
|
||
238 | Буфер который будет нарисован должен быть 32 битным, а тот в котором рисуют 24 битным. |
||
239 | |||
240 |
|
||
241 |
|
||
242 | Буфер который будет нарисован должен быть 8 битным, а тот в котором рисуют 24 битным. |
||
243 | |||
1727 | IgorA | 244 |
|
1535 | IgorA | 245 |
|
2358 | IgorA | 246 | stdcall [buf2d_curve_bezier], buf_0, (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90, dword 0xff |
247 |
|
||
248 | (10 shl 16)+20,(110 shl 16)+10,(50 shl 16)+90 - координаты точек (10,20), (110,10), (50,90); |
||
249 | 0xff - цвет прямой. |
||
1535 | IgorA | 250 | |
251 |
|
||
252 |
|
||
253 | 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 |
||
256 |
|
||
257 | image_data - данные изображения текстовой матрицы в формате rgb, размером 16*16 символов. |
||
258 | |||
259 |
|
||
260 |
|
||
261 | stdcall [buf2d_draw_text], buf_0, buf_1,some_text,20,10,0x4040ff ;рисуем строку с текстом |
||
2815 | IgorA | 262 |
|
263 |
|
||
264 |
|
||
1535 | IgorA | 265 | |
2815 | IgorA | 266 |
|
1535 | IgorA | 267 |
|
268 | stdcall [buf2d_crop_color], buf_0,0xffffff,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM |
||
2815 | IgorA | 269 |
|
270 |
|
||
271 |
|
||
1535 | IgorA | 272 | |
273 |
|
||
274 |
|
||
275 | |||
1684 | IgorA | 276 |
|
2358 | IgorA | 277 |
|
1684 | IgorA | 278 | stdcall [buf2d_flood_fill], buf_0, 100,200, 0, 0xff,0xff0000 |
2815 | IgorA | 279 |
|
280 |
|
||
281 |
|
||
282 |
|
||
283 |
|
||
1684 | IgorA | 284 | |
1910 | IgorA | 285 |
|
3040 | IgorA | 286 |
|
1910 | IgorA | 287 | stdcall [buf2d_set_pixel], buf_0, 100,150, 0xff0000 |
2658 | IgorA | 288 |
|
289 |
|
||
290 |
|
||
1910 | IgorA | 291 | |
2658 | IgorA | 292 |
|
3040 | IgorA | 293 |
|
2658 | IgorA | 294 | stdcall [buf2d_get_pixel], buf_0, 100,150 |
295 |
|
||
296 |
|
||
297 |
|
||
298 | |||
5389 | IgorA | 299 |
|
300 |
|
||
301 | stdcall buf2d_flip_h, buf_0 |
||
302 |
|
||
303 | |||
3040 | IgorA | 304 |
|
305 |
|
||
306 | stdcall buf2d_flip_v, buf_0 |
||
5389 | IgorA | 307 |
|
3040 | IgorA | 308 | |
3105 | IgorA | 309 |
|
310 |
|
||
311 | stdcall [buf2d_filter_dither], buf_0, 0 |
||
5389 | IgorA | 312 |
|
3138 | heavyiron | 313 |
|
3105 | IgorA | 314 | |
2759 | IgorA | 315 |
|
3040 | IgorA | 316 |
|
317 | stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z |
||
2759 | IgorA | 318 | |
3040 | IgorA | 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) |
||
335 |
|
||
336 |
|
||
337 | |||
2759 | IgorA | 338 |
|
339 |
|
||
340 | |||
2815 | IgorA | 341 |
|
342 |
|
||
343 | |||
2759 | IgorA | 344 |
|
345 |
|
||
346 | |||
347 |
|
||
348 |
|
||
349 | |||
350 |
|
||
351 |
|
||
352 | |||
353 |
|
||
354 |
|
||
355 | |||
356 |
|
||
357 |
|
||
358 | |||
359 |
|
||
360 |
|
||
361 | |||
362 |
|
||
363 |
|
||
364 | |||
1535 | IgorA | 365 |
|
366 |
|
||
2815 | IgorA | 367 |
|
1538 | IgorA | 368 |
|
2815 | IgorA | 369 |
|
1535 | IgorA | 370 |
|
2815 | IgorA | 371 |
|
1535 | IgorA | 372 |
|
2815 | IgorA | 373 |
|
1535 | IgorA | 374 | |
375 |
|
||
376 |
|
||
377 | 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 |
||
2975 | IgorA | 385 | buf2d_rotate dd sz_buf2d_rotate |
2136 | IgorA | 386 | buf2d_resize dd sz_buf2d_resize |
1535 | IgorA | 387 | buf2d_line dd sz_buf2d_line |
2230 | IgorA | 388 | buf2d_line_sm dd sz_buf2d_line_sm |
1634 | IgorA | 389 | buf2d_rect_by_size dd sz_buf2d_rect_by_size |
1642 | IgorA | 390 | buf2d_filled_rect_by_size dd sz_buf2d_filled_rect_by_size |
1535 | IgorA | 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 |
||
1727 | IgorA | 399 | buf2d_curve_bezier dd sz_buf2d_curve_bezier |
1535 | IgorA | 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 |
||
1684 | IgorA | 404 | buf2d_flood_fill dd sz_buf2d_flood_fill |
1910 | IgorA | 405 | buf2d_set_pixel dd sz_buf2d_set_pixel |
2658 | IgorA | 406 | buf2d_get_pixel dd sz_buf2d_get_pixel |
5389 | IgorA | 407 | buf2d_flip_h dd sz_buf2d_flip_h |
3040 | IgorA | 408 | buf2d_flip_v dd sz_buf2d_flip_v |
3105 | IgorA | 409 | buf2d_filter_dither dd sz_buf2d_filter_dither |
1535 | IgorA | 410 | |
2759 | IgorA | 411 | ;воксельные функции: |
412 | buf2d_vox_brush_create dd sz_buf2d_vox_brush_create |
||
413 | buf2d_vox_brush_delete dd sz_buf2d_vox_brush_delete |
||
2815 | IgorA | 414 | buf2d_vox_obj_draw_1g dd sz_buf2d_vox_obj_draw_1g |
2759 | IgorA | 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 | |||
1535 | IgorA | 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 |
||
2975 | IgorA | 430 | sz_buf2d_rotate db 'buf2d_rotate',0 |
2136 | IgorA | 431 | sz_buf2d_resize db 'buf2d_resize',0 |
1535 | IgorA | 432 | sz_buf2d_line db 'buf2d_line',0 |
2230 | IgorA | 433 | sz_buf2d_line_sm db 'buf2d_line_sm',0 |
1634 | IgorA | 434 | sz_buf2d_rect_by_size db 'buf2d_rect_by_size',0 |
1642 | IgorA | 435 | sz_buf2d_filled_rect_by_size db 'buf2d_filled_rect_by_size',0 |
1535 | IgorA | 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 |
||
1727 | IgorA | 444 | sz_buf2d_curve_bezier db 'buf2d_curve_bezier',0 |
1535 | IgorA | 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 |
||
1684 | IgorA | 448 | sz_buf2d_offset_h db 'buf2d_offset_h',0 |
1910 | IgorA | 449 | sz_buf2d_flood_fill db 'buf2d_flood_fill',0 |
2658 | IgorA | 450 | sz_buf2d_set_pixel db 'buf2d_set_pixel',0 |
2759 | IgorA | 451 | sz_buf2d_get_pixel db 'buf2d_get_pixel',0 |
5389 | IgorA | 452 | sz_buf2d_flip_h db 'buf2d_flip_h',0 |
3040 | IgorA | 453 | sz_buf2d_flip_v db 'buf2d_flip_v',0 |
3105 | IgorA | 454 | sz_buf2d_filter_dither db 'buf2d_filter_dither',0 |
1535 | IgorA | 455 | |
2759 | IgorA | 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 |
||
2815 | IgorA | 459 | sz_buf2d_vox_obj_draw_1g db 'buf2d_vox_obj_draw_1g',0 |
2759 | IgorA | 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 |
||
467 | |||
1535 | IgorA | 468 |
|
469 |
|
||
470 |
|
||
471 |
|
||
472 |
|
||
473 | изменен формат буфера - для ширины и высоты используются 4-х байтные числа вместо 2-х байтных. |
||
474 |
|
||
475 | исправления в функции buf2d_delete. |
||
1634 | IgorA | 476 |
|
7861 | IgorA | 477 |
|
478 |
|
||
1653 | IgorA | 479 |
|
1684 | IgorA | 480 |
|
1727 | IgorA | 481 |
|
2230 | IgorA | 482 |
|
2136 | IgorA | 483 |
|
2383 | IgorA | 484 |
|
2358 | IgorA | 485 |
|
2383 | IgorA | 486 |
|
2658 | IgorA | 487 |
|
488 |
|
||
2759 | IgorA | 489 |
|
2920 | IgorA | 490 |
|
2975 | IgorA | 491 |
|
7861 | IgorA | 492 |
|
3105 | IgorA | 493 |
|
3138 | heavyiron | 494 |
|
7861 | IgorA | 495 |
|
6175 | IgorA | 496 |
|
7861 | IgorA | 497 |
|
2383 | IgorA | 498 | |
1535 | IgorA | 499 |