/programs/develop/info3ds/data.inc |
---|
1,7 → 1,7 |
if lang eq ru |
capt db 'info 3ds ¢¥àá¨ï 05.11.15',0 ;¯®¤¯¨áì ®ª |
capt db 'info 3ds ¢¥àá¨ï 10.11.15',0 ;¯®¤¯¨áì ®ª |
else |
capt db 'info 3ds version 05.11.15',0 ;window caption |
capt db 'info 3ds version 10.11.15',0 ;window caption |
end if |
MAX_FILE_LEVEL equ 20 ;¬ ªá¨¬ «ìë© ã஢¥ì ¢«®¦¥®á⨠¡«®ª®¢ ¤«ï «¨§ |
/programs/develop/info3ds/info3ds.asm |
---|
66,16 → 66,14 |
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] |
m2m [run_file_70.Buffer], eax |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
cmp ebx,0xffffffff |
je @f |
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥ë© ¡ãä¥à image_data |
122,24 → 120,23 |
start: |
load_libraries l_libs_start,l_libs_end |
;¯à®¢¥àª ᪮«ìª® ã¤ ç® § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨ |
mov ebp,lib_0 |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
mov ebp,lib_1 |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
mov ebp,lib_2 |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
mov ebp,lib_3 |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
cmp dword [lib_0+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib_1+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib_2+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib_3+ll_struc_size-4],0 |
jnz @f |
jmp .lib |
@@: |
mcall -1 ;exit not correct |
@@: |
.lib: |
mcall 48,3,sc,sizeof.system_colors |
mcall 40,0x27 |
stdcall [OpenDialog_Init],OpenDialog_data ;¯®¤£®â®¢ª ¤¨ «®£ |
mov dword[w_scr_t1.type],1 |
stdcall dword[tl_data_init], tree1 |
;á¨áâ¥¬ë¥ ¨ª®ª¨ 16*16 ¤«ï tree_list |
load_image_file 'tl_sys_16.png', icon_tl_sys,TREE_ICON_SYS16_BMP_SIZE |
221,9 → 218,9 |
; |
stdcall [tl_node_get_data],tree1 |
pop ebx |
cmp ebx,0 |
cmp eax,0 |
je @f |
mov ebx,eax |
mov eax,dword[ebx] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª ®â®á¨â¥«ì® ç « ä ©« |
mov ecx,dword[ebx+4] ;à §¬¥à ¡«®ª |
stdcall hex_in_str, txt_3ds_offs.dig, eax,8 |
350,16 → 347,12 |
sub eax,41 |
mov dword[tree1.box_width],eax |
add ax,word[tree1.box_left] |
mov word[w_scr_t1.start_x],ax |
mov word[w_scr_t1+sb_offs_start_x],ax |
add ax,16+5 |
mov word[buf_0.l],ax |
mov eax,8 |
mov ebx,(5 shl 16)+20 |
mov ecx,(5 shl 16)+20 |
mov edx,3 |
mov esi,[sc.work_button] |
int 0x40 |
mcall 8,(5 shl 16)+20,(5 shl 16)+20,3 |
mov ebx,(30 shl 16)+20 |
mov edx,4 |
372,20 → 365,11 |
int 0x40 |
@@: |
mov ebx,(85 shl 16)+20 |
mov edx,6 ;®ª® á ª®®à¤¨ â ¬¨ |
int 0x40 |
mcall ,(85 shl 16)+20,,6 ;®ª® á ª®®à¤¨ â ¬¨ |
mcall ,(110 shl 16)+20,,7 ;㤠«¥¨¥ ¡«®ª |
mov ebx,(110 shl 16)+20 |
mov edx,7 ;㤠«¥¨¥ ¡«®ª |
int 0x40 |
mcall 7,[image_data_toolbar],(16 shl 16)+16,(7 shl 16)+7 ;new |
mov eax,7 |
mov ebx,[image_data_toolbar] |
mov ecx,(16 shl 16)+16 |
mov edx,(7 shl 16)+7 ;new |
int 0x40 |
add ebx,IMAGE_TOOLBAR_ICON_SIZE |
mov edx,(32 shl 16)+7 ;open |
int 0x40 |
456,7 → 440,7 |
.exit: |
mov dword[tree1.data_img],0 |
mov dword[tree1.data_img_sys],0 |
stdcall dword[tl_data_clear], tree1 |
stdcall [tl_data_clear], tree1 |
stdcall [buf2d_delete],buf_0 |
stdcall [buf2d_delete],buf_1 ;㤠«ï¥¬ ¡ãä¥à |
stdcall mem.Free,[image_data_toolbar] |
795,7 → 779,7 |
rep movsb |
mov byte[buffer+size_one_list-1],0 ;0 - ᨬ¢®« ª®¥æ áâப¨ |
.no_capt: |
stdcall [tl_node_add], buffer, ebx, tree1 |
stdcall [tl_node_add], tree1, ebx, buffer |
stdcall [tl_cur_next], tree1 |
if debug |
stdcall print_err,sz_add_3ds_object,buffer+list_offs_text |
907,42 → 891,40 |
but_delete_chunk: |
pushad |
stdcall [tl_node_get_data],tree1 |
pop ebx |
cmp ebx,0 |
cmp eax,0 |
je .end_f |
cmp byte[ebx+list_offs_chunk_del],0 ;¥á«¨ ¡«®ª § é¨é¥ ®â 㤠«¥¨ï |
cmp byte[eax+list_offs_chunk_del],0 ;¥á«¨ ¡«®ª § é¨é¥ ®â 㤠«¥¨ï |
jne .notify |
;(1) ª®¯¨à®¢ ¨¥ ¨¦¥© ç áâ¨ ä ©« |
mov edx,dword[ebx+4] ;à §¬¥à ¡«®ª |
mov edx,dword[eax+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 |
mov ebx,dword[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª ®â®á¨â¥«ì® ç « ä ©« |
sub ecx,ebx ;ecx - à §¬¥à ¨¦¥© ᤢ¨£ ¥¬®© ç áâ¨ ä ©« |
add ebx,dword[open_file_lif] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ ¯ ¬ï⨠|
mov edi,ebx |
mov esi,ebx |
add esi,edx |
mov al,byte[ebx+list_offs_chunk_lev] ;¡¥à¥¬ ã஢¥ì ⥪ã饣® 㧫 |
mov bl,byte[eax+list_offs_chunk_lev] ;¡¥à¥¬ ã஢¥ì ⥪ã饣® 㧫 |
rep movsb |
mov byte[can_save],1 |
;(2) ¨§¬¥¥¨¥ à §¬¥à®¢ த¨â¥«ìáª¨å ¡«®ª®¢ |
cmp al,0 |
cmp bl,0 |
je .end_2 |
.cycle_2: |
stdcall [tl_cur_perv], tree1 |
stdcall [tl_node_get_data],tree1 |
pop ebx |
cmp ebx,0 |
cmp eax,0 |
je .end_2 |
cmp byte[ebx+list_offs_chunk_lev],al |
cmp byte[eax+list_offs_chunk_lev],bl |
jge .cycle_2 |
mov al,byte[ebx+list_offs_chunk_lev] |
mov ecx,[ebx] |
mov bl,byte[eax+list_offs_chunk_lev] |
mov ecx,[eax] |
add ecx,[open_file_lif] |
sub dword[ecx+2],edx |
cmp al,0 ;¥á«¨ á ¬ë© ¢¥à娩 㧥«, â® al=0 |
cmp bl,0 ;¥á«¨ á ¬ë© ¢¥à娩 㧥«, â® bl=0 |
jne .cycle_2 |
.end_2: |
1284,14 → 1266,11 |
sz_tl_node_poi_get_data db 'tl_node_poi_get_data',0 |
align 4 |
mouse_dd dd 0x0 |
sc system_colors |
last_time dd 0 |
align 16 |
procinfo process_information |
align 4 |
buf_0: dd 0 ;㪠§ â¥«ì ¡ãä¥à ¨§®¡à ¦¥¨ï |
.l: dw 205 ;+4 left |
1311,6 → 1290,7 |
dd 0 ;+16 color |
db 24 ;+20 bit in pixel |
align 4 |
el_focus dd tree1 |
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,\ |
1317,26 → 1297,11 |
w_scr_t1,0 |
align 4 |
w_scr_t1: |
.size_x dw 16 ;+0 |
.start_x dw 0 |
rb 2+2 |
.btn_high dd 15 ;+8 |
.type dd 1 ;+12 |
.max_area dd 100 ;+16 |
rb 4+4 |
.bckg_col dd 0xeeeeee ;+28 |
.frnt_col dd 0xbbddff ;+32 |
.line_col dd 0 ;+36 |
rb 4+2+2 |
.run_x: |
rb 2+2+2+2+4+4+4+4+4+4 |
.all_redraw dd 0 ;+80 |
.ar_offset dd 1 ;+84 |
w_scr_t1 scrollbar 16,0, 3,0, 15, 100, 0,0, 0xeeeeee, 0xbbddff, 0, 1 |
align 4 |
align 16 |
i_end: |
procinfo process_information |
rb 1024 |
thread_coords: |
rb 1024 |
/programs/develop/info3ds/info_wnd_coords.inc |
---|
30,12 → 30,11 |
inc byte[prop_wnd_run] |
stdcall [tl_node_get_data],tree1 |
pop ebx |
xor edx,edx |
mov dword[capt_p],txt_q |
cmp ebx,0 |
cmp eax,0 |
je .no_points |
mov ebx,dword[ebx] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª |
mov ebx,dword[eax] ;¯®«ãç ¥¬ § 票¥ ᤢ¨£ ¢ë¡à ®£® ¡«®ª |
add ebx,dword[open_file_lif] |
cmp word[ebx],CHUNK_VERTLIST |
94,7 → 93,7 |
stdcall str_cat, obj_point.text,esi |
stdcall str_cat, obj_point.text,Data_String |
loop @b |
stdcall dword[tl_node_add], obj_point, (ID_ICON_DATA shl 16), tree3 |
stdcall dword[tl_node_add], tree3,(ID_ICON_DATA shl 16),obj_point |
stdcall dword[tl_cur_next], tree3 |
dec edx |
cmp edx,0 |
207,12 → 206,11 |
cmp ah,3 |
jne @f |
;§ £à㧪 ª®®à¤¨ â ¢ editbox-ë |
push ebx |
push eax ebx |
stdcall [tl_node_get_data],tree3 |
pop ebx |
cmp ebx,0 |
cmp eax,0 |
je .no_select_0 |
mov ebx,[ebx] |
mov ebx,[eax] |
mov word[NumberSymbolsAD],8 |
finit |
fld dword[ebx] |
231,16 → 229,16 |
stdcall [edit_box_draw], edit2 |
stdcall [edit_box_draw], edit3 |
.no_select_0: |
pop ebx |
pop ebx eax |
jmp prop_still |
@@: |
cmp ah,4 |
jne @f |
push ebx ecx esi edi |
push eax ebx ecx edi esi |
stdcall [tl_node_get_data],tree3 |
pop ebx |
cmp ebx,0 |
cmp eax,0 |
je .no_select_1 |
mov ebx,[ebx] |
mov ebx,[eax] |
finit |
mov esi,string1 |
291,12 → 289,13 |
stdcall str_cat, obj_point.text,esi |
stdcall str_cat, obj_point.text,Data_String |
loop .coord |
stdcall dword[tl_node_set_data], obj_point, tree3 |
stdcall dword[tl_node_set_data], tree3,obj_point |
stdcall dword[tl_draw], tree3 |
mov byte[can_save],1 ;¤«ï ¯®ª § ª®¯ª¨ '®åà ¨âì' |
mov dword[offs_last_timer],0 ;¤«ï ®¡®¢«¥¨ï ¡«®ª ¢ â ©¬¥à¥ |
.no_select_1: |
pop edi esi ecx ebx |
pop esi edi ecx ebx eax |
jmp prop_still |
@@: |
cmp ah,1 |
/programs/develop/libraries/box_lib/trunk/box_lib.mac |
---|
283,67 → 283,60 |
struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
info_capt_len,el_focus, p_scrol,on_press { |
.data_info dd 0 |
.info_size dw info_size |
.info_max_count dd info_max_count |
.style dd style |
.data_nodes dd 0 |
.data_img dd 0 |
.img_cx dw img_cx |
.img_cy dw img_cy |
.data_img_sys dd 0 |
.ch_tim dd 0 |
.ls_tim dd 0 |
.tim_undo dd 0 |
.cur_pos dd 0 |
.col_bkg dd col_bkg |
.col_zag dd col_zag |
.col_txt dd col_txt |
.box_left dd box_l |
.box_top dd box_t |
.box_width dd box_w |
.box_height dd box_h |
.capt_cy dw capt_cy |
.info_capt_offs dw info_capt_offs |
.info_capt_len dw info_capt_len |
.el_focus dd el_focus |
.p_scrol dd p_scrol |
rb 4 |
.on_activate dd 0 |
.on_press dd on_press |
info_capt_len,el_focus, p_scroll,on_press { |
.box_left dd box_l |
.box_top dd box_t |
.box_width dd box_w |
.box_height dd box_h |
.data_info dd 0 |
.info_size dw info_size |
.info_max_count dd info_max_count |
.style dd style |
.data_nodes dd 0 |
.data_img dd 0 |
.img_cx dw img_cx |
.img_cy dw img_cy |
.data_img_sys dd 0 |
.ch_tim dd 0 |
.tim_undo dd 0 |
.cur_pos dd 0 |
.col_bkg dd col_bkg |
.col_zag dd col_zag |
.col_txt dd col_txt |
.capt_cy dw capt_cy |
.info_capt_offs dw info_capt_offs |
.info_capt_len dw info_capt_len |
.el_focus dd el_focus |
.p_scroll dd p_scroll |
.on_press dd on_press |
} |
tl_data_info equ dword[edi] ;㪠§ â¥«ì ®á®¢ë¥ ¤ ë¥ |
tl_info_size equ word[edi +4] ;à §¬¥à ¤ ëå ¢ë¤¥«ï¥¬ëå ¤«ï ª ¦¤®£® 㧫 (¯®«ì§®¢ ⥫ìá쪨¥ ¤ ë¥ + ⥪áâ ¤«ï ¯®¤¯¨á¨) |
tl_info_max_count equ dword[edi+6] ;¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 㧫®¢, ª®â®àë¥ ¬®¦® ¤®¡ ¢¨âì ¢ í«¥¬¥â |
tl_style equ dword[edi+10] ;á⨫¨ í«¥¬¥â |
tl_data_nodes equ dword[edi+14] ;㪠§ ⥫ì áâàãªâãàë 㧫®¢ |
tl_data_img equ dword[edi+18] ;㪠§ â¥«ì ¨§®¡à ¦¥¨ï á ¨ª®ª ¬¨ 㧫®¢ |
tl_img_cx equ word[edi+22] ;è¨à¨ ¨ª®®ª |
tl_img_cy equ word[edi+24] ;¢ëá®â ¨ª®®ª |
tl_data_img_sys equ dword[edi+26] ;㪠§ ⥫ì á¨áâ¥¬ë¥ ¨§®¡à ¦¥¨ï (áâ५ª¨, ¯«îᨪ¨) |
tl_ch_tim equ dword[edi+30] ;ª®«¨ç¥á⢮ ¨§¬¥¥¨© ¢ ä ©«¥ |
tl_tim_undo equ dword[edi+38] ;ª®«¨ç¥á⢮ ®â¬¥¥ëå ¤¥©á⢨© |
tl_cur_pos equ dword[edi+42] ;¯®§¨æ¨ï ªãàá®à |
tl_col_bkg equ dword[edi+46] ;梥â ä® |
tl_col_zag equ dword[edi+50] ;梥⠧ £®«®¢ª |
tl_col_txt equ dword[edi+54] ;梥â ⥪áâ |
tl_box_left equ dword[edi+58] |
tl_box_top equ dword[edi+62] |
tl_box_width equ dword[edi+66] |
tl_box_height equ dword[edi+70] |
tl_capt_cy equ word[edi+74] ;¢ëá®â ¯®¤¯¨á¨ |
tl_info_capt_offs equ word[edi+76] ;ᤢ¨£ ¤«ï ç « ⥪áâ (¯®¤¯¨á¨ 㧫 ) |
tl_info_capt_len equ word[edi+78] ;¤«¨ ⥪áâ ¯®¤¯¨á¨ 㧫 (¥á«¨ = 0 â® ¤® ª®æ áâàãªâãàë) |
tl_el_focus equ dword[edi+80] ;㪠§ ⥫ì áâàãªâãàã í«¥¬¥â ¢ 䮪ãᥠ|
tl_p_scrol equ dword[edi+84] ;㪠§ ⥫ì áâàãªâãàã áªà®««¨£ |
tl_on_press equ dword[edi+96] ;㪠§ ⥫ì äãªæ¨î, ª®â®à ï ¢ë§ë¢ ¥âáï ¯à¨ ¦ ⨨ Enter |
tl_box_left equ dword[edi] |
tl_box_top equ dword[edi+ 4] |
tl_box_width equ dword[edi+ 8] |
tl_box_height equ dword[edi+12] |
tl_data_info equ dword[edi+16] ;㪠§ â¥«ì ®á®¢ë¥ ¤ ë¥ |
tl_info_size equ word[edi+20] ;à §¬¥à ¤ ëå ¢ë¤¥«ï¥¬ëå ¤«ï ª ¦¤®£® 㧫 (¯®«ì§®¢ ⥫ìá쪨¥ ¤ ë¥ + ⥪áâ ¤«ï ¯®¤¯¨á¨) |
tl_info_max_count equ dword[edi+22] ;¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ 㧫®¢, ª®â®àë¥ ¬®¦® ¤®¡ ¢¨âì ¢ í«¥¬¥â |
tl_style equ dword[edi+26] ;á⨫¨ í«¥¬¥â |
tl_data_nodes equ dword[edi+30] ;㪠§ ⥫ì áâàãªâãàë 㧫®¢ |
tl_data_img equ dword[edi+34] ;㪠§ â¥«ì ¨§®¡à ¦¥¨ï á ¨ª®ª ¬¨ 㧫®¢ |
tl_img_cx equ word[edi+38] ;è¨à¨ ¨ª®®ª |
tl_img_cy equ word[edi+40] ;¢ëá®â ¨ª®®ª |
tl_data_img_sys equ dword[edi+42] ;㪠§ ⥫ì á¨áâ¥¬ë¥ ¨§®¡à ¦¥¨ï (áâ५ª¨, ¯«îᨪ¨) |
tl_ch_tim equ dword[edi+46] ;ª®«¨ç¥á⢮ ¨§¬¥¥¨© ¢ ä ©«¥ |
tl_tim_undo equ dword[edi+50] ;ª®«¨ç¥á⢮ ®â¬¥¥ëå ¤¥©á⢨© |
tl_cur_pos equ dword[edi+54] ;¯®§¨æ¨ï ªãàá®à |
tl_col_bkg equ dword[edi+58] ;梥â ä® |
tl_col_zag equ dword[edi+62] ;梥⠧ £®«®¢ª |
tl_col_txt equ dword[edi+66] ;梥â ⥪áâ |
tl_capt_cy equ word[edi+70] ;¢ëá®â ¯®¤¯¨á¨ |
tl_info_capt_offs equ word[edi+72] ;ᤢ¨£ ¤«ï ç « ⥪áâ (¯®¤¯¨á¨ 㧫 ) |
tl_info_capt_len equ word[edi+74] ;¤«¨ ⥪áâ ¯®¤¯¨á¨ 㧫 (¥á«¨ = 0 â® ¤® ª®æ áâàãªâãàë) |
tl_el_focus equ dword[edi+76] ;㪠§ ⥫ì áâàãªâãàã í«¥¬¥â ¢ 䮪ãᥠ|
tl_p_scroll equ dword[edi+80] ;㪠§ ⥫ì áâàãªâãàã áªà®««¨£ |
tl_on_press equ dword[edi+84] ;㪠§ ⥫ì äãªæ¨î, ª®â®à ï ¢ë§ë¢ ¥âáï ¯à¨ ¦ ⨨ Enter |
;data_info dd ? ;+ 0 㪠§ â¥«ì ®á®¢ë¥ ¤ ë¥ |
;ls_tim dd ? ;+34 ¢à¥¬ï ¯®á«¥¤¥£® á®åà ¥¨ï |
;on_activate dd ? ;+92 㪠§ ⥫ì äãªæ¨î ¯à¨ ªâ¨¢¨à®¢ ¨¨ 㧫 |
;ª®áâ âë á⨫ï |
tl_key_no_edit equ 1b ;í«¥¬¥â ¥«ì§ï । ªâ¨à®¢ âì ª« ¢¨ âãॠ(¨§¬¥ïâì ã஢¨, 㤠«ïâì) |
tl_draw_par_line equ 10b ;à¨á®¢ âì «¨¨¨ ª த¨â¥«ì᪮¬ã 㧫ã |
355,7 → 348,7 |
tl_err_load_info_size equ 100b ;¥ ᮢ¯ ¤ ¥â à §¬¥à ¨ä®à¬ 樮®© áâàãªâãàë ¯à¨ ®âªàë⨨ |
tl_load_mode_add equ 0x20000 ;®¯æ¨ï áç¨âë¢ ¨ï ¢ ०¨¬¥ ¤®¡ ¢«¥¨ï ¨ä®à¬ 樨 |
tl_save_load_heder_size equ 26 ;à §¬¥à § £®«®¢ª ¤«ï § ¯¨á¨/ç⥨ï í«¥¬¥â®¢ |
tl_offs_box equ 58 ; ç «® BOX áâàãªâãàë ¤«ï tree_list |
tl_offs_box equ 0 ; ç «® BOX áâàãªâãàë ¤«ï tree_list |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
;Basic macros for use TextEditor ; |
/programs/develop/libraries/box_lib/trunk/doc/tree_list/info_treelist.htm |
---|
76,10 → 76,7 |
<h2><a name="fun_add">tl_node_add</a></h2> |
<p>Äîáàâëÿåò óçåë, â ïîçèöèþ óêàçàííóþ êóðñîðîì. Ïðèìåð äîáàâëåíèÿ óçëà:</p> |
<pre> push dword tree1 |
push dword 0x10002 |
push dword data_buffer |
call dword[tl_node_add]</pre> |
<pre> stdcall dword[tl_node_add], tree1,0x10002,data_buffer</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>0x10002</b> - ïàðàìåòðû óçëà (ñòàðøèå áàéòû 0x0001 - èíäåêñ èêîíêè, îòîáðàæàåìîé âîçëå óçëà; ìåíüøèé áàéò 0x02 - óðîâåíü âëîæåíîñòè óçëà); <b>data_buffer</b> - óêàçàòåëü íà äûííûå, äîáàâëÿåìûå â óçåë.</p> |
89,8 → 86,7 |
<h2><a name="fun_get_d">tl_node_get_data</a></h2> |
<p>Áåðåò óêàçàòåëü íà äàííûå (ïîëüçîâàòåëüñêèå è ïîäïèñü) èç óçëà ïîä êóðñîðîì.</p> |
<p>Ïðèìåð 1:</p> |
<pre> stdcall [tl_node_get_data], tree1 |
pop eax</pre> |
<pre> stdcall [tl_node_get_data], tree1</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>eax</b> - óêàçàòåëü íà äûííûå óçëà.</p> |
98,14 → 94,14 |
<pre> NODE_SIZE equ 200 |
node_data rb NODE_SIZE |
......... |
push ecx esi edi |
push eax ecx esi edi |
stdcall [tl_node_get_data], tree1 |
pop esi |
mov esi,eax |
mov edi,node_data |
mov ecx,NODE_SIZE |
cld |
rep movsb |
pop edi esi ecx</pre> |
pop edi esi ecx eax</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>NODE_SIZE</b> - ðàçìåð äûííûõ óçëà; |
<b>node_data</b> - êîïèÿ íà äûííûõ óçëà.</p> |
146,34 → 142,25 |
<h2><a name="fun_poi_gi">tl_node_poi_get_info</a></h2> |
<p>Áåðåò âíóòðåííèé óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ óçåë. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:</p> |
<pre> push dword tree1 |
push dword 0 |
call dword[tl_node_poi_get_info] |
pop esi</pre> |
<pre> stdcall dword[tl_node_poi_get_info], tree1, 0</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>0</b> - ïîçèöèÿ óçëà, ñ êîòîðîãî áåðåòñÿ óêàçàòåëü; |
<b>esi</b> - óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ óçåë.</p> |
<b>eax</b> - óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ óçåë.</p> |
<p><b>Çàìå÷àíèå.</b> Åñëè óçåë ñ óêàçàííûì èíäåêñîì íå íàéäåí, â óêàçàòåëå âîçâðàùàåòñÿ 0.</p> |
<h2><a name="fun_poi_gni">tl_node_poi_get_next_info</a></h2> |
<p>Áåðåò óêàçàòåëü íà ñëåäóþùèé ýëåìåíò â öåïè, áåç ó÷åòà îòêðûòèÿ/çàêðûòèÿ äî÷åðíèõ óçëîâ. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:</p> |
<pre> push tree1 |
push esi |
call dword[tl_node_poi_get_next_info] |
pop esi ;ïåðåõîäèì ê ñëåäóùåìó óçëó</pre> |
<pre> stdcall dword[tl_node_poi_get_next_info], tree1, eax</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>esi</b> - äî âûçîâà ôóíêöèè óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ óçåë, ïîñëå âûçîâà óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ ñëåäóùèé óçåë â öåïè.</p> |
<b>eax</b> - äî âûçîâà ôóíêöèè óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ óçåë, ïîñëå âûçîâà óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ ñëåäóùèé óçåë â öåïè.</p> |
<p><b>Çàìå÷àíèå.</b> Åñëè ñëåäóùèé óçåë íå íàéäåí, â óêàçàòåëå âîçâðàùàåòñÿ 0.</p> |
<h2><a name="fun_poi_gd">tl_node_poi_get_data</a></h2> |
<p>Áåðåò óêàçàòåëü íà äàííûå (ïîëüçîâàòåëüñêèå è ïîäïèñü) èç óçëà óêàçàííîãî â óêàçàòåëå. Ïðèìåð èñïîëüçîâàíèÿ ôóíêöèè:</p> |
<pre> push dword tree1 |
push dword esi |
call dword[tl_node_poi_get_data] |
pop eax ;ïîëó÷àåì äàííûå óçëà</pre> |
<pre> stdcall dword[tl_node_poi_get_data], tree1,esi</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>esi</b> - óêàçàòåëü íà ñòðóêòóðó îïèñûâàþùóþ óçåë; |
<b>eax</b> - óêàçàòåëü íà äàííûå óçëà, îïèñààíîãî â esi.</p> |
<b>eax</b> - óêàçàòåëü íà äàííûå óçëà, îïèñàííîãî â esi.</p> |
<p>Óêàçàòåëü, âîçâðàùàåìûé ôóíêöèåé <i>tl_node_poi_get_data</i> àíàëîãè÷åí óêàçàòåëþ âîçâðàùàåìîìó ôóíêöèåé <i>tl_node_get_data</i>. Îòëè÷èå ôóíêöèé â òîì, ÷òî <i>tl_node_poi_get_data</i> ðàáîòàåò áåç çàäåéñòâîâàíèÿ êóðñîðà. Ôóíêöèÿìè <i>tl_node_poi_get_info</i>, <i>tl_node_poi_get_next_info</i> è <i>tl_node_poi_get_data</i> ìîæíî ñ÷èòûâàòü èíôîðìàöèþ î óçëàõ ýëåìåíòà, ïðè ýòîì íå ìåíÿÿ òåêóùåãî ïîëîæåíèÿ êóðñîðà. Ò. å. ìîæíî îðãàíèçîâàòü äîñòóï ê äàíûì ýëåìåíòà â "ôîíîâîì ðåæèìå".</p> |
<h2><a name="fun_sme">tl_save_mem</a></h2> |
181,12 → 168,7 |
<pre> MEM_SIZE equ 5000 |
node_data rb MEM_SIZE |
......... |
push dword tree1 |
push dword 0 |
push dword node_data |
push dword MEM_SIZE |
call dword[tl_save_mem] |
pop eax</pre> |
stdcall dword[tl_save_mem], tree1, 0, node_data, MEM_SIZE</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>0</b> - îïöèÿ ñîõðàíåíèÿ â íà÷àëî áëîêà ïàìÿòè (åñëè = 1, òî äîáàâëÿåò ýëåìåíò ïîñëå äðóãèõ ñîõðàíåííûõ ðàíåå); |
<b>node_data</b> - óêàçàòåëü íà áëîê ïàìÿòè; |
198,12 → 180,7 |
<pre> MEM_SIZE equ 5000 |
node_data rb MEM_SIZE |
......... |
push dword tree1 |
push dword 0 |
push dword node_data |
push dword MEM_SIZE |
call dword[tl_load_mem] |
pop eax</pre> |
stdcall dword[tl_load_mem], tree1, 0, node_data, MEM_SIZE</pre> |
<p>ãäå: <b>tree1</b> - ñòðóêòóðà tree_list; |
<b>0</b> - èíäåêñ ñ÷èòûâàåìîãî ýëåìåíòà; |
<b>node_data</b> - óêàçàòåëü íà áëîê ïàìÿòè; |
217,11 → 194,11 |
node_data rb MEM_SIZE |
......... |
;ñîõðàíÿåì äàííûå â 'node_data' |
stdcall dword[tl_save_mem], MEM_SIZE, node_data, 0, tree1 |
stdcall dword[tl_save_mem], tree1, 0, node_data, MEM_SIZE |
pop eax ;êîä îøèáêè |
......... |
;ïîëó÷àåì ðàçìåð äàííûõ â 'node_data' |
stdcall dword[tl_get_mem_size], node_data, tree1 |
stdcall dword[tl_get_mem_size], tree1, node_data |
pop ecx ;ðàçìåð äàííûõ, äîëæåí áûòü <= MEM_SIZE</pre> |
<h2><a name="version">version_tree_list</a></h2> |
230,36 → 207,33 |
<h1><a name="struc_tree_list">Ñòðóêòóðà tree_list</a></h1> |
<pre>struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
info_capt_len,el_focus, p_scrol,on_press |
info_capt_len,el_focus, p_scroll,on_press |
{ |
.data_info dd 0 |
.info_size dw info_size |
.info_max_count dd info_max_count |
.style dd style |
.data_nodes dd 0 |
.data_img dd 0 |
.img_cx dw img_cx |
.img_cy dw img_cy |
.data_img_sys dd 0 |
.ch_tim dd 0 |
.ls_tim dd 0 |
.tim_undo dd 0 |
.cur_pos dd 0 |
.col_bkg dd col_bkg |
.col_zag dd col_zag |
.col_txt dd col_txt |
.box_left dd box_l |
.box_top dd box_t |
.box_width dd box_w |
.box_height dd box_h |
.capt_cy dw capt_cy |
.info_capt_offs dw info_capt_offs |
.info_capt_len dw info_capt_len |
.el_focus dd el_focus |
.p_scrol dd p_scrol |
rb 4 |
.on_activate dd 0 |
.on_press dd on_press |
.box_left dd box_l |
.box_top dd box_t |
.box_width dd box_w |
.box_height dd box_h |
.data_info dd 0 |
.info_size dw info_size |
.info_max_count dd info_max_count |
.style dd style |
.data_nodes dd 0 |
.data_img dd 0 |
.img_cx dw img_cx |
.img_cy dw img_cy |
.data_img_sys dd 0 |
.ch_tim dd 0 |
.tim_undo dd 0 |
.cur_pos dd 0 |
.col_bkg dd col_bkg |
.col_zag dd col_zag |
.col_txt dd col_txt |
.capt_cy dw capt_cy |
.info_capt_offs dw info_capt_offs |
.info_capt_len dw info_capt_len |
.el_focus dd el_focus |
.p_scroll dd p_scroll |
.on_press dd on_press |
}</pre> |
<p><b>info_size</b> - êîëè÷åñòâî áàéò, êîòîðîå áóäåò âûäåëåíî äëÿ êàæäîãî óçëà. ×àñòü ýòîé ïàìÿòè ïîëüçîâàòåëü ìîæåò èñïîëüçîâàòü äëÿ ñâîèõ öåëåé (ðåãóëèðóåòñÿ ÷åðåç <i>info_capt_offs</i> è <i>info_capt_len</i> ñì. ðèñ. 2) à îñòàëüíàÿ ÷àñòü áóäåò èñïîëüçîâàíà êàê ïîäïèñü óçëà.</p> |
<p><b>info_max_count</b> - ìàêñèìàëüíîå êîëè÷åñòâî óçëîâ, êîòîðûå ìîæíî äîáàâèòü â ýëåìåíò.</p> |
274,7 → 248,7 |
<p><b>col_txt</b> - öâåò òåêñòà.</p> |
<p><b>capt_cy</b> - âûñîòà ñòðîêè äëÿ ïîäïèñè ââåðõó ýëåìåíòà, åñëè ìåíüøå 9 ïîäïèñü íå âûâîäèòñÿ.</p> |
<p><b>info_capt_len</b> - äëèííà òåêñòà äëÿ ïîäïèñè. Åñëè ðàâíî 0, òî äëèííà ñ÷èòàåòñÿ òàê: <i>info_size - info_capt_offs</i>.</p> |
<p><b>p_scrol</b> - óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà, ñâÿçàííîãî ñ äàííûì ýëåìåíòîì.</p> |
<p><b>p_scroll</b> - óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà, ñâÿçàííîãî ñ äàííûì ýëåìåíòîì.</p> |
<p><b>on_press</b> - óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ áóäåò âûçâàíà ïðè íàæàòèè [<b>Enter</b>]. Åñëè óêàçàòåëü ðàâåí 0 òî íè÷åãî íå áóäåò âûçûâàòüñÿ.</p> |
<p><img src="info_size.png"></p> |
294,6 → 268,6 |
<p>Ñòèëü íå îòîáðàæàåò óðîâíè (êàê â ListBox âñå óçëû îäíîãî óðîâíÿ).</p> |
<hr> |
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 30.09.10.</p> |
<p>Äîêóìåíòàöèÿ îáíîâëÿëàñü ïîñëåäíèé ðàç 10.11.15.</p> |
</body> |
</html> |
/programs/develop/libraries/box_lib/trunk/tree_list.mac |
---|
1,24 → 1,24 |
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
; ýëåìåíò TreeList äëÿ Kolibri OS |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 04.11.2015 IgorA |
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
; ¬ ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj |
; í«¥¬¥â TreeList ¤«ï Kolibri OS |
; ä ©« ¯®á«¥¤¨© à § ¨§¬¥ï«áï 10.11.2015 IgorA |
; ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï |
sizeof.TreeList equ 20 |
;struct TreeList |
; type dw ? ;+ 0 òèï ýëåìåíòà, èëè èíäåêñ èêîíêè äëÿ óçëà |
; lev db ? ;+ 2 óðîâåíü ýëåìåíòà |
; clo db ? ;+ 3 ôëàã çàêðûòèÿ, èëè îòêðûòèÿ (èìååò ñìûñë äëÿ ðîäèòåëüñêîãî óçëà) |
; perv dd ? ;+ 4 èíäåêñ ïðåäûäóùåãî ýëåìåíòà |
; next dd ? ;+ 8 èíäåêñ ïîñëåäóþùåãî ýëåìåíòà |
; tc dd ? ;+12 âðåì. ñîçäàíèÿ |
; td dd ? ;+16 âðåì. óäàëåíèÿ |
; type dw ? ;+ 0 ⨯ í«¥¬¥â , ¨«¨ ¨¤¥ªá ¨ª®ª¨ ¤«ï 㧫 |
; lev db ? ;+ 2 ã஢¥ì í«¥¬¥â |
; clo db ? ;+ 3 ä« £ § ªàëâ¨ï, ¨«¨ ®âªàëâ¨ï (¨¬¥¥â á¬ëá« ¤«ï த¨â¥«ì᪮£® 㧫 ) |
; perv dd ? ;+ 4 ¨¤¥ªá ¯à¥¤ë¤ã饣® í«¥¬¥â |
; next dd ? ;+ 8 ¨¤¥ªá ¯®á«¥¤ãî饣® í«¥¬¥â |
; tc dd ? ;+12 ¢à¥¬. ᮧ¤ ¨ï |
; td dd ? ;+16 ¢à¥¬. 㤠«¥¨ï |
;ends |
macro use_tree_list |
{ |
;âûäåëíèå ïàìÿòè äëÿ ñòðóêòóð ñïèñêà è îñíîâíîé èíôîðìàöèè (êîíñòðóêòîð) |
;¢ë¤¥«¨¥ ¯ ¬ï⨠¤«ï áâàãªâãà ᯨ᪠¨ ®á®¢®© ¨ä®à¬ 樨 (ª®áâàãªâ®à) |
align 4 |
proc tl_data_init uses eax ecx edi, tlist:dword |
mov edi,dword[tlist] |
27,22 → 27,22 |
mov cx,tl_info_size |
imul ecx,tl_info_max_count |
invoke mem.alloc,ecx |
mov tl_data_info,eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
mov tl_data_img,0 ;îáíóëÿåì óêàçàòåëü 'data_img' |
mov tl_data_img_sys,0 ;îáíóëÿåì óêàçàòåëü 'data_img_sys' |
mov tl_data_info,eax ;ª®¯¨à㥬 㪠§ â¥«ì ¯®«ãç¥ãî ¯ ¬ïâì ¢ áâàãªâãàã |
mov tl_data_img,0 ;®¡ã«ï¥¬ 㪠§ ⥫ì 'data_img' |
mov tl_data_img_sys,0 ;®¡ã«ï¥¬ 㪠§ ⥫ì 'data_img_sys' |
mov ecx,sizeof.TreeList |
imul ecx,tl_info_max_count |
invoke mem.alloc,ecx |
mov tl_data_nodes,eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
mov tl_data_nodes,eax ;ª®¯¨à㥬 㪠§ â¥«ì ¯®«ãç¥ãî ¯ ¬ïâì ¢ áâàãªâãàã |
stdcall tl_info_clear, edi |
;íàñòðîéêè äî÷åðíåãî ñêðîëëèíãà |
cmp tl_p_scrol,0 |
; áâனª¨ ¤®ç¥à¥£® áªà®««¨£ |
cmp tl_p_scroll,0 |
je @f |
mov eax,tl_p_scrol |
;*** öâåòîâûå íàñòðîéêè *** |
mov eax,tl_p_scroll |
;*** æ¢¥â®¢ë¥ áâனª¨ *** |
mov ecx,tl_col_bkg |
mov dword[eax+sb_offs_bckg_col],ecx |
mov ecx,tl_col_zag |
49,7 → 49,7 |
mov dword[eax+sb_offs_frnt_col],ecx |
mov ecx,tl_col_txt |
mov dword[eax+sb_offs_line_col],ecx |
;*** íàñòðîéêè ðàçìåðîâ *** |
;*** áâனª¨ à §¬¥à®¢ *** |
mov ecx,tl_box_left |
add ecx,tl_box_width |
mov word[eax+2],cx |
61,7 → 61,7 |
ret |
endp |
;î÷èñòêà ïàìÿòè ýëåìåíòà (äåñòðóêòîð) |
;®ç¨á⪠¯ ¬ïâ¨ í«¥¬¥â (¤¥áâàãªâ®à) |
align 4 |
proc tl_data_clear uses edi, tlist:dword |
;uses eax ??? |
68,11 → 68,11 |
mov edi,dword[tlist] |
cmp tl_data_img,0 |
je @f |
invoke mem.free,tl_data_img ;÷èñòêà ñèñòåìíûõ èêîíîê |
invoke mem.free,tl_data_img ;ç¨á⪠á¨á⥬ëå ¨ª®®ª |
@@: |
cmp tl_data_img_sys,0 |
je @f |
invoke mem.free,tl_data_img_sys ;÷èñòêà ñèñòåìíûõ èêîíîê |
invoke mem.free,tl_data_img_sys ;ç¨á⪠á¨á⥬ëå ¨ª®®ª |
@@: |
invoke mem.free,tl_data_info |
invoke mem.free,tl_data_nodes |
79,12 → 79,11 |
ret |
endp |
;î÷èñòêà ñïèñêà (èíôîðìàöèè) |
;®ç¨á⪠ᯨ᪠(¨ä®à¬ 樨) |
align 4 |
proc tl_info_clear uses eax ecx edi, tlist:dword |
mov edi,dword[tlist] |
mov tl_ch_tim,0 |
mov dword[edi+34],0 ;ls_tim |
mov tl_tim_undo,0 |
mov tl_cur_pos,0 |
mov ecx,sizeof.TreeList |
91,15 → 90,15 |
imul ecx,tl_info_max_count |
mov eax,tl_data_nodes |
@@: |
mov byte[eax],0 ;÷èñòèì óçëû 0-ìè |
mov byte[eax],0 ;ç¨á⨬ 㧫ë 0-¬¨ |
inc eax |
loop @b |
mov eax,tl_data_nodes ;óêàçàòåëü íà 0-é óçåë |
mov dword[eax+8],1 ;óêàçàòåëü next â 0-ì óçëå ïðèðàâíèâàåì ê 1 |
mov eax,tl_data_nodes ;㪠§ ⥫ì 0-© 㧥« |
mov dword[eax+8],1 ;㪠§ ⥫ì next ¢ 0-¬ 㧫¥ ¯à¨à ¢¨¢ ¥¬ ª 1 |
cmp tl_p_scrol,0 ;îáðàáîòêà ñêðîëëèíãà |
cmp tl_p_scroll,0 ;®¡à ¡®âª áªà®««¨£ |
je @f |
mov eax,tl_p_scrol |
mov eax,tl_p_scroll |
mov dword[eax+sb_offs_position],0 |
call tb_scrol_resize |
@@: |
106,7 → 105,7 |
ret |
endp |
;ðåàêöèÿ íà êëàâèàòóðó |
;ॠªæ¨ï ª« ¢¨ âãàã |
align 4 |
proc tl_key uses ebx ecx edi, tlist:dword |
mov edi,dword[tlist] |
113,13 → 112,13 |
mov ebx,tl_el_focus |
cmp dword[ebx],edi |
jne .no_focus ;ýëåìåíò íå â ôîêóñå |
jne .no_focus ;í«¥¬¥â ¥ ¢ 䮪ãᥠ|
push eax |
mcall 66,2 ;ïîëó÷èòü ðåæèì ââîäà ñ êëàâèàòóðû |
mcall 66,2 ;¯®«ãç¨âì ०¨¬ ¢¢®¤ á ª« ¢¨ âãàë |
lea ecx,[tl_key_scan] |
cmp eax,1 ;1 = ñêàíêîäû |
cmp eax,1 ;1 = ᪠ª®¤ë |
je @f |
lea ecx,[tl_key_ascii] |
@@: |
179,33 → 178,33 |
ret |
endp |
;ðåàêöèÿ íà ìûøü |
;ॠªæ¨ï ¬ëèì |
align 4 |
proc tl_mouse, tlist:dword |
pushad |
mov edi,dword[tlist] |
mcall 37,1 ;êîîðäèíàòû ìûøè îòíîñèòåëüíî îêíà |
mcall 37,1 ;ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® ®ª |
mov ebx,tl_box_left |
shl ebx,16 |
cmp eax,ebx ;ëåâàÿ ãðàíèöà îêíà |
jl .no_in_wnd ;.test_scroll íå ïðèìåíÿåì |
cmp eax,ebx ;«¥¢ ï £à ¨æ ®ª |
jl .no_in_wnd ;.test_scroll ¥ ¯à¨¬¥ï¥¬ |
shr ebx,16 |
add ebx,tl_box_width |
shl ebx,16 |
cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
cmp eax,ebx ;¯à ¢ ï £à ¨æ ®ª |
jg .test_scroll |
mov ebx,tl_box_top |
add ebx,tl_box_height |
cmp ax,bx ;íèæíÿÿ ãðàíèöà îêíà |
cmp ax,bx ;¨¦ïï £à ¨æ ®ª |
jg .test_scroll |
sub ebx,tl_box_height |
add bx,tl_capt_cy |
cmp ax,bx ;âåðõíÿÿ ãðàíèöà îêíà + âûñîòà ïîäïèñè |
cmp ax,bx ;¢¥àåïï £à ¨æ ®ª + ¢ëá®â ¯®¤¯¨á¨ |
jl .test_scroll |
push eax ebx |
229,10 → 228,10 |
xor ecx,ecx |
mov cx,tl_img_cy |
div ecx |
cmp tl_p_scrol,0 ;ó÷èòûâàåì ñêðîëëèíã |
cmp tl_p_scroll,0 ;ãç¨âë¢ ¥¬ áªà®««¨£ |
je @f |
mov edx,tl_p_scrol |
add eax,dword[edx+sb_offs_position] ;äîáàâëÿåì ñêðîëëèíã íà âåðõó |
mov edx,tl_p_scroll |
add eax,dword[edx+sb_offs_position] ;¤®¡ ¢«ï¥¬ áªà®««¨£ ¢¥àåã |
@@: |
mov ecx,eax |
239,15 → 238,15 |
call tl_get_node_count ;eax = node count |
cmp eax,ecx |
jl @f |
mov eax,ecx ;åñëè êóðñîð íå âûøåë çà ïðåäåëû óçëîâ, âîññòàíàâëèâàåì ñòàðîå çíà÷åíèå eax |
mov eax,ecx ;¥á«¨ ªãàá®à ¥ ¢ë襫 § ¯à¥¤¥«ë 㧫®¢, ¢®ááâ ¢«¨¢ ¥¬ áâ ஥ § 票¥ eax |
@@: |
cmp eax,tl_cur_pos ;åñëè íîâîå çíà÷åíèå êóðñîðà ñîâïàëî ñ ïðåäûäóùèì |
je @f ;òî íå ñòèðàåì êóðñîð |
cmp eax,tl_cur_pos ;¥á«¨ ®¢®¥ § 票¥ ªãàá®à ᮢ¯ «® á ¯à¥¤ë¤ã騬 |
je @f ;â® ¥ áâ¨à ¥¬ ªãàá®à |
push esi |
mov esi,tl_box_top |
add esi,tl_box_height ;esi = coord bottom border |
call tl_draw_null_cursor ;ñòèðàåì êóðñîð |
call tl_draw_null_cursor ;áâ¨à ¥¬ ªãàá®à |
pop esi |
@@: |
256,15 → 255,15 |
; if '+' or '-' press |
call tl_get_cur_node_index ;eax = node index |
cmp eax,2 |
jl .no_open_close ;êóðñîð ñòîèò íà ïóñòîì ìåñòå, áåç óçëîâ |
jl .no_open_close ;ªãàá®à á⮨⠯ãá⮬ ¬¥áâ¥, ¡¥§ 㧫®¢ |
imul eax,sizeof.TreeList |
add eax,tl_data_nodes |
xor bx,bx |
mov bl,byte[eax+2] ;+2 lev ñîõðàíÿåì óðîâåíü òåêóùåãî óçëà |
inc bx ;+ ïîëå äëÿ êóðñîðà |
mov bl,byte[eax+2] ;+2 lev á®åà 塞 ã஢¥ì ⥪ã饣® 㧫 |
inc bx ;+ ¯®«¥ ¤«ï ªãàá®à |
cmp si,tl_img_cx |
jl .no_open_close ;ìûøåé ïîïàëè íà ëåâîå ïîëå äëÿ êóðñîðà, ãäå òî÷íî íåò '+' è '-' |
jl .no_open_close ;¬ë襩 ¯®¯ «¨ «¥¢®¥ ¯®«¥ ¤«ï ªãàá®à , £¤¥ â®ç® ¥â '+' ¨ '-' |
mov eax,esi |
xor edx,edx |
xor ecx,ecx |
279,45 → 278,45 |
mov esi,tl_box_top |
add esi,tl_box_height ;esi = coord bottom border |
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
call tl_draw_caption_cur_pos |
jmp .no_draw |
;--- mouse event for children scrollbar ---------------------------------------- |
.test_scroll: |
mov edx,tl_p_scrol |
mov edx,tl_p_scroll |
cmp edx,0 |
je .no_in_wnd ;ïîëüçîâàòåëü íå ñîçäàë äî÷åðíåãî ñêðîëëèíãà |
je .no_in_wnd ;¯®«ì§®¢ â¥«ì ¥ ᮧ¤ « ¤®ç¥à¥£® áªà®««¨£ |
shr ebx,16 |
add bx,word[edx] ;+0 .size_x |
shl ebx,16 |
cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
cmp eax,ebx ;¯à ¢ ï £à ¨æ ®ª |
jg .no_in_wnd |
mov eax,dword[edx+sb_offs_max_area] |
cmp eax,dword[edx+sb_offs_cur_area] |
jbe .no_in_wnd ;âñå óçëû ïîïàäàþò â îêíî ñêðîëëèíãà |
jbe .no_in_wnd ;¢á¥ ã§«ë ¯®¯ ¤ îâ ¢ ®ª® áªà®««¨£ |
stdcall scroll_bar_vertical.mouse, edx ;scrollbar_ver_mouse |
cmp dword[edx+sb_offs_redraw],0 |
je @f |
mov dword[edx+sb_offs_redraw],0 |
stdcall tl_draw, edi ;ïðîèçîøëè èçìåíåíèÿ ñêðîëëèíãà |
stdcall tl_draw, edi ;¯à®¨§®è«¨ ¨§¬¥¥¨ï áªà®««¨£ |
@@: |
cmp dword[edx+sb_offs_delta2],0 |
jne .no_draw ;ïîïàëè íà ñêðîëëèíã - íå ñíèìàåì ôîêóñ ñ TreeList |
jne .no_draw ;¯®¯ «¨ áªà®««¨£ - ¥ ᨬ ¥¬ 䮪ãá á TreeList |
;------------------------------------------------------------------------------- |
.no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
mcall 37,2 ;ïðîâåðÿåì íàæàòîñòü ëþáûõ êíîïîê |
cmp eax,0 ;íè÷åãî íå íàæàëè eax=0 |
.no_in_wnd: ;¥ ¯®¯ «¨ ¢ ®ª® - ¯®â¥àï 䮪ãá (¯à¨ ãá«®¢¨¨ ç⮠䮪ãá ¡ë« ¤ ®¬ í¥«¥¬¥â¥) |
mcall 37,2 ;¯à®¢¥à塞 ¦ â®áâì «î¡ëå ª®¯®ª |
cmp eax,0 ;¨ç¥£® ¥ ¦ «¨ eax=0 |
je .no_draw |
mov ebx,tl_el_focus |
cmp dword[ebx],edi |
jne .no_draw ;ýëåìåíò íå â ôîêóñå |
jne .no_draw ;í«¥¬¥â ¥ ¢ 䮪ãᥠ|
mov dword[ebx],0 ;reset focus |
mov esi,tl_box_top |
add esi,tl_box_height ;esi = coord bottom border |
call tl_draw_cursor ;ðèñóåì êóðñîð ñ ïîòåðÿíûì ôîêóñîì |
call tl_draw_cursor ;à¨á㥬 ªãàá®à á ¯®â¥àïë¬ ä®ªãᮬ |
.no_draw: |
popad |
324,7 → 323,7 |
ret |
endp |
;îòìåíà äåéñòâèÿ |
;®â¬¥ ¤¥©á⢨ï |
align 4 |
proc tl_info_undo uses eax edi, tlist:dword |
mov edi,dword[tlist] |
332,12 → 331,12 |
cmp tl_ch_tim,eax |
jbe @f |
inc tl_tim_undo |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
@@: |
ret |
endp |
;ïîâòîð äåéñòâèÿ |
;¯®¢â®à ¤¥©á⢨ï |
align 4 |
proc tl_info_redo uses edi, tlist:dword |
mov edi,dword[tlist] |
344,13 → 343,13 |
cmp tl_tim_undo,1 |
jl @f |
dec tl_tim_undo |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
@@: |
ret |
endp |
;óäàëåíèå îòìåíåííûõ äåéñòâèé |
;âíóòðåííÿÿ ôóíêöèÿ, íå äëÿ ýêñïîðòà |
;㤠«¥¨¥ ®â¬¥¥ëå ¤¥©á⢨© |
;¢ãâà¥ïï äãªæ¨ï, ¥ ¤«ï íªá¯®àâ |
align 4 |
tl_info_set_undo: |
cmp tl_tim_undo,1 |
364,14 → 363,10 |
mov eax,tl_tim_undo |
sub tl_ch_tim,eax ;ch_tim-=tim_undo; |
mov eax,tl_ch_tim |
cmp [edi+34],eax ;if(ls_tim>ch_tim) |
jle @f |
mov dword[edi+34],0 ;ls_tim=0 |
@@: |
cmp edx,ecx |
jle @f |
;if(node[i].tc>ch_tim){ // åñëè ñîçäàíèå ñèìâîëà áûëî îòìåíåíî |
;if(node[i].tc>ch_tim){ // ¥á«¨ ᮧ¤ ¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
cmp dword[edx+12],eax |
jle .no_u1 |
mov dword[edx+12],0 |
391,7 → 386,7 |
.no_u1: |
;else if(node[i].td>ch_tim) node[i].td=0; // åñëè óäàëåíèå ñèìâîëà áûëî îòìåíåíî |
;else if(node[i].td>ch_tim) node[i].td=0; // ¥á«¨ 㤠«¥¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
cmp dword[edx+16],eax |
jle .no_u2 |
mov dword[edx+16],0 |
411,7 → 406,7 |
ret |
;âûâîä ñïèñêà íà ýêðàí |
;¢ë¢®¤ ᯨ᪠íªà |
align 4 |
proc tl_draw, tlist:dword |
pushad |
473,11 → 468,11 |
mov ecx,edx |
add ecx,sizeof.TreeList |
;*** ïðîïóñê óçëîâ, êîòîðûå ïðîìîòàíû ñêðîëëèíãîì *** |
cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
;*** ¯à®¯ã᪠㧫®¢, ª®â®àë¥ ¯à®¬®â ë áªà®««¨£®¬ *** |
cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
je .end_c1 |
mov esi,tl_p_scrol |
cmp dword[esi+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
mov esi,tl_p_scroll |
cmp dword[esi+sb_offs_position],0 ;¥á«¨ áªà®««¨£ ¢¥àåã, ¢ë室¨¬ |
je .end_c1 |
@@: |
call tl_iterat_next |
503,9 → 498,9 |
call tl_draw_cursor |
mov edi,tl_p_scrol ;ðèñóåì äî÷åðíèé ñêðîëëèíã |
cmp edi,0 ;äëÿ òîãî ÷òî-áû åãî íå ïðèøëîñü ðèñîâàòü â ïîëüçîâàòåëüñêîé ïðîãðàììå |
je .end_draw ;åñëè íåò ñêðîëëèíãà âûõîäèì |
mov edi,tl_p_scroll ;à¨á㥬 ¤®ç¥à¨© áªà®««¨£ |
cmp edi,0 ;¤«ï ⮣® çâ®-¡ë ¥£® ¥ ¯à¨è«®áì à¨á®¢ âì ¢ ¯®«ì§®¢ ⥫ì᪮© ¯à®£à ¬¬¥ |
je .end_draw ;¥á«¨ ¥â áªà®««¨£ ¢ë室¨¬ |
stdcall scroll_bar_vertical.draw, edi |
.end_draw: |
513,7 → 508,7 |
ret |
endp |
;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
;¯¥à¥å®¤ á«¥¤ã騩 ¢¨¤¨¬ë© 㧥« (¯à®¯ãáª ï § ªàëâë¥) |
;input: |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
537,10 → 532,10 |
call tl_move_next |
cmp edx,ecx |
jle @f |
call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
cmp al,1 |
je .beg0 |
cmp bl,byte[edx+2] ;ïðîïóñê çàêðûòûõ |
cmp bl,byte[edx+2] ;¯à®¯ã᪠§ ªàëâëå |
jl .beg0 |
@@: |
pop eax |
551,15 → 546,15 |
call tl_move_next |
cmp edx,ecx |
jle .endif |
cmp dword[edx+16],0 ;td = 'time delete' -> ïðîïóñê óäàëåííûõ |
cmp dword[edx+16],0 ;td = 'time delete' -> ¯à®¯ã᪠㤠«¥ëå |
jne .else |
cmp bl,byte[edx+2] ;ïðîïóñê çàêðûòûõ |
cmp bl,byte[edx+2] ;¯à®¯ã᪠§ ªàëâëå |
jl .else |
.endif: |
pop bx |
ret |
;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (è íà çàêðûòûå òîæå) |
;¯¥à¥å®¤ á«¥¤ã騩 ¢¨¤¨¬ë© 㧥« (¨ § ªàëâë¥ â®¦¥) |
;input: |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
591,7 → 586,7 |
.endif: |
ret |
;ïåðåõîä íà ïðåäûäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
;¯¥à¥å®¤ ¯à¥¤ë¤ã騩 ¢¨¤¨¬ë© 㧥« (¯à®¯ãáª ï § ªàëâë¥) |
;input: |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
606,7 → 601,7 |
call tl_move_perv |
cmp edx,ecx |
jle @f |
call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
cmp al,1 |
je .beg0 |
614,7 → 609,7 |
call tl_move_perv |
cmp edx,ecx |
jle @f |
cmp dword[edx+16],0 ;td = 'time delete' -> ïðîïóñê óäàëåííûõ |
cmp dword[edx+16],0 ;td = 'time delete' -> ¯à®¯ã᪠㤠«¥ëå |
jne .beg1 |
@@: |
622,7 → 617,7 |
pop eax |
ret |
;íàõîäèò ðîäèòåëüñêèé çàêðûòûé óçåë ìàêñèìàëüíîãî óðîâíÿ |
; 室¨â த¨â¥«ì᪨© § ªàëâë© ã§¥« ¬ ªá¨¬ «ì®£® ã஢ï |
;input: |
; edx = pointer to some node struct |
; edi = pointer to 'TreeList' struct |
634,7 → 629,7 |
xor ebx,ebx |
.beg: |
call tl_move_par |
cmp byte[edx+3],1 ;ðîäèòåëüñêèé óçåë çàêðûò ? |
cmp byte[edx+3],1 ;த¨â¥«ì᪨© 㧥« § ªàëâ ? |
jne @f |
mov eax,edx |
@@: |
654,10 → 649,10 |
; edx = pointer to next node struct |
align 4 |
tl_move_next: |
mov edx,dword[edx+8] |
imul edx,sizeof.TreeList |
add edx,tl_data_nodes |
ret |
mov edx,dword[edx+8] |
imul edx,sizeof.TreeList |
add edx,tl_data_nodes |
ret |
;input: |
; edx = pointer to some node struct |
666,12 → 661,12 |
; edx = pointer to perv node struct |
align 4 |
tl_move_perv: |
mov edx,dword[edx+4] |
imul edx,sizeof.TreeList |
add edx,tl_data_nodes |
ret |
mov edx,dword[edx+4] |
imul edx,sizeof.TreeList |
add edx,tl_data_nodes |
ret |
;ïåðåäâèãàåìñÿ íà ðîäèòåëüñêèé óçåë, åñëè òàêîãî íåò, òî îñòàâëÿåì ñòàðîå çíà÷åíèå óêàçàòåëÿ |
;¯¥à¥¤¢¨£ ¥¬áï த¨â¥«ì᪨© 㧥«, ¥á«¨ â ª®£® ¥â, â® ®áâ ¢«ï¥¬ áâ ஥ § 票¥ 㪠§ ⥫ï |
;input: |
; ecx = |
; edx = pointer to some node struct |
681,7 → 676,7 |
align 4 |
tl_move_par: |
cmp byte[edx+2],0 |
je .end_f ;óçåë 0-ãî óðîâíÿ íå ìîæåò áûòü äî÷åðíèì |
je .end_f ;㧥« 0-£® ãà®¢ï ¥ ¬®¦¥â ¡ëâì ¤®ç¥à¨¬ |
push eax ebx esi |
mov esi,edx ;copy node pointer (edx) |
mov bl,byte[edx+2] |
688,12 → 683,12 |
@@: |
call tl_move_perv |
cmp edx,ecx |
jle @f ;âñå âûøå ñòîÿùèå óçëû íå ðîäèòåëüñêèå |
call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
jle @f ;¢á¥ ¢ëè¥ áâ®ï騥 ã§«ë ¥ த¨â¥«ì᪨¥ |
call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
cmp al,1 |
je @b |
cmp byte[edx+2],bl |
jl .end_0 ;óäà÷íî íàøëè ðîäèòåëüñêèé óçåë |
jl .end_0 ;ã¤ ç® è«¨ த¨â¥«ì᪨© 㧥« |
jmp @b |
@@: |
mov esi,ebx ;restore node pointer |
702,7 → 697,7 |
.end_f: |
ret |
;ïðîâåðÿåò âèäèìûé ëè óêàçàííûé óçåë ñ ó÷åòîì: äîáàâëåíèé, óäàëåíèé, îòìåí äåéñòâèé |
;¯à®¢¥àï¥â ¢¨¤¨¬ë© «¨ 㪠§ ë© ã§¥« á ãç¥â®¬: ¤®¡ ¢«¥¨©, 㤠«¥¨©, ®â¬¥ ¤¥©á⢨© |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to 'TreeList' struct |
731,7 → 726,7 |
xor al,al |
ret |
;ðèñóåì êóðñîð íà ýêðàíå |
;à¨á㥬 ªãàá®à íªà ¥ |
;input: |
; edi = pointer to TreeInfo struct |
; esi = coord bottom border |
739,9 → 734,9 |
proc tl_draw_cursor uses eax ebx ecx edx esi |
call tl_get_display_cur_pos ;eax = cursor pos in screen |
cmp eax,0 |
jl .end_f ;êóðñîð íàõîäèòñÿ âûøå îêíà, â îáëàñòè ïðîêðó÷åííîé ñêðîëëèíãîì |
jl .end_f ;ªãàá®à 室¨âáï ¢ëè¥ ®ª , ¢ ®¡« á⨠¯à®ªàã祮© áªà®««¨£®¬ |
cmp tl_data_img_sys,0 ;ñìîòðèì åñòü ëè óêàçàòåëü íà êàðòèíêó ñèñòåìíûõ èêîíîê |
cmp tl_data_img_sys,0 ;ᬮâਬ ¥áâì «¨ 㪠§ â¥«ì ª à⨪ã á¨á⥬ëå ¨ª®®ª |
jne @f |
mov ebx,tl_box_left |
shl ebx,16 |
753,7 → 748,7 |
add cx,tl_capt_cy |
;crop image if on the border |
cmp esi,ecx ;åñëè êóðñîð âíèçó è åãî âîîáùå íå âèäíî |
cmp esi,ecx ;¥á«¨ ªãàá®à ¢¨§ã ¨ ¥£® ¢®®¡é¥ ¥ ¢¨¤® |
jl .end_f |
sub esi,ecx |
761,11 → 756,11 |
mov cx,tl_img_cy |
cmp si,tl_img_cy |
jge .crop0 |
mov cx,si ;åñëè êóðñîð âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
.crop0: |
mov edx,tl_col_txt |
mcall 13 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê, ò.ê. íåò ñèñòåìíûõ èêîíîê |
mcall 13 ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì¨ª, â.ª. ¥â á¨á⥬ëå ¨ª®®ª |
jmp .end_f |
@@: |
mov ebx,tl_data_img_sys |
776,10 → 771,10 |
add edx,tl_box_top |
add dx,tl_capt_cy |
mov ecx,tl_el_focus ;ïðîâåðÿåì â ôîêóñå ýëåìåíò èëè íåò |
mov ecx,tl_el_focus ;¯à®¢¥à塞 ¢ 䮪ãá¥ í«¥¬¥â ¨«¨ ¥â |
cmp dword[ecx],edi |
je .focus |
;åñëè íå â ôîêóñå ñäâèãàåì êîîðäèíàòû íà èêîíêó íå àêòèâíîãî êóðñîðà |
;¥á«¨ ¥ ¢ 䮪ãᥠᤢ¨£ ¥¬ ª®®à¤¨ âë ¨ª®ªã ¥ ªâ¨¢®£® ªãàá®à |
xor eax,eax |
xor ecx,ecx |
mov cx,tl_img_cx |
794,21 → 789,21 |
mov cx,tl_img_cy |
;crop image if on the border |
cmp si,dx ;åñëè êóðñîð âíèçó è åãî âîîáùå íå âèäíî |
cmp si,dx ;¥á«¨ ªãàá®à ¢¨§ã ¨ ¥£® ¢®®¡é¥ ¥ ¢¨¤® |
jl .end_f |
sub si,dx |
cmp si,tl_img_cy |
jge .crop1 |
mov cx,si ;åñëè êóðñîð âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
.crop1: |
mcall 7 ;ðèñóåì èêîíêó êóðñîðà |
mcall 7 ;à¨á㥬 ¨ª®ªã ªãàá®à |
.end_f: |
ret |
endp |
;ñòèðàåì êóðñîð íà ýêðàíå |
;áâ¨à ¥¬ ªãàá®à íªà ¥ |
;input: |
; edi = pointer to TreeInfo struct |
; esi = coord bottom border |
816,7 → 811,7 |
proc tl_draw_null_cursor uses eax ebx ecx edx esi |
call tl_get_display_cur_pos ;eax = cursor pos in screen |
cmp eax,0 |
jl .end_f ;êóðñîð íàõîäèòñÿ âûøå îêíà, â îáëàñòè ïðîêðó÷åííîé ñêðîëëèíãîì |
jl .end_f ;ªãàá®à 室¨âáï ¢ëè¥ ®ª , ¢ ®¡« á⨠¯à®ªàã祮© áªà®««¨£®¬ |
mov ebx,tl_box_left |
shl ebx,16 |
828,7 → 823,7 |
add cx,tl_capt_cy |
;crop image if on the border |
cmp esi,ecx ;åñëè êóðñîð âíèçó è åãî âîîáùå íå âèäíî |
cmp esi,ecx ;¥á«¨ ªãàá®à ¢¨§ã ¨ ¥£® ¢®®¡é¥ ¥ ¢¨¤® |
jl .end_f |
sub esi,ecx |
836,17 → 831,17 |
mov cx,tl_img_cy |
cmp si,tl_img_cy |
jge @f |
mov cx,si ;åñëè êóðñîð âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
@@: |
mov edx,tl_col_bkg |
mcall 13 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê ñ ôîíîâûì öâåòîì |
mcall 13 ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì¨ª á ä®®¢ë¬ 梥⮬ |
.end_f: |
ret |
endp |
;áåðåò ïîçèöèþ êóðñîðà, îòíîñèòåëüíî ýêðàíà |
;¡¥à¥â ¯®§¨æ¨î ªãàá®à , ®â®á¨â¥«ì® íªà |
;input: |
; edi = pointer to TreeInfo struct |
;output: |
854,17 → 849,17 |
align 4 |
tl_get_display_cur_pos: |
mov eax,tl_cur_pos |
cmp tl_p_scrol,0 |
cmp tl_p_scroll,0 |
je @f |
push ebx |
mov ebx,tl_p_scrol |
mov ebx,tl_p_scroll |
mov ebx,dword[ebx+sb_offs_position] |
sub eax,ebx ;îòíèìàåì ïîçèöèþ ñêðîëëèíãà |
sub eax,ebx ;®â¨¬ ¥¬ ¯®§¨æ¨î áªà®««¨£ |
pop ebx |
@@: |
ret |
;ðèñóåò óçåë ñ: êàðòèíêîé, ïîäïèñüþ, èêîíêîé îòêðûòèÿ/çàêðûòèÿ è ëèíèÿìè ê ðîäèò. óçëó |
;à¨áã¥â 㧥« á: ª à⨪®©, ¯®¤¯¨áìî, ¨ª®ª®© ®âªàëâ¨ï/§ ªàëâ¨ï ¨ «¨¨ï¬¨ ª த¨â. 㧫ã |
;input: |
; eax = node position |
; edx = pointer to some node struct |
872,11 → 867,11 |
; esi = coord of bottom border |
align 4 |
proc tl_draw_node uses eax ebx ecx edx esi |
mov ebx,1 ;1 - ìåñòî ïîä êóðñîð |
mov ebx,1 ;1 - ¬¥áâ® ¯®¤ ªãàá®à |
bt tl_style,2 ;tl_list_box_mode |
jc @f |
inc ebx ;+1 - ìåñòî ïîä çíàê +,- |
add bl,byte[edx+2] ;äîáàâëÿåì óðîâåíü ýëåìåíòà äëÿ åãî ó÷åòà â ëåâîì îòñòóïå èêîíêè |
inc ebx ;+1 - ¬¥áâ® ¯®¤ § ª +,- |
add bl,byte[edx+2] ;¤®¡ ¢«ï¥¬ ã஢¥ì í«¥¬¥â ¤«ï ¥£® ãç¥â ¢ «¥¢®¬ ®âáâ㯥 ¨ª®ª¨ |
@@: |
imul bx,tl_img_cx |
add ebx,tl_box_left |
890,7 → 885,7 |
add cx,tl_capt_cy |
;crop image if on the border |
cmp esi,ecx ;åñëè óçåë âíèçó è åãî âîîáùå íå âèäíî |
cmp esi,ecx ;¥á«¨ 㧥« ¢¨§ã ¨ ¥£® ¢®®¡é¥ ¥ ¢¨¤® |
jl .end_draw |
sub esi,ecx |
898,8 → 893,8 |
mov cx,tl_img_cy |
cmp si,tl_img_cy |
jge @f |
mov cx,si ;åñëè óçåë âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
jmp .crop ;ïðîïóñêàåì ðèñîâàíèå íàäïèñè, êîòîðàÿ ñêîðåå âñåãî òîæå âûëåçåò çà íèæíþþ ãðàíèöó |
mov cx,si ;¥á«¨ 㧥« ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
jmp .crop ;¯à®¯ã᪠¥¬ à¨á®¢ ¨¥ ¤¯¨á¨, ª®â®à ï ᪮॥ ¢á¥£® ⮦¥ ¢ë«¥§¥â § ¨¦îî £à ¨æã |
@@: |
call tl_draw_node_caption |
.crop: |
941,18 → 936,18 |
dec ah |
.close: |
call tl_draw_node_icon_opn_clo ;ðèñîâàíèå èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà |
call tl_draw_node_icon_opn_clo ;à¨á®¢ ¨¥ ¨ª®ª¨ ®âªàë⮣® ¨«¨ § ªàë⮣® 㧫 |
bt tl_style,1 |
jae .end_draw |
call tl_draw_node_icon_par_lin ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
call tl_draw_node_icon_par_lin_up ;ðèñîâàíèå âåðòèêàëüíîé ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
call tl_draw_node_icon_par_lin ;à¨á®¢ ¨¥ «¨¨¨ ª த¨â¥«ì᪮¬ã í«¥¬¥âã |
call tl_draw_node_icon_par_lin_up ;à¨á®¢ ¨¥ ¢¥à⨪ «ì®© «¨¨¨ ª த¨â¥«ì᪮¬ã í«¥¬¥âã |
.end_draw: |
ret |
endp |
;ðèñóåò èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà (îáû÷íî + èëè -) |
;à¨áã¥â ¨ª®ª¨ ®âªàë⮣® ¨«¨ § ªàë⮣® 㧫 (®¡ëç® + ¨«¨ -) |
;input: |
; al = óðîâåíü ýëåìåíòà |
; al = ã஢¥ì í«¥¬¥â |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
;... |
992,9 → 987,9 |
ret |
endp |
;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
;à¨á®¢ ¨¥ «¨¨¨ ª த¨â¥«ì᪮¬ã í«¥¬¥âã |
;input: |
; al = óðîâåíü ýëåìåíòà |
; al = ã஢¥ì í«¥¬¥â |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
;... |
1051,7 → 1046,7 |
;input: |
; al = óðîâåíü ýëåìåíòà |
; al = ã஢¥ì í«¥¬¥â |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
; edi = pointer to 'TreeList' struct |
1064,8 → 1059,8 |
cmp al,0 |
je @f |
xor esi,esi ;â si áóäåì íàñ÷èòûâàòü êîë-âî èêîíîê, íóæíûõ äëÿ ïðîðèñîâêè ëèíèè |
;--- öèêë äëÿ âû÷èñëåíèÿ êîëëè÷åñòâà âåðòèêàëüíûõ ëèíèé --- |
xor esi,esi ;¢ si ¡ã¤¥¬ áç¨âë¢ âì ª®«-¢® ¨ª®®ª, ã¦ëå ¤«ï ¯à®à¨á®¢ª¨ «¨¨¨ |
;--- 横« ¤«ï ¢ëç¨á«¥¨ï ª®««¨ç¥á⢠¢¥à⨪ «ìëå «¨¨© --- |
.cycle0: |
call tl_iterat_perv ;get perv visible item |
cmp edx,ecx |
1072,11 → 1067,11 |
jle .cycle1 ;if begin of list |
cmp byte[edx+2],al |
jle .cycle0end ;óðîâåíü âåðõíåãî ýëåìåíòà íå òðåáóåò ïðîðèñîâêè |
jle .cycle0end ;ã஢¥ì ¢¥à奣® í«¥¬¥â ¥ âॡã¥â ¯à®à¨á®¢ª¨ |
inc si |
jmp .cycle0 |
.cycle0end: |
cmp si,0 ;si = êîë-âî èêîíîê ëèíèè êîòîðûå íóæíî íàðèñîâàòü ñâåðõó |
cmp si,0 ;si = ª®«-¢® ¨ª®®ª «¨¨¨ ª®â®àë¥ ã¦® à¨á®¢ âì ᢥàåã |
je @f |
shl esi,16 |
1099,17 → 1094,17 |
add ebx,tl_data_img_sys |
add esi,tl_box_top |
add si,tl_capt_cy ;si = âåðõíÿÿ ãðàíèöà îêíà |
add si,tl_capt_cy ;si = ¢¥àåïï £à ¨æ ®ª |
mov eax,7 |
;--- öèêë äëÿ ðèñîâàíèÿ âåðòèêàëüíîé ëèíèè --- |
;--- 横« ¤«ï à¨á®¢ ¨ï ¢¥à⨪ «ì®© «¨¨¨ --- |
.cycle1: |
sub dx,tl_img_cy ;ïîäíèìàåì êîîðäèíàòó y ââåðõ |
sub dx,tl_img_cy ;¯®¤¨¬ ¥¬ ª®®à¤¨ âã y ¢¢¥àå |
cmp dx,si |
jl @f |
cmp esi,0x10000 |
jl @f |
int 0x40 ;draw line icon |
sub esi,0x10000 ;óìåíüøàåì ñ÷åò÷èê èêîíîê |
sub esi,0x10000 ;㬥ìè ¥¬ áç¥â稪 ¨ª®®ª |
jmp .cycle1 |
@@: |
pop esi |
1134,8 → 1129,8 |
;input: |
; eax = node position |
; ebx = [êîîðäèíàòà ïî îñè x]*65536 + [img_cx] |
; ecx = [êîîðäèíàòà ïî îñè y]*65536 + [img_cy] |
; ebx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [img_cx] |
; ecx = [ª®®à¤¨ â ¯® ®á¨ y]*65536 + [img_cy] |
; edx = pointer to some node struct |
; edi = pointer to TreeInfo struct |
align 4 |
1156,8 → 1151,8 |
mov edx,esi |
shr ebx,16 |
add bx,tl_img_cx ;ñäâèãàåì íàäïèñü ïî ãîðèçîíòàëè ---> |
add bx,3 ;îòñòóï |
add bx,tl_img_cx ;ᤢ¨£ ¥¬ ¤¯¨áì ¯® £®à¨§®â «¨ ---> |
add bx,3 ;®âáâ㯠|
;bx = coord. x |
call tl_strlen ;eax = strlen |
call tl_get_draw_text_len |
1164,8 → 1159,8 |
mov cx,bx |
ror ecx,16 |
mov ebx,ecx |
add bx,tl_img_cy ;âûðàâíèâèíèå ïî íèæíåé ãðàíèöå èêîíêè |
sub bx,9 ;îòíèìàåì âûñîòó òåêñòà |
add bx,tl_img_cy ;¢ëà ¢¨¢¨¨¥ ¯® ¨¦¥© £à ¨æ¥ ¨ª®ª¨ |
sub bx,9 ;®â¨¬ ¥¬ ¢ëá®âã ⥪áâ |
mov ecx,tl_col_txt |
and ecx,0xffffff |
; or ecx,0x80000000 ;text is ASCIIZ |
1182,20 → 1177,20 |
align 4 |
tl_get_draw_text_len: |
push eax ecx edx |
mov esi,eax ;áåðåì äëèííó ñòðîêè |
mov esi,eax ;¡¥à¥¬ ¤«¨ã áâப¨ |
mov eax,tl_box_left |
add eax,tl_box_width |
cmp eax,ebx |
jle .text_null ;åñëè ïîäïèñü ïîëíîñòüþ âñÿ çà ýêðàíîì |
jle .text_null ;¥á«¨ ¯®¤¯¨áì ¯®«®áâìî ¢áï § íªà ®¬ |
sub eax,ebx |
xor edx,edx |
mov ecx,6 ;øèðèíà ñèñòåìíîãî øðèôòà |
div ecx ;ñìîòðèì ñêîëüêî ñèìâîëîâ ìîæåò ïîìåñòèòüñÿ íà ýêðàíå |
mov ecx,6 ;è¨à¨ á¨á⥬®£® èà¨äâ |
div ecx ;ᬮâਬ ᪮«ìª® ᨬ¢®«®¢ ¬®¦¥â ¯®¬¥áâ¨âìáï íªà ¥ |
cmp esi,eax |
jl @f |
mov esi,eax ;åñëè äëèííà òåêñòà ìåíüøå, ÷åì âñå ìåñòî ïîä ñòðîêó |
mov esi,eax ;¥á«¨ ¤«¨ ⥪áâ ¬¥ìè¥, 祬 ¢á¥ ¬¥áâ® ¯®¤ áâபã |
jmp @f |
.text_null: |
xor esi,esi |
1219,13 → 1214,13 |
sub eax,esi |
ret |
;äîáàâèòü óçåë |
;¤®¡ ¢¨âì 㧥« |
;input: |
; tlist - óêàçàòåëü íà ñòðóêòóðó ëèñòà |
; n_opt - îïöèè äîáàâëåíèÿ |
; n_info - óêàçàòåëü íà äîáàâëÿåìûå äàííûå |
; tlist - 㪠§ ⥫ì áâàãªâãàã «¨áâ |
; n_opt - ®¯æ¨¨ ¤®¡ ¢«¥¨ï |
; n_info - 㪠§ â¥«ì ¤®¡ ¢«ï¥¬ë¥ ¤ ë¥ |
align 4 |
proc tl_node_add uses eax ebx ecx edx edi, n_info:dword, n_opt:dword, tlist:dword |
proc tl_node_add uses eax ebx ecx edx edi, tlist:dword, n_opt:dword, n_info:dword |
mov edi,dword[tlist] |
call tl_info_set_undo |
1286,7 → 1281,7 |
mov cx,tl_info_capt_offs |
cmp cx,tl_info_size |
jge .no_text_data |
cmp tl_info_capt_len,0 ;ïðîâåðÿåì åñòü ëè îãðàíè÷åíèå íà äëèííó ñòðîêè |
cmp tl_info_capt_len,0 ;¯à®¢¥à塞 ¥áâì «¨ ®£à ¨ç¥¨¥ ¤«¨ã áâப¨ |
je .no_len_ogran |
add cx,tl_info_capt_len |
and ecx,0xffff |
1310,13 → 1305,13 |
cmp eax,tl_info_max_count |
jge .u0 |
mov [ecx],eax ;node[po_t].next=i; // ññûëêè ïåðåíàïðàâëÿåì |
mov [ecx],eax ;node[po_t].next=i; // áá뫪¨ ¯¥à¥ ¯à ¢«ï¥¬ |
mov ecx,[edx+8] ; *** ecx = node[i].next *** |
imul ecx,sizeof.TreeList |
add ecx,tl_data_nodes ; *** ecx = node[node[i].next] *** |
mov [ecx+4],eax ;node[node[i].next].perv=i; |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
jmp @f |
.u0: |
add edx,sizeof.TreeList |
1330,7 → 1325,7 |
; edi = pointer to TreeInfo struct |
align 4 |
proc tb_scrol_resize uses eax ecx edx |
cmp tl_p_scrol,0 ;îáðàáîòêà ñêðîëëèíãà |
cmp tl_p_scroll,0 ;®¡à ¡®âª áªà®««¨£ |
je @f |
call tl_get_node_count ;eax = node count |
mov ecx,eax |
1340,7 → 1335,7 |
xor ecx,ecx |
.ye_sb: |
mov edx,tl_p_scrol |
mov edx,tl_p_scroll |
mov dword[edx+sb_offs_cur_area],eax |
mov dword[edx+sb_offs_max_area],ecx |
stdcall scroll_bar_vertical.draw,edx |
1351,7 → 1346,7 |
;input: |
;n_info - pointer to node info |
align 4 |
proc tl_node_set_data uses eax ecx edx edi esi, n_info:dword, tlist:dword |
proc tl_node_set_data uses eax ecx edx edi esi, tlist:dword, n_info:dword |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
1369,7 → 1364,7 |
mov cx,tl_info_capt_offs |
cmp cx,tl_info_size |
jge .no_text_data |
mov ax,tl_info_capt_len ;ïðîâåðÿåì åñòü ëè îãðàíè÷åíèå íà äëèííó òåêñòà |
mov ax,tl_info_capt_len ;¯à®¢¥à塞 ¥áâì «¨ ®£à ¨ç¥¨¥ ¤«¨ã ⥪áâ |
cmp ax,0 |
je .no_limit |
add cx,ax ;cx = tl_info_capt_offs + tl_info_capt_len |
1377,12 → 1372,12 |
xor eax,eax |
mov ax,tl_info_size |
cmp eax,ecx |
jl .no_limit ;ïîëüçîâàòåëü çàäàë ñëèøêîì áîëüøóþ äëèííó òåêñòà |
jl .no_limit ;¯®«ì§®¢ â¥«ì § ¤ « ᫨誮¬ ¡®«ìèãî ¤«¨ã ⥪áâ |
add esi,ecx |
sub esi,eax |
.no_limit: |
dec esi |
mov byte[esi],0 ;îáíóëÿåì ïîñëåäíèé ñèìâîë ïîäïèñè, ÷òî-áû íå ãëþ÷èëî åñëè ïîëüçîâàòåëü çàäàë íåïðàâèëüíóþ ñòðóêòóðó |
mov byte[esi],0 ;®¡ã«ï¥¬ ¯®á«¥¤¨© ᨬ¢®« ¯®¤¯¨á¨, çâ®-¡ë ¥ £«î稫® ¥á«¨ ¯®«ì§®¢ â¥«ì § ¤ « ¥¯à ¢¨«ìãî áâàãªâãàã |
.no_text_data: |
@@: |
1389,96 → 1384,90 |
ret |
endp |
;¢§ïâì 㪠§ â¥«ì ¤ ë¥ ã§« ¯®¤ ªãàá®à®¬ |
;input: |
;dword[ebp+ 8] - pointer to 'TreeList' struct |
; tlist - pointer to 'TreeList' struct |
;output: |
; eax - pointer to node data |
align 4 |
tl_node_get_data: ;âçÿòü óêàçàòåëü íà äàííûå óçëà ïîä êóðñîðîì |
push ebp |
mov ebp,esp |
push eax ecx edi |
mov edi,dword[ebp+8] |
call tl_get_cur_node_index ;eax=po_t |
mov dword[ebp+8],0 ;if return 0 pointer |
cmp eax,2 |
jl @f |
xor ecx,ecx |
mov cx,tl_info_size |
imul eax,ecx |
add eax,tl_data_info |
mov dword[ebp+8],eax ;return node data pointer |
@@: |
pop edi ecx eax |
pop ebp |
proc tl_node_get_data uses ecx edi, tlist:dword |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
movzx ecx,tl_info_size |
imul eax,ecx |
add eax,tl_data_info |
jmp .end_f ;return node data pointer |
@@: |
xor eax,eax |
.end_f: |
ret |
endp |
;¢§ïâì 㪠§ ⥫ì áâàãªâãàã 㧫 ¢ 㪠§ ®© ¯®§¨æ¨¨ |
;input: |
;dword[ebp+ 8] - node index |
;dword[ebp+12] - pointer to 'TreeList' struct |
; tlist - pointer to 'TreeList' struct |
; node_ind - node index |
;output: |
; eax - pointer to node info |
align 4 |
tl_node_poi_get_info: ;âçÿòü óêàçàòåëü íà ñòðóêòóðó óçëà â óêàçàííîé ïîçèöèè |
push ebp |
mov ebp,esp |
push eax ecx edx edi |
mov edi,dword[ebp+12] |
mov eax,dword[ebp+8] |
proc tl_node_poi_get_info uses ebx ecx edi, tlist:dword, node_ind:dword |
mov edi,dword[tlist] |
mov ebx,dword[node_ind] |
;cycle to nodes |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next_all |
cmp edx,ecx |
jle @f |
dec eax |
cmp eax,0 |
jg @b |
jmp .find |
@@: |
xor edx,edx |
.find: |
mov dword[ebp+12],edx |
pop edi edx ecx eax |
pop ebp |
ret 4 |
;cycle to nodes |
mov eax,tl_data_nodes |
mov ecx,eax |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next_all |
cmp eax,ecx |
jle @f |
dec ebx |
cmp ebx,0 |
jg @b |
jmp .find |
@@: |
xor eax,eax |
.find: |
ret |
endp |
;¢§ïâì 㪠§ ⥫ì á«¥¤ãéãî áâàãªâãàã 㧫 |
;input: |
;dword[ebp+ 8] - node param struct |
;dword[ebp+12] - pointer to 'TreeList' struct |
; tlist - pointer to 'TreeList' struct |
; node_p - node param struct |
;output: |
; eax - pointer to next node struct |
align 4 |
tl_node_poi_get_next_info: ;âçÿòü óêàçàòåëü íà ñëåäóùóþ ñòðóêòóðó óçëà |
push ebp |
mov ebp,esp |
push ecx edx edi |
mov edi,dword[ebp+12] |
mov edx,dword[ebp+8] |
proc tl_node_poi_get_next_info uses ecx edx edi, tlist:dword, node_p:dword |
mov edi,dword[tlist] |
mov edx,dword[node_p] |
mov ecx,tl_data_nodes |
add ecx,sizeof.TreeList |
mov ecx,tl_data_nodes |
add ecx,sizeof.TreeList |
call tl_iterat_next_all |
cmp edx,ecx |
jg @f |
xor edx,edx |
@@: |
call tl_iterat_next_all |
cmp edx,ecx |
jg @f |
xor edx,edx |
@@: |
mov eax,edx |
ret |
endp |
mov dword[ebp+12],edx |
pop edi edx ecx |
pop ebp |
ret 4 |
;¢§ïâì 㪠§ â¥«ì ¤ ë¥ ã§« |
;input: |
;dword[ebp+ 8] - node param struct |
;dword[ebp+12] - pointer to 'TreeList' struct |
; tlist - pointer to 'TreeList' struct |
; node_p - node param struct |
;output: |
; eax - pointer |
align 4 |
tl_node_poi_get_data: ;âçÿòü óêàçàòåëü íà äàííûå óçëà |
push ebp |
mov ebp,esp |
push eax ecx edx edi |
mov edi,dword[ebp+12] |
mov edx,dword[ebp+8] |
proc tl_node_poi_get_data uses ecx edx edi, tlist:dword, node_p:dword |
mov edi,dword[tlist] |
mov edx,dword[node_p] |
mov dword[ebp+12],0 |
call tl_get_node_index ;eax = node index |
cmp eax,2 |
jl @f |
1485,14 → 1474,15 |
xor ecx,ecx |
mov cx,tl_info_size |
imul eax,ecx |
add eax,dword[edi] |
mov dword[ebp+12],eax ;return node data pointer |
add eax,tl_data_info |
jmp .end_f ;return node data pointer |
@@: |
pop edi edx ecx eax |
pop ebp |
ret 4 |
xor eax,eax ;¢®§¢à é ¥¬ 0 ¢ á«ãç ¥ ¥ 㤠箣® ¯®¨áª |
.end_f: |
ret |
endp |
;áåðåò ïîçèöèþ ïîä êóðñîðîì |
;¡¥à¥â ¯®§¨æ¨î ¯®¤ ªãàá®à®¬ |
;input: |
; edi = pointer 'tl' struct |
;output: |
1499,29 → 1489,29 |
; eax = index of current node |
align 4 |
proc tl_get_cur_node_index uses ecx edx |
;cycle to nodes |
xor eax,eax |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next |
cmp edx,ecx |
jle @f |
cmp eax,tl_cur_pos |
je @f |
inc eax |
jmp @b |
@@: |
mov eax,edx |
sub eax,tl_data_nodes |
xor edx,edx |
mov ecx,sizeof.TreeList |
div ecx |
ret |
;cycle to nodes |
xor eax,eax |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next |
cmp edx,ecx |
jle @f |
cmp eax,tl_cur_pos |
je @f |
inc eax |
jmp @b |
@@: |
mov eax,edx |
sub eax,tl_data_nodes |
xor edx,edx |
mov ecx,sizeof.TreeList |
div ecx |
ret |
endp |
;áåðåò ïîçèöèþ óêàçàííîãî ñèìâîëà |
;¡¥à¥â ¯®§¨æ¨î 㪠§ ®£® ᨬ¢®« |
;input: |
; edx = pointer node memory |
; edi = pointer 'tl' struct |
1529,48 → 1519,48 |
; eax = struct index of current node |
align 4 |
tl_get_node_index: |
push ecx edx |
mov eax,edx |
sub eax,tl_data_nodes |
xor edx,edx |
mov ecx,sizeof.TreeList |
div ecx |
pop edx ecx |
ret |
push ecx edx |
mov eax,edx |
sub eax,tl_data_nodes |
xor edx,edx |
mov ecx,sizeof.TreeList |
div ecx |
pop edx ecx |
ret |
;óäàëèòü óçåë |
;㤠«¨âì 㧥« |
align 4 |
proc tl_node_delete uses eax edx edi, tlist:dword |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
imul eax,sizeof.TreeList |
add eax,tl_data_nodes |
mov edx,eax |
inc tl_ch_tim |
mov eax,tl_ch_tim |
mov dword[edx+16],eax |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
@@: |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
imul eax,sizeof.TreeList |
add eax,tl_data_nodes |
mov edx,eax |
inc tl_ch_tim |
mov eax,tl_ch_tim |
mov dword[edx+16],eax |
call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
@@: |
ret |
endp |
;ïîñòàâèòü êóðñîð íà ïåðâûé óçåë |
;¯®áâ ¢¨âì ªãàá®à ¯¥à¢ë© 㧥« |
align 4 |
proc tl_cur_beg uses edi, tlist:dword |
mov edi,dword[tlist] |
mov tl_cur_pos,0 |
cmp tl_p_scrol,0 |
je @f |
mov edi,tl_p_scrol |
mov dword[edi+sb_offs_position],0 |
mov tl_cur_pos,0 |
cmp tl_p_scroll,0 |
je @f |
mov edi,tl_p_scroll |
mov dword[edi+sb_offs_position],0 |
stdcall scroll_bar_vertical.draw, edi |
@@: |
@@: |
ret |
endp |
;ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ íèæå |
;¯¥à¥¥á⨠ªãàá®à 1 ¯®§¨æ¨î ¨¦¥ |
align 4 |
proc tl_cur_next uses eax ebx edi esi, tlist:dword |
mov edi,dword[tlist] |
1580,13 → 1570,13 |
jge .no_redraw |
mov esi,tl_box_top |
add esi,tl_box_height ;esi = coord bottom border |
call tl_draw_null_cursor ;ñòèðàåì êóðñîð |
call tl_draw_null_cursor ;áâ¨à ¥¬ ªãàá®à |
inc tl_cur_pos |
cmp tl_p_scrol,0 ;if not scrol struct |
cmp tl_p_scroll,0 ;if not scrol struct |
je @f |
call tl_get_rows_count ;eax = rows count |
mov ebx,tl_p_scrol |
mov ebx,tl_p_scroll |
add eax,dword[ebx+sb_offs_position] |
cmp tl_cur_pos,eax |
jl @f |
1593,17 → 1583,17 |
inc dword[ebx+sb_offs_position] |
stdcall scroll_bar_vertical.draw,ebx |
stdcall tl_draw,dword[tlist] ;ïîëíàÿ ïåðåðèñîâêà îêíà |
stdcall tl_draw,dword[tlist] ;¯®« ï ¯¥à¥à¨á®¢ª ®ª |
jmp .no_redraw |
@@: |
mov edi,dword[tlist] ;restore edi |
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
call tl_draw_caption_cur_pos |
.no_redraw: |
ret |
endp |
;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (íå ñ÷èòàÿ çàêðûòûõ äî÷åðíèõ) |
;¡¥à¥â ç¨á«® ¢á¥å ¢¨¤¨¬ëå 㧫®¢ (¥ áç¨â ï § ªàëâëå ¤®ç¥à¨å) |
;input: |
; edi = pointer 'tl' struct |
;output: |
1610,23 → 1600,23 |
; eax = struct index of current node |
align 4 |
tl_get_node_count: |
push ecx edx |
;cycle to nodes |
xor eax,eax |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next |
cmp edx,ecx |
jle @f |
inc eax |
jmp @b |
@@: |
pop edx ecx |
ret |
push ecx edx |
;cycle to nodes |
xor eax,eax |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next |
cmp edx,ecx |
jle @f |
inc eax |
jmp @b |
@@: |
pop edx ecx |
ret |
;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (ñ÷èòàÿ çàêðûòûå äî÷åðíèå) |
;¡¥à¥â ç¨á«® ¢á¥å ¢¨¤¨¬ëå 㧫®¢ (áç¨â ï § ªàëâë¥ ¤®ç¥à¨¥) |
;input: |
; edi = pointer 'tl' struct |
;output: |
1633,74 → 1623,72 |
; eax = struct index of current node |
align 4 |
tl_get_node_count_all: |
push ecx edx |
;cycle to nodes |
xor eax,eax |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next_all |
cmp edx,ecx |
jle @f |
inc eax |
jmp @b |
@@: |
pop edx ecx |
ret |
push ecx edx |
;cycle to nodes |
xor eax,eax |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next_all |
cmp edx,ecx |
jle @f |
inc eax |
jmp @b |
@@: |
pop edx ecx |
ret |
;ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ âûøå |
;¯¥à¥¥á⨠ªãàá®à 1 ¯®§¨æ¨î ¢ëè¥ |
align 4 |
proc tl_cur_perv uses eax edi esi, tlist:dword |
mov edi,dword[tlist] |
cmp tl_cur_pos,0 |
je .no_redraw |
mov esi,tl_box_top |
add esi,tl_box_height ;esi = coord bottom border |
call tl_draw_null_cursor ;ñòèðàåì êóðñîð |
dec tl_cur_pos ;äâèãàåì êóðñîð ââåðõ |
mov edi,dword[tlist] |
cmp tl_cur_pos,0 |
je .no_redraw |
mov esi,tl_box_top |
add esi,tl_box_height ;esi = coord bottom border |
call tl_draw_null_cursor ;áâ¨à ¥¬ ªãàá®à |
dec tl_cur_pos ;¤¢¨£ ¥¬ ªãàá®à ¢¢¥àå |
cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
je @f |
mov eax,tl_p_scrol |
cmp dword[eax+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
je @f |
mov edi,tl_cur_pos |
cmp edi,dword[eax+sb_offs_position] ;åñëè êóðñîð óøåë âûøå ñêðîëëèíãà, òîãäà îïóñêàåì ñêðîëëèíã |
jge @f |
dec dword[eax+sb_offs_position] |
stdcall scroll_bar_vertical.draw, eax |
stdcall tl_draw, dword[tlist] ;ïîëíàÿ ïåðåðèñîâêà îêíà |
jmp .no_redraw |
@@: |
mov edi,dword[tlist] ;restore edi |
;mov esi,tl_box_top |
;add esi,tl_box_height ;esi = coord bottom border |
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
call tl_draw_caption_cur_pos |
.no_redraw: |
cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
je @f |
mov eax,tl_p_scroll |
cmp dword[eax+sb_offs_position],0 ;¥á«¨ áªà®««¨£ ¢¥àåã, ¢ë室¨¬ |
je @f |
mov edi,tl_cur_pos |
cmp edi,dword[eax+sb_offs_position] ;¥á«¨ ªãàá®à ã襫 ¢ëè¥ áªà®««¨£ , ⮣¤ ®¯ã᪠¥¬ áªà®««¨£ |
jge @f |
dec dword[eax+sb_offs_position] |
stdcall scroll_bar_vertical.draw, eax |
stdcall tl_draw, dword[tlist] ;¯®« ï ¯¥à¥à¨á®¢ª ®ª |
jmp .no_redraw |
@@: |
mov edi,dword[tlist] ;restore edi |
call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
call tl_draw_caption_cur_pos |
.no_redraw: |
ret |
endp |
;ïåðåíåñòè êóðñîð íà 1 ñòðàíèöó âûøå |
;¯¥à¥¥á⨠ªãàá®à 1 áâà ¨æã ¢ëè¥ |
align 4 |
proc tl_cur_page_up uses eax edi esi, tlist:dword |
mov edi,dword[tlist] |
cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
je .no_redraw |
mov esi,tl_p_scrol |
mov esi,tl_p_scroll |
call tl_get_rows_count ;eax = rows count |
cmp tl_cur_pos,0 |
jne @f |
cmp dword[esi+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
cmp dword[esi+sb_offs_position],0 ;¥á«¨ áªà®««¨£ ¢¥àåã, ¢ë室¨¬ |
jne @f |
jmp .no_redraw |
@@: |
cmp tl_cur_pos,eax ;ïðîâåðÿåì ïîçèöèþ êóðñîðà è êîë-âî ñòîê íà ñòðàíèöå |
jl @f ;åñëè ìåíüøå, òî ïðèðàâíèâàåì ê 0, ÷òî-áû íå îòíÿòü áîëüøå ÷åì íàäî |
cmp tl_cur_pos,eax ;¯à®¢¥à塞 ¯®§¨æ¨î ªãàá®à ¨ ª®«-¢® á⮪ áâà ¨æ¥ |
jl @f ;¥á«¨ ¬¥ìè¥, â® ¯à¨à ¢¨¢ ¥¬ ª 0, çâ®-¡ë ¥ ®âïâì ¡®«ìè¥ ç¥¬ ¤® |
sub tl_cur_pos,eax |
jmp .cursor |
@@: |
1713,7 → 1701,7 |
@@: |
mov dword[esi+sb_offs_position],0 |
.scroll: |
;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
;¯¥à¥à¨á®¢ª¨ ®ª ¨ áªà®««¨£ |
stdcall tl_draw, edi ;draw window |
stdcall scroll_bar_vertical.draw, esi |
.no_redraw: |
1720,52 → 1708,52 |
ret |
endp |
;ïåðåíåñòè êóðñîð íà 1 ñòðàíèöó íèæå |
;¯¥à¥¥á⨠ªãàá®à 1 áâà ¨æã ¨¦¥ |
align 4 |
proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword |
;eax - êîë-âî ñòðîê íà ñòðàíèöå |
;ebx - ìàêñ. ïîçèöèÿ êóðñîðà |
;ecx - ìàêñ. ïîçèöèÿ ñêðîëëèíãà |
;eax - ª®«-¢® áâப áâà ¨æ¥ |
;ebx - ¬ ªá. ¯®§¨æ¨ï ªãàá®à |
;ecx - ¬ ªá. ¯®§¨æ¨ï áªà®««¨£ |
mov edi,dword[tlist] |
cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
je .no_redraw |
mov esi,tl_p_scrol |
mov esi,tl_p_scroll |
call tl_get_node_count ;eax = node count |
mov ebx,eax |
call tl_get_rows_count ;eax = rows count |
mov ecx,ebx |
inc ecx ;åñëè íèæíèé óçåë âèäåí íà ïîëîâèíó |
inc ecx ;¥á«¨ ¨¦¨© 㧥« ¢¨¤¥ ¯®«®¢¨ã |
cmp ecx,eax ;if (ecx>eax) { ecx=ecx-eax } else { ecx=0 } |
jl @f |
sub ecx,eax ;óìåíüøàåì ìàêñèìàëüíóþ ïîçèöèþ ñêðîëëèíãà, òàê ÷òî-áû áûëè âèäíû ïîñëåäíèå óçëû |
sub ecx,eax ;㬥ìè ¥¬ ¬ ªá¨¬ «ìãî ¯®§¨æ¨î áªà®««¨£ , â ª çâ®-¡ë ¡ë«¨ ¢¨¤ë ¯®á«¥¤¨¥ 㧫ë |
jmp .control |
@@: |
xor ecx,ecx ;ecx=0 - âñå óçëû âëàçÿò â ýêðàí, ñêðîëëèíã íå íóæåí |
xor ecx,ecx ;ecx=0 - ¢á¥ ã§«ë ¢« §ïâ ¢ íªà , áªà®««¨£ ¥ 㦥 |
.control: |
cmp tl_cur_pos,ebx ;êóðñîð âíèçó ? |
cmp tl_cur_pos,ebx ;ªãàá®à ¢¨§ã ? |
jl @f |
cmp dword[esi+sb_offs_position],ecx ;ñêðîëëèíã âíèçó ? |
cmp dword[esi+sb_offs_position],ecx ;áªà®««¨£ ¢¨§ã ? |
jl @f |
jmp .no_redraw |
@@: |
add tl_cur_pos,eax ;ïåðåìåùàåì êóðñîð |
add tl_cur_pos,eax ;¯¥à¥¬¥é ¥¬ ªãàá®à |
cmp tl_cur_pos,ebx |
jl @f |
mov tl_cur_pos,ebx |
@@: |
add dword[esi+sb_offs_position],eax ;ïåðåìåùàåì ñêðîëëèíã |
add dword[esi+sb_offs_position],eax ;¯¥à¥¬¥é ¥¬ áªà®««¨£ |
cmp dword[esi+sb_offs_position],ecx |
jl @f |
mov dword[esi+sb_offs_position],ecx |
@@: |
;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
;¯¥à¥à¨á®¢ª¨ ®ª ¨ áªà®««¨£ |
stdcall tl_draw, edi ;draw window |
stdcall scroll_bar_vertical.draw, esi |
.no_redraw: |
1772,141 → 1760,141 |
ret |
endp |
;îòêðûòü/çàêðûòü óçåë (ðàáîòàåò ñ óçëàìè êîòîðûå èìåþò äî÷åðíèå óçëû) |
;®âªàëâì/§ ªàëâì 㧥« (à ¡®â ¥â á 㧫 ¬¨ ª®â®àë¥ ¨¬¥îâ ¤®ç¥à¨¥ 㧫ë) |
align 4 |
proc tl_node_close_open uses eax edx edi, tlist:dword |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax = ïîçèöèÿ óçëà íà êîòîðîì ñòîèò êóðñîð |
cmp eax,2 ;êóðñîð ñòîèò íà óçëå ? |
jl @f |
imul eax,sizeof.TreeList |
add eax,tl_data_nodes |
;eax = óêàçàòåëü íà ñòðóêòóðó óçëà âûáðàííîãî êóðñîðîì |
push dword edi |
push dword eax |
call tl_node_poi_get_next_info |
pop dword edx ;edx = óêàçàòåëü íà ñòðóêòóðó óçëà êîòîðûé èäåò ïîñëå óçëà eax |
cmp edx,0 ;åñòü ëè óçëû íèæå âûáðàííîãî íàìè ? |
je @f |
mov dl,byte[edx+2] ;áåðåì óðîâåíü íèæíåãî óçëà |
cmp byte[eax+2],dl ;+2 = .lev |
jge @f ;åñëè íèæíèå óçëû ìåíüøåãî óðîâíÿ, çíà÷èò îíè íå äî÷åðíèå, êîíåö ôóíêöèè |
xor byte[eax+3],1 ;+3 = .clo *** îòêðûòèå/çàêðûòèå óçëà *** |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
call tl_get_cur_node_index ;eax = ¯®§¨æ¨ï 㧫 ª®â®à®¬ á⮨⠪ãàá®à |
cmp eax,2 ;ªãàá®à á⮨â 㧫¥ ? |
jl @f |
imul eax,sizeof.TreeList |
add eax,tl_data_nodes |
;eax = 㪠§ ⥫ì áâàãªâãàã 㧫 ¢ë¡à ®£® ªãàá®à®¬ |
push eax |
stdcall tl_node_poi_get_next_info, edi,eax |
mov edx,eax ;edx = 㪠§ ⥫ì áâàãªâãàã 㧫 ª®â®àë© ¨¤¥â ¯®á«¥ 㧫 eax |
pop eax |
cmp edx,0 ;¥áâì «¨ ã§«ë ¨¦¥ ¢ë¡à ®£® ¬¨ ? |
je @f |
mov dl,byte[edx+2] ;¡¥à¥¬ ã஢¥ì ¨¦¥£® 㧫 |
cmp byte[eax+2],dl ;+2 = .lev |
jge @f ;¥á«¨ ¨¦¨¥ ã§«ë ¬¥ì襣® ã஢ï, § ç¨â ®¨ ¥ ¤®ç¥à¨¥, ª®¥æ äãªæ¨¨ |
xor byte[eax+3],1 ;+3 = .clo *** ®âªàë⨥/§ ªàë⨥ 㧫 *** |
call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
stdcall tl_draw, edi ;îáíîâëåíèå îêíà |
@@: |
stdcall tl_draw, edi ;®¡®¢«¥¨¥ ®ª |
@@: |
ret |
endp |
;óâåëè÷èòü óðîâåíü |
;㢥«¨ç¨âì ã஢¥ì |
align 4 |
proc tl_node_lev_inc uses eax ecx edx edi, tlist:dword |
mov edi,dword[tlist] |
bt tl_style,2 ;tl_list_box_mode |
jc @f |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
mov ecx,tl_data_nodes |
imul eax,sizeof.TreeList |
add eax,ecx ;eax = pointer to some node struct |
add ecx,sizeof.TreeList ;ecx = pointer to 1 node struct |
mov edi,dword[tlist] |
bt tl_style,2 ;tl_list_box_mode |
jc @f |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
mov ecx,tl_data_nodes |
imul eax,sizeof.TreeList |
add eax,ecx ;eax = pointer to some node struct |
add ecx,sizeof.TreeList ;ecx = pointer to 1 node struct |
mov edx,eax |
call tl_iterat_perv ;ïðîâåðÿåì åñòü ëè âåðõíèé óçåë |
cmp edx,ecx |
jle @f ;åñëè âåðõíåãî óçëà íåò òî òåêóùèé óçåë íå äâèãàåì |
mov cl,byte[edx+2] ;áåðåì óðîâåíü ðîäèòåëüñêîãî óçëà |
inc cl ;äîáàâëÿåì 1 è ïîëó÷àåì ìàêñèìàëüíîå çíà÷åíèå |
cmp byte[eax+2],cl |
jge @f |
inc byte[eax+2] ;óâåëè÷èâàåì çíà÷åíèå óçëà |
@@: |
mov edx,eax |
call tl_iterat_perv ;¯à®¢¥à塞 ¥áâì «¨ ¢¥à娩 㧥« |
cmp edx,ecx |
jle @f ;¥á«¨ ¢¥à奣® 㧫 ¥â ⮠⥪ã騩 㧥« ¥ ¤¢¨£ ¥¬ |
mov cl,byte[edx+2] ;¡¥à¥¬ ã஢¥ì த¨â¥«ì᪮£® 㧫 |
inc cl ;¤®¡ ¢«ï¥¬ 1 ¨ ¯®«ãç ¥¬ ¬ ªá¨¬ «ì®¥ § 票¥ |
cmp byte[eax+2],cl |
jge @f |
inc byte[eax+2] ;㢥«¨ç¨¢ ¥¬ § 票¥ 㧫 |
@@: |
ret |
endp |
;óìåíüøèòü óðîâåíü |
;㬥ìè¨âì ã஢¥ì |
align 4 |
proc tl_node_lev_dec uses eax edi, tlist:dword |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
imul eax,sizeof.TreeList |
add eax,tl_data_nodes |
cmp byte[eax+2],0 |
je @f |
dec byte[eax+2] |
@@: |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
imul eax,sizeof.TreeList |
add eax,tl_data_nodes |
cmp byte[eax+2],0 |
je @f |
dec byte[eax+2] |
@@: |
ret |
endp |
;ïåðåìåùàåì óçåë ââåðõ |
;¯¥à¥¬¥é ¥¬ 㧥« ¢¢¥àå |
align 4 |
proc tl_node_move_up uses eax ebx ecx edx edi esi, tlist:dword |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
mov ebx,eax ;copy index of node struct |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
imul eax,sizeof.TreeList |
add eax,edx ;eax = pointer to 2 node struct |
mov edx,eax ;edx = pointer to 2 node struct |
mov esi,eax ;esi = pointer to 2 node struct |
call tl_iterat_perv ;edx = pointer to 1 node struct |
call tl_get_node_index ;eax = index of 1 node struct |
cmp edx,ecx |
jle @f |
cmp dword[edx+8],ebx ;+8 next |
jne .po8 |
call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê |
jmp .cur_mov |
.po8: |
call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê |
.cur_mov: |
push dword edi |
call tl_cur_perv |
push dword edi |
call tl_draw |
@@: |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
mov ebx,eax ;copy index of node struct |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
imul eax,sizeof.TreeList |
add eax,edx ;eax = pointer to 2 node struct |
mov edx,eax ;edx = pointer to 2 node struct |
mov esi,eax ;esi = pointer to 2 node struct |
call tl_iterat_perv ;edx = pointer to 1 node struct |
call tl_get_node_index ;eax = index of 1 node struct |
cmp edx,ecx |
jle @f |
cmp dword[edx+8],ebx ;+8 next |
jne .po8 |
call tl_node_move_po6 ;ã§«ë ¨¤ãâ ¯®¤àï¤ ¬¥ï¥¬ 6 ááë«®ª |
jmp .cur_mov |
.po8: |
call tl_node_move_po8 ;ã§«ë ¨¤ãâ ¥ ¯®¤àï¤ ¬¥ï¥¬ 8 ááë«®ª |
.cur_mov: |
push dword edi |
call tl_cur_perv |
push dword edi |
call tl_draw |
@@: |
ret |
endp |
;ïåðåìåùàåì óçåë âíèç |
;¯¥à¥¬¥é ¥¬ 㧥« ¢¨§ |
align 4 |
proc tl_node_move_down uses eax ebx ecx edx edi esi, tlist:dword |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
mov ebx,eax ;copy index of node struct |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
imul eax,sizeof.TreeList |
add eax,edx ;eax = pointer to 1 node struct |
mov edx,eax ;edx = pointer to 1 node struct |
mov esi,eax ;esi = pointer to 1 node struct |
call tl_iterat_next ;edx = pointer to 2 node struct |
call tl_get_node_index ;eax = index of 2 node struct |
cmp edx,ecx |
jle @f |
cmp dword[esi+8],eax ;+8 next |
jne .po8 |
xchg eax,ebx ;ìåíÿå ïîðÿäîê ñëåäîâàíèÿ çàìåíÿåìûõ óçëîâ |
xchg edx,esi |
call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê |
jmp .cur_mov |
.po8: ;à òóò ïîðÿäîê ñëåäîâàíèÿ óçëîâ íå ìåíÿåì |
call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê |
.cur_mov: |
stdcall tl_cur_next, edi |
stdcall tl_draw, edi |
@@: |
mov edi,dword[tlist] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
mov ebx,eax ;copy index of node struct |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
imul eax,sizeof.TreeList |
add eax,edx ;eax = pointer to 1 node struct |
mov edx,eax ;edx = pointer to 1 node struct |
mov esi,eax ;esi = pointer to 1 node struct |
call tl_iterat_next ;edx = pointer to 2 node struct |
call tl_get_node_index ;eax = index of 2 node struct |
cmp edx,ecx |
jle @f |
cmp dword[esi+8],eax ;+8 next |
jne .po8 |
xchg eax,ebx ;¬¥ï¥ ¯®à冷ª á«¥¤®¢ ¨ï § ¬¥ï¥¬ëå 㧫®¢ |
xchg edx,esi |
call tl_node_move_po6 ;ã§«ë ¨¤ãâ ¯®¤àï¤ ¬¥ï¥¬ 6 ááë«®ª |
jmp .cur_mov |
.po8: ; âãâ ¯®à冷ª á«¥¤®¢ ¨ï 㧫®¢ ¥ ¬¥ï¥¬ |
call tl_node_move_po8 ;ã§«ë ¨¤ãâ ¥ ¯®¤àï¤ ¬¥ï¥¬ 8 ááë«®ª |
.cur_mov: |
stdcall tl_cur_next, edi |
stdcall tl_draw, edi |
@@: |
ret |
endp |
1978,249 → 1966,244 |
; edi = pointer to 'TreeList' struct |
align 4 |
tl_draw_caption_cur_pos: |
cmp tl_capt_cy,9 ;9 - minimum caption height |
jl @f |
push eax ebx ecx edx edi esi |
mov ebx,edi ;calculate cursor position |
mov eax,tl_cur_pos |
inc eax |
lea edi,[txt_capt_cur] |
add edi,7 |
call tl_convert_to_str |
mov edi,ebx |
cmp tl_capt_cy,9 ;9 - minimum caption height |
jl @f |
pushad |
mov ebx,edi ;calculate cursor position |
mov eax,tl_cur_pos |
inc eax |
lea edi,[txt_capt_cur] |
add edi,7 |
call tl_convert_to_str |
mov edi,ebx |
mov eax,4 ;draw text captions |
mov ebx,tl_box_left |
shl ebx,16 |
add ebx,5*65536+3 |
add ebx,tl_box_top |
mov ecx,tl_col_txt |
or ecx,0xc0000000 ;0x40000000 çàêðàøèâàòü ôîí öâåòîì edi |
lea edx,[txt_capt_cur] |
mov edi,tl_col_zag |
int 0x40 |
mov ebx,tl_box_left |
shl ebx,16 |
add ebx,5*65536+3 |
add ebx,tl_box_top |
mov ecx,tl_col_txt |
or ecx,0xc0000000 ;0x40000000 § ªà 訢 âì ä® æ¢¥â®¬ edi |
lea edx,[txt_capt_cur] |
mov edi,tl_col_zag |
mcall 4 ;draw text captions |
pop esi edi edx ecx ebx eax |
@@: |
ret |
popad |
@@: |
ret |
;input: |
;dword[ebp+ 8] - memory size |
;dword[ebp+12] - pointer to memory |
;dword[ebp+16] - options: 0 - first element, 1 - add next element |
;dword[ebp+20] - pointer to 'TreeList' struct |
; tlist - pointer to 'TreeList' struct |
; opt - options: 0 - first element, 1 - add next element |
; h_mem - pointer to memory |
; mem_size - memory size |
;output: |
;dword[ebp+ 8] - error code |
; eax - error code |
align 4 |
tl_save_mem: |
push ebp |
mov ebp,esp |
push eax ebx ecx edx edi esi |
mov esi,dword[ebp+12] |
mov edi,dword[ebp+20] |
proc tl_save_mem uses ebx ecx edx edi esi, tlist:dword, opt:dword, h_mem:dword, mem_size:dword |
mov esi,dword[h_mem] |
mov edi,dword[tlist] |
cmp dword[ebp+16],0 ;add mode |
je @f |
push dword edi |
push dword esi |
call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
pop ebx |
add esi,ebx |
@@: |
cmp dword[opt],0 ;add mode |
je @f |
stdcall tl_get_mem_size, edi,esi ;eax = à §¬¥à à ¥¥ á®åà ñëå ¤ ëå |
add esi,eax |
@@: |
xor ebx,ebx |
mov bx,tl_info_size |
xor ebx,ebx |
mov bx,tl_info_size |
call tl_get_node_count_all ;eax = all node count |
call tl_get_node_count_all ;eax = all node count |
mov ecx,eax ;âû÷èñëÿåì ñêîëüêî ïàìÿòè äîëæíî áûòü çàïîëíåíî |
imul ecx,ebx ;óìíîæàåì íà ðàçìåð ñòðóêòóðû óçëà |
add ecx,tl_save_load_heder_size+1 ;element header +1 end element sumbol |
add ecx,esi ;äîáàâëÿåì óêàçàòåëü íà íà÷àëî ïàìÿòè (ñ ó÷åòîì ðàíåå çàïèñàííûõ ñòðóêòóð) |
sub ecx,dword[ebp+12] ;îòíèìàåì óêàçàòåëü íà íà÷àëî ïàìÿòè (áåç ðàíåå çàïèñàííûõ ñòðóêòóð) |
cmp ecx,dword[ebp+8] ;ecx = element memory size |
jg .err_mem_size |
mov ecx,eax ;¢ëç¨á«ï¥¬ ᪮«ìª® ¯ ¬ï⨠¤®«¦® ¡ëâì § ¯®«¥® |
imul ecx,ebx ;㬮¦ ¥¬ à §¬¥à áâàãªâãàë 㧫 |
add ecx,tl_save_load_heder_size+1 ;element header +1 end element sumbol |
add ecx,esi ;¤®¡ ¢«ï¥¬ 㪠§ ⥫ì ç «® ¯ ¬ï⨠(á ãç¥â®¬ à ¥¥ § ¯¨á ëå áâàãªâãà) |
sub ecx,dword[h_mem] ;®â¨¬ ¥¬ 㪠§ ⥫ì ç «® ¯ ¬ï⨠(¡¥§ à ¥¥ § ¯¨á ëå áâàãªâãà) |
cmp ecx,dword[mem_size] ;ecx = element memory size |
jg .err_mem_size |
;save tree params (in header) |
mov dword[esi],'tree' |
mov word[esi+4],bx |
mov dword[esi+6],eax ;element count |
;save tree params (in header) |
mov dword[esi],'tree' |
mov word[esi+4],bx |
mov dword[esi+6],eax ;element count |
mov eax,tl_style |
mov dword[esi+10],eax |
mov eax,tl_style |
mov dword[esi+10],eax |
mov eax,tl_cur_pos |
mov dword[esi+14],eax |
mov eax,tl_cur_pos |
mov dword[esi+14],eax |
mov ax,tl_info_capt_offs |
mov word[esi+18],ax |
mov ax,tl_info_capt_offs |
mov word[esi+18],ax |
mov ax,tl_info_capt_len |
mov word[esi+20],ax |
mov ax,tl_info_capt_len |
mov word[esi+20],ax |
;copy scroll position |
mov edx,tl_p_scrol |
mov eax,dword[edx+sb_offs_position] |
mov dword[esi+22],eax |
;copy scroll position |
mov edx,tl_p_scroll |
mov eax,dword[edx+sb_offs_position] |
mov dword[esi+22],eax |
add esi,tl_save_load_heder_size ;add header size |
add esi,tl_save_load_heder_size ;add header size |
;cycle to nodes |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next_all |
cmp edx,ecx |
jle @f |
;save node params |
call tl_get_node_index ;eax = index of pointer [edx] |
mov dword[esi],eax |
;cycle to nodes |
mov edx,tl_data_nodes |
mov ecx,edx |
add ecx,sizeof.TreeList |
@@: |
call tl_iterat_next_all |
cmp edx,ecx |
jle @f |
;save node params |
call tl_get_node_index ;eax = index of pointer [edx] |
mov dword[esi],eax |
add esi,4 |
mov eax,dword[edx] ;eax = (type; lev; clo) |
mov dword[esi],eax |
add esi,4 |
add esi,4 |
mov eax,dword[edx] ;eax = (type; lev; clo) |
mov dword[esi],eax |
add esi,4 |
stdcall tl_node_poi_get_data, edx,edi |
pop dword eax |
stdcall tl_node_poi_get_data, edi,edx ;eax - pointer node data |
;call tl_node_copy_data |
push ecx edi |
mov edi,eax |
mov ecx,ebx |
xchg esi,edi |
rep movsb |
mov esi,edi |
pop edi ecx |
;add esi,ebx |
jmp @b |
@@: |
mov byte[esi],0 ;end of 'treelist' |
mov dword[ebp+20],0 ;return error code |
jmp @f |
.err_mem_size: |
or dword[ebp+20],tl_err_save_memory_size |
@@: |
pop esi edi edx ecx ebx eax |
pop ebp |
ret 12 |
;call tl_node_copy_data |
push ecx edi |
mov edi,eax |
mov ecx,ebx |
xchg esi,edi |
rep movsb |
mov esi,edi |
pop edi ecx |
;add esi,ebx |
jmp @b |
@@: |
mov byte[esi],0 ;end of 'treelist' |
xor eax,eax ;return error code |
jmp @f |
.err_mem_size: |
mov eax,tl_err_save_memory_size |
@@: |
ret |
endp |
;input: |
;dword[ebp+ 8] - memory size |
;dword[ebp+12] - pointer to memory |
;word[ebp+16] - options: element index |
;word[ebp+18] - options: 2*(add mode)+(init mode) |
;dword[ebp+20] - pointer to 'TreeList' struct |
; tlist - pointer to 'TreeList' struct |
; opt - options: element index + (2*(add mode)+(init mode)) shl 16 |
; h_mem - pointer to memory |
; mem_size - memory size |
; à §¬¥à ¯ ¬ïâ¨, ¯®ª ¥ ¨á¯®«ì§ã¥âáï ( § ç «áï ¤«ï ª®â஫ï) |
; ¤«ï ¥£® ¨á¯®«ì§®¢ ¨ï 㦮 ¤®à ¡®â âì äãªæ¨î |
;output: |
;dword[ebp+ 8] - error code |
; eax - error code |
;memory header format: |
; +0 - (4) 'tree' |
; +4 - (2) info size |
; +6 - (4) count nodes |
; +10 - (4) tlist style |
; +14 - (4) cursor pos |
; +18 - (2) info capt offs |
; +20 - (2) info capt len |
; +22 - (4) scroll pos |
;memory data format: |
; +26 - (info size + 8) * count nodes |
align 4 |
tl_load_mem: |
push ebp |
mov ebp,esp |
push eax ebx ecx edx edi esi |
mov esi,dword[ebp+12] |
mov edi,dword[ebp+20] |
proc tl_load_mem uses ebx ecx edx edi esi, tlist:dword, opt:dword, h_mem:dword, mem_size:dword |
locals |
er_code dd ? |
endl |
mov esi,dword[h_mem] |
mov edi,dword[tlist] |
mov dword[ebp+20],0 ;return error code |
mov dword[er_code],0 ;return error code |
xor ecx,ecx |
mov cx,word[ebp+16] |
cmp cx,0 ;load in array mode |
je @f |
; push dword edi |
; push dword esi |
; call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
; pop ebx |
; add esi,ebx |
.beg_cycle: |
cmp dword[esi],'tree' |
jne .no_tree |
xor ebx,ebx |
mov bx,word[esi+4] |
add bx,8 |
imul ebx,dword[esi+6] |
add ebx,tl_save_load_heder_size |
add esi,ebx |
loop .beg_cycle |
@@: |
mov ecx,dword[opt] |
cmp cx,0 ;load in array mode |
je @f |
;stdcall tl_get_mem_size, esi,edi ;¡¥à¥¬ à §¬¥à à ¥¥ á®åà ñëå ¤ ëå |
;add esi,eax |
and ecx,0xffff |
cld |
.beg_cycle: |
cmp dword[esi],'tree' |
jne .no_tree |
xor ebx,ebx |
mov bx,word[esi+4] |
add bx,8 |
imul ebx,dword[esi+6] |
add ebx,tl_save_load_heder_size |
add esi,ebx |
loop .beg_cycle |
@@: |
cmp dword[esi],'tree' |
jne .no_tree |
bt word[ebp+18],1 ;load in add mode |
jc @f |
stdcall tl_info_clear, dword edi |
@@: |
cmp dword[esi],'tree' |
jne .no_tree |
bt dword[opt],17 ;load in add mode |
jc @f |
stdcall tl_info_clear, dword edi |
@@: |
xor ebx,ebx |
mov bx,word[esi+4] ;info_size |
cmp bx,tl_info_size |
je @f |
or dword[ebp+20],tl_err_load_info_size |
@@: |
mov ecx,dword[esi+6] ;count nodes |
cmp ecx,1 |
jl .end_f |
mov edx,esi ;save header pointer |
add esi,tl_save_load_heder_size |
xor ebx,ebx |
mov bx,word[esi+4] ;info_size |
cmp bx,tl_info_size |
je @f |
or dword[er_code],tl_err_load_info_size |
@@: |
mov ecx,dword[esi+6] ;count nodes |
cmp ecx,1 |
jl .end_f |
mov edx,esi ;save header pointer |
add esi,tl_save_load_heder_size |
cld |
@@: ;load node params |
mov eax,dword[esi+4] |
mov eax,dword[esi+4] |
ror eax,16 ;eax - options (type; lev; clo) |
add esi,8 |
stdcall tl_node_add, esi,eax,edi |
add esi,8 |
stdcall tl_node_add, edi,eax,esi |
stdcall tl_cur_next, edi |
;... |
add esi,ebx |
loop @b |
add esi,ebx |
loop @b |
bt word[ebp+18],1 ;load in add mode |
jc .no_tree |
mov eax,dword[edx+14] ;set cursor pos |
mov tl_cur_pos,eax |
mov eax,dword[edx+22] ;set scroll pos |
mov ebx,tl_p_scrol |
cmp ebx,0 |
je .end_f |
mov dword[ebx+sb_offs_position],eax |
bt dword[opt],17 ;load in add mode |
jc .no_tree |
mov eax,dword[edx+14] ;set cursor pos |
mov tl_cur_pos,eax |
mov ebx,tl_p_scroll |
cmp ebx,0 |
je .end_f |
mov eax,dword[edx+22] ;set scroll pos |
mov dword[ebx+sb_offs_position],eax |
stdcall scroll_bar_vertical.draw, ebx |
jmp .end_f |
.no_tree: |
mov dword[ebp+20],tl_err_load_caption |
.end_f: |
pop esi edi edx ecx ebx eax |
pop ebp |
ret 12 |
jmp .end_f |
.no_tree: |
mov dword[er_code],tl_err_load_caption |
.end_f: |
mov eax,dword[er_code] |
ret |
endp |
;input: |
;dword[ebp+ 8] - pointer to memory |
;dword[ebp+12] - pointer to 'TreeList' struct |
;¡¥à¥â à §¬¥à ¯ ¬ï⨠§ ï⮩ äãªæ¨¥© tl_save_mem ¯à¨ á®åà ¥¨¨ í«¥¬¥â®¢ |
;output: |
;dword[ebp+ 8] - error code |
; eax - error code |
align 4 |
tl_get_mem_size: ;áåðåò ðàçìåð ïàìÿòè çàíÿòîé ôóíêöèåé tl_save_mem ïðè ñîõðàíåíèè ýëåìåíòîâ |
push ebp |
mov ebp,esp |
push ebx edi esi |
mov esi,dword[ebp+ 8] |
mov edi,dword[ebp+12] |
@@: |
cmp dword[esi],'tree' |
jne @f |
xor ebx,ebx |
mov bx,word[esi+4] |
add bx,8 ;ðàçìåð äîïîëíèòåëüíîé èíôîðìàöèè îá óçëå (èíäåêñ çàïèñè; èíäåêñ èêîíêè, óðîâåíü, ...) |
imul ebx,dword[esi+6] |
add ebx,tl_save_load_heder_size |
add esi,ebx |
jmp @b |
@@: |
sub esi,dword[ebp+ 8] |
mov dword[ebp+12],esi ;âîçâðàùàåì ðàçìåð áëîêà ïàìÿòè |
pop esi edi edx |
pop ebp |
ret 4 |
proc tl_get_mem_size uses ebx edi, tlist:dword, h_mem:dword |
mov edi,dword[tlist] |
mov eax,dword[h_mem] |
@@: |
cmp dword[eax],'tree' |
jne @f |
xor ebx,ebx |
mov bx,word[eax+4] |
add bx,8 ;à §¬¥à ¤®¯®«¨â¥«ì®© ¨ä®à¬ 樨 ®¡ 㧫¥ (¨¤¥ªá § ¯¨á¨; ¨¤¥ªá ¨ª®ª¨, ã஢¥ì, ...) |
imul ebx,dword[eax+6] |
add ebx,tl_save_load_heder_size |
add eax,ebx |
jmp @b |
@@: |
sub eax,dword[h_mem] ;®â¨¬ ¥¬ 㪠§ ⥫ì ç «® ¯ ¬ï⨠|
;¨ ¯®«ãç ¥¬ à §¬¥à ¡«®ª ¯ ¬ï⨠|
ret |
endp |
;ascii scan key |
2240,34 → 2223,31 |
txt_capt_cur db 'âப ',0 |
txt_capt_otm db '⬥ë ',0 |
;ýòîò êîä íå ìîé, îí ïðåîáðàçóåò ÷èñëî â ñòðîêó |
;íâ®â ª®¤ ¥ ¬®©, ® ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã |
;input: |
; eax = value |
; edi = string buffer |
align 4 |
tl_convert_to_str: |
pushad |
mov dword[edi+1],0x20202020 |
call .str |
popad |
ret |
pushad |
mov dword[edi+1],0x20202020 |
call .str |
popad |
ret |
align 4 |
.str: |
mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî |
;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âçîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé |
cmp eax,ecx ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax |
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
jb @f |
xor edx,edx ;î÷èñòèòü edx |
div ecx ;ðàçäåëèòü - îñòàòîê â edx |
push edx ;ïîëîæèòü â ñòåê |
;dec edi ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè |
call .str;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx |
xor edx,edx ;®ç¨áâ¨âì edx |
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
push edx ;¯®«®¦¨âì ¢ á⥪ |
call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
pop eax |
@@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ)) |
;sbb al,$69 ;- ÷åñòíî äàííàÿ èíñòðóêöèÿ ìåíÿ çàñòàâëÿåò çàäóìàòüñÿ ò.å. ÿ íå çíàþ êàê ýòî ðàáîòàåò |
;das ;ïîñëå äàííîé êîìàíäû êàê áû ïðîèñõîäèò óìåíüøåíèå al íà 66h (â êíèãå íàïèñàíî äðóãîå) |
or al,0x30 ;äàííàÿ êîìàíäà êîðî÷å ÷åì äâå âûøå |
stosb ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi |
ret ;âåðíóòüñÿ î÷åíü èíòåðåñíûé õîä ò.ê. ïîêà â ñòåêå õðàíèòüñÿ êîë-âî âûçîâîâ òî ñòîëüêî ðàç ìû è áóäåì âûçûâàòüñÿ |
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
ret ;¢¥àãâìáï ®ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
} |
/programs/games/nu_pogodi/trunk/nu_pogod.asm |
---|
217,8 → 217,7 |
;ä®®¢ë© 梥⠡ãä¥à ¤®«¦¥ ¡ëâì 0xffffff, ¨ ç¥ ¥ ¯à®¨§®©¤¥â ®¡à¥§ª |
;¯® ä®®¢®¬ã 梥âã ¨ âà ä à¥â ¡ã¤¥â § ¨¬ â 쬮£® ¬¥áâ ¢ ¯ ¬ï⨠|
align 4 |
proc CreateTrapharetBuffer, buf:dword, img_data:dword |
push eax edi |
proc CreateTrapharetBuffer uses eax edi, buf:dword, img_data:dword |
mov edi,dword[buf] |
;§ ¯®«¥¨¥ ¤ ëå ¡ãä¥à |
234,7 → 233,6 |
stdcall [buf2d_conv_24_to_8], edi,1 ;¤¥« ¥¬ ¡ãä¥à ¯à®§à ç®á⨠8¡¨â |
;®¡à¥§ ¥¬ «¨è¨¥ ªà ï ¡ãä¥à , ¤«ï ¡®«¥¥ ¡ëáâண® à¨á®¢ ¨ï |
stdcall [buf2d_crop_color], edi,buf2d_color,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM+BUF2D_OPT_CROP_RIGHT+BUF2D_OPT_CROP_LEFT |
pop edi eax |
ret |
endp |
636,12 → 634,11 |
align 4 |
user_is_select: |
push ecx esi edi |
push eax ecx esi edi |
stdcall [tl_node_get_data], tree1 |
pop esi |
cmp esi,0 ;¥á«¨ ¨¬ï ¨£àë ¯ãá⮥ |
je @f |
cmp eax,0 ;¥á«¨ ¨¬ï ¨£àë ¯ãá⮥ |
je @f |
mov esi,eax |
mov edi,ini_name |
mov ecx,FILE_NAME_MAX |
cld |
650,7 → 647,7 |
mov byte[game_select_mode],0 |
call InitAll |
@@: |
pop edi esi ecx |
pop edi esi ecx eax |
call draw_window |
ret |
753,23 → 750,25 |
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 |
;¯à®¢¥àª ᪮«ìª® ã¤ ç® § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨ |
cmp dword [lib0+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib1+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib2+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib3+ll_struc_size-4],0 |
jnz @f |
jmp .lib |
@@: |
mov ebp,lib1 |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
mcall -1 ;exit not correct |
@@: |
.lib: |
mcall 40,0x27 |
mcall 48,3,sc,sizeof.system_colors ;¯®«ãç ¥¬ á¨áâ¥¬ë¥ æ¢¥â |
;****************************************************************************** |
; ¯®¤£®â®¢ª ᯨ᪠¨£®à |
; ¯®¤£®â®¢ª ᯨ᪠¨£à |
;****************************************************************************** |
stdcall dword[tl_data_init], tree1 |
792,7 → 791,7 |
inc dl |
push ecx edx |
stdcall dword[ini_get_str],file_name,ini_sec_files,key_game,txt_tile_type_0,FILE_NAME_MAX,ini_def_decorat_file |
stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1 ;¤®¡ ¢«ï¥¬ §¢ ¨¥ ¨£àë |
stdcall dword[tl_node_add], tree1, 0, txt_tile_type_0 ;¤®¡ ¢«ï¥¬ §¢ ¨¥ ¨£àë |
stdcall dword[tl_cur_next], tree1 ;¯¥à¥®á¨¬ ªãàá®à ¢¨§, çâ®-¡ë ¥ ¯®¬¥ï«áï ¯®à冷ª ¨£à |
pop edx ecx |
loop @b |
983,13 → 982,12 |
int 0x40 |
pop esi |
mov eax,4 ; ð¡R÷ÿ-ð? ¢?ò¡¢ÿ |
mov bx,BUT1_H |
add ebx,3*65536;+3 |
mov ecx,dword[color_but_te] |
or ecx,0x80000000 |
mov edx,txt_game_a |
int 0x40 |
mcall 4 |
ror ebx,16 |
add ebx,BUT1_NEXT_TOP |
1037,16 → 1035,15 |
align 4 |
proc draw_rect_border, client_rect:dword, user_box:dword |
pushad |
mov edi,dword[client_rect] |
mov esi,dword[user_box] |
cmp esi,0 |
je @f |
mov edi,dword[client_rect] |
mov ebx,dword[edi+8] ;+8 = width |
inc bx |
mov ecx,dword[esi+4] ;+4 = top |
mov edx,[sc.work] |
mov eax,13 |
int 0x40 ;top |
mcall 13 ;top |
mov eax,dword[esi+4] ;+4 = top |
add eax,dword[esi+12] ;+12 = height |
1057,8 → 1054,7 |
mov cx,word[edi+12] ;+12 = bottom |
inc cx |
sub cx,ax |
mov eax,13 |
int 0x40 ;bottom |
mcall 13 ;bottom |
.no_bottom: |
mov ebx,dword[esi] ;+0 left |
1066,8 → 1062,7 |
shl ecx,16 |
mov cx,word[esi+12] ;+12 = height |
inc cx |
mov eax,13 |
int 0x40 ;left |
mcall 13 ;left |
mov eax,dword[esi] ;+0 left |
add eax,dword[esi+8] ;+8 = width |
1076,8 → 1071,7 |
mov bx,word[edi+8] ;+8 = right |
sub bx,ax |
inc bx |
mov eax,13 |
int 0x40 ;right |
mcall 13 ;right |
@@: |
popad |
ret |
1182,22 → 1176,18 |
load_lib_end: |
align 4 |
proc mem_copy, source:dword, destination:dword, len:dword |
push ecx esi edi |
cld |
mov esi, dword[source] |
mov edi, dword[destination] |
mov ecx, dword[len] |
rep movsb |
pop edi esi ecx |
ret |
proc mem_copy uses ecx esi edi, source:dword, destination:dword, len:dword |
cld |
mov esi, dword[source] |
mov edi, dword[destination] |
mov ecx, dword[len] |
rep movsb |
ret |
endp |
align 4 |
convert_to_str: |
pushad |
;mov eax,dword[value] |
;mov edi,dword[text] |
mov dword[edi+1],0 |
cld |
call .str |
1204,7 → 1194,6 |
popad |
ret |
align 4 |
.str: |
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
1214,15 → 1203,12 |
xor edx,edx ;®ç¨áâ¨âì edx |
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
push edx ;¯®«®¦¨âì ¢ á⥪ |
;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨ |
call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
pop eax |
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
;sbb al,$69 ;- ç¥áâ® ¤ ï ¨áâàãªæ¨ï ¬¥ï § áâ ¢«ï¥â § ¤ã¬ âìáï â.¥. ï ¥ § î ª ª íâ® à ¡®â ¥â |
;das ;¯®á«¥ ¤ ®© ª®¬ ¤ë ª ª ¡ë ¯à®¨á室¨â 㬥ì襨¥ al 66h (¢ ª¨£¥ ¯¨á ® ¤à㣮¥) |
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
ret ;¢¥àãâìáï ®ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
last_time dd 0 |
1230,7 → 1216,7 |
image_data_gray dd 0 ;¯ ¬ïâì á ¢à¥¬¥ë¬¨ á¥à묨 ¨§®¡à ¦¥¨ï¬¨ ¢ ä®à¬ ⥠24-bit, ¨§ ª®â®àëå ¡ã¤ãâ ᮧ¤ ¢ âìáï âà ä à¥âë |
run_file_70 FileInfoBlock |
hed db 'Nu pogodi 17.09.10',0 ;¯®¤¯¨áì ®ª |
hed db 'Nu pogodi 10.11.15',0 ;¯®¤¯¨áì ®ª |
sc system_colors ;á¨áâ¥¬ë¥ æ¢¥â |
count_of_dir_list_files equ 10 |
1449,11 → 1435,10 |
sz_tl_node_lev_dec db 'tl_node_lev_dec',0 |
align 16 |
i_end: |
procinfo process_information |
rb 1024 |
align 16 |
procinfo process_information |
stacktop: |
sys_path rb 4096 |
file_name: |
/programs/other/planet_v/planet_v.asm |
---|
55,29 → 55,21 |
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 |
@@: |
mov ebp,lib2 |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
mcall -1 ;exit not correct |
@@: |
mov ebp,lib3 |
cmp dword [ebp+ll_struc_size-4],0 |
jz @f |
mcall -1 ;exit not correct |
@@: |
;¯à®¢¥àª ᪮«ìª® ã¤ ç® § £ã§¨«¨áì ¡¨¡«¨®â¥ª¨ |
cmp dword [lib0+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib1+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib2+ll_struc_size-4],0 |
jnz @f |
cmp dword [lib3+ll_struc_size-4],0 |
jnz @f |
jmp .lib |
@@: |
mcall -1 ;exit not correct |
.lib: |
copy_path ini_name,sys_path,file_name,0x0 |
copy_path ini_name,sys_path,file_name,0 |
stdcall dword[ini_get_str],file_name,ini_sec,ini_k_cache,dword[edit1.text],dword[edit1.max],ini_def_cache |
stdcall [str_len],dword[edit1.text],dword[edit1.max] |
mov dword[edit1.size],eax |
93,7 → 85,7 |
stdcall dword[ini_get_str],file_name,ini_sec,ini_ext,txt_tile_type_0,dword[tree1.info_capt_len],ini_ext.def |
cmp byte[txt_tile_type_0],0 |
je @f |
stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1 |
stdcall dword[tl_node_add], tree1, 0, txt_tile_type_0 |
jmp @b |
@@: |
mov byte[ini_ext.number],'0' ;áç¨âë¢ ¥¬ ¯ à ¬¥âà ®â ext0 ª®â®àë© ¡ã¤¥â ¢ë¡à ¢ ᯨ᪥ |
102,7 → 94,7 |
jne @f |
mov dword[txt_tile_type_0],'.bmp' ;¥á«¨ ¢ *.ini ä ©«¥ ¨ç¥£® ¥â ¤®¡ ¢«ï¥¬ à áè¨à¥¨¥ .bmp |
@@: |
stdcall dword[tl_node_add], txt_tile_type_0, 0, tree1 |
stdcall dword[tl_node_add], tree1, 0, txt_tile_type_0 |
; init bmp file |
stdcall mem.Alloc, dword RGB_TILE_SIZE+300 ;300 - § ¯ áë¥ ¡ ©âë á ãç¥â®¬ § £®«®¢ª bmp ä ©« |
117,8 → 109,7 |
stdcall mem.Alloc, dword TREE_ICON_NOD16_BMP_SIZE |
mov [tree_nod_icon],eax |
copy_path fn_icon1,sys_path,file_name,0x0 |
mov eax,70 ;load icon file |
copy_path fn_icon1,sys_path,file_name,0 |
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
126,8 → 117,7 |
m2m [run_file_70.Buffer], [tree_sys_icon] |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 |
mcall 70,run_file_70 |
cmp ebx,0xffffffff |
je @f |
stdcall dword[img_decode], dword[tree_sys_icon],ebx,0 |
140,12 → 130,10 |
@@: |
copy_path fn_icon2,sys_path,file_name,0x0 |
mov eax,70 ;load icon file |
copy_path fn_icon2,sys_path,file_name,0 |
mov [run_file_70.Count], TREE_ICON_NOD16_BMP_SIZE |
m2m [run_file_70.Buffer], [tree_nod_icon] |
mov ebx,run_file_70 |
int 0x40 |
mcall 70,run_file_70 |
cmp ebx,0xffffffff |
je @f |
stdcall dword[img_decode], dword[tree_nod_icon],ebx,0 |
172,58 → 160,51 |
align 4 |
red_win: |
call draw_window |
call but_MetLoad |
call but_Refresh ; Auto Refresh after program start |
call draw_window |
call but_MetLoad |
call but_Refresh ; Auto Refresh after program start |
align 4 |
still: |
mov eax,10 |
mcall |
mcall 10 |
cmp al,0x1 ;¨§¬. ¯®«®¦¥¨¥ ®ª |
jz red_win |
cmp al,0x2 |
jz key |
cmp al,0x3 |
jz button |
cmp al,0x1 ;¨§¬. ¯®«®¦¥¨¥ ®ª |
jz red_win |
cmp al,0x2 |
jz key |
cmp al,0x3 |
jz button |
push dword ch2 |
call [check_box_mouse] |
push dword ch1 |
call [check_box_mouse] |
stdcall [check_box_mouse],ch2 |
stdcall [check_box_mouse],ch1 |
stdcall [edit_box_mouse], edit1 |
stdcall [edit_box_mouse], edit2 |
stdcall [tl_mouse], tree1 |
stdcall [tl_mouse], tree2 |
stdcall [edit_box_mouse], edit1 |
stdcall [edit_box_mouse], edit2 |
jmp still |
stdcall [tl_mouse], tree1 |
stdcall [tl_mouse], tree2 |
jmp still |
align 4 |
key: |
push eax ebx |
mcall 2 |
stdcall [edit_box_key], edit1 |
stdcall [edit_box_key], edit2 |
push eax ebx |
mcall 2 |
stdcall [edit_box_key], edit1 |
stdcall [edit_box_key], edit2 |
push dword tree1 |
call [tl_key] |
push dword tree2 |
call [tl_key] |
stdcall [tl_key],tree1 |
stdcall [tl_key],tree2 |
mov ebx,dword[el_focus] ;çâ®-¡ë ª àâ ¥ ¤¢¨£ « áì ¥á«¨ ®ª treelist ¢ 䮪ãᥠ|
cmp ebx, dword tree1 |
je .end_f |
cmp ebx, dword tree2 |
je .end_f |
mov ebx,dword[el_focus] ;çâ®-¡ë ª àâ ¥ ¤¢¨£ « áì ¥á«¨ ®ª treelist ¢ 䮪ãᥠ|
cmp ebx, dword tree1 |
je .end_f |
cmp ebx, dword tree2 |
je .end_f |
;çâ®-¡ë ª àâ ¥ ¤¢¨£ « áì ¥á«¨ ⥪áâ®¢ë¥ ¯®«ï ¢ 䮪ãᥠ|
test word[edit1.flags],10b ;ed_focus |
jne .end_f |
test word[edit2.flags],10b ;ed_focus |
jne .end_f |
;çâ®-¡ë ª àâ ¥ ¤¢¨£ « áì ¥á«¨ ⥪áâ®¢ë¥ ¯®«ï ¢ 䮪ãᥠ|
test word[edit1.flags],10b ;ed_focus |
jne .end_f |
test word[edit2.flags],10b ;ed_focus |
jne .end_f |
cmp ah,179 ;Right |
jne @f |
261,9 → 242,9 |
call but_ZoomP |
@@: |
.end_f: |
pop ebx eax |
jmp still |
.end_f: |
pop ebx eax |
jmp still |
align 4 |
272,12 → 253,10 |
mcall 12,1 |
xor eax,eax |
mov ebx,20*65536+min_window_w |
mov ecx,20*65536+min_window_h |
mov edx,[sc.work] |
or edx,0x33000000 |
mov edi,hed |
mcall |
mcall ,20*65536+min_window_w,20*65536+min_window_h |
mcall 9,procinfo,-1 |
293,7 → 272,7 |
mov eax,dword[tree2.box_left] ;¤¢¨£ ¥¬ áªà®««¨£ |
add eax,dword[tree2.box_width] |
mov ebx,dword[tree2.p_scrol] |
mov ebx,dword[tree2.p_scroll] |
mov word[ebx+2],ax |
mov dword[edit2.left],edi |
304,17 → 283,10 |
mov dword[wScrMetki.all_redraw],1 |
stdcall [scrollbar_ver_draw], dword wScrMetki |
mov eax,8 ;ª®¯ª |
mov ebx,145*65536+20 |
mov ecx,5*65536+25 |
mov edx,6 |
mov esi,[sc.work_button] |
int 0x40 |
mcall 8,145*65536+20,5*65536+25,6 ;ª®¯ª |
mov ebx,100*65536+20 |
mov ecx,5*65536+25 |
mov edx,5 |
int 0x40 |
mcall ,100*65536+20,5*65536+25,5 |
mov ebx,170*65536+40 ;ª®¯ª ¢ë§®¢ ¤¨ «®£ OpenDial |
;mov ecx,5*65536+25 |
490,67 → 462,74 |
;library structures |
l_libs_start: |
lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, boxlib_import,err_message_import0, head_f_i |
lib1 l_libs lib1_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, libimg_import, err_message_import1, head_f_i |
lib2 l_libs lib2_name, sys_path, file_name, system_dir2, err_message_found_lib2, head_f_l, strlib_import, err_message_import2, head_f_i |
lib3 l_libs lib3_name, sys_path, file_name, system_dir3, err_message_found_lib3, head_f_l, libini_import, err_message_import3, head_f_i |
lib4 l_libs lib4_name, sys_path, file_name, system_dir4, err_message_found_lib4, head_f_l, proclib_import, err_message_import4, head_f_i |
lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, boxlib_import,err_message_import0, head_f_i |
lib1 l_libs lib1_name, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, libimg_import, err_message_import1, head_f_i |
lib2 l_libs lib2_name, sys_path, file_name, system_dir2, err_message_found_lib2, head_f_l, strlib_import, err_message_import2, head_f_i |
lib3 l_libs lib3_name, sys_path, file_name, system_dir3, err_message_found_lib3, head_f_l, libini_import, err_message_import3, head_f_i |
lib4 l_libs lib4_name, sys_path, file_name, system_dir4, err_message_found_lib4, head_f_l, proclib_import, err_message_import4, head_f_i |
load_lib_end: |
align 4 |
button: |
mcall 17 ;¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨ |
cmp ah,5 |
jne @f |
call but_ZoomM |
@@: |
cmp ah,6 |
jne @f |
call but_ZoomP |
@@: |
cmp ah,7 |
jne @f |
call but_Refresh |
@@: |
mcall 17 ;¯®«ãç¨âì ª®¤ ¦ ⮩ ª®¯ª¨ |
cmp ah,5 |
jne @f |
call but_ZoomM |
jmp still |
@@: |
cmp ah,6 |
jne @f |
call but_ZoomP |
jmp still |
@@: |
cmp ah,7 |
jne @f |
call but_Refresh |
jmp still |
@@: |
cmp ah,9 |
jz but_MetSave |
cmp ah,8 |
jz but_MetAdd |
cmp ah,9 |
jz but_MetSave |
cmp ah,8 |
jz but_MetAdd |
cmp ah,10 |
jne @f |
call but_met_up |
@@: |
cmp ah,11 |
jne @f |
call but_met_dn |
@@: |
cmp ah,12 |
jne @f |
call fun_goto_met |
@@: |
cmp ah,13 ;¤¨ «®£ OpenDialog ¤«ï ¯®¨áª ¯ ¯ª¨ |
jne @f |
call fun_opn_dlg |
@@: |
cmp ah,1 |
jne still |
cmp ah,10 |
jne @f |
call but_met_up |
jmp still |
@@: |
cmp ah,11 |
jne @f |
call but_met_dn |
jmp still |
@@: |
cmp ah,12 |
jne @f |
call fun_goto_met |
jmp still |
@@: |
cmp ah,13 ;¤¨ «®£ OpenDialog ¤«ï ¯®¨áª ¯ ¯ª¨ |
jne @f |
call fun_opn_dlg |
jmp still |
@@: |
cmp ah,1 |
jne still |
.exit: |
push dword[bmp_icon] |
call mem.Free |
stdcall array_tile_function, tile_00,max_tiles_count,tile_destroy |
push dword[bmp_icon] |
call mem.Free |
stdcall array_tile_function, tile_00,max_tiles_count,tile_destroy |
stdcall dword[tl_data_clear], tree1 |
mov dword[tree2.data_img_sys],0 ;ç¨á⨬ 㪠§ ⥫ì á¨áâ¥¬ë¥ ¨ª®ª¨, |
;â. ª. ®¨ ¡ë«¨ 㤠«¥ë ¢¥à奩 äãªæ¨¥© tl_data_clear |
;¯®¢â®àë© ¢ë§®¢ tl_data_clear ¡¥§ ç¨á⪨ 㪠§ â¥«ï ¢ë§¢¥â ®è¨¡ªã |
mov dword[tree2.data_img],0 ;ç¨á⨬ 㪠§ â¥«ì ¨ª®ª¨ 㧫®¢ |
stdcall dword[tl_data_clear], tree2 |
stdcall dword[tl_data_clear], tree1 |
mov dword[tree2.data_img_sys],0 ;ç¨á⨬ 㪠§ ⥫ì á¨áâ¥¬ë¥ ¨ª®ª¨, |
;â. ª. ®¨ ¡ë«¨ 㤠«¥ë ¢¥à奩 äãªæ¨¥© tl_data_clear |
;¯®¢â®àë© ¢ë§®¢ tl_data_clear ¡¥§ ç¨á⪨ 㪠§ â¥«ï ¢ë§¢¥â ®è¨¡ªã |
mov dword[tree2.data_img],0 ;ç¨á⨬ 㪠§ â¥«ì ¨ª®ª¨ 㧫®¢ |
stdcall dword[tl_data_clear], tree2 |
; stdcall dword[img_destroy], dword[data_icon] |
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë |
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë |
;input: |
557,8 → 536,7 |
;data_rgb - pointer to rgb data |
;size - count img pixels (size img data / 3(rgb) ) |
align 4 |
proc img_rgb_wdiv2 data_rgb:dword, size:dword |
push eax ebx ecx edx |
proc img_rgb_wdiv2 uses eax ebx ecx edx, data_rgb:dword, size:dword |
mov eax,dword[data_rgb] |
mov ecx,dword[size] ;ecx = size |
imul ecx,3 |
596,8 → 574,6 |
add eax,3 |
add ebx,6 |
loop @b |
pop edx ecx ebx eax |
ret |
endp |
676,29 → 652,27 |
;data_rgb - pointer to rgb data |
;size - count img pixels (size img data / 3(rgb) ) |
align 4 |
proc img_rgb_wmul2, data_rgb:dword, size:dword |
push eax ebx ecx edx |
;eax - source |
;ebx - destination |
mov ecx,dword[size] ;ecx = size |
mov eax,ecx |
dec eax |
lea eax,[eax+eax*2] ;eax = (size-1)*3 |
mov ebx,eax ;ebx = size*3 |
add eax,dword[data_rgb] ;eax = pointer + size*3 |
add ebx,eax ;ebx = pointer + 2*size*3 |
@@: |
mov edx,dword[eax] ;edx = pixel color |
mov word[ebx],dx |
mov word[ebx+3],dx |
shr edx,16 |
mov byte[ebx+2],dl |
mov byte[ebx+3+2],dl |
sub eax,3 |
sub ebx,6 |
loop @b |
pop edx ecx ebx eax |
ret |
proc img_rgb_wmul2 uses eax ebx ecx edx, data_rgb:dword, size:dword |
;eax - source |
;ebx - destination |
mov ecx,dword[size] ;ecx = size |
mov eax,ecx |
dec eax |
lea eax,[eax+eax*2] ;eax = (size-1)*3 |
mov ebx,eax ;ebx = size*3 |
add eax,dword[data_rgb] ;eax = pointer + size*3 |
add ebx,eax ;ebx = pointer + 2*size*3 |
@@: |
mov edx,dword[eax] ;edx = pixel color |
mov word[ebx],dx |
mov word[ebx+3],dx |
shr edx,16 |
mov byte[ebx+2],dl |
mov byte[ebx+3+2],dl |
sub eax,3 |
sub ebx,6 |
loop @b |
ret |
endp |
;äãªæ¨ï ¤«ï à áâ¢ ¨ï ¨§®¡à ¦¥¨ï ¯® ¢ëá®â¥ ¢ 2 à § |
754,33 → 728,30 |
;size - count img pixels (size img data / 3(rgb) ) |
;size_w - width img in pixels |
align 4 |
proc img_rgb_hoffs, data_rgb:dword, size:dword, size_w:dword, hoffs:dword |
push eax ebx ecx edx esi |
proc img_rgb_hoffs uses eax ebx ecx edx esi, data_rgb:dword, size:dword, size_w:dword, hoffs:dword |
mov esi,dword[size_w] |
lea esi,[esi+esi*2] ;esi = width * 3(rgb) |
imul esi,dword[hoffs] |
mov esi,dword[size_w] |
lea esi,[esi+esi*2] ;esi = width * 3(rgb) |
imul esi,dword[hoffs] |
mov eax,dword[size] |
lea eax,[eax+eax*2] |
add eax,dword[data_rgb] ;eax = pointer to end pixel + 1 |
sub eax,3 |
mov ebx,eax |
add ebx,esi |
mov eax,dword[size] |
lea eax,[eax+eax*2] |
add eax,dword[data_rgb] ;eax = pointer to end pixel + 1 |
sub eax,3 |
mov ebx,eax |
add ebx,esi |
mov ecx,dword[size] |
dec ecx |
@@: |
mov edx,dword[eax] ;edx = pixel color |
mov word[ebx],dx |
shr edx,16 |
mov byte[ebx+2],dl |
mov ecx,dword[size] |
dec ecx |
@@: |
mov edx,dword[eax] ;edx = pixel color |
mov word[ebx],dx |
shr edx,16 |
mov byte[ebx+2],dl |
sub eax,3 |
sub ebx,3 |
loop @b |
pop esi edx ecx ebx eax |
ret |
sub eax,3 |
sub ebx,3 |
loop @b |
ret |
endp |
824,27 → 795,23 |
endp |
align 4 |
proc mem_copy, source:dword, destination:dword, len:dword |
push ecx esi edi |
cld |
mov esi, dword[source] |
mov edi, dword[destination] |
mov ecx, dword[len] |
rep movsb |
pop edi esi ecx |
ret |
proc mem_copy uses ecx esi edi, source:dword, destination:dword, len:dword |
cld |
mov esi, dword[source] |
mov edi, dword[destination] |
mov ecx, dword[len] |
rep movsb |
ret |
endp |
align 4 |
proc mem_clear, mem:dword, len:dword |
push eax ecx edi |
cld |
xor al,al |
mov edi, dword[mem] |
mov ecx, dword[len] |
repne stosb |
pop edi ecx eax |
ret |
proc mem_clear uses eax ecx edi, mem:dword, len:dword |
cld |
xor al,al |
mov edi, dword[mem] |
mov ecx, dword[len] |
repne stosb |
ret |
endp |
align 4 |
897,38 → 864,7 |
el_focus, wScrMetki,fun_goto_met |
align 4 |
wScrMetki: |
.x: |
.size_x dw 16 ;+0 |
.start_x dw 0 ;+2 |
.y: |
.size_y dw 100 ;+4 |
.start_y dw 0 ;+6 |
.btn_high dd 15 ;+8 |
.type dd 1 ;+12 |
.max_area dd 100 ;+16 |
.cur_area dd 30 ;+20 |
.position dd 0 ;+24 |
.bckg_col dd 0xeeeeee ;+28 |
.frnt_col dd 0xbbddff ;+32 |
.line_col dd 0 ;+36 |
.redraw dd 0 ;+40 |
.delta dw 0 ;+44 |
.delta2 dw 0 ;+46 |
.run_x: |
.r_size_x dw 0 ;+48 |
.r_start_x dw 0 ;+50 |
.run_y: |
.r_size_y dw 0 ;+52 |
.r_start_y dw 0 ;+54 |
.m_pos dd 0 ;+56 |
.m_pos_2 dd 0 ;+60 |
.m_keys dd 0 ;+64 |
.run_size dd 0 ;+68 |
.position2 dd 0 ;+72 |
.work_size dd 0 ;+76 |
.all_redraw dd 0 ;+80 |
.ar_offset dd 1 ;+84 |
wScrMetki scrollbar 16,0, 100,0, 15, 100, 30,0, 0xeeeeee, 0xbbddff, 0, 1 |
ed_buffer: ;òåêñò äëÿ edit |
.2: rb 32 |
997,46 → 933,52 |
align 4 |
tile_00 rb size_tile_struc * max_tiles_count |
;íâ®â ª®¤ ¥ ¬®©, ® ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã |
;input: |
; eax = value |
; edi = string buffer |
; eax - ç¨á«® |
; edi - ¡ãä¥à ¤«ï áâப¨ |
; len - ¤«¨ ¡ãä¥à |
;output: |
; edi = |
align 4 |
tl_convert_to_str: |
pushad |
mov dword[edi+1],0;0x20202020 |
call .str |
popad |
ret |
proc convert_int_to_str, len:dword |
pushad |
mov esi,[len] |
add esi,edi |
dec esi |
call .str |
popad |
ret |
endp |
align 4 |
.str: |
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
jb @f |
xor edx,edx ;®ç¨áâ¨âì edx |
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
push edx ;¯®«®¦¨âì ¢ á⥪ |
;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨ |
call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
pop eax |
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
ret ;¢¥àãâìáï ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
jb @f |
xor edx,edx ;®ç¨áâ¨âì edx |
div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
push edx ;¯®«®¦¨âì ¢ á⥪ |
;dec edi ;ᬥ饨¥ ¥®¡å®¤¨¬®¥ ¤«ï § ¯¨á¨ á ª®æ áâப¨ |
call .str ;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
pop eax |
@@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
cmp edi,esi |
jge @f |
or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
mov byte[edi],0 ;¢ ª®¥æ áâப¨ áâ ¢¨¬ 0, çâ®-¡ë ¥ ¢ë« §¨« ¬ãá®à |
@@: |
ret ;¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |
hed db 'Planet viewer 16.01.13',0 ;¯®¤¯¨áì ®ª |
hed db 'Planet viewer 09.11.15',0 ;¯®¤¯¨áì ®ª |
sc system_colors ;á¨áâ¥¬ë¥ æ¢¥â |
mouse_dd dd 0 ;㦮 ¤«ï Shift- ¢ editbox |
align 16 |
i_end: |
procinfo process_information |
rb 1024 |
align 16 |
procinfo process_information |
stacktop: |
sys_path rb 4096 |
file_name: |
/programs/other/planet_v/tile_fun.inc |
---|
63,9 → 63,9 |
; load_new_tile (¢¥àåïï ª à⨪ ) |
;??? |
;¯¥à¥¤¢¨£ ¥¬ ª®®à¤¨ âã ªãàá®à ¢¯à ¢® |
align 4 |
CursorMoveRight: ;¯¥à¥¤¢¨£ ¥¬ ª®®à¤¨ âã ªãàá®à ¢¯à ¢® |
CursorMoveRight: |
push ebx ecx |
xor ebx,ebx |
xor ecx,ecx |
87,9 → 87,9 |
pop ecx ebx |
ret |
;??? |
;¯¥à¥¤¢¨£ ¥¬ ª®®à¤¨ âã ªãàá®à ¢¨§ |
align 4 |
CursorMoveDown: ;¯¥à¥¤¢¨£ ¥¬ ª®®à¤¨ âã ªãàá®à ¢¨§ |
CursorMoveDown: |
push ebx ecx |
xor ebx,ebx |
xor ecx,ecx |
111,24 → 111,23 |
pop ecx ebx |
ret |
;??? |
;¯¥à¥¬¥é¥¨¥ ¬¥âª¨ ¢¢¥àå, ¯® ᯨáªã |
align 4 |
but_met_up: ;¯¥à¥¬¥é¥¨¥ ¬¥âª¨ ¢¢¥àå, ¯® ᯨáªã |
but_met_up: |
stdcall dword[tl_node_move_up], tree2 |
ret |
;??? |
;¯¥à¥¬¥é¥¨¥ ¬¥âª¨ ¢¨§, ¯® ᯨáªã? |
align 4 |
but_met_dn: ;¯¥à¥¬¥é¥¨¥ ¬¥âª¨ ¢¨§, ¯® ᯨáªã |
but_met_dn: |
stdcall dword[tl_node_move_down], tree2 |
ret |
;??? |
;¬¥ï¥¬ à áè¨à¥¨¥ ¤«ï ª àâë |
align 4 |
fun_new_map_type: ;¬¥ï¥¬ à áè¨à¥¨¥ ¤«ï ª àâë |
fun_new_map_type: |
push eax |
stdcall dword[tl_node_get_data], tree1 |
pop eax |
cmp eax,0 |
je @f |
mov dword[txt_tile_type],eax |
138,8 → 137,7 |
;§ ¤ ¥¬ à ᯮ«®¦¥¨¥ â ©«®¢ ¯® á¥âª¥ |
align 4 |
proc tiles_init_grid, beg_tiles:dword, count:dword, cols:dword |
push eax ebx ecx edx edi |
proc tiles_init_grid uses eax ebx ecx edx edi, beg_tiles:dword, count:dword, cols:dword |
xor eax,eax |
xor ebx,ebx |
mov edi,[beg_tiles] |
156,7 → 154,6 |
inc bx |
.old_lin: |
loop @b |
pop edi edx ecx ebx eax |
ret |
endp |
165,8 → 162,7 |
;â ©«ë ¢ ¯à®â¨¢®¯®«®¦ãî áâ®à®ã, ¢ १ã«ìâ ⥠ª®®à¤¨ âë ¡®«ìè¨á⢠⠩«®¢ ¥ ¬¥ïîâáï |
; § ç¨â ¯à®£à ¬¬ ¥ ¡ã¤¥â ¯¥à¥ç¨âë¢ âì ¨å § ®¢®, 祬 ¨ ¤®á⨣ ¥âáï ®¯â¨¬¨§ æ¨ï |
align 4 |
proc tiles_grid_move_left, beg_tiles:dword, count:dword, cols:dword |
push eax ebx ecx edx edi |
proc tiles_grid_move_left uses eax ebx ecx edx edi, beg_tiles:dword, count:dword, cols:dword |
xor eax,eax |
xor ebx,ebx |
mov edi,[beg_tiles] |
180,7 → 176,6 |
dec tile_delta_x |
add edi,size_tile_struc |
loop @b |
pop edi edx ecx ebx eax |
ret |
endp |
187,8 → 182,7 |
;ᤢ¨£ ¥¬ á¥âªã ¢¯à ¢®, ¢ë«¥§è¨¥ á⮫¡æë ¡ã¤ãâ ¯¥à¥ª¨ãâë «¥¢ãî áâ®à®ã |
;¤¥« ¥â ⮦¥ çâ® ¨ tiles_grid_move_left ⮫쪮 ¤¢¨£ ¥â ª®®à¤¨ âë ¢ ¤àã£ãî áâ®à®ã |
align 4 |
proc tiles_grid_move_right, beg_tiles:dword, count:dword, cols:dword |
push eax ebx ecx edx edi |
proc tiles_grid_move_right uses eax ebx ecx edx edi, beg_tiles:dword, count:dword, cols:dword |
xor eax,eax |
xor ebx,ebx |
mov edi,[beg_tiles] |
202,13 → 196,11 |
.no_jump: |
add edi,size_tile_struc |
loop @b |
pop edi edx ecx ebx eax |
ret |
endp |
align 4 |
proc tiles_grid_move_up, beg_tiles:dword, count:dword, rows:dword |
push eax ebx ecx edx edi |
proc tiles_grid_move_up uses eax ebx ecx edx edi, beg_tiles:dword, count:dword, rows:dword |
xor eax,eax |
xor ebx,ebx |
mov edi,[beg_tiles] |
222,13 → 214,11 |
dec tile_delta_y |
add edi,size_tile_struc |
loop @b |
pop edi edx ecx ebx eax |
ret |
endp |
align 4 |
proc tiles_grid_move_down, beg_tiles:dword, count:dword, rows:dword |
push eax ebx ecx edx edi |
proc tiles_grid_move_down uses eax ebx ecx edx edi, beg_tiles:dword, count:dword, rows:dword |
xor eax,eax |
xor ebx,ebx |
mov edi,[beg_tiles] |
242,13 → 232,11 |
.no_jump: |
add edi,size_tile_struc |
loop @b |
pop edi edx ecx ebx eax |
ret |
endp |
align 4 |
proc array_tile_function, beg_tiles:dword, count:dword, funct:dword |
push ecx edi |
proc array_tile_function uses ecx edi, beg_tiles:dword, count:dword, funct:dword |
mov edi,[beg_tiles] |
mov ecx,[count] |
@@: |
255,7 → 243,6 |
stdcall [funct],edi |
add edi,size_tile_struc |
loop @b |
pop edi ecx |
ret |
endp |
262,15 → 249,11 |
align 4 |
draw_tiles: |
pushad |
mov eax,47 |
mov ebx,0x20000 |
xor ecx,ecx |
mov cl,byte[map.zoom] |
mov edx,128*65536+13 |
movzx ecx,byte[map.zoom] |
mov esi,[sc.work_text] |
or esi,0x40000000 |
mov edi,[sc.work] |
int 0x40 |
mcall 47,0x20000,, (128 shl 16)+13 |
stdcall array_tile_function, tile_00,max_tiles_count,draw_tile |
popad |
466,65 → 449,57 |
@@: |
ret |
;??? |
;á®åà ¥¨¥ ä ©« á ¬¥âª ¬¨ |
align 4 |
but_MetSave: ;á®åà ¥¨¥ ä ©« á ¬¥âª ¬¨ |
stdcall dword[tl_save_mem], TREE_ICON_SYS16_BMP_SIZE,[bmp_icon],0,tree2 |
but_MetSave: |
stdcall dword[tl_save_mem], tree2,0,[bmp_icon],TREE_ICON_SYS16_BMP_SIZE |
push eax ebx ecx edi |
copy_path fn_metki,sys_path,file_name,0x0 |
copy_path fn_metki,sys_path,file_name,0 |
push eax ebx ecx edi |
stdcall dword[tl_get_mem_size], tree2,[bmp_icon] |
inc eax ;¤«ï § ¯¨á¨ ¢ ä ©« § ¢¥àè î饣® ã«ï |
stdcall dword[tl_get_mem_size], [bmp_icon],tree2 |
pop ecx |
inc ecx ;¤«ï § ¯¨á¨ ¢ ä ©« § ¢¥àè î饣® ã«ï |
m2m [run_file_70.Buffer], [bmp_icon] |
mov [run_file_70.Function], 2 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], eax |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mcall 70,run_file_70 |
pop edi ecx ebx eax |
jmp still |
mov eax,70 |
m2m [run_file_70.Buffer], [bmp_icon] |
mov [run_file_70.Function], 2 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], ecx |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 |
pop edi ecx ebx eax |
jmp still |
;??? |
;áç¨âë¢ ¥¬ ä ©« á ¬¥âª ¬¨ |
align 4 |
but_MetLoad: ;áç¨âë¢ ¥¬ ä ©« á ¬¥âª ¬¨ |
cmp byte[met_fr_opn],0 |
jne .end_f |
pushad |
mov byte[met_fr_opn],1 |
copy_path fn_metki,sys_path,file_name,0x0 |
mov eax,70 ;load icon file |
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], TREE_ICON_SYS16_BMP_SIZE |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
m2m [run_file_70.Buffer], [bmp_icon] |
mov eax,70 |
mov ebx,run_file_70 |
int 0x40 |
cmp ebx,0xffffffff |
je @f |
stdcall [tl_load_mem], TREE_ICON_SYS16_BMP_SIZE,dword[bmp_icon],0,tree2 |
stdcall [tl_cur_beg], tree2 ;? |
stdcall [tl_draw], tree2 ;? |
pop eax |
@@: |
mov byte[file_name],0 ;clear file name |
popad |
.end_f: |
ret |
but_MetLoad: |
cmp byte[met_fr_opn],0 |
jne .end_f |
copy_path fn_metki,sys_path,file_name,0 |
pushad |
mov byte[met_fr_opn],1 |
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
mov [run_file_70.Count], TREE_ICON_SYS16_BMP_SIZE |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
m2m [run_file_70.Buffer], [bmp_icon] |
mcall 70,run_file_70 |
cmp ebx,0xffffffff |
je @f |
stdcall [tl_load_mem], tree2,0,[bmp_icon],TREE_ICON_SYS16_BMP_SIZE |
stdcall [tl_cur_beg], tree2 |
stdcall [tl_draw], tree2 |
@@: |
mov byte[file_name],0 ;clear file name |
popad |
.end_f: |
ret |
;??? |
;¤®¡ ¢«¥¨¥ ¬¥âª¨ |
align 4 |
but_MetAdd: ;¤®¡ ¢«¥¨¥ ¬¥âª¨ |
but_MetAdd: |
push eax |
mov eax,dword[bmp_icon] |
m2m dword[eax], dword[map.coord_x] |
532,26 → 507,25 |
m2m word[eax+8], word[map.zoom] |
add eax,12 |
stdcall dword[str_copy], eax,30,dword[edit2.text],30 |
stdcall dword[tl_node_add], dword[bmp_icon], 0, tree2 |
stdcall dword[tl_node_add], tree2, 0, dword[bmp_icon] |
stdcall dword[tl_draw], tree2 |
pop eax |
jmp still |
;??? |
;¯¥à¥å®¤ ª ¢ë¡à ®© ¬¥âª¥ |
align 4 |
fun_goto_met: ;¯¥à¥å®¤ ª ¢ë¡à ®© ¬¥âª¥ |
push eax |
stdcall dword[tl_node_get_data], tree2 |
pop eax |
cmp eax,0 |
je @f ;ªãàá®à ¥ á⮨⠬¥âª¥ |
m2m dword[map.coord_x],dword[eax] |
m2m dword[map.coord_y],dword[eax+4] |
m2m word[map.zoom],word[eax+8] |
call but_Refresh |
@@: |
pop eax |
ret |
fun_goto_met: |
push eax |
stdcall dword[tl_node_get_data], tree2 |
cmp eax,0 |
je @f ;ªãàá®à ¥ á⮨⠬¥âª¥ |
m2m dword[map.coord_x],dword[eax] |
m2m dword[map.coord_y],dword[eax+4] |
m2m word[map.zoom],word[eax+8] |
call but_Refresh |
@@: |
pop eax |
ret |
;??? |
align 4 |
563,38 → 537,27 |
ret |
align 4 |
proc tile_init, tile:dword |
push eax edi |
mov edi,[tile] |
push dword RGB_TILE_SIZE+300 |
call mem.Alloc |
mov tile_rgb_icon,eax |
push dword RGB_TILE_SIZE |
call mem.Alloc |
mov tile_drobn_icon,eax |
pop edi eax |
ret |
proc tile_init uses eax edi, tile:dword |
mov edi,[tile] |
stdcall mem.Alloc, RGB_TILE_SIZE+300 |
mov tile_rgb_icon,eax |
stdcall mem.Alloc, RGB_TILE_SIZE |
mov tile_drobn_icon,eax |
ret |
endp |
align 4 |
proc tile_destroy, tile:dword |
push edi |
mov edi,[tile] |
push tile_rgb_icon |
call mem.Free |
push tile_drobn_icon |
call mem.Free |
pop edi |
ret |
proc tile_destroy uses edi, tile:dword |
mov edi,[tile] |
stdcall mem.Free,tile_rgb_icon |
stdcall mem.Free,tile_drobn_icon |
ret |
endp |
;??? |
align 4 ;§ £à㦠¥â â ©«ë, ¢ ®¯à¥¤¥«¥®© ®¡« á⨠|
proc load_tile, tile:dword |
push eax ebx ecx edi |
;§ £à㦠¥â â ©«ë, ¢ ®¯à¥¤¥«¥®© ®¡« á⨠|
align 4 |
proc load_tile uses eax ebx ecx edi, tile:dword |
mov edi,dword[tile] ;ª®¯¨à㥬 㪠§ ⥫ì áâàãªâãàã â ©« , çâ®-¡ë à ¡®â «¨ ª®áâ âë |
stdcall mem_copy, map,edi, 9 ;ª®¯¨à㥬 ª®®à¤¨ âë ªãàá®à ¢ áâàãªâãàã â ©« |
748,7 → 711,6 |
jmp .zoom |
@@: |
pop edi ecx ebx eax |
ret |
endp |
798,7 → 760,6 |
proc load_new_tile, tile:dword |
pushad |
mov eax,70 ;load icon file |
mov [run_file_70.Function], 0 |
mov [run_file_70.Position], 0 |
mov [run_file_70.Flags], 0 |
806,8 → 767,7 |
m2m [run_file_70.Buffer], [bmp_icon] |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 |
mcall 70,run_file_70 |
mov edi,[tile] |
; cmp ebx,0xffffffff |
; je .no_load |
844,8 → 804,7 |
;äãªæ¨ï £¥¥à¨àã¥â ç áâì ¯ã⨠ª ä ©«ã ¢ ¢¨¤¥: \z?\?\x?\?\y? |
align 4 |
proc get_tile_path, tile:dword |
push eax ecx edi esi |
proc get_tile_path uses eax ecx edi esi, tile:dword |
mov ecx,300 |
mov edi,txt_tile_path |
@@: |
869,7 → 828,7 |
inc edi |
xor eax,eax |
mov al,byte[esi+8] ;+8 = zoom |
call tl_convert_to_str |
stdcall convert_int_to_str, 300 |
inc edi |
cmp byte[esi+8],9 ;+8 = zoom |
883,7 → 842,7 |
cmp eax,ecx |
jge .out_of_rang ;coord_x ¡®«ìè¥ ¤®¯ãá⨬®£® § ç¥¨ï ¯à¨ § ¤ ®¬ ¬ áèâ ¡¥ |
shr eax,10 |
call tl_convert_to_str |
stdcall convert_int_to_str, 300 |
@@: |
inc edi |
895,7 → 854,7 |
inc edi |
mov eax,[esi] ;coord_x |
call tl_convert_to_str |
stdcall convert_int_to_str, 300 |
@@: |
inc edi |
914,7 → 873,7 |
cmp eax,ecx |
jge .out_of_rang ;coord_y ¡®«ìè¥ ¤®¯ãá⨬®£® § ç¥¨ï ¯à¨ § ¤ ®¬ ¬ áèâ ¡¥ |
shr eax,10 |
call tl_convert_to_str |
stdcall convert_int_to_str, 300 |
@@: |
inc edi |
926,11 → 885,10 |
inc edi |
mov eax,[esi+4] ;coord_y] |
call tl_convert_to_str |
stdcall convert_int_to_str, 300 |
.out_of_rang: |
call get_all_path |
pop esi edi ecx eax |
ret |
endp |
/programs/other/t_edit/t_button.inc |
---|
272,8 → 272,8 |
cmp ted_panel_id,TED_PANEL_SYNTAX |
jne @f |
stdcall dword[tl_node_get_data], tree1 |
pop dword[fn_col_option] |
mov ebx,dword[fn_col_option] |
mov [fn_col_option],eax |
mov ebx,eax |
call open_unpac_synt_file |
cmp ebx,-1 |
je @f |
/programs/other/t_edit/t_data.inc |
---|
248,76 → 248,15 |
/programs/other/t_edit/t_edit.asm |
---|
51,24 → 51,22 |
db 0 |
@@: |
;32 - áâ ¤ àâë© ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥ ¡ëâì ¡ãä¥à á á¨áâ¥¬ë¬ ¯ã⥬ |
copy_path .path_str,[32],file_name,0x0 |
copy_path .path_str,[32],file_name,0 |
else |
copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© |
copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© |
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] |
m2m [run_file_70.Buffer], eax |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
cmp ebx,0xffffffff |
je @f |
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥ë© ¡ãä¥à image_data |
210,30 → 208,26 |
mov eax,dword[icon_tl_sys] |
mov dword[tree1.data_img],eax |
;------------------------------------------------------------------------------ |
copy_path fn_syntax_dir,sys_path,file_name,0x0 ;¡¥à¥¬ ¯ãâì ª ¯ ¯ª¥ á ä ©« ¬¨ á¨â ªá¨á |
mov eax,70 |
mov ebx,tree_file_struct |
int 0x40 |
copy_path fn_syntax_dir,sys_path,file_name,0 ;¡¥à¥¬ ¯ãâì ª ¯ ¯ª¥ á ä ©« ¬¨ á¨â ªá¨á |
mcall 70,tree_file_struct |
cmp ebx,-1 |
je .end_dir_init |
cmp ebx,-1 |
je .end_dir_init |
mov eax,dir_mem |
add eax,32+4+1+3+4*6+8 |
mov ecx,ebx |
@@: |
cmp byte[eax],'.' ;䨫ìâà㥬 ä ©«ë á ¨¬¥ ¬¨ '.' ¨ '..' |
je .filter |
;0x10000 ;1*2^16 - £¤¥ 1 ®¬¥à ¨ª®ª¨ á ª¨£®© |
stdcall dword[tl_node_add], tree1,0x10000,eax |
stdcall dword[tl_cur_next], tree1 |
.filter: |
add eax,304 |
loop @b |
stdcall dword[tl_cur_beg],tree1 ;áâ ¢¨¬ ªãàá®à ç «® ᯨ᪠|
.end_dir_init: |
mov eax,dir_mem |
add eax,32+4+1+3+4*6+8 |
mov ecx,ebx |
@@: |
cmp byte[eax],'.' ;䨫ìâà㥬 ä ©«ë á ¨¬¥ ¬¨ '.' ¨ '..' |
je .filter |
;0x10000 ;1*2^16 - £¤¥ 1 ®¬¥à ¨ª®ª¨ á ª¨£®© |
stdcall dword[tl_node_add], eax,0x10000, tree1 |
stdcall dword[tl_cur_next], tree1 |
.filter: |
add eax,304 |
loop @b |
stdcall dword[tl_cur_beg],tree1 ;áâ ¢¨¬ ªãàá®à ç «® ᯨ᪠|
.end_dir_init: |
;--- load ini file --- |
copy_path ini_name,sys_path,file_name,0 |
;window startup pozition |
293,7 → 287,7 |
align 4 |
red_win: |
call draw_window |
call draw_window |
align 4 |
still: |
326,12 → 320,9 |
mov edi,tedit0 ;§ 票¥ edi 㦮 ¤«ï EvSize ¨ ted_wnd_t |
call EvSize |
mov eax,13 ;¢¥à娩 ¯àאַ㣮«ì¨ª, ¤«ï ®ç¨á⪨ ¢¥à奩 ¯ ¥«¨ |
xor ebx,ebx |
mov ecx,ted_wnd_t |
mov bx,word[procinfo.client_box.width] |
movzx ebx,word[procinfo.client_box.width] |
inc bx |
int 0x40 |
mcall 13,,ted_wnd_t ;¢¥à娩 ¯àאַ㣮«ì¨ª, ¤«ï ®ç¨á⪨ ¢¥à奩 ¯ ¥«¨ |
call draw_but_toolbar |
361,15 → 352,13 |
;output: |
; ah = symbol |
align 4 |
proc KeyConvertToASCII, table:dword |
push ebx |
mov ebx,dword[table] ;convert scan to ascii |
ror ax,8 |
xor ah,ah |
add bx,ax |
mov ah,byte[ebx] |
pop ebx |
ret |
proc KeyConvertToASCII uses ebx, table:dword |
mov ebx,dword[table] ;convert scan to ascii |
ror ax,8 |
xor ah,ah |
add bx,ax |
mov ah,byte[ebx] |
ret |
endp |
align 4 |
541,7 → 530,7 |
@@: |
stdcall [ted_delete], tedit0 |
stdcall dword[tl_data_clear], tree1 |
stdcall [tl_data_clear], tree1 |
mcall -1 ;¢ë室 ¨§ ¯à®£à ¬¬ë |
edit2 edit_box TED_PANEL_WIDTH-1, 0, 20, 0xffffff, 0xff80, 0xff0000, 0xff, 0x4080, 300, buf_find, mouse_dd, 0 |
/programs/other/t_edit/wnd_k_words.inc |
---|
153,7 → 153,7 |
stdcall str_instr, ebx,[edit3.text] |
test al,al |
jnz .end_add |
stdcall dword[tl_node_add], ebx, (0 shl 16), tree3 |
stdcall dword[tl_node_add], tree3, (0 shl 16), ebx |
stdcall dword[tl_cur_next], tree3 |
.end_add: |
add ebx,MAX_COLOR_WORD_LEN+8 ;sizeof.TexColViv |
166,9 → 166,9 |
jne @f |
;ª®¯¨à®¢ âì ¢ ¡ãä¥à |
stdcall [tl_node_get_data],tree3 |
pop esi |
or esi,esi |
or eax,eax |
jz .no_select_0 |
mov esi,eax |
mov edi,[tedit0.buffer] |
mov dword[edi],MAX_COLOR_WORD_LEN |
mov dword[edi+4],0 ;text data |
199,19 → 199,4 |
string1 rb MAX_COLOR_WORD_LEN |
align 4 |
w_scr_t3: |
.size_x dw 16 ;+0 |
rb 2+2+2 |
.btn_high dd 15 ;+8 |
.type dd 1 ;+12 |
.max_area dd 100 ;+16 |
rb 4+4 |
.bckg_col dd 0xeeeeee ;+28 |
.frnt_col dd 0xbbddff ;+32 |
.line_col dd 0 ;+36 |
rb 4+2+2 |
.run_x: |
rb 2+2+2+2+4+4+4+4+4+4 |
.all_redraw dd 0 ;+80 |
.ar_offset dd 1 ;+84 |
w_scr_t3 scrollbar 16,0, 3,0, 15, 100, 0,0, 0xeeeeee, 0xbbddff, 0, 1 |
/programs/other/t_edit_synt/te_syntax.asm |
---|
38,24 → 38,22 |
db 0 |
@@: |
;32 - áâ ¤ àâë© ¤à¥á ¯® ª®â®à®¬ã ¤®«¦¥ ¡ëâì ¡ãä¥à á á¨áâ¥¬ë¬ ¯ã⥬ |
copy_path .path_str,[32],file_name,0x0 |
copy_path .path_str,[32],file_name,0 |
else |
copy_path path,[32],file_name,0x0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© |
copy_path path,[32],file_name,0 ;ä®à¬¨à㥬 ¯®«ë© ¯ãâì ª ä ©«ã ¨§®¡à ¦¥¨ï, ¯®¤à §ã¬¥¢ ¥¬ çâ® ® ¢ ®¤®© ¯ ¯ª¥ á ¯à®£à ¬¬®© |
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 [run_file_70.Buffer], eax |
mov byte[run_file_70+20], 0 |
mov [run_file_70.FileName], file_name |
mov ebx,run_file_70 |
int 0x40 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
mcall 70,run_file_70 ;§ £à㦠¥¬ ä ©« ¨§®¡à ¦¥¨ï |
cmp ebx,0xffffffff |
je @f |
;®¯à¥¤¥«ï¥¬ ¢¨¤ ¨§®¡à ¦¥¨ï ¨ ¯¥à¥¢®¤¨¬ ¥£® ¢® ¢à¥¬¥ë© ¡ãä¥à image_data |
92,12 → 90,11 |
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 |
@@: |
;¯à®¢¥àª ᪮«ìª® ã¤ ç® § £ã§¨« áì ¡¨¡«¨®â¥ª |
cmp dword [lib0+ll_struc_size-4],0 |
jz @f |
mcall -1 ;exit not correct |
@@: |
;--------------------------------------------------------------------- |
stdcall dword[tl_data_init],dword tree1 |
126,11 → 123,7 |
@@: |
cmp byte[eax],'.' ;䨫ìâà㥬 ä ©«ë á ¨¬¥ ¬¨ '.' ¨ '..' |
je .filter |
push dword tree1 |
push dword 0x10000 ;1*2^16 - £¤¥ 1 ®¬¥à ¨ª®ª¨ á ª¨£®© |
push dword eax |
call dword[tl_node_add] |
stdcall dword[tl_node_add],tree1,0x10000,eax ;1*2^16 - £¤¥ 1 ®¬¥à ¨ª®ª¨ á ª¨£®© |
stdcall dword[tl_cur_next],tree1 |
.filter: |
add eax,304 |
330,10 → 323,12 |
align 4 |
but_OpenSyntax: |
stdcall [tl_node_get_data],tree1 |
pop dword [fn_col_option] |
call InitColText |
ret |
push eax |
stdcall [tl_node_get_data],tree1 |
mov [fn_col_option],eax |
call InitColText |
pop eax |
ret |
align 4 |
but_SaveSyntax: |
378,7 → 373,7 |
;@@: |
ret |
hed db 'TextEditor syntax file converter 01.07.14',0 ;¯®¤¯¨áì ®ª |
hed db 'TextEditor syntax file converter 10.11.15',0 ;¯®¤¯¨áì ®ª |
conv_tabl rb 128 ; â ¡«¨æ ¤«ï ª®¢¥àâ¨à®¢ ¨ï scan-ª®¤ ¢ ascii-ª®¤ |
txt122 db ' £à. ä ©«',0 |
402,10 → 397,10 |
load_lib_end: |
align 16 |
i_end: |
rb 1024 |
align 16 |
procinfo process_information |
rb 1024 |
thread: |
rb 1024 |
stacktop: |