6,8 → 6,7 |
include '../../../../programs/macros.inc' |
include '../../../../programs/proc32.inc' |
include '../../../../programs/KOSfuncs.inc' |
include '../../../../programs/develop/libraries/box_lib/load_lib.mac' |
include '../../../../programs/dll.inc' |
include '../../../../programs/load_img.inc' |
include '../trunk/str.inc' |
|
vox_offs_tree_table equ 4 |
16,18 → 15,8 |
include '../trunk/vox_rotate.inc' |
|
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load |
caption db 'Voxel creator 08.02.16',0 ;¯®¤¯¨áì ®ª |
caption db 'Voxel creator 19.02.16',0 ;¯®¤¯¨áì ®ª |
|
struct FileInfoBlock |
Function dd ? |
Position dd ? |
Flags dd ? |
Count dd ? |
Buffer dd ? |
db ? |
FileName dd ? |
ends |
|
BUF_STRUCT_SIZE equ 21 |
buf2d_data equ dword[edi] ;¤ ë¥ ¡ãä¥à ¨§®¡à ¦¥¨ï |
buf2d_w equ dword[edi+8] ;è¨à¨ ¡ãä¥à |
42,7 → 31,6 |
vox_offs_data equ 12 |
|
run_file_70 FileInfoBlock |
image_data dd 0 ;㪠§ â¥«ì ¢à¥¬¥ãî ¯ ¬ïâì. ¤«ï 㦥 ¯à¥®¡à §®¢ ¨ï ¨§®¡à ¦¥¨ï |
vox_obj_size dd 0 ;à §¬¥à ¢®ªá¥«ì®£® ®¡ê¥ªâ (¤«ï ãáª®à¥¨ï ¢áâ ¢ª¨) |
txt_space db ' ',0 |
txt_pref db ' ¡ ',0,' ¡',0,' ¡',0,' ¡',0 ;¯à¨áâ ¢ª¨: ª¨«®, ¬¥£ , £¨£ |
51,50 → 39,10 |
|
fn_toolbar db 'toolbar.png',0 |
IMAGE_TOOLBAR_ICON_SIZE equ 16*16*3 |
IMAGE_TOOLBAR_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*9 |
image_data_toolbar dd 0 |
|
max_open_file_size equ 1024*1024 ;1 Mb |
|
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,0 |
else |
copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© |
end if |
|
stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥¨ï |
mov [buf],eax |
|
mov [run_file_70.Function], SSF_READ_FILE |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], dword size |
mov [run_file_70.Buffer], eax |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mcall SF_FILE,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
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,l_libs_end |
112,7 → 60,7 |
stdcall [buf2d_create], buf_0z |
stdcall [buf2d_vox_brush_create], buf_vox, vox_6_7_z |
|
load_image_file fn_toolbar, image_data_toolbar,IMAGE_TOOLBAR_SIZE |
load_image_file fn_toolbar, image_data_toolbar |
|
stdcall mem.Alloc,max_open_file_size |
mov dword[open_file_vox],eax |
603,8 → 551,7 |
je .end_open_file |
;ª®¤ ¯à¨ 㤠箬 ®âªàë⨨ ¤¨ «®£ |
|
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨ |
mov [run_file_70.Function], 0 |
mov [run_file_70.Function], SSF_READ_FILE |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], dword max_open_file_size |
611,8 → 558,7 |
m2m [run_file_70.Buffer],dword[open_file_vox] |
mov byte[run_file_70+20], 0 |
mov dword[run_file_70.FileName], openfile_path |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
mcall SF_FILE,run_file_70 |
cmp ebx,0xffffffff |
je .end_open_file |
; ¯à®¢¥àª ¯à ¢¨«ì®áâì ¢®ªá¥«ì®£® ä®à¬ â |
658,8 → 604,7 |
|
stdcall buf2d_vox_obj_get_size, ebx |
mov dword[run_file_70.Count], eax ;à §¬¥à ä ©« |
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨ |
mov [run_file_70.Function], 2 |
mov [run_file_70.Function], SSF_CREATE_FILE |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov ebx, dword[open_file_vox] |
666,8 → 611,7 |
mov [run_file_70.Buffer], ebx |
mov byte[run_file_70+20], 0 |
mov dword[run_file_70.FileName], openfile_path |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
mcall SF_FILE,run_file_70 |
cmp ebx,0xffffffff |
je .end_save_file |
|
1162,8 → 1106,7 |
;stdcall mem.Alloc, dword size ;¢ë¤¥«ï¥¬ ¯ ¬ïâì ¤«ï ¨§®¡à ¦¥¨ï |
;mov [buf],eax |
|
mov eax,70 ;70-ï äãªæ¨ï à ¡®â á ä ©« ¬¨ |
mov [run_file_70.Function], 0 |
mov [run_file_70.Function], SSF_READ_FILE |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], dword max_open_file_size |
1170,31 → 1113,28 |
m2m [run_file_70.Buffer],dword[open_file_img] |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], openfile_path |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
mcall SF_FILE,run_file_70 |
cmp ebx,0xffffffff |
je .end_0 |
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥ë© ¡ãä¥à image_data |
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï |
stdcall dword[img_decode], dword[open_file_img],ebx,0 |
cmp eax,0 |
je .end_0 ;¥á«¨ àãè¥ ä®à¬ â ä ©« |
mov dword[image_data],eax |
or eax,eax |
jz .end_0 ;¥á«¨ àãè¥ ä®à¬ â ä ©« |
mov ebx,eax |
;¯à¥®¡à §ã¥¬ ¨§®¡à ¦¥¨¥ ª ä®à¬ âã rgb |
stdcall dword[img_to_rgb2], dword[image_data],dword[open_file_img] |
stdcall dword[img_to_rgb2], ebx,dword[open_file_img] |
|
mov eax,dword[image_data] |
mov edi,[buf] |
cmp buf2d_data,0 |
jne @f |
m2m buf2d_w,dword[eax+4] ;+4 = image width |
m2m buf2d_h,dword[eax+8] ;+8 = image heihht |
m2m buf2d_w,dword[ebx+4] ;+4 = image width |
m2m buf2d_h,dword[ebx+8] ;+8 = image heihht |
stdcall [buf2d_create_f_img], edi,[open_file_img] |
jmp .end_1 |
@@: |
mov ebx,dword[eax+4] |
mov ecx,dword[eax+8] |
stdcall [buf2d_resize], edi, ebx,ecx,1 ;¨§¬¥ï¥¬ à §¬¥àë ¡ãä¥à |
imul ecx,ebx |
mov ecx,dword[ebx+8] |
stdcall [buf2d_resize], edi, [ebx+4],ecx,1 ;¨§¬¥ï¥¬ à §¬¥àë ¡ãä¥à |
imul ecx,[ebx+4] |
lea ecx,[ecx+ecx*2] |
mov edi,buf2d_data |
mov esi,[open_file_img] |
1202,8 → 1142,8 |
rep movsb ;copy image |
.end_1: |
|
;㤠«ï¥¬ ¢à¥¬¥ë© ¡ãä¥à image_data |
stdcall dword[img_destroy], dword[image_data] |
;㤠«ï¥¬ ¢à¥¬¥ë© ¡ãä¥à ¢ ebx |
stdcall dword[img_destroy], ebx |
.end_0: |
|
call draw_buffers |