diff --git a/programs/develop/libraries/buf2d/trunk/about.htm b/programs/develop/libraries/buf2d/trunk/about.htm index 1c16bee761..021a5bfc0e 100644 --- a/programs/develop/libraries/buf2d/trunk/about.htm +++ b/programs/develop/libraries/buf2d/trunk/about.htm @@ -63,6 +63,7 @@ table { font-size: 15px; }
  • buf2d_img_wdiv2
  • buf2d_crop_color
  • buf2d_flip_v
  • +
  • buf2d_filter_dither
  • buf2d_vox_brush_create
  • @@ -260,6 +261,12 @@ stdcall [buf2d_convert_text_matrix], buf_1
    stdcall buf2d_flip_v, buf_0

    уфх buf_0 - ёЄЁєъЄєЁр 24-ї сшЄэюую сєЇхЁр.

    +

    buf2d_filter_dither

    +

    ╘шы№ЄЁ, ъюЄюЁ√щ яЁхюсЁрчєхЄ шчюсЁрцхэшх шч 24 сшЄэюую сєЇхЁр т 8-ьш ЎтхЄэюх. ╨рчЁ фэюёЄ№ сєЇхЁр эх ьхэ хЄё . ╧ЁшьхЁ:

    +
    stdcall [buf2d_filter_dither], buf_0, 0
    +

    уфх buf_0 - ёЄЁєъЄєЁр 24-ї сшЄэюую сєЇхЁр.

    +

    0 - рыуюЁшЄь (тючьюцэ√х чэрўхэш : 0 - Sierra Lite, 1 - Floyd-Steinberg, 2 - Burkers).

    +

    buf2d_vox_brush_create

    ╤ючфрэшх тюъёхы№эющ ъшёЄш. ╧ЁшьхЁ:

    stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z
    @@ -353,6 +360,7 @@ import_buf2d_lib:
     	buf2d_set_pixel dd sz_buf2d_set_pixel
     	buf2d_get_pixel dd sz_buf2d_get_pixel
     	buf2d_flip_v dd sz_buf2d_flip_v
    +	buf2d_filter_dither dd sz_buf2d_filter_dither
     
     	;тюъёхы№э√х ЇєэъЎшш:
     	buf2d_vox_brush_create dd sz_buf2d_vox_brush_create
    @@ -396,6 +404,7 @@ import_buf2d_lib:
     	sz_buf2d_set_pixel db 'buf2d_set_pixel',0
     	sz_buf2d_get_pixel db 'buf2d_get_pixel',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
    @@ -434,5 +443,6 @@ import_buf2d_lib:
     

    11.08.12 - ЇєэъЎшш фы  ёцрЄш  шчюсЁрцхэшщ buf2d_img_hdiv2 ш buf2d_img_wdiv2 ЁрсюЄр■Є ё 32 сшЄэ√ьш сєЇхЁрьш.

    01.10.12 - фюсртыхэр ЇєэъЎш  яютюЁюЄр шчюсЁрцхэшщ эр 90 ш 180 уЁрфєёют buf2d_rotate.

    15.11.12 - фюсртыхэр ЇєэъЎш  юЄЁрцхэш  24 сшЄэ√ї шчюсЁрцхэшщ яю тхЁЄшърыш buf_flip_v, шёяЁртыхэш  т ЇєэъЎшш buf2d_img_hdiv2.

    +

    14.12.12 - фюсртыхэр ЇєэъЎш  эрыюцхэш  Їшы№ЄЁр buf2d_filter_dither.

    \ No newline at end of file diff --git a/programs/develop/libraries/buf2d/trunk/buf2d.asm b/programs/develop/libraries/buf2d/trunk/buf2d.asm index 7ce7f2a176..1d4b0cb26c 100644 --- a/programs/develop/libraries/buf2d/trunk/buf2d.asm +++ b/programs/develop/libraries/buf2d/trunk/buf2d.asm @@ -3451,6 +3451,296 @@ proc buf_curve_bezier, buffer:dword, coord_p0:dword,coord_p1:dword,coord_p2:dwor ret endp +;фильтер +align 4 +proc buf_filter_dither, buffer:dword, algor:dword + pushad + mov edi,[buffer] + cmp buf2d_bits,24 + jne .error + mov edx,buf2d_w + mov esi,buf2d_h + mov edi,buf2d_data +;edi - pointer to 24bit bitmap +;edx - x size +;esi - y size + lea edx,[edx*3] + imul esi,edx + + ;определяем какой алгоритм использовать + cmp dword[algor],0 + jne @f + call dither_0 + jmp .dither_end + @@: + cmp dword[algor],1 + jne @f + call dither_1 + jmp .dither_end + @@: + call dither_2 + jmp .dither_end + .error: + stdcall print_err,sz_buf2d_filter_dither,txt_err_n24b + .dither_end: + popad + ret +endp + +align 16 +dither_0: ; Sierra Filter Lite algoritm +newp_0: ; Dithering cycle + xor ebx,ebx ; At first threshold + movzx ecx,byte[edi] + cmp cl,255 + je newp_0.next + test cl,cl + jz newp_0.next + jns @f + dec ebx + sub ecx,255 +@@: + mov [edi],bl ; putpixel + + sar ecx,1 ; error/2 + ;adc ecx,0 ; round to integer + + movzx eax,byte[edi+3] ; pixel (x+1;y) + add eax,ecx ; add error/2 to (x+1;y) + jge @f ; check_overflow + xor eax,eax + jmp .ok +@@: + cmp eax,255 + jle .ok + or al,255 +.ok: + mov [edi+3],al ; putpixel + + sar ecx,1 ; error/4 + adc ecx,0 ; round to integer + + movzx eax,byte[edi+edx-3] ; pixel (x-1;y+1) + add eax,ecx ; add error/4 to (x-1;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok1 +@@: + cmp eax,255 + jle .ok1 + or al,255 +.ok1: + mov [edi+edx-3],al ; putpixel + + movzx eax,byte[edi+edx] ; pixel (x;y+1) + add eax,ecx ; add error/4 to (x;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok2 +@@: + cmp eax,255 + jle .ok2 + or al,255 +.ok2: + mov [edi+edx],al ; putpixel + +.next: + inc edi + dec esi + jnz newp_0 + ret + +align 16 +dither_1: ; Floyd-Steinberg algoritm +newp_1: ; Dithering cycle + xor ebx,ebx ; At first threshold + movzx ecx,byte[edi] + cmp cl,255 + je newp_1.next + test cl,cl + jz newp_1.next + jns @f + dec ebx + sub ecx,255 +@@: + mov [edi],bl ; putpixel + + sar ecx,4 ; error/16 + adc ecx,0 ; round to integer + mov ebx,ecx + + movzx eax,byte[edi+edx+3] ; pixel (x+1;y+1) + add eax,ecx ; add error/16 to (x+1;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok +@@: + cmp eax,255 + jle .ok + or al,255 +.ok: + mov [edi+edx+3],al ;putpixel + + imul ecx,3 + movzx eax,byte[edi+edx-3] ; pixel (x-1;y+1) + add eax,ecx ; add 3*error/16 to (x-1;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok1 +@@: + cmp eax,255 + jle .ok1 + or al,255 +.ok1: + mov [edi+edx-3],al ;putpixel + + mov ecx,ebx + imul ecx,5 + movzx eax,byte[edi+edx] ; pixel (x;y+1) + add eax,ecx ; add 5*error/16 to (x;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok2 +@@: + cmp eax,255 + jle .ok2 + or al,255 +.ok2: + mov [edi+edx],al ;putpixel + + mov ecx,ebx + imul ecx,7 + movzx eax,byte[edi+3] ; pixel (x+1;y) + add eax,ecx ; add 7*error/16 to (x+1;y) + jge @f ; check_overflow + xor eax,eax + jmp .ok3 +@@: + cmp eax,255 + jle .ok3 + or al,255 +.ok3: + mov [edi+3],al ;putpixel + +.next: + inc edi + dec esi + jnz newp_1 + ret + +align 16 +dither_2: ; Burkers algoritm +newp_2: ; Dithering cycle + xor ebx,ebx ; At first threshold + movsx ecx,byte[edi] + cmp cl,255 + je newp_2.next + test cl,cl + jz newp_2.next + jns @f + dec ebx +@@: + mov [edi],bl ; putpixel + + sar ecx,2 ; error/4 + adc ecx,0 ; round to integer + + movzx eax,byte[edi+3] ; pixel (x+1;y) + add eax,ecx ; add error/4 to (x+1;y) + jge @f ; check_overflow + xor eax,eax + jmp .ok +@@: + cmp eax,255 + jle .ok + or al,255 +.ok: + mov [edi+3],al ; putpixel + + movzx eax,byte[edi+edx] ; pixel (x;y+1) + add eax,ecx ; add error/4 to (x;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok1 +@@: + cmp eax,255 + jle .ok1 + or al,255 +.ok1: + mov [edi+edx],al ; putpixel + + sar ecx,1 ; error/8 + adc ecx,0 ; round to integer + + movzx eax,byte[edi+6] ; pixel (x+2;y) + add eax,ecx ; add error/8 to (x+2;y) + jge @f ; check_overflow + xor eax,eax + jmp .ok2 +@@: + cmp eax,255 + jle .ok2 + or al,255 +.ok2: + mov [edi+6],al ; putpixel + + movzx eax,byte[edi+edx-3] ; pixel (x-1;y+1) + add eax,ecx ; add error/8 to (x-1;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok3 +@@: + cmp eax,255 + jle .ok3 + or al,255 +.ok3: + mov [edi+edx-3],al ; putpixel + + movzx eax,byte[edi+edx+3] ; pixel (x+1;y+1) + add eax,ecx ; add error/8 to (x+1;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok4 +@@: + cmp eax,255 + jle .ok4 + or al,255 +.ok4: + mov [edi+edx+3],al ; putpixel + + sar ecx,1 ; error/16 + ;adc ecx,0 ; round to integer + + movzx eax,byte[edi+edx-6] ; pixel (x-2;y+1) + add eax,ecx ; add error/16 to (x-2;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok5 +@@: + cmp eax,255 + jle .ok5 + or al,255 +.ok5: + mov [edi+edx-6],al ; putpixel + + movzx eax,byte[edi+edx+6] ; pixel (x+2;y+1) + add eax,ecx ; add error/16 to (x+2;y+1) + jge @f ; check_overflow + xor eax,eax + jmp .ok6 +@@: + cmp eax,255 + jle .ok6 + or al,255 +.ok6: + mov [edi+edx+6],al ; putpixel + +.next: + inc edi + dec esi + jnz newp_2 + ret + ;*** функции для работы с воксельной графикой *** @@ -4816,6 +5106,7 @@ EXPORTS: dd sz_buf2d_set_pixel, buf_set_pixel dd sz_buf2d_get_pixel, buf_get_pixel 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 dd sz_buf2d_vox_brush_delete, vox_brush_delete dd sz_buf2d_vox_obj_get_img_w_3g, buf_vox_obj_get_img_w_3g @@ -4856,6 +5147,7 @@ EXPORTS: sz_buf2d_set_pixel db 'buf2d_set_pixel',0 sz_buf2d_get_pixel db 'buf2d_get_pixel',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 sz_buf2d_vox_brush_delete db 'buf2d_vox_brush_delete',0 sz_buf2d_vox_obj_get_img_w_3g db 'buf2d_vox_obj_get_img_w_3g',0 diff --git a/programs/develop/libraries/buf2d/trunk/examples/build.bat b/programs/develop/libraries/buf2d/trunk/examples/build.bat index 38fa52ccf8..eaa6ff356a 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/build.bat +++ b/programs/develop/libraries/buf2d/trunk/examples/build.bat @@ -16,6 +16,7 @@ if not exist bin\vaz2106.vox @copy ..\..\..\..\..\media\voxel_editor\trunk\vaz21 @fasm.exe -m 16384 e5_lines_sm.asm bin\e5_lines_sm.kex @fasm.exe -m 16384 e6_vox_1g.asm bin\e6_vox_1g.kex @fasm.exe -m 16384 e7_vox_3g.asm bin\e7_vox_3g.kex +@fasm.exe -m 16384 e8_filters.asm bin\e8_filters.kex @kpack bin\e0_dr_lines.kex @kpack bin\e1_scaling.kex @@ -25,4 +26,5 @@ if not exist bin\vaz2106.vox @copy ..\..\..\..\..\media\voxel_editor\trunk\vaz21 @kpack bin\e5_lines_sm.kex @kpack bin\e6_vox_1g.kex @kpack bin\e7_vox_3g.kex +@kpack bin\e8_filters.kex pause \ No newline at end of file diff --git a/programs/develop/libraries/buf2d/trunk/examples/e0_dr_lines.asm b/programs/develop/libraries/buf2d/trunk/examples/e0_dr_lines.asm index c2cbdb8b10..27fb62fac2 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e0_dr_lines.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e0_dr_lines.asm @@ -10,7 +10,7 @@ use32 include '../../../../../macros.inc' include '../../../../../proc32.inc' include '../../../../../develop/libraries/box_lib/load_lib.mac' -include 'mem.inc' +include '../../../../../dll.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load diff --git a/programs/develop/libraries/buf2d/trunk/examples/e1_scaling.asm b/programs/develop/libraries/buf2d/trunk/examples/e1_scaling.asm index 8ba752afa8..7d9c2beca2 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e1_scaling.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e1_scaling.asm @@ -10,7 +10,7 @@ use32 include '../../../../../macros.inc' include '../../../../../proc32.inc' include '../../../../../develop/libraries/box_lib/load_lib.mac' -include 'mem.inc' +include '../../../../../dll.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load diff --git a/programs/develop/libraries/buf2d/trunk/examples/e4_graf_ed.asm b/programs/develop/libraries/buf2d/trunk/examples/e4_graf_ed.asm index 2a54c361bd..8fee0b9ef6 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e4_graf_ed.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e4_graf_ed.asm @@ -10,7 +10,7 @@ use32 include '../../../../../macros.inc' include '../../../../../proc32.inc' include '../../../../../develop/libraries/box_lib/load_lib.mac' -include 'mem.inc' +include '../../../../../dll.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load diff --git a/programs/develop/libraries/buf2d/trunk/examples/e5_lines_sm.asm b/programs/develop/libraries/buf2d/trunk/examples/e5_lines_sm.asm index 7c93bbe37c..7de5e94675 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e5_lines_sm.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e5_lines_sm.asm @@ -10,7 +10,7 @@ use32 include '../../../../../macros.inc' include '../../../../../proc32.inc' include '../../../../../develop/libraries/box_lib/load_lib.mac' -include 'mem.inc' +include '../../../../../dll.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load diff --git a/programs/develop/libraries/buf2d/trunk/examples/e6_vox_1g.asm b/programs/develop/libraries/buf2d/trunk/examples/e6_vox_1g.asm index 843ebd883c..5e7197ce26 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e6_vox_1g.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e6_vox_1g.asm @@ -10,7 +10,7 @@ use32 include '../../../../../macros.inc' include '../../../../../proc32.inc' include '../../../../../develop/libraries/box_lib/load_lib.mac' -include 'mem.inc' +include '../../../../../dll.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load diff --git a/programs/develop/libraries/buf2d/trunk/examples/e7_vox_3g.asm b/programs/develop/libraries/buf2d/trunk/examples/e7_vox_3g.asm index d808ec675e..0dd5b768a7 100644 --- a/programs/develop/libraries/buf2d/trunk/examples/e7_vox_3g.asm +++ b/programs/develop/libraries/buf2d/trunk/examples/e7_vox_3g.asm @@ -10,7 +10,7 @@ use32 include '../../../../../macros.inc' include '../../../../../proc32.inc' include '../../../../../develop/libraries/box_lib/load_lib.mac' -include 'mem.inc' +include '../../../../../dll.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, 0 ;dll.Load diff --git a/programs/develop/libraries/buf2d/trunk/examples/e8_filters.asm b/programs/develop/libraries/buf2d/trunk/examples/e8_filters.asm new file mode 100644 index 0000000000..b0473fcae1 --- /dev/null +++ b/programs/develop/libraries/buf2d/trunk/examples/e8_filters.asm @@ -0,0 +1,296 @@ +use32 + org 0x0 + db 'MENUET01' ;идентиф. исполняемого файла всегда 8 байт + dd 0x1 + dd start + dd i_end ;размер приложения + dd mem,stacktop + dd 0,sys_path + +include '../../../../../macros.inc' +include '../../../../../proc32.inc' +include '../../../../../develop/libraries/box_lib/load_lib.mac' +include '../../../../../dll.inc' + +@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load + +struct FileInfoBlock + Function dd ? + Position dd ? + Flags dd ? + Count dd ? + Buffer dd ? + db ? + FileName dd ? +ends + +IMAGE_FILE1_SIZE equ 200*186*3 ;размер файла с изображением 200 x 100 + +BUF_STRUCT_SIZE equ 21 +buf2d_data equ dword[edi] ;данные буфера изображения +buf2d_w equ dword[edi+8] ;ширина буфера +buf2d_h equ dword[edi+12] ;высота буфера +buf2d_l equ word[edi+4] +buf2d_t equ word[edi+6] ;отступ сверху +buf2d_size_lt equ dword[edi+4] ;отступ слева и справа для буфера +buf2d_color equ dword[edi+16] ;цвет фона буфера +buf2d_bits equ byte[edi+20] ;количество бит в 1-й точке изображения +vox_offs_tree_table equ 4 + +macro load_image_file path,buf,size { ;макрос для загрузки изображений + ;path - может быть переменной или строковым параметром + if path eqtype '' ;проверяем задан ли строкой параметр path + jmp @f + local .path_str + .path_str db path ;формируем локальную переменную + db 0 + @@: + ;32 - стандартный адрес по которому должен быть буфер с системным путем + copy_path .path_str,[32],file_name,0x0 + else + copy_path path,[32],file_name,0x0 ;формируем полный путь к файлу изображения, подразумеваем что он в одной папке с программой + end if + + stdcall mem.Alloc, dword size ;выделяем память для изображения + mov [buf],eax + + mov eax,70 ;70-я функция работа с файлами + mov [run_file_70.Function], 0 + mov [run_file_70.Position], 0 + mov [run_file_70.Flags], 0 + mov [run_file_70.Count], dword size + m2m [run_file_70.Buffer], [buf] + mov byte[run_file_70+20], 0 + mov [run_file_70.FileName], file_name + mov ebx,run_file_70 + int 0x40 ;загружаем файл изображения + cmp ebx,0xffffffff + je @f + ;определяем вид изображения и переводим его во временный буфер image_data + stdcall dword[img_decode], dword[buf],ebx,0 + mov dword[image_data],eax + ;преобразуем изображение к формату rgb + stdcall dword[img_to_rgb2], dword[image_data],dword[buf] + ;удаляем временный буфер image_data + stdcall dword[img_destroy], dword[image_data] + @@: +} + +align 4 +start: + load_libraries l_libs_start,load_lib_end + + ;проверка на сколько удачно загузилась наша либа + mov ebp,lib0 + cmp dword [ebp+ll_struc_size-4],0 + jz @f + mcall -1 ;exit not correct + @@: + mov ebp,lib1 + cmp dword [ebp+ll_struc_size-4],0 + jz @f + mcall -1 ;exit not correct + @@: + + mcall 40,0x27 + mcall 48,3,sc,sizeof.system_colors ;получаем системные цвета + + load_image_file 'img1.png',image_data_rgb, IMAGE_FILE1_SIZE + stdcall [buf2d_create_f_img], buf_0,[image_data_rgb] ;создаем буфер + stdcall [buf2d_create_f_img], buf_1,[image_data_rgb] ;создаем буфер + stdcall [buf2d_create_f_img], buf_2,[image_data_rgb] ;создаем буфер + stdcall mem.Free,[image_data_rgb] ;освобождаем память + + stdcall [buf2d_filter_dither], buf_1,0 + stdcall [buf2d_filter_dither], buf_2,2 + +align 4 +red_win: + call draw_window + +align 4 +still: ;главный цикл + mcall 10 + + cmp al,0x1 ;изменилось положение окна + jz red_win + cmp al,0x2 + jz key + cmp al,0x3 + jz button + + jmp still + +align 4 +key: + push eax ebx + mcall 2 +;... + pop ebx eax + jmp still + + +align 4 +draw_window: + pushad + mcall 12,1 + + mov edx,[sc.work] + or edx,0x33000000 + mcall 0,(20 shl 16)+670,(20 shl 16)+520,,,caption ;создание окна + + stdcall [buf2d_draw], buf_0 + stdcall [buf2d_draw], buf_1 + stdcall [buf2d_draw], buf_2 + + mcall 12,2 + popad + ret + +head_f_i: +head_f_l db 'Системная ошибка',0 + +system_dir0 db '/sys/lib/' +name_buf2d db 'buf2d.obj',0 +err_message_found_lib0 db 'Не удалось найти библиотеку buf2d.obj',0 +err_message_import0 db 'Ошибка при импорте библиотеки buf2d.obj',0 + +system_dir1 db '/sys/lib/' +name_libimg db 'libimg.obj',0 +err_message_found_lib1 db 'Не удалось найти библиотеку libimg.obj',0 +err_message_import1 db 'Ошибка при импорте библиотеки libimg.obj',0 + +;library structures +l_libs_start: + lib0 l_libs name_buf2d, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, import_buf2d_lib, err_message_import0, head_f_i + lib1 l_libs name_libimg, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, import_libimg, err_message_import1, head_f_i +load_lib_end: + +align 4 +button: + mcall 17 ;получить код нажатой кнопки + cmp ah,1 + jne still +.exit: + stdcall [buf2d_delete],buf_0 ;удаляем буфер + stdcall [buf2d_delete],buf_1 ;удаляем буфер + stdcall [buf2d_delete],buf_2 ;удаляем буфер + mcall -1 ;выход из программы + +image_data dd 0 ;память для преобразования картинки функциями libimg +image_data_gray dd 0 ;память с преобразованным изображением в формате 8-bit +image_data_rgb dd 0 ;память с преобразованным изображением в формате rgb +image_data_foto dd 0 + +run_file_70 FileInfoBlock +caption db 'Draw images 13.09.11',0 ;подпись окна +sc system_colors ;системные цвета + +align 4 +buf_0: + dd 0 ;указатель на буфер изображения + dw 5 ;+4 left + dw 5 ;+6 top + dd 200 ;+8 w + dd 186 ;+12 h + dd 0xffffff ;+16 color + db 24 ;+20 bit in pixel + +align 4 +buf_1: + dd 0 ;указатель на буфер изображения + dw 5 ;+4 left + dw 200 ;+6 top + dd 200 ;+8 w + dd 186 ;+12 h + dd 0 ;+16 color + db 24 ;+20 bit in pixel + +align 4 +buf_2: + dd 0 ;указатель на буфер изображения + dw 210 ;+4 left + dw 200 ;+6 top + dd 200 ;+8 w + dd 186 ;+12 h + dd 0 ;+16 color + db 24 ;+20 bit in pixel + +align 4 +import_libimg: + dd alib_init1 + img_is_img dd aimg_is_img + img_info dd aimg_info + img_from_file dd aimg_from_file + img_to_file dd aimg_to_file + img_from_rgb dd aimg_from_rgb + img_to_rgb dd aimg_to_rgb + img_to_rgb2 dd aimg_to_rgb2 + img_decode dd aimg_decode + img_encode dd aimg_encode + img_create dd aimg_create + img_destroy dd aimg_destroy + img_destroy_layer dd aimg_destroy_layer + img_count dd aimg_count + img_lock_bits dd aimg_lock_bits + img_unlock_bits dd aimg_unlock_bits + img_flip dd aimg_flip + img_flip_layer dd aimg_flip_layer + img_rotate dd aimg_rotate + img_rotate_layer dd aimg_rotate_layer + img_draw dd aimg_draw + + dd 0,0 + alib_init1 db 'lib_init',0 + aimg_is_img db 'img_is_img',0 ;определяет по данным, может ли библиотека сделать из них изображение + aimg_info db 'img_info',0 + aimg_from_file db 'img_from_file',0 + aimg_to_file db 'img_to_file',0 + aimg_from_rgb db 'img_from_rgb',0 + aimg_to_rgb db 'img_to_rgb',0 ;преобразование изображения в данные RGB + aimg_to_rgb2 db 'img_to_rgb2',0 + aimg_decode db 'img_decode',0 ;автоматически определяет формат графических данных + aimg_encode db 'img_encode',0 + aimg_create db 'img_create',0 + aimg_destroy db 'img_destroy',0 + aimg_destroy_layer db 'img_destroy_layer',0 + aimg_count db 'img_count',0 + aimg_lock_bits db 'img_lock_bits',0 + aimg_unlock_bits db 'img_unlock_bits',0 + aimg_flip db 'img_flip',0 + aimg_flip_layer db 'img_flip_layer',0 + aimg_rotate db 'img_rotate',0 + aimg_rotate_layer db 'img_rotate_layer',0 + aimg_draw db 'img_draw',0 + +align 4 +import_buf2d_lib: + dd sz_lib_init + buf2d_create dd sz_buf2d_create + buf2d_create_f_img dd sz_buf2d_create_f_img + buf2d_clear dd sz_buf2d_clear + buf2d_draw dd sz_buf2d_draw + buf2d_delete dd sz_buf2d_delete + buf2d_filter_dither dd sz_buf2d_filter_dither + dd 0,0 + sz_lib_init db 'lib_init',0 + sz_buf2d_create db 'buf2d_create',0 + sz_buf2d_create_f_img db 'buf2d_create_f_img',0 + sz_buf2d_clear db 'buf2d_clear',0 + sz_buf2d_draw db 'buf2d_draw',0 + sz_buf2d_delete db 'buf2d_delete',0 + sz_buf2d_filter_dither db 'buf2d_filter_dither',0 + +i_end: + rb 1024 +stacktop: + sys_path rb 4096 + file_name: + rb 4096 + plugin_path: + rb 4096 + openfile_path: + rb 4096 + filename_area: + rb 256 +mem: