Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 4331 → Rev 4332

/programs/develop/info3ds/info3ds.asm
34,6 → 34,7
run_file_70 FileInfoBlock
image_data dd 0 ;㪠§ â¥«ì ­  ¢à¥¬¥­­ãî ¯ ¬ïâì. ¤«ï ­ã¦¥­ ¯à¥®¡à §®¢ ­¨ï ¨§®¡à ¦¥­¨ï
open_file_lif dd 0 ;㪠§ â¥«ì ­  ¯ ¬ïâì ¤«ï ®âªàëâ¨ï ä ©«®¢ 3ds
open_file_size dd 0 ;à §¬¥à ®âªàë⮣® ä ©« 
 
;
fn_toolbar db 'toolbar.png',0
44,7 → 45,7
TREE_ICON_SYS16_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*11+54 ;à §¬¥à bmp ä ©«  á á¨á⥬­ë¬¨ ¨ª®­ª ¬¨
icon_tl_sys dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï á¨á⥬­ëå ¨ª®­®ª
icon_toolbar dd 0 ;㪠§ â¥¥«ì ­  ¯ ¬ïâì ¤«ï åà ­¥­¨ï ¨ª®­®ª ®¡ê¥ªâ®¢
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*7+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
TOOLBAR_ICON_BMP_SIZE equ IMAGE_TOOLBAR_ICON_SIZE*8+54 ;à §¬¥à bmp ä ©«  á ¨ª®­ª ¬¨ ®¡ê¥ªâ®¢
;
IMAGE_FILE1_SIZE equ 128*144*3+54 ;à §¬¥à ä ©«  á ¨§®¡à ¦¥­¨¥¬
 
100,13 → 101,16
FILE_ERROR_CHUNK_SIZE equ -3 ;®è¨¡ª  ¢ à §¬¥à¥ ¡«®ª 
 
align 4
file_3ds:
file_3ds: ;¯¥à¥¬¥­­ë¥ ¨á¯®«ì§ã¥¬ë¥ ¯à¨ ®âªàë⨨ ä ©« 
.offs: dd 0 ;+0 㪠§ â¥«ì ­  ­ ç «® ¡«®ª 
.size: dd 0 ;+4 à §¬¥à ¡«®ª  (¤«ï 1-£® ¯ à ¬¥âà  = à §¬¥à ä ©«  3ds)
rb 8*MAX_FILE_LEVEL
 
size_one_list equ 40
list_offs_text equ 12 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
size_one_list equ 42
list_offs_chunk_del equ 8 ;¬®¦¥â «¨ ¡«®ª 㤠«ïâáï
list_offs_chunk_lev equ 9 ;ã஢¥­ì ¡«®ª  (¯à®¯¨á ­ ¢ ¤ ­­ë¥ 㧫 )
list_offs_p_data equ 10 ;㪠§ â¥«ì ­  ¯®¤¯¨áì ¡«®ª 
list_offs_text equ 14 ;ᤢ¨£ ­ ç «  ⥪áâ  ¢ «¨áâ¥
buffer rb size_one_list ;¡ãä¥à ¤«ï ¤®¡ ¢«¥­¨ï áâàãªâãà ¢ ᯨ᮪ tree1
 
txt_3ds_symb db 0,0
226,7 → 230,7
mov dword[offs_last_timer],eax
call buf_draw_beg
stdcall [buf2d_draw_text], buf_0, buf_1,txt_3ds_offs,5,35,0xb000
mov edx,dword[ebx+8]
mov edx,dword[ebx+list_offs_p_data]
cmp edx,0 ;ᬮâਬ ¥áâì «¨ ®¯¨á ­¨¥ ¡«®ª 
je .no_info
stdcall [buf2d_draw_text], buf_0, buf_1,edx,5,45,0xb000
353,7 → 357,6
int 0x40
 
mov ebx,(30 shl 16)+20
mov ecx,(5 shl 16)+20
mov edx,4
int 0x40
 
360,16 → 363,18
cmp byte[can_save],0
je @f
mov ebx,(55 shl 16)+20
mov ecx,(5 shl 16)+20
mov edx,5
int 0x40
@@:
 
mov ebx,(85 shl 16)+20
mov ecx,(5 shl 16)+20
mov edx,6 ;®ª­® á ª®®à¤¨­ â ¬¨
int 0x40
 
mov ebx,(110 shl 16)+20
mov edx,7 ;㤠«¥­¨¥ ¡«®ª 
int 0x40
 
mov eax,7
mov ebx,[image_data_toolbar]
mov ecx,(16 shl 16)+16
385,8 → 390,17
add ebx,IMAGE_TOOLBAR_ICON_SIZE
mov edx,(57 shl 16)+7 ;save
int 0x40
sub ebx,IMAGE_TOOLBAR_ICON_SIZE
@@:
 
add ebx,4*IMAGE_TOOLBAR_ICON_SIZE
mov edx,(87 shl 16)+7
int 0x40
 
add ebx,IMAGE_TOOLBAR_ICON_SIZE
mov edx,(112 shl 16)+7
int 0x40
 
mov dword[w_scr_t1.all_redraw],1
stdcall [tl_draw],dword tree1
 
422,6 → 436,10
jne @f
call but_wnd_coords
@@:
cmp ah,7
jne @f
call but_delete_chunk
@@:
 
cmp ah,1
jne still
441,7 → 459,6
mov byte[can_save],0
stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
stdcall [buf2d_clear], buf_0, [buf_0.color] ;ç¨á⨬ ¡ãä¥à
;;;call draw_window
stdcall [tl_draw], tree1
stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
ret
469,11 → 486,19
cmp ebx,0xffffffff
je .end_open_file
 
;add ebx,[open_file_lif]
;mov byte[ebx],0 ;­  á«ãç © ¥á«¨ à ­¥¥ ¡ë« ®âªàëâ ä ©« ¡®«ì襣® à §¬¥à  ç¨á⨬ ª®­¥æ ¡ãä¥à  á ä ©«®¬
mov [open_file_size],ebx
;mcall 71,1,openfile_path
 
mov byte[can_save],0
call init_tree
stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
 
.end_open_file:
popad
ret
 
align 4
init_tree:
stdcall [tl_info_clear], tree1 ;®ç¨á⪠ ᯨ᪠ ®¡ê¥ªâ®¢
 
mov esi,dword[open_file_lif]
532,10 → 557,6
stdcall [tl_cur_beg], tree1
stdcall [tl_draw], tree1
.end_open:
 
stdcall [buf2d_draw], buf_0 ;®¡­®¢«ï¥¬ ¡ãä¥à ­  íªà ­¥
.end_open_file:
popad
ret
 
; ­ «¨§ ¤ ­­ëå ¡«®ª 
676,6 → 697,8
ret
 
;¯¥à¥å®¤ ª á«¥¤ã饬㠡«®ªã ⥪ã饣® ã஢­ï
;input:
; eax -  ¤à¥á áâàãªâãàë á ¯¥à¥¬¥­­ë¬¨
align 4
block_next:
push ebx
722,6 → 745,8
 
;input:
; esi - 㪠§ â¥«ì ­   ­ «¨§¨àã¥¬ë¥ ¤ ­­ë¥
; level - ã஢¥­ì ¢«®¦¥­­®á⨠㧫 
; size_bl - à §¬¥à ¡«®ª 
align 4
proc add_3ds_object, icon:dword,level:dword,size_bl:dword,info_bl:dword
pushad
734,13 → 759,22
mov dword[buffer],eax ;ᬥ饭¨¥ ¡«®ª 
mov ecx,dword[size_bl]
mov dword[buffer+4],ecx ;à §¬¥à ¡«®ª  (¨á¯®«ì§ã¥âáï ¢ ä㭪樨 buf_draw_hex_table ¤«ï à¨á®¢ ­¨ï «¨­¨¨)
mov ecx,dword[bl_found]
cmp ecx,0
je @f
;... §¤¥áì ­ã¦¥­ ¤à㣮©  «£®à¨â¬ § é¨âë ®â 㤠«¥­¨ï
mov cl,byte[ecx+4]
@@:
mov byte[buffer+list_offs_chunk_del],cl
mov ecx,[level]
mov byte[buffer+list_offs_chunk_lev],cl
mov ecx,dword[info_bl]
mov dword[buffer+8],ecx
mov dword[buffer+list_offs_p_data],ecx
stdcall hex_in_str, buffer+list_offs_text,dword[esi+1],2
stdcall hex_in_str, buffer+list_offs_text+2,dword[esi],2 ;ª®¤ 3ds ¡«®ª 
cmp ecx,0
jne @f
mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­¥æ  áâப¨
mov byte[buffer+list_offs_text+4],0 ;0 - ᨬ¢®« ª®­æ  áâப¨
jmp .no_capt
@@:
mov byte[buffer+list_offs_text+4],' '
857,7 → 891,62
@@:
ret
 
;description:
; 㤠«¥­¨¥ ¢ë¡à ­­®£® ¡«®ª  ¨§ ®âªàë⮣® ä ©« 
align 4
but_delete_chunk:
pushad
stdcall [tl_node_get_data],tree1
pop ebx
cmp ebx,0
je .end_f
cmp byte[ebx+list_offs_chunk_del],0 ;¥á«¨ ¡«®ª § é¨é¥­ ®â 㤠«¥­¨ï
jne .notify
 
;(1) ª®¯¨à®¢ ­¨¥ ­¨¦­¥© ç á⨠䠩« 
mov edx,dword[ebx+4] ;à §¬¥à ¡«®ª 
sub [open_file_size],edx ;¨§¬¥­¥­¨¥ à §¬¥à®¢ ä ©« 
mov ecx,[open_file_size]
mov eax,dword[ebx] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ë¡à ­­®£® ¡«®ª  ®â­®á¨â¥«ì­® ­ ç «  ä ©« 
sub ecx,eax ;ecx - à §¬¥à ­¨¦­¥© ᤢ¨£ ¥¬®© ç á⨠䠩« 
add eax,dword[open_file_lif] ;¯®«ãç ¥¬ §­ ç¥­¨¥ ᤢ¨£  ¢ ¯ ¬ïâ¨
mov edi,eax
mov esi,eax
add esi,edx
mov al,byte[ebx+list_offs_chunk_lev] ;¡¥à¥¬ ã஢¥­ì ⥪ã饣® 㧫 
rep movsb
mov byte[can_save],1
 
;(2) ¨§¬¥­¥­¨¥ à §¬¥à®¢ த¨â¥«ìáª¨å ¡«®ª®¢
cmp al,0
je .end_2
.cycle_2:
stdcall [tl_cur_perv], tree1
stdcall [tl_node_get_data],tree1
pop ebx
cmp ebx,0
je .end_2
cmp byte[ebx+list_offs_chunk_lev],al
jge .cycle_2
mov al,byte[ebx+list_offs_chunk_lev]
mov ecx,[ebx]
add ecx,[open_file_lif]
sub dword[ecx+2],edx
cmp al,0 ;¥á«¨ á ¬ë© ¢¥àå­¨© 㧥«, â® al=0
jne .cycle_2
.end_2:
;(3) ®¡­®¢«¥­¨¥ ᯨ᪠ tree1
call init_tree
call draw_window
 
jmp .end_f
.notify:
notify_window_run txt_not_delete
.end_f:
popad
ret
 
;input:
; buf - 㪠§ â¥«ì ­  áâபã, ç¨á«® ¤®«¦­® ¡ëâì ¢ 10 ¨«¨ 16 à¨ç­®¬ ¢¨¤¥
;output:
1215,7 → 1304,7
db 24 ;+20 bit in pixel
 
el_focus dd tree1
tree1 tree_list size_one_list,200+2, tl_key_no_edit+tl_draw_par_line,\
tree1 tree_list size_one_list,300+2, tl_key_no_edit+tl_draw_par_line,\
16,16, 0xffffff,0xb0d0ff,0xd000ff, 5,35,195-16,250, 16,list_offs_text,0, el_focus,\
w_scr_t1,0