2017-09-12 15:56:36 +02:00
; <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> TreeList <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<EFBFBD> box_lib.obj
2015-11-11 00:11:17 +01:00
; <20> <> <20> <> <EFBFBD> <20> ਬ<EFBFBD> <E0A8AC> <EFBFBD> <EFBFBD> <EFBFBD> GPL2 <20> <> 業<EFBFBD> <E6A5AD> <EFBFBD>
2017-09-12 15:56:36 +02:00
; <20> <> <EFBFBD> <E1ABA5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 䨪<EFBFBD> <E4A8AA> <EFBFBD> <EFBFBD> 12.09.2017 IgorA
2009-11-20 11:15:49 +01:00
2017-09-12 15:56:36 +02:00
struc t TreeNode
type dw ? ;+ 0 ⨯ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 㧫<>
level db ? ;+ 2 <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
close db ? ;+ 3 䫠<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> 㧫<> )
perv dd ? ;+ 4 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ।<EFBFBD> <E0A5A4> <EFBFBD> 饣<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
next dd ? ;+ 8 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E1ABA5> <EFBFBD> 饣<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
t_create dd ? ;+12 <20> ६. ᮧ<> <E1AEA7> <EFBFBD> <EFBFBD> <EFBFBD>
t_delete dd ? ;+16 <20> ६. 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD>
ends
2009-11-23 10:33:00 +01:00
2015-11-04 01:39:02 +01:00
2015-11-11 00:11:17 +01:00
;<3B> 뤥<EFBFBD> <EBA4A5> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᯨ᪠ <20> <20> ᭮<EFBFBD> <E1ADAE> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ଠ 樨 (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
2017-09-12 15:56:36 +02:00
align 16
2015-11-04 01:39:02 +01:00
proc tl_data_init uses eax ecx edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
xor ecx , ecx
mov cx , tl_info_size
imul ecx , tl_info_max_count
invoke mem.alloc , ecx
2015-11-11 00:11:17 +01:00
mov tl_data_info , eax ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 㥬 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> 祭<EFBFBD> <E7A5AD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
mov tl_data_img , 0 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 塞 㪠<> <E3AAA0> ⥫<EFBFBD> 'data_img'
mov tl_data_img_sys , 0 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 塞 㪠<> <E3AAA0> ⥫<EFBFBD> 'data_img_sys'
2015-11-04 01:39:02 +01:00
2017-09-12 15:56:36 +02:00
mov ecx , si zeof.TreeNode
2015-11-04 01:39:02 +01:00
imul ecx , tl_info_max_count
invoke mem.alloc , ecx
2015-11-11 00:11:17 +01:00
mov tl_data_nodes , eax ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 㥬 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> 祭<EFBFBD> <E7A5AD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
stdcall tl_info_clear , edi
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> ன<EFBFBD> <E0AEA9> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <E0ADA5> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
cmp tl_p_scroll , 0
2015-11-04 01:39:02 +01:00
je @ f
2015-11-11 00:11:17 +01:00
mov eax , tl_p_scroll
;*** 梥⮢<E6A2A5> <E2AEA2> <20> <> <EFBFBD> <EFBFBD> ன<EFBFBD> <E0AEA9> ***
2015-11-04 01:39:02 +01:00
mov ecx , tl_col_bkg
mov dword [ eax + sb_offs_bckg_col ], ecx
mov ecx , tl_col_zag
mov dword [ eax + sb_offs_frnt_col ], ecx
mov ecx , tl_col_txt
mov dword [ eax + sb_offs_line_col ], ecx
2015-11-11 00:11:17 +01:00
;*** <20> <> <EFBFBD> <EFBFBD> ன<EFBFBD> <E0AEA9> ࠧ<> <E0A0A7> ***
2015-11-04 01:39:02 +01:00
mov ecx , tl_box_left
add ecx , tl_box_width
mov word [ eax + 2 ], cx
mov ecx , tl_box_height
mov word [ eax + 4 ], cx
mov ecx , tl_box_top
mov word [ eax + 6 ], cx
@ @ :
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> ⪠ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
2009-11-20 11:15:49 +01:00
align 4
2015-12-03 11:55:32 +01:00
proc tl_data_clear uses eax edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2010-05-17 18:49:58 +02:00
cmp tl_data_img , 0
je @ f
2015-11-11 00:11:17 +01:00
invoke mem.free , tl_data_img ;<3B> <> <EFBFBD> ⪠ <20> <> <EFBFBD> ⥬<EFBFBD> <E2A5AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2010-05-17 18:49:58 +02:00
@ @ :
cmp tl_data_img_sys , 0
je @ f
2015-11-11 00:11:17 +01:00
invoke mem.free , tl_data_img_sys ;<3B> <> <EFBFBD> ⪠ <20> <> <EFBFBD> ⥬<EFBFBD> <E2A5AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2010-05-17 18:49:58 +02:00
@ @ :
2015-11-04 01:39:02 +01:00
invoke mem.free , tl_data_info
2010-06-09 22:06:03 +02:00
invoke mem.free , tl_data_nodes
2010-05-17 18:49:58 +02:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> ⪠ ᯨ᪠ (<28> <> <EFBFBD> <EFBFBD> ଠ 樨)
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_info_clear uses eax ecx edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-04 01:39:02 +01:00
mov tl_ch_tim , 0
mov tl_tim_undo , 0
mov tl_cur_pos , 0
2017-09-12 15:56:36 +02:00
mov ecx , si zeof.TreeNode
2015-11-04 01:39:02 +01:00
imul ecx , tl_info_max_count
mov eax , tl_data_nodes
@ @ :
2015-11-11 00:11:17 +01:00
mov byte [ eax ], 0 ;<3B> <> <EFBFBD> ⨬ 㧫<> 0-<2D> <>
2015-11-04 01:39:02 +01:00
inc eax
loop @ b
2015-11-11 00:11:17 +01:00
mov eax , tl_data_nodes ;㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> 0-<2D> 㧥<>
2017-09-12 15:56:36 +02:00
mov dword [ eax + TreeNode.next ], 1 ;㪠<> <E3AAA0> ⥫<EFBFBD> next <20> 0-<2D> 㧫<> <20> <> <EFBFBD> ࠢ<EFBFBD> <E0A0A2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> 1
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
cmp tl_p_scroll , 0 ;<3B> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
je @ f
2015-11-11 00:11:17 +01:00
mov eax , tl_p_scroll
2015-11-04 01:39:02 +01:00
mov dword [ eax + sb_offs_position ], 0
call tb_scrol_resize
@ @ :
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;ॠ<> <E0A5A0> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_key uses ebx ecx edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
mov ebx , tl_el_focus
2017-09-12 15:56:36 +02:00
cmp [ ebx ], edi
2015-11-11 00:11:17 +01:00
jne .no_focus ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> 䮪<> <E4AEAA> <EFBFBD>
2009-12-02 12:18:26 +01:00
2015-11-04 01:39:02 +01:00
push eax
2017-09-12 15:56:36 +02:00
mcall SF_KEYBOARD , SS F_GET_INPUT_MODE ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ० <> <E0A5A6> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
lea ecx ,[ tl_key_scan ]
2015-11-11 00:11:17 +01:00
cmp eax , 1 ;1 = ᪠<> <E1AAA0> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
je @ f
lea ecx ,[ tl_key_ascii ]
@ @ :
pop eax
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
xor bx , bx
cmp ah , byte [ ecx ] ;Enter
jne @ f
cmp tl_on_press , 0
je @ f
2015-12-03 11:55:32 +01:00
call tl_on_press
2015-11-04 01:39:02 +01:00
@ @ :
cmp ah , byte [ ecx + 1 ] ;Space
jne @ f
stdcall tl_node_close_open , edi
@ @ :
cmp ah , byte [ ecx + 2 ] ;Up
jne @ f
stdcall tl_cur_perv , edi
@ @ :
cmp ah , byte [ ecx + 3 ] ;Down
jne @ f
stdcall tl_cur_next , edi
@ @ :
cmp ah , byte [ ecx + 7 ] ;Page Up
jne @ f
stdcall tl_cur_page_up , edi
@ @ :
cmp ah , byte [ ecx + 8 ] ;Page Down
jne @ f
stdcall tl_cur_page_down , edi
@ @ :
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
bt tl_style , 0 ;tl_key_no_edit
jc .no_edit
cmp ah , byte [ ecx + 4 ] ;Left
jne @ f
stdcall tl_node_lev_dec , edi
mov bx , 1
@ @ :
cmp ah , byte [ ecx + 5 ] ;Right
jne @ f
stdcall tl_node_lev_inc , edi
mov bx , 1
@ @ :
cmp ah , byte [ ecx + 6 ] ;Delete
jne @ f
stdcall tl_node_delete , edi
mov bx , 1
@ @ :
.no_edit:
cmp bx , 1
jne .no_focus
stdcall tl_draw , edi
.no_focus:
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;ॠ<> <E0A5A0> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_mouse , tlist : dword
pushad
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2009-11-20 11:15:49 +01:00
2017-09-12 15:56:36 +02:00
mcall SF_MOUSE_GET , SS F_WINDOW_POSITION ;<3B> <> <EFBFBD> न<EFBFBD> <E0A4A8> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> ⭮<EFBFBD> <E2ADAE> ⥫쭮 <20> <> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
mov ebx , tl_box_left
shl ebx , 16
2015-11-11 00:11:17 +01:00
cmp eax , ebx ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
jl .no_in_wnd ;.test_scroll <20> <> <20> ਬ<EFBFBD> <E0A8AC> 塞
2015-11-04 01:39:02 +01:00
shr ebx , 16
add ebx , tl_box_width
shl ebx , 16
2015-11-11 00:11:17 +01:00
cmp eax , ebx ;<3B> ࠢ<EFBFBD> <E0A0A2> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
jg .test_scroll
mov ebx , tl_box_top
add ebx , tl_box_height
2015-11-11 00:11:17 +01:00
cmp ax , bx ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
jg .test_scroll
sub ebx , tl_box_height
add bx , tl_capt_cy
2015-11-11 00:11:17 +01:00
cmp ax , bx ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> + <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
jl .test_scroll
2015-11-14 22:31:00 +01:00
push eax ebx
2017-09-12 15:56:36 +02:00
mcall SF_MOUSE_GET , SS F_SCROLL_DATA
2015-12-03 11:55:32 +01:00
mov edx , eax
xor ecx , ecx
2015-11-14 22:31:00 +01:00
test eax , eax
jz .mouse_next
test ax , 0x8000
jnz .decr
shr eax , 16
test ax , 0x8000
jnz .decr_1
mov cx , dx ;dx = mouse scroll data vertical
test ecx , ecx
jnz @ f
shr edx , 16
mov cx , dx ;dx = mouse scroll data horizontal
test ecx , ecx
jz .mouse_next
@ @ :
stdcall tl_cur_next , edi
2017-09-12 15:56:36 +02:00
loop @ r
2015-11-14 22:31:00 +01:00
jmp .mouse_next
2015-12-03 11:55:32 +01:00
;------------------------------------------------
2015-11-14 22:31:00 +01:00
.decr: ;<3B> <> <EFBFBD> ⨪<EFBFBD> <E2A8AA> 쭠<EFBFBD> <20> ப<EFBFBD> <E0AEAA> ⪠ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥫쭠<E2A5AB>
mov bx , ax ;ax = mouse scroll data vertical
jmp @ f
.decr_1: ;<3B> <> ਧ<EFBFBD> <E0A8A7> ⠫쭠<E2A0AB> <20> ப<EFBFBD> <E0AEAA> ⪠ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥫쭠<E2A5AB>
mov bx , ax ;ax = mouse scroll data horizontal
@ @ :
mov ecx , 0xffff
sub ecx , ebx
inc ecx
@ @ :
stdcall tl_cur_perv , edi
2017-09-12 15:56:36 +02:00
loop @ r
2015-12-03 11:55:32 +01:00
;------------------------------------------------
2015-11-14 22:31:00 +01:00
.mouse_next:
2015-11-04 01:39:02 +01:00
2017-09-12 15:56:36 +02:00
mcall SF_MOUSE_GET , SS F_BUTTON
2015-11-04 01:39:02 +01:00
bt eax , 0 ;left mouse button press
2017-09-12 15:56:36 +02:00
pop ebx eax
2015-11-04 01:39:02 +01:00
jae .no_draw
mov esi , tl_el_focus
2017-09-12 15:56:36 +02:00
mov [ esi ], edi ;set focus
2015-11-04 01:39:02 +01:00
; if '+' or '-' press
mov esi , eax
shr esi , 16
sub esi , tl_box_left ;esi = mouse x coord in element window
and eax , 0xffff
2017-09-12 15:56:36 +02:00
sub eax , ebx
2015-11-04 01:39:02 +01:00
xor edx , edx
2017-09-12 15:56:36 +02:00
movzx ecx , tl_img_cy
2015-11-04 01:39:02 +01:00
div ecx
2015-11-11 00:11:17 +01:00
cmp tl_p_scroll , 0 ;<3B> <> <EFBFBD> <EFBFBD> 뢠<EFBFBD> <EBA2A0> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
je @ f
2015-11-11 00:11:17 +01:00
mov edx , tl_p_scroll
2017-09-12 15:56:36 +02:00
add eax ,[ edx + sb_offs_position ] ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
@ @ :
mov ecx , eax
call tl_get_node_count ;eax = node count
2018-10-30 14:03:22 +01:00
bt tl_style , 3 ;tl_cursor_pos_limited
jnc @ f
or eax , eax
jz @ f
dec eax ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ⠥<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 騥 㧫<>
@ @ :
2015-11-04 01:39:02 +01:00
cmp eax , ecx
jl @ f
2015-11-11 00:11:17 +01:00
mov eax , ecx ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> 襫 <20> <> <20> ।<EFBFBD> <E0A5A4> <EFBFBD> 㧫<> <E3A7AB> , <20> <> <EFBFBD> <EFBFBD> ⠭<EFBFBD> <E2A0AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> 祭<EFBFBD> <E7A5AD> eax
2015-11-04 01:39:02 +01:00
@ @ :
2015-11-11 00:11:17 +01:00
cmp eax , tl_cur_pos ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 祭<EFBFBD> <E7A5AD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<> <E1AEA2> <EFBFBD> <EFBFBD> <20> <20> ।<EFBFBD> <E0A5A4> <EFBFBD> 騬
je @ f ;<3B> <> <20> <> <20> <> <EFBFBD> ࠥ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
push esi
mov esi , tl_box_top
add esi , tl_box_height ;esi = coord bottom border
2015-11-11 00:11:17 +01:00
call tl_draw_null_cursor ;<3B> <> <EFBFBD> ࠥ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
pop esi
@ @ :
mov tl_cur_pos , eax
; if '+' or '-' press
call tl_get_cur_node_index ;eax = node index
cmp eax , 2
2015-11-11 00:11:17 +01:00
jl .no_open_close ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ⮨<EFBFBD> <20> <> <20> <> <EFBFBD> ⮬ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> 㧫<> <E3A7AB>
2017-09-12 15:56:36 +02:00
imul eax , si zeof.TreeNode
2015-11-04 01:39:02 +01:00
add eax , tl_data_nodes
xor bx , bx
2017-09-12 15:56:36 +02:00
mov bl , byte [ eax + TreeNode.level ] ;<3B> <> <EFBFBD> ࠭塞 <20> <EFBFBD> <E0AEA2> <EFBFBD> ⥪<> 饣<EFBFBD> 㧫<>
2015-11-11 00:11:17 +01:00
inc bx ;+ <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
cmp si , tl_img_cx
2015-11-11 00:11:17 +01:00
jl .no_open_close ;<3B> <> 襩 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <20> <> 筮 <20> <> <EFBFBD> '+' <20> '-'
2015-11-04 01:39:02 +01:00
mov eax , esi
xor edx , edx
xor ecx , ecx
mov cx , tl_img_cx
div ecx
cmp ax , bx
jne .no_open_close
stdcall tl_node_close_open , edi
.no_open_close:
mov esi , tl_box_top
add esi , tl_box_height ;esi = coord bottom border
2015-11-11 00:11:17 +01:00
call tl_draw_cursor ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
call tl_draw_caption_cur_pos
jmp .no_draw
2009-12-08 17:09:03 +01:00
;--- mouse event for children scrollbar ----------------------------------------
.test_scroll:
2015-11-11 00:11:17 +01:00
mov edx , tl_p_scroll
2017-09-12 15:56:36 +02:00
or edx , edx
jz .no_in_wnd ;<3B> <> <EFBFBD> 짮<EFBFBD> <ECA7AE> ⥫<EFBFBD> <20> <> ᮧ<> <E1AEA7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <E0ADA5> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
shr ebx , 16
add bx , word [ edx ] ;+0 .size_x
shl ebx , 16
2015-11-11 00:11:17 +01:00
cmp eax , ebx ;<3B> ࠢ<EFBFBD> <E0A0A2> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
jg .no_in_wnd
2017-09-12 15:56:36 +02:00
mov eax ,[ edx + sb_offs_max_area ]
cmp eax ,[ edx + sb_offs_cur_area ]
2015-11-11 00:11:17 +01:00
jbe .no_in_wnd ;<3B> <> <EFBFBD> 㧫<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
stdcall scroll_bar_vertical.mouse , edx ;scrollbar_ver_mouse
cmp dword [ edx + sb_offs_redraw ], 0
2015-12-03 11:55:32 +01:00
je @ f
2015-11-04 01:39:02 +01:00
mov dword [ edx + sb_offs_redraw ], 0
2015-11-11 00:11:17 +01:00
stdcall tl_draw , edi ;<3B> ந<EFBFBD> <E0AEA8> 諨 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
@ @ :
cmp dword [ edx + sb_offs_delta2 ], 0
2015-11-11 00:11:17 +01:00
jne .no_draw ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> - <20> <> ᭨<> <E1ADA8> <EFBFBD> <EFBFBD> 䮪<> <E4AEAA> <20> TreeList
2009-12-08 17:09:03 +01:00
;-------------------------------------------------------------------------------
2017-09-12 15:56:36 +02:00
.no_in_wnd: ;<3B> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 䮪<> <E4AEAA> <EFBFBD> (<28> <> <EFBFBD> <20> <EFBFBD> <E1ABAE> <EFBFBD> <20> <> <EFBFBD> 䮪<> <E4AEAA> <20> <> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
mcall SF_MOUSE_GET , SS F_BUTTON
or eax , eax ;<3B> <> 祣<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> eax=0
jz .no_draw
2015-11-04 01:39:02 +01:00
mov ebx , tl_el_focus
2017-09-12 15:56:36 +02:00
cmp [ ebx ], edi
2015-11-11 00:11:17 +01:00
jne .no_draw ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> 䮪<> <E4AEAA> <EFBFBD>
2015-11-04 01:39:02 +01:00
mov dword [ ebx ], 0 ;reset focus
mov esi , tl_box_top
add esi , tl_box_height ;esi = coord bottom border
2015-11-11 00:11:17 +01:00
call tl_draw_cursor ;<3B> <> <EFBFBD> 㥬 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 䮪<> ᮬ
2015-11-04 01:39:02 +01:00
.no_draw:
popad
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> ⬥<EFBFBD> <E2ACA5> <20> <> <EFBFBD> <EFBFBD> ⢨<EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_info_undo uses eax edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-04 01:39:02 +01:00
mov eax , tl_tim_undo
cmp tl_ch_tim , eax
jbe @ f
inc tl_tim_undo
2015-11-11 00:11:17 +01:00
call tb_scrol_resize ;<3B> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
@ @ :
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ⢨<EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_info_redo uses edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-04 01:39:02 +01:00
cmp tl_tim_undo , 1
jl @ f
dec tl_tim_undo
2015-11-11 00:11:17 +01:00
call tb_scrol_resize ;<3B> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
@ @ :
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> <20> ⬥<EFBFBD> <E2ACA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ⢨<EFBFBD>
;<3B> <> <EFBFBD> <EFBFBD> ७<EFBFBD> <E0A5AD> <EFBFBD> <20> 㭪<EFBFBD> <E3ADAA> <EFBFBD> , <20> <> <20> <> <EFBFBD> <20> <> ᯮ<EFBFBD> <E1AFAE> <EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
tl_info_set_undo:
2015-12-03 11:55:32 +01:00
cmp tl_tim_undo , 1
jl .no_work
2009-11-20 11:15:49 +01:00
2015-12-03 11:55:32 +01:00
push eax ebx ecx edx
mov edx , tl_data_nodes
mov ecx , edx
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
call tl_move_next ;long i=node[0].next;
2017-09-12 15:56:36 +02:00
2015-12-03 11:55:32 +01:00
mov eax , tl_tim_undo
sub tl_ch_tim , eax ;ch_tim-=tim_undo;
2017-09-12 15:56:36 +02:00
2015-12-03 11:55:32 +01:00
cmp edx , ecx
jle @ f
;if(node[i].tc>ch_tim){ // <20> ᮧ<> <E1AEA7> <EFBFBD> <EFBFBD> <EFBFBD> ᨬ<> <E1A8AC> <EFBFBD> <EFBFBD> <20> 뫮 <20> ⬥<EFBFBD> <E2ACA5> <EFBFBD> <EFBFBD>
2017-09-12 15:56:36 +02:00
mov eax , tl_ch_tim
cmp [ edx + TreeNode.t_create ], eax
2015-12-03 11:55:32 +01:00
jle .no_u1
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.t_create ], 0
mov dword [ edx + TreeNode.t_delete ], 0
2015-12-03 11:55:32 +01:00
2017-09-12 15:56:36 +02:00
mov ebx , [ edx + TreeNode.perv ]
imul ebx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
add ebx , tl_data_nodes ;.next
2017-09-12 15:56:36 +02:00
push dword [ edx + TreeNode.next ] ;node[node[i].perv].next=node[i].next;
pop dword [ ebx + TreeNode.next ]
2015-12-03 11:55:32 +01:00
2017-09-12 15:56:36 +02:00
mov ebx , [ edx + TreeNode.next ]
imul ebx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
add ebx , tl_data_nodes ;.perv
2017-09-12 15:56:36 +02:00
push dword [ edx + TreeNode.perv ] ;node[node[i].next].perv=node[i].perv;
pop dword [ ebx + TreeNode.perv ]
2015-12-03 11:55:32 +01:00
.no_u1:
;else if(node[i].td>ch_tim) node[i].td=0; // <20> 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> ᨬ<> <E1A8AC> <EFBFBD> <EFBFBD> <20> 뫮 <20> ⬥<EFBFBD> <E2ACA5> <EFBFBD> <EFBFBD>
2017-09-12 15:56:36 +02:00
cmp [ edx + TreeNode.t_delete ], eax
2015-12-03 11:55:32 +01:00
jle .no_u2
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.t_delete ], 0
2015-12-03 11:55:32 +01:00
.no_u2:
call tl_move_next
jmp @ b
@ @ :
mov tl_tim_undo , 0
pop edx ecx ebx eax
.no_work:
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> 뢮<EFBFBD> ᯨ᪠ <20> <> <20> <> ࠭
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_draw , tlist : dword
2015-12-03 11:55:32 +01:00
pushad
;draw dir_list main rect
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-12-03 11:55:32 +01:00
mov ebx , tl_box_left
shl ebx , 16
add ebx , tl_box_width
mov ecx , tl_box_top
shl ecx , 16
mov cx , tl_capt_cy
mov edx , tl_col_zag
2017-09-12 15:56:36 +02:00
mcall SF_DRAW_RECT ;draw window caption
2015-12-03 11:55:32 +01:00
add ecx , tl_box_top
shl ecx , 16
add ecx , tl_box_height
sub cx , tl_capt_cy
2017-09-12 15:56:36 +02:00
mcall ,,, tl_col_bkg ;draw window client rect
2015-12-03 11:55:32 +01:00
cmp tl_capt_cy , 9 ;9 - minimum caption height
jl @ f
mov ebx , edi ;calculate cursor position
mov eax , tl_cur_pos
2009-11-20 11:15:49 +01:00
inc eax
2017-09-12 15:56:36 +02:00
lea edi ,[ txt_capt_cur.v ]
stdcall tl_convert_to_str , 5
2015-12-03 11:55:32 +01:00
mov edi , ebx
mov eax , tl_tim_undo
2017-09-12 15:56:36 +02:00
lea edi ,[ txt_capt_otm.v ]
stdcall tl_convert_to_str , 5
2015-12-03 11:55:32 +01:00
mov edi , ebx ;restore edi
2017-09-12 15:56:36 +02:00
mov eax , SF_DRAW_TEXT ;captions
2015-12-03 11:55:32 +01:00
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 , 0x80000000
lea edx ,[ txt_capt_cur ]
int 0x40
mov ebx , tl_box_left
shl ebx , 16
add ebx , 100 * 65536 + 3
add ebx , tl_box_top
lea edx ,[ txt_capt_otm ]
int 0x40
@ @ :
;cycle to nodes
xor eax , eax
mov edx , tl_data_nodes
mov ecx , edx
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
;*** <20> ய<EFBFBD> <E0AEAF> <EFBFBD> 㧫<> <E3A7AB> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <EFBFBD> ⠭<EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ***
cmp tl_p_scroll , 0 ;<3B> <20> <> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD>
je .end_c1
mov esi , tl_p_scroll
cmp dword [ esi + sb_offs_position ], 0 ;<3B> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> 室<EFBFBD> <E5AEA4>
je .end_c1
@ @ :
call tl_iterat_next
cmp edx , ecx
jle .end_draw
inc eax
cmp eax , dword [ esi + sb_offs_position ]
jl @ b
.end_c1:
xor eax , eax
mov esi , tl_box_top
add esi , tl_box_height ;esi = coord bottom border
@ @ :
call tl_iterat_next
cmp edx , ecx
jle @ f
call tl_draw_node
inc eax
jmp @ b
@ @ :
call tl_draw_cursor
mov edi , tl_p_scroll ;<3B> <> <EFBFBD> 㥬 <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD>
cmp edi , 0 ;<3B> <> <EFBFBD> ⮣<> <20> <> <EFBFBD> -<2D> <> <20> <> <EFBFBD> <20> <> <20> <> <EFBFBD> 諮<EFBFBD> <E8ABAE> <20> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <20> <20> <> <EFBFBD> 짮<EFBFBD> <ECA7AE> ⥫<EFBFBD> <EFBFBD> <20> ணࠬ<E0AEA3> <E0A0AC>
je .end_draw ;<3B> <20> <> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 室<EFBFBD> <E5AEA4>
stdcall scroll_bar_vertical.draw , edi
.end_draw:
popad
ret
2015-11-04 01:39:02 +01:00
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> 室 <20> <> <> <E1ABA5> 騩 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<> (<28> ய<EFBFBD> ᪠<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
2009-11-20 11:15:49 +01:00
;input:
; ecx = pointer to 1 node struct
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
; edi = pointer to 'TreeList' struct
2009-11-25 12:01:46 +01:00
;output:
; edx = pointer to next node struct
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
tl_iterat_next:
2015-12-03 11:55:32 +01:00
push bx
mov bl , 0x7f
2017-09-12 15:56:36 +02:00
cmp byte [ edx + TreeNode.close ], 1
2015-12-03 11:55:32 +01:00
jne @ f
2017-09-12 15:56:36 +02:00
mov bl , byte [ edx + TreeNode.level ]
2015-12-03 11:55:32 +01:00
@ @ :
2009-11-20 11:15:49 +01:00
2015-12-03 11:55:32 +01:00
cmp tl_tim_undo , 0
je .else
push eax
.beg0:
call tl_move_next
cmp edx , ecx
jle @ f
call tl_node_not_vis ;<3B> ய<EFBFBD> <E0AEAF> <EFBFBD> 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> ⬥<EFBFBD> <E2ACA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cmp al , 1
je .beg0
2017-09-12 15:56:36 +02:00
cmp bl , byte [ edx + TreeNode.level ] ;<3B> ய<EFBFBD> <E0AEAF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-12-03 11:55:32 +01:00
jl .beg0
@ @ :
pop eax
pop bx
ret
.else:
call tl_move_next
cmp edx , ecx
jle .endif
2017-09-12 15:56:36 +02:00
cmp dword [ edx + TreeNode.t_delete ], 0 ;<3B> ய<EFBFBD> <E0AEAF> <EFBFBD> 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-12-03 11:55:32 +01:00
jne .else
2017-09-12 15:56:36 +02:00
cmp bl , byte [ edx + TreeNode.level ] ;<3B> ய<EFBFBD> <E0AEAF> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-12-03 11:55:32 +01:00
jl .else
.endif:
pop bx
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> 室 <20> <> <> <E1ABA5> 騩 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<> (<28> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⮦<> )
2009-11-20 11:15:49 +01:00
;input:
; ecx = pointer to 1 node struct
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
; edi = pointer to 'TreeList' struct
2015-11-04 01:39:02 +01:00
;output:
; edx = pointer to next visible node struct
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
tl_iterat_next_all:
2015-12-03 11:55:32 +01:00
cmp tl_tim_undo , 0
je .else
push eax
@ @ :
call tl_move_next
cmp edx , ecx
jle @ f
call tl_node_not_vis
cmp al , 1
je @ b
@ @ :
pop eax
ret
.else:
call tl_move_next
cmp edx , ecx
jle .endif
2017-09-12 15:56:36 +02:00
cmp dword [ edx + TreeNode.t_delete ], 0 ;td -> time delete
2015-12-03 11:55:32 +01:00
jne .else
.endif:
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> 室 <20> <> <20> ।<EFBFBD> <E0A5A4> <EFBFBD> 騩 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<> (<28> ய<EFBFBD> ᪠<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
2009-11-20 11:15:49 +01:00
;input:
; ecx = pointer to 1 node struct
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
; edi = pointer to 'TreeList' struct
align 4
2017-09-12 15:56:36 +02:00
proc tl_iterat_perv uses eax
2015-12-03 11:55:32 +01:00
cmp tl_tim_undo , 0
je .beg1
.beg0:
call tl_move_perv
cmp edx , ecx
jle @ f
call tl_node_not_vis ;<3B> ய<EFBFBD> <E0AEAF> <EFBFBD> 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> ⬥<EFBFBD> <E2ACA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cmp al , 1
je .beg0
.beg1:
call tl_move_perv
cmp edx , ecx
jle @ f
2017-09-12 15:56:36 +02:00
cmp dword [ edx + TreeNode.t_delete ], 0 ;td = 'time delete' -> <20> ய<EFBFBD> <E0AEAF> <EFBFBD> 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-12-03 11:55:32 +01:00
jne .beg1
@ @ :
2017-09-12 15:56:36 +02:00
call tl_move_max_clo_par
2015-12-03 11:55:32 +01:00
ret
2017-09-12 15:56:36 +02:00
endp
2009-12-08 17:09:03 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> 室<EFBFBD> <E5AEA4> த<> ⥫<EFBFBD> ᪨<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<> <20> <> <EFBFBD> ᨬ<EFBFBD> <E1A8AC> 쭮<EFBFBD> <ECADAE> <20> <EFBFBD> <E0AEA2>
2009-12-08 17:09:03 +01:00
;input:
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-12-08 17:09:03 +01:00
; edi = pointer to 'TreeList' struct
;output:
; edx = pointer closed parent node with maximum level
align 4
2015-11-04 01:39:02 +01:00
proc tl_move_max_clo_par uses eax ebx
2015-12-03 11:55:32 +01:00
mov eax , edx
xor ebx , ebx
.beg:
call tl_move_par
2017-09-12 15:56:36 +02:00
cmp byte [ edx + TreeNode.close ], 1 ;த<> ⥫<EFBFBD> ᪨<EFBFBD> 㧥<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ?
2015-12-03 11:55:32 +01:00
jne @ f
mov eax , edx
@ @ :
cmp ebx , edx
je .end_f
mov ebx , edx
jmp .beg
.end_f:
mov edx , eax
ret
2015-11-04 01:39:02 +01:00
endp
2009-11-20 11:15:49 +01:00
;input:
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
; edi = pointer to 'TreeList' struct
;output:
; edx = pointer to next node struct
align 4
tl_move_next:
2017-09-12 15:56:36 +02:00
mov edx ,[ edx + TreeNode.next ]
imul edx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
add edx , tl_data_nodes
ret
2009-11-20 11:15:49 +01:00
;input:
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
; edi = pointer to 'TreeList' struct
;output:
; edx = pointer to perv node struct
align 4
tl_move_perv:
2017-09-12 15:56:36 +02:00
mov edx ,[ edx + TreeNode.perv ]
imul edx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
add edx , tl_data_nodes
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> ।<EFBFBD> <E0A5A4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> த<> ⥫<EFBFBD> ᪨<EFBFBD> 㧥<> , <20> ⠪<> <E2A0AA> <EFBFBD> <20> <> <EFBFBD> , <20> <> <20> <> ⠢<EFBFBD> 塞 <20> <> <EFBFBD> <20> <> <EFBFBD> 祭<EFBFBD> <E7A5AD> 㪠<> <E3AAA0> ⥫<EFBFBD>
2009-12-08 17:09:03 +01:00
;input:
2017-09-12 15:56:36 +02:00
; ecx = pointer to 1 node struct
; edx = pointer to node struct
2009-12-08 17:09:03 +01:00
; edi = pointer to 'TreeList' struct
;output:
; edx = pointer to parent node struct
align 4
2015-11-04 01:39:02 +01:00
tl_move_par:
2017-09-12 15:56:36 +02:00
cmp byte [ edx + TreeNode.level ], 0
2015-11-11 00:11:17 +01:00
je .end_f ;㧥<> 0-<2D> <> <20> <EFBFBD> <E0AEA2> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD>
2015-11-04 01:39:02 +01:00
push eax ebx esi
mov esi , edx ;copy node pointer (edx)
2017-09-12 15:56:36 +02:00
mov bl , byte [ edx + TreeNode.level ]
2015-11-04 01:39:02 +01:00
@ @ :
call tl_move_perv
cmp edx , ecx
2015-11-11 00:11:17 +01:00
jle @ f ;<3B> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 騥 㧫<> <20> <> த<> ⥫<EFBFBD> ᪨<EFBFBD>
call tl_node_not_vis ;<3B> ய<EFBFBD> <E0AEAF> <EFBFBD> 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> ⬥<EFBFBD> <E2ACA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
cmp al , 1
je @ b
2017-09-12 15:56:36 +02:00
cmp byte [ edx + TreeNode.level ], bl
2015-11-11 00:11:17 +01:00
jl .end_0 ;㤠筮 <20> <> 諨 த<> ⥫<EFBFBD> ᪨<EFBFBD> 㧥<>
2015-11-04 01:39:02 +01:00
jmp @ b
@ @ :
mov esi , ebx ;restore node pointer
.end_0:
pop esi ebx eax
.end_f:
ret
2009-12-08 17:09:03 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <EFBFBD> <E0AEA2> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 㪠<> <E3AAA0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<> <20> <20> <> <EFBFBD> ⮬: <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 㤠<> <E3A4A0> <EFBFBD> <EFBFBD> <EFBFBD> , <20> ⬥<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ⢨<EFBFBD>
2009-11-20 11:15:49 +01:00
;input:
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
; edi = pointer to 'TreeList' struct
;output:
; al = 1 if sumbol not visible
2009-11-23 10:33:00 +01:00
; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo)
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
tl_node_not_vis:
2017-09-12 15:56:36 +02:00
cmp dword [ edx + TreeNode.t_delete ], 0
2015-12-03 11:55:32 +01:00
je @ f
2017-09-12 15:56:36 +02:00
mov eax ,[ edx + TreeNode.t_delete ] ;eax=node[i].td
2015-12-03 11:55:32 +01:00
add eax , tl_tim_undo
cmp eax , tl_ch_tim
jg @ f
mov al , 1
ret
@ @ :
mov eax , tl_ch_tim
sub eax , tl_tim_undo
2017-09-12 15:56:36 +02:00
cmp [ edx + TreeNode.t_create ], eax ;time create
2015-12-03 11:55:32 +01:00
jle @ f
mov al , 1
ret
@ @ :
xor al , al
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> 㥬 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD>
2009-11-20 11:15:49 +01:00
;input:
; edi = pointer to TreeInfo struct
; esi = coord bottom border
align 4
2015-11-04 01:39:02 +01:00
proc tl_draw_cursor uses eax ebx ecx edx esi
call tl_get_display_cur_pos ;eax = cursor pos in screen
cmp eax , 0
2015-11-11 00:11:17 +01:00
jl .end_f ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 室<EFBFBD> <E5AEA4> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> , <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ப<EFBFBD> <E0AEAA> 祭<EFBFBD> <E7A5AD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
2015-11-11 00:11:17 +01:00
cmp tl_data_img_sys , 0 ;ᬮ<> ਬ <20> <> <EFBFBD> <EFBFBD> <20> <> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> ⨭<EFBFBD> <E2A8AD> <20> <> <EFBFBD> ⥬<EFBFBD> <E2A5AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
jne @ f
mov ebx , tl_box_left
shl ebx , 16
mov bx , tl_img_cx
2017-09-12 15:56:36 +02:00
movzx ecx , tl_img_cy
2015-11-04 01:39:02 +01:00
imul ecx , eax
add ecx , tl_box_top
add cx , tl_capt_cy
;crop image if on the border
2015-11-11 00:11:17 +01:00
cmp esi , ecx ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
jl .end_f
sub esi , ecx
shl ecx , 16
mov cx , tl_img_cy
cmp si , tl_img_cy
jge .crop0
2015-11-11 00:11:17 +01:00
mov cx , si ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 筮 (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> )
2015-11-04 01:39:02 +01:00
.crop0:
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
mov edx , tl_col_txt
2017-09-12 15:56:36 +02:00
mcall SF_DRAW_RECT ;<3B> <> <EFBFBD> 㥬 <20> <> <EFBFBD> <EFBFBD> ⮩ <20> <> אַ㣮<EFACAE> 쭨<EFBFBD> , <20> .<2E> . <20> <> <EFBFBD> <20> <> <EFBFBD> ⥬<EFBFBD> <E2A5AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
jmp .end_f
@ @ :
mov ebx , tl_data_img_sys
imul ax , tl_img_cy
mov edx , tl_box_left
shl edx , 16
mov dx , ax
add edx , tl_box_top
add dx , tl_capt_cy
2015-11-11 00:11:17 +01:00
mov ecx , tl_el_focus ;<3B> <EFBFBD> <E0AEA2> 塞 <20> 䮪<> <E4AEAA> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD>
2015-11-04 01:39:02 +01:00
cmp dword [ ecx ], edi
je .focus
2015-11-11 00:11:17 +01:00
;<3B> <20> <> <20> 䮪<> <E4AEAA> <EFBFBD> ᤢ<> <E1A4A2> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> न<EFBFBD> <E0A4A8> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> ⨢<EFBFBD> <E2A8A2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2017-09-12 15:56:36 +02:00
movzx ecx , tl_img_cx
movzx eax , tl_img_cy
2015-11-04 01:39:02 +01:00
imul eax , ecx
imul eax , 4 * 3 ;4=icon index 3=rgb
add ebx , eax
.focus:
mov cx , tl_img_cx
shl ecx , 16
mov cx , tl_img_cy
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
;crop image if on the border
2015-11-11 00:11:17 +01:00
cmp si , dx ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
jl .end_f
2009-11-20 11:15:49 +01:00
2015-11-04 01:39:02 +01:00
sub si , dx
cmp si , tl_img_cy
jge .crop1
2015-11-11 00:11:17 +01:00
mov cx , si ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 筮 (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> )
2015-11-04 01:39:02 +01:00
.crop1:
2009-11-20 11:15:49 +01:00
2017-09-12 15:56:36 +02:00
mcall SF_PUT_IMAGE ;<3B> <> <EFBFBD> 㥬 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-04 01:39:02 +01:00
.end_f:
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> ࠥ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD>
2009-11-20 11:15:49 +01:00
;input:
; edi = pointer to TreeInfo struct
; esi = coord bottom border
align 4
2015-11-04 01:39:02 +01:00
proc tl_draw_null_cursor uses eax ebx ecx edx esi
2015-12-03 11:55:32 +01:00
call tl_get_display_cur_pos ;eax = cursor pos in screen
cmp eax , 0
jl .end_f ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 室<EFBFBD> <E5AEA4> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> , <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ப<EFBFBD> <E0AEAA> 祭<EFBFBD> <E7A5AD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
mov ebx , tl_box_left
shl ebx , 16
mov bx , tl_img_cx
2017-09-12 15:56:36 +02:00
movzx ecx , tl_img_cy
2015-12-03 11:55:32 +01:00
imul ecx , eax
add ecx , tl_box_top
add cx , tl_capt_cy
;crop image if on the border
cmp esi , ecx ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
jl .end_f
sub esi , ecx
shl ecx , 16
mov cx , tl_img_cy
cmp si , tl_img_cy
jge @ f
mov cx , si ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 筮 (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> )
@ @ :
2017-09-12 15:56:36 +02:00
mcall SF_DRAW_RECT ,,, tl_col_bkg ;<3B> <> <EFBFBD> 㥬 <20> <> <EFBFBD> <EFBFBD> ⮩ <20> <> אַ㣮<EFACAE> 쭨<EFBFBD> <20> 䮭<> <E4AEAD> <EFBFBD> <EFBFBD> 梥⮬
2015-12-03 11:55:32 +01:00
.end_f:
ret
2015-11-04 01:39:02 +01:00
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> ⭮<EFBFBD> <E2ADAE> ⥫쭮 <20> <> ࠭<EFBFBD>
2009-11-20 11:15:49 +01:00
;input:
; edi = pointer to TreeInfo struct
;output:
; eax = index
align 4
2015-11-04 01:39:02 +01:00
tl_get_display_cur_pos:
2015-12-03 11:55:32 +01:00
mov eax , tl_cur_pos
cmp tl_p_scroll , 0
je @ f
push ebx
mov ebx , tl_p_scroll
mov ebx , dword [ ebx + sb_offs_position ]
sub eax , ebx ;<3B> ⭨<EFBFBD> <E2ADA8> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
pop ebx
@ @ :
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<> <20> : <20> <> <EFBFBD> ⨭<EFBFBD> <E2A8AD> <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> /<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> ﬨ <20> த<> <E0AEA4> . 㧫<>
2009-11-20 11:15:49 +01:00
;input:
2015-12-03 11:55:32 +01:00
; eax = node position (0, ..., max_nodes-scroll_pos) <20> <> <20> <> tl_box_height/tl_img_cy
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2010-02-09 15:54:59 +01:00
; edi = pointer to 'TreeList' struct
2009-11-20 11:15:49 +01:00
; esi = coord of bottom border
align 4
2015-11-04 01:39:02 +01:00
proc tl_draw_node uses eax ebx ecx edx esi
2015-11-11 00:11:17 +01:00
mov ebx , 1 ;1 - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2010-12-08 19:45:24 +01:00
bt tl_style , 2 ;tl_list_box_mode
jc @ f
2015-11-11 00:11:17 +01:00
inc ebx ;+1 - <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> +,-
2017-09-12 15:56:36 +02:00
add bl , byte [ edx + TreeNode.level ] ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 㯥 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2010-12-08 19:45:24 +01:00
@ @ :
imul bx , tl_img_cx
add ebx , tl_box_left
shl ebx , 16
mov bx , tl_img_cx
2017-09-12 15:56:36 +02:00
movzx ecx , tl_img_cy
2010-12-08 19:45:24 +01:00
imul ecx , eax
add cx , tl_capt_cy
2015-12-03 11:55:32 +01:00
jc .end_draw ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <E3A7AB> , <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ९<EFBFBD> <E0A5AF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> न<EFBFBD> <E0A4A8> <EFBFBD> <EFBFBD> cx
add ecx , tl_box_top
2010-12-08 19:45:24 +01:00
;crop image if on the border
2015-11-11 00:11:17 +01:00
cmp esi , ecx ;<3B> 㧥<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2010-12-08 19:45:24 +01:00
jl .end_draw
sub esi , ecx
shl ecx , 16
mov cx , tl_img_cy
cmp si , tl_img_cy
jge @ f
2015-11-11 00:11:17 +01:00
mov cx , si ;<3B> 㧥<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 筮 (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> )
jmp .crop ;<3B> ய<EFBFBD> ᪠<EFBFBD> <E1AAA0> <20> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ॥ <20> ᥣ<EFBFBD> ⮦<> <20> 뫥<EFBFBD> <EBABA5> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD>
2010-12-08 19:45:24 +01:00
@ @ :
call tl_draw_node_caption
.crop:
mov esi , ecx ;save ecx
2009-11-20 11:15:49 +01:00
2017-09-12 15:56:36 +02:00
push edx
2010-12-08 19:45:24 +01:00
cmp tl_data_img , 0
jne .draw_img_n
2017-09-12 15:56:36 +02:00
mcall SF_DRAW_RECT ,,, tl_col_txt ;draw node rect
jmp @ f
2010-12-08 19:45:24 +01:00
.draw_img_n:
2017-09-12 15:56:36 +02:00
push ebx esi
movzx esi , word [ edx + TreeNode.type ] ;get icon type
2010-12-08 19:45:24 +01:00
mov edx , ebx
ror ecx , 16
mov dx , cx
mov cx , bx
ror ecx , 16
mov ebx , 3 ;rgb = 3 bytes
imul bx , tl_img_cx
imul bx , tl_img_cy
imul ebx , esi ;esi = icon index
add ebx , tl_data_img
2017-09-12 15:56:36 +02:00
mcall SF_PUT_IMAGE ;draw node icon '-'
pop esi ebx
2010-12-08 19:45:24 +01:00
@ @ :
2017-09-12 15:56:36 +02:00
pop edx
2009-11-20 11:15:49 +01:00
2017-09-12 15:56:36 +02:00
mov al , byte [ edx + TreeNode.level ] ;draw minus '-'
2010-12-08 19:45:24 +01:00
mov ecx , tl_data_nodes
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2010-12-08 19:45:24 +01:00
mov ah , 10 ;get icon index '+' or '-' ?
2017-09-12 15:56:36 +02:00
cmp byte [ edx + TreeNode.close ], 1
2010-12-08 19:45:24 +01:00
jne .close
dec ah
.close:
2015-11-11 00:11:17 +01:00
call tl_draw_node_icon_opn_clo ;<3B> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⮣<EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⮣<EFBFBD> 㧫<>
2010-12-08 19:45:24 +01:00
bt tl_style , 1
jae .end_draw
2015-11-11 00:11:17 +01:00
call tl_draw_node_icon_par_lin ;<3B> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
call tl_draw_node_icon_par_lin_up ;<3B> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ⨪<EFBFBD> <E2A8AA> 쭮<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2010-12-08 19:45:24 +01:00
.end_draw:
ret
2015-11-04 01:39:02 +01:00
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⮣<EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⮣<EFBFBD> 㧫<> (<28> <> <EFBFBD> 筮 + <20> <> <EFBFBD> -)
2009-11-20 11:15:49 +01:00
;input:
2015-11-11 00:11:17 +01:00
; al = <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
; ecx = pointer to 1 node struct
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
;...
align 4
2015-11-04 01:39:02 +01:00
proc tl_draw_node_icon_opn_clo uses eax ebx ecx edx esi
2015-12-03 11:55:32 +01:00
inc al
call tl_iterat_next_all ;get next visible item
cmp edx , ecx
jle @ f
mov ecx , esi ;load ecx
2017-09-12 15:56:36 +02:00
cmp al , byte [ edx + TreeNode.level ]
2015-12-03 11:55:32 +01:00
jne @ f
ror ebx , 16
sub bx , tl_img_cx
ror ebx , 16
cmp tl_data_img_sys , 0
jne .draw_img_s
2017-09-12 15:56:36 +02:00
mcall SF_DRAW_RECT ,,, tl_col_txt ;draw minus rect, if not system icons
2015-12-03 11:55:32 +01:00
jmp @ f
.draw_img_s:
mov ecx , esi ;load ecx
mov edx , ebx
ror ecx , 16
mov dx , cx
mov cx , bx
ror ecx , 16
mov ebx , 3 ;rgb = 3 bytes
imul bx , tl_img_cx
imul bx , tl_img_cy
shr eax , 8
and eax , 0xff
imul ebx , eax ;eax = icon index
add ebx , tl_data_img_sys
2017-09-12 15:56:36 +02:00
mcall SF_PUT_IMAGE ;draw minus icon '-'
2015-12-03 11:55:32 +01:00
@ @ :
ret
2015-11-04 01:39:02 +01:00
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
;input:
2015-11-11 00:11:17 +01:00
; al = <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2010-02-09 15:54:59 +01:00
; ecx = pointer to 1 node struct
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
;...
align 4
2015-11-04 01:39:02 +01:00
tl_draw_node_icon_par_lin:
2017-09-12 15:56:36 +02:00
cmp byte [ edx + TreeNode.close ], 1
2015-12-03 11:55:32 +01:00
je .close
2017-09-12 15:56:36 +02:00
or al , al
jz .close
2015-12-03 11:55:32 +01:00
push eax ebx ecx edx esi
call tl_iterat_next_all ;get next visible item
cmp edx , ecx
jle .line3 ;if end of list
2017-09-12 15:56:36 +02:00
cmp al , byte [ edx + TreeNode.level ]
2015-12-03 11:55:32 +01:00
jne .line3 ;jg ???
mov eax , 3 ;line in middle element
jmp .line2
.line3:
mov eax , 6 ;line in end element
.line2:
mov ecx , esi ;load ecx
ror ebx , 16
sub bx , tl_img_cx
ror ebx , 16
cmp tl_data_img_sys , 0
jne .draw_img_s
2017-09-12 15:56:36 +02:00
mcall SF_DRAW_RECT ,,, tl_col_txt ;draw minus rect, if not system icons
2015-12-03 11:55:32 +01:00
jmp @ f
.draw_img_s:
mov edx , ebx
ror ecx , 16
mov dx , cx
mov cx , bx
ror ecx , 16
mov ebx , 3 ;rgb = 3 bytes
imul bx , tl_img_cx
imul bx , tl_img_cy
imul ebx , eax ;eax = icon index
add ebx , tl_data_img_sys
2017-09-12 15:56:36 +02:00
mcall SF_PUT_IMAGE ;draw line icon
@ @ :
2015-12-03 11:55:32 +01:00
pop esi edx ecx ebx eax
.close:
ret
2009-11-20 11:15:49 +01:00
2009-12-08 17:09:03 +01:00
2010-02-09 15:54:59 +01:00
;input:
2015-11-11 00:11:17 +01:00
; al = <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2015-12-03 11:55:32 +01:00
; ebx = (node.left shl 16) + tl_img_cx
2010-02-09 15:54:59 +01:00
; ecx = pointer to 1 node struct
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2010-02-09 15:54:59 +01:00
; edi = pointer to 'TreeList' struct
2009-12-08 17:09:03 +01:00
align 4
2015-12-03 11:55:32 +01:00
proc tl_draw_node_icon_par_lin_up uses eax ebx ecx edx esi
cmp tl_data_img_sys , 0 ;if not image
je @ f
2017-09-12 15:56:36 +02:00
or al , al
jz @ f
2015-12-03 11:55:32 +01:00
xor esi , esi ;<3B> si <20> 㤥<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 뢠<EFBFBD> <EBA2A0> <20> <> <EFBFBD> -<2D> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> 㦭<EFBFBD> <E3A6AD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2015-11-11 00:11:17 +01:00
;--- 横<> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <E1ABA5> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⢠ <20> <> <EFBFBD> ⨪<EFBFBD> <E2A8AA> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ---
2015-12-03 11:55:32 +01:00
.cycle0:
call tl_iterat_perv ;get perv visible item
cmp edx , ecx
jle .cycle1 ;if begin of list
2017-09-12 15:56:36 +02:00
cmp byte [ edx + TreeNode.level ], al
2015-12-03 11:55:32 +01:00
jle .cycle0end ;<3B> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> 孥<EFBFBD> <E5ADA5> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> ॡ<EFBFBD> <E0A5A1> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2>
inc si
jmp .cycle0
.cycle0end:
2017-09-12 15:56:36 +02:00
or si , si ;si = <20> <> <EFBFBD> -<2D> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> 㦭<EFBFBD> <20> <> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> ᢥ<> <E1A2A5> <EFBFBD>
jz @ f
2015-12-03 11:55:32 +01:00
shl esi , 16
pop ecx ;esi->ecx
push ecx ;save esi
ror ebx , 16
sub bx , tl_img_cx
ror ebx , 16
mov edx , ebx
ror ecx , 16
mov dx , cx
mov cx , bx
ror ecx , 16
mov cx , tl_img_cy ;restore size y (if crop)
mov ebx , 3 ;rgb = 3 bytes
imul bx , tl_img_cx
imul bx , tl_img_cy
add ebx , tl_data_img_sys
add esi , tl_box_top
add si , tl_capt_cy ;si = <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2017-09-12 15:56:36 +02:00
mov eax , SF_PUT_IMAGE
2015-11-11 00:11:17 +01:00
;--- 横<> <20> <> <EFBFBD> <20> <> ᮢ<EFBFBD> <E1AEA2> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ⨪<EFBFBD> <E2A8AA> 쭮<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ---
2015-12-03 11:55:32 +01:00
.cycle1:
sub dx , tl_img_cy ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> न<EFBFBD> <E0A4A8> <EFBFBD> <EFBFBD> y <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
cmp dx , si
jl @ f
cmp esi , 0x10000
jl @ f
int 0x40 ;draw line icon
sub esi , 0x10000 ;㬥<> <E3ACA5> 蠥<EFBFBD> <20> <> <EFBFBD> <EFBFBD> 稪 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
jmp .cycle1
@ @ :
ret
endp
2009-12-08 17:09:03 +01:00
2009-11-20 11:15:49 +01:00
;input:
; edi = pointer to TreeInfo struct
;output:
; eax = rows
align 4
tl_get_rows_count:
2015-12-03 11:55:32 +01:00
push ecx edx
mov eax , tl_box_height
sub ax , tl_capt_cy
2017-09-12 15:56:36 +02:00
movzx ecx , tl_img_cy
2015-12-03 11:55:32 +01:00
xor edx , edx
div ecx
pop edx ecx
ret
2009-11-20 11:15:49 +01:00
;input:
; eax = node position
2015-11-11 00:11:17 +01:00
; ebx = [<5B> <> <EFBFBD> न<EFBFBD> <E0A4A8> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> x]*65536 + [img_cx]
; ecx = [<5B> <> <EFBFBD> न<EFBFBD> <E0A4A8> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> y]*65536 + [img_cy]
2017-09-12 15:56:36 +02:00
; edx = pointer to node struct
2009-11-20 11:15:49 +01:00
; edi = pointer to TreeInfo struct
align 4
2015-12-03 11:55:32 +01:00
proc tl_draw_node_caption uses ebx ecx edx esi
xor esi , esi
mov si , tl_info_size
cmp si , tl_info_capt_offs
jle @ f ;if caption size <= 0
push eax
call tl_get_node_index ;eax = node index
imul esi , eax
pop eax
add si , tl_info_capt_offs
add esi , tl_data_info
mov edx , esi
shr ebx , 16
add bx , tl_img_cx ;ᤢ<> <E1A4A2> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> ਧ<EFBFBD> <E0A8A7> ⠫<EFBFBD> --->
add bx , 3 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
;bx = coord.x
call tl_strlen ;eax = strlen
call tl_get_draw_text_len
mov cx , bx
ror ecx , 16
mov ebx , ecx
add bx , tl_img_cy ;<3B> <> ࠢ<EFBFBD> <E0A0A2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
sub bx , 9 ;<3B> ⭨<EFBFBD> <E2ADA8> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<> <E2A5AA> <EFBFBD>
mov ecx , tl_col_txt
and ecx , 0xffffff
2017-09-12 15:56:36 +02:00
mcall SF_DRAW_TEXT
2015-12-03 11:55:32 +01:00
@ @ :
ret
endp
2009-11-20 11:15:49 +01:00
;input:
; eax = strlen
; ebx = text coord x
;output:
; esi = text len
align 4
2015-12-03 11:55:32 +01:00
proc tl_get_draw_text_len uses eax ecx edx
mov esi , eax ;<3B> <> ६ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ப<EFBFBD>
mov eax , tl_box_left
add eax , tl_box_width
cmp eax , ebx
jle .text_null ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD> <E0A0AD>
sub eax , ebx
xor edx , edx
mov ecx , 6 ;<3B> <> ਭ<EFBFBD> <20> <> <EFBFBD> ⥬<EFBFBD> <E2A5AC> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
div ecx ;ᬮ<> ਬ <> 쪮 ᨬ<> <E1A8AC> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD>
cmp esi , eax
jl @ f
mov esi , eax ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<> <E2A5AA> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , 祬 <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> ப<EFBFBD>
jmp @ f
.text_null:
xor esi , esi
@ @ :
ret
endp
2009-11-20 11:15:49 +01:00
;input:
; esi = pointer to string
;output:
; eax = strlen
align 4
tl_strlen:
2015-12-03 11:55:32 +01:00
mov eax , esi
@ @ :
cmp byte [ eax ], 0
je @ f
inc eax
jmp @ b
@ @ :
sub eax , esi
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<>
2009-11-20 11:15:49 +01:00
;input:
2015-11-11 00:11:17 +01:00
; tlist - 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
; n_opt - <20> <> 樨 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
; n_info - 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞<EFBFBD> <EFA5AC> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-11 00:11:17 +01:00
proc tl_node_add uses eax ebx ecx edx edi , tlist : dword , n_opt : dword , n_info : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2009-11-20 11:15:49 +01:00
2015-12-03 11:55:32 +01:00
call tl_info_set_undo
2009-11-20 11:15:49 +01:00
2017-09-12 15:56:36 +02:00
mov ebx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
imul ebx , tl_info_max_count
add ebx , tl_data_nodes
2009-11-20 11:15:49 +01:00
;--
2015-12-03 11:55:32 +01:00
call tl_get_cur_node_index ;eax=po_t
2017-09-12 15:56:36 +02:00
imul eax , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
add eax , tl_data_nodes
mov edx , eax
call tl_move_perv
call tl_get_node_index ;eax = index of pointer [edx]
2009-11-20 11:15:49 +01:00
;--
2017-09-12 15:56:36 +02:00
mov edx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
shl edx , 1
add edx , tl_data_nodes
@ @ : ;for(i=2;i<nodeMax;i++)
2017-09-12 15:56:36 +02:00
cmp dword [ edx + TreeNode.t_create ], 0
2015-12-03 11:55:32 +01:00
jne .u0
2017-09-12 15:56:36 +02:00
cmp dword [ edx + TreeNode.t_delete ], 0
2015-12-03 11:55:32 +01:00
jne .u0
2009-11-20 11:15:49 +01:00
2015-12-03 11:55:32 +01:00
inc tl_ch_tim
mov ecx , dword [ n_opt ]
ror ecx , 16 ;cx = type
2017-09-12 15:56:36 +02:00
mov word [ edx + TreeNode.type ], cx
2015-12-03 11:55:32 +01:00
rol ecx , 8 ;cl = close|open
2017-09-12 15:56:36 +02:00
mov byte [ edx + TreeNode.close ], cl ;node[i].clo
mov byte [ edx + TreeNode.level ], 0 ;node[i].lev=0
2015-12-03 11:55:32 +01:00
bt tl_style , 2 ;tl_list_box_mode
jc .l_box_m
mov cl , byte [ n_opt ]
2017-09-12 15:56:36 +02:00
mov byte [ edx + TreeNode.level ], cl ;node[i].lev
2015-12-03 11:55:32 +01:00
.l_box_m:
push tl_ch_tim ;node[i].tc=ch_tim;
2017-09-12 15:56:36 +02:00
pop dword [ edx + TreeNode.t_create ]
mov [ edx + TreeNode.perv ], eax ;node[i].perv=po_t;
2015-12-03 11:55:32 +01:00
;*** copy node data ***
push esi
xor ecx , ecx
mov cx , tl_info_size
mov esi , ecx
push eax
call tl_get_node_index ;eax = node index
imul esi , eax
pop eax
add esi , tl_data_info
mov edi , dword [ n_info ] ;pointer to node data
xchg edi , esi
rep movsb
mov esi , edi
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ] ;restore edi
2015-12-03 11:55:32 +01:00
mov cx , tl_info_capt_offs
cmp cx , tl_info_size
jge .no_text_data
cmp tl_info_capt_len , 0 ;<3B> <EFBFBD> <E0AEA2> 塞 <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD> 祭<EFBFBD> <E7A5AD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ப<EFBFBD>
je .no_len_ogran
add cx , tl_info_capt_len
and ecx , 0xffff
add esi , ecx
mov cx , tl_info_size
sub esi , ecx
.no_len_ogran:
dec esi
mov byte [ esi ], 0
.no_text_data:
pop esi ;restore esi
mov ecx , eax
2017-09-12 15:56:36 +02:00
imul ecx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
add ecx , tl_data_nodes ; *** ecx = node[po_t] ***
2017-09-12 15:56:36 +02:00
add ecx , TreeNode.next ; *** ecx = node[po_t].next ***
2015-12-03 11:55:32 +01:00
push dword [ ecx ] ;node[i].next=node[po_t].next;
2017-09-12 15:56:36 +02:00
pop dword [ edx + TreeNode.next ]
2015-12-03 11:55:32 +01:00
call tl_get_node_index ;*** eax = i ***
cmp eax , tl_info_max_count
jge .u0
mov [ ecx ], eax ;node[po_t].next=i; // <20> <> 뫪<EFBFBD> <20> <> ७<EFBFBD> <E0A5AD> ࠢ<EFBFBD> 塞
2017-09-12 15:56:36 +02:00
mov ecx ,[ edx + TreeNode.next ] ; *** ecx = node[i].next ***
imul ecx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
add ecx , tl_data_nodes ; *** ecx = node[node[i].next] ***
2017-09-12 15:56:36 +02:00
mov [ ecx + TreeNode.perv ], eax ;node[node[i].next].perv=i;
2015-12-03 11:55:32 +01:00
call tb_scrol_resize ;<3B> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
jmp @ f
.u0:
2017-09-12 15:56:36 +02:00
add edx , si zeof.TreeNode
2015-12-03 11:55:32 +01:00
cmp edx , ebx ;enf of node memory ?
jle @ b
@ @ :
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
;input:
; edi = pointer to TreeInfo struct
align 4
2015-11-04 01:39:02 +01:00
proc tb_scrol_resize uses eax ecx edx
2015-11-11 00:11:17 +01:00
cmp tl_p_scroll , 0 ;<3B> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2015-12-03 11:55:32 +01:00
je @ f
call tl_get_node_count ;eax = node count
mov ecx , eax
call tl_get_rows_count
cmp ecx , eax
jg .ye_sb
xor ecx , ecx
.ye_sb:
mov edx , tl_p_scroll
mov dword [ edx + sb_offs_cur_area ], eax
mov dword [ edx + sb_offs_max_area ], ecx
2015-11-04 01:39:02 +01:00
stdcall scroll_bar_vertical.draw , edx
2015-12-03 11:55:32 +01:00
@ @ :
ret
2015-11-04 01:39:02 +01:00
endp
2009-11-20 11:15:49 +01:00
;input:
2015-11-04 01:39:02 +01:00
;n_info - pointer to node info
2009-11-20 11:15:49 +01:00
align 4
2015-11-11 00:11:17 +01:00
proc tl_node_set_data uses eax ecx edx edi esi , tlist : dword , n_info : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-12-03 11:55:32 +01:00
call tl_get_cur_node_index ;eax=po_t
cmp eax , 2
jl @ f
xor ecx , ecx
mov cx , tl_info_size
imul eax , ecx
add eax , tl_data_info
mov edi , eax
mov esi , dword [ n_info ] ;pointer to node data
rep movsb
mov esi , edi
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ] ;restore edi
2015-12-03 11:55:32 +01:00
mov cx , tl_info_capt_offs
cmp cx , tl_info_size
jge .no_text_data
mov ax , tl_info_capt_len ;<3B> <EFBFBD> <E0AEA2> 塞 <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> ࠭<EFBFBD> 祭<EFBFBD> <E7A5AD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<> <E2A5AA> <EFBFBD>
2017-09-12 15:56:36 +02:00
or ax , ax
jz .no_limit
2015-12-03 11:55:32 +01:00
add cx , ax ;cx = tl_info_capt_offs + tl_info_capt_len
and ecx , 0xffff
xor eax , eax
mov ax , tl_info_size
cmp eax , ecx
jl .no_limit ;<3B> <> <EFBFBD> 짮<EFBFBD> <ECA7AE> ⥫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 誮<E1ABA8> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥪<> <E2A5AA> <EFBFBD>
add esi , ecx
sub esi , eax
.no_limit:
dec esi
mov byte [ esi ], 0 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 塞 <20> <> <EFBFBD> <E1ABA5> <EFBFBD> <EFBFBD> ᨬ<> <E1A8AC> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> -<2D> <> <20> <> <20> <> <EFBFBD> 稫<EFBFBD> <20> <20> <> <EFBFBD> 짮<EFBFBD> <ECA7AE> ⥫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ࠢ<EFBFBD> <E0A0A2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
.no_text_data:
@ @ :
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
;input:
2015-11-11 00:11:17 +01:00
; tlist - pointer to 'TreeList' struct
;output:
; eax - pointer to node data
2009-11-20 11:15:49 +01:00
align 4
2015-11-11 00:11:17 +01:00
proc tl_node_get_data uses ecx edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
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:
2009-11-20 11:15:49 +01:00
ret
2015-11-11 00:11:17 +01:00
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <20> 㪠<> <E3AAA0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> 樨
2009-11-20 11:15:49 +01:00
;input:
2015-11-11 00:11:17 +01:00
; tlist - pointer to 'TreeList' struct
; node_ind - node index
;output:
; eax - pointer to node info
2009-11-20 11:15:49 +01:00
align 4
2015-11-14 22:31:00 +01:00
proc tl_node_poi_get_info uses ebx ecx edx edi , tlist : dword , node_ind : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
mov ebx , dword [ node_ind ]
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;cycle to nodes
2015-11-14 22:31:00 +01:00
mov edx , tl_data_nodes
mov ecx , edx
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
@ @ :
call tl_iterat_next_all
2015-11-14 22:31:00 +01:00
cmp edx , ecx
2015-11-11 00:11:17 +01:00
jle @ f
dec ebx
cmp ebx , 0
jg @ b
jmp .find
@ @ :
2015-11-14 22:31:00 +01:00
xor edx , edx
2015-11-11 00:11:17 +01:00
.find:
2015-11-14 22:31:00 +01:00
mov eax , edx
2015-11-11 00:11:17 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <> <E1ABA5> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<>
2009-11-20 11:15:49 +01:00
;input:
2015-11-11 00:11:17 +01:00
; tlist - pointer to 'TreeList' struct
; node_p - node param struct
;output:
; eax - pointer to next node struct
2009-11-20 11:15:49 +01:00
align 4
2015-11-11 00:11:17 +01:00
proc tl_node_poi_get_next_info uses ecx edx edi , tlist : dword , node_p : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
mov edx , dword [ node_p ]
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
mov ecx , tl_data_nodes
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
call tl_iterat_next_all
cmp edx , ecx
jg @ f
xor edx , edx
@ @ :
mov eax , edx
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<>
2009-11-20 11:15:49 +01:00
;input:
2015-11-11 00:11:17 +01:00
; tlist - pointer to 'TreeList' struct
; node_p - node param struct
;output:
; eax - pointer
2009-11-20 11:15:49 +01:00
align 4
2015-11-11 00:11:17 +01:00
proc tl_node_poi_get_data uses ecx edx edi , tlist : dword , node_p : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
mov edx , dword [ node_p ]
2015-12-03 11:55:32 +01:00
call tl_get_node_index ;eax = node index
cmp eax , 2
jl @ f
xor ecx , ecx
mov cx , tl_info_size
imul eax , ecx
2015-11-11 00:11:17 +01:00
add eax , tl_data_info
jmp .end_f ;return node data pointer
2015-12-03 11:55:32 +01:00
@ @ :
2015-11-11 00:11:17 +01:00
xor eax , eax ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 頥<EFBFBD> 0 <20> <20> <> <EFBFBD> 砥 <20> <> 㤠筮<E3A4A0> <E7ADAE> <20> <> <EFBFBD> ᪠
.end_f:
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
;input:
; edi = pointer 'tl' struct
;output:
; eax = index of current node
align 4
2015-11-04 01:39:02 +01:00
proc tl_get_cur_node_index uses ecx edx
2015-11-11 00:11:17 +01:00
;cycle to nodes
xor eax , eax
mov edx , tl_data_nodes
mov ecx , edx
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
@ @ :
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
2017-09-12 15:56:36 +02:00
mov ecx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
div ecx
ret
2015-11-04 01:39:02 +01:00
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᨬ<> <E1A8AC> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
;input:
; edx = pointer node memory
; edi = pointer 'tl' struct
;output:
; eax = struct index of current node
align 4
2015-11-04 01:39:02 +01:00
tl_get_node_index:
2015-11-11 00:11:17 +01:00
push ecx edx
mov eax , edx
sub eax , tl_data_nodes
xor edx , edx
2017-09-12 15:56:36 +02:00
mov ecx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
div ecx
pop edx ecx
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;㤠<> <E3A4A0> <EFBFBD> <EFBFBD> 㧥<>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_node_delete uses eax edx edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
call tl_get_cur_node_index ;eax=po_t
cmp eax , 2
jl @ f
2017-09-12 15:56:36 +02:00
imul eax , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
add eax , tl_data_nodes
mov edx , eax
inc tl_ch_tim
mov eax , tl_ch_tim
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.t_delete ], eax
2015-11-11 00:11:17 +01:00
call tb_scrol_resize ;<3B> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
@ @ :
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> ⠢<EFBFBD> <E2A0A2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_cur_beg uses edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
mov tl_cur_pos , 0
cmp tl_p_scroll , 0
je @ f
mov edi , tl_p_scroll
mov dword [ edi + sb_offs_position ], 0
2015-11-04 01:39:02 +01:00
stdcall scroll_bar_vertical.draw , edi
2015-11-11 00:11:17 +01:00
@ @ :
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> ७<EFBFBD> <E0A5AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 1 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_cur_next uses eax ebx edi esi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-12-03 11:55:32 +01:00
call tl_get_node_count ;eax = node count
2018-10-30 14:03:22 +01:00
bt tl_style , 3 ;tl_cursor_pos_limited
jnc @ f
or eax , eax
jz @ f
dec eax ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ⠥<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 騥 㧫<>
@ @ :
2015-12-03 11:55:32 +01:00
cmp tl_cur_pos , eax
jge .no_redraw
mov esi , tl_box_top
add esi , tl_box_height ;esi = coord bottom border
call tl_draw_null_cursor ;<3B> <> <EFBFBD> ࠥ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
inc tl_cur_pos
cmp tl_p_scroll , 0 ;if not scrol struct
je @ f
call tl_get_rows_count ;eax = rows count
mov ebx , tl_p_scroll
add eax , dword [ ebx + sb_offs_position ]
cmp tl_cur_pos , eax
jl @ f
inc dword [ ebx + sb_offs_position ]
stdcall scroll_bar_vertical.draw , ebx
stdcall tl_draw , dword [ tlist ] ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <20> <> <EFBFBD> <EFBFBD>
jmp .no_redraw
@ @ :
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ] ;restore edi
2015-12-03 11:55:32 +01:00
call tl_draw_cursor ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
call tl_draw_caption_cur_pos
.no_redraw:
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <E3A7AB> (<28> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> )
2009-11-20 11:15:49 +01:00
;input:
; edi = pointer 'tl' struct
;output:
; eax = struct index of current node
align 4
2015-11-04 01:39:02 +01:00
tl_get_node_count:
2015-11-11 00:11:17 +01:00
push ecx edx
;cycle to nodes
xor eax , eax
mov edx , tl_data_nodes
mov ecx , edx
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
@ @ :
call tl_iterat_next
cmp edx , ecx
jle @ f
inc eax
jmp @ b
@ @ :
pop edx ecx
ret
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <E3A7AB> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> )
2009-12-02 12:18:26 +01:00
;input:
; edi = pointer 'tl' struct
;output:
; eax = struct index of current node
align 4
2015-11-04 01:39:02 +01:00
tl_get_node_count_all:
2015-11-11 00:11:17 +01:00
push ecx edx
;cycle to nodes
xor eax , eax
mov edx , tl_data_nodes
mov ecx , edx
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
@ @ :
call tl_iterat_next_all
cmp edx , ecx
jle @ f
inc eax
jmp @ b
@ @ :
pop edx ecx
ret
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> ७<EFBFBD> <E0A5AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 1 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_cur_perv uses eax edi esi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
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 ;<3B> <> <EFBFBD> ࠥ<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
dec tl_cur_pos ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
cmp tl_p_scroll , 0 ;<3B> <20> <> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD>
je @ f
mov eax , tl_p_scroll
cmp dword [ eax + sb_offs_position ], 0 ;<3B> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> 室<EFBFBD> <E5AEA4>
je @ f
mov edi , tl_cur_pos
cmp edi , dword [ eax + sb_offs_position ] ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> 襫 <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD> , ⮣<> <E2AEA3> <20> <> <EFBFBD> ᪠<EFBFBD> <E1AAA0> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD>
jge @ f
dec dword [ eax + sb_offs_position ]
stdcall scroll_bar_vertical.draw , eax
stdcall tl_draw , dword [ tlist ] ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <20> <> <EFBFBD> <EFBFBD>
jmp .no_redraw
@ @ :
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ] ;restore edi
2015-11-11 00:11:17 +01:00
call tl_draw_cursor ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
call tl_draw_caption_cur_pos
.no_redraw:
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> ७<EFBFBD> <E0A5AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 1 <20> <> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2009-12-02 12:18:26 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_cur_page_up uses eax edi esi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-12-03 11:55:32 +01:00
cmp tl_p_scroll , 0 ;<3B> <20> <> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD>
je .no_redraw
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 ;<3B> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> 室<EFBFBD> <E5AEA4>
jne @ f
jmp .no_redraw
@ @ :
cmp tl_cur_pos , eax ;<3B> <EFBFBD> <E0AEA2> 塞 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> -<2D> <> <20> ⮪ <20> <> <20> <> ࠭<EFBFBD> <E0A0AD> <EFBFBD>
jl @ f ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <20> <> <EFBFBD> ࠢ<EFBFBD> <E0A0A2> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> 0, <20> <> <EFBFBD> -<2D> <> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 祬 <20> <> <EFBFBD> <EFBFBD>
sub tl_cur_pos , eax
jmp .cursor
@ @ :
mov tl_cur_pos , 0
.cursor:
cmp dword [ esi + sb_offs_position ], eax
jl @ f
sub dword [ esi + sb_offs_position ], eax
jmp .scroll
@ @ :
mov dword [ esi + sb_offs_position ], 0
.scroll:
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <20> <> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall tl_draw , edi ;draw window
stdcall scroll_bar_vertical.draw , esi
.no_redraw:
2015-11-04 01:39:02 +01:00
ret
endp
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> ७<EFBFBD> <E0A5AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> 1 <20> <> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
2009-12-02 12:18:26 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_cur_page_down uses eax ebx ecx edi esi , tlist : dword
2015-11-11 00:11:17 +01:00
;eax - <20> <> <EFBFBD> -<2D> <> <20> <> ப <20> <> <20> <> ࠭<EFBFBD> <E0A0AD> <EFBFBD>
;ebx - <20> <> <EFBFBD> <EFBFBD> . <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
;ecx - <20> <> <EFBFBD> <EFBFBD> . <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-12-03 11:55:32 +01:00
cmp tl_p_scroll , 0 ;<3B> <20> <> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD>
je .no_redraw
mov esi , tl_p_scroll
call tl_get_node_count ;eax = node count
2018-10-30 14:03:22 +01:00
bt tl_style , 3 ;tl_cursor_pos_limited
jnc @ f
or eax , eax
jz @ f
dec eax ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ⠥<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 騥 㧫<>
@ @ :
2015-12-03 11:55:32 +01:00
mov ebx , eax
call tl_get_rows_count ;eax = rows count
mov ecx , ebx
inc ecx ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cmp ecx , eax ;if (ecx>eax) { ecx=ecx-eax } else { ecx=0 }
jl @ f
sub ecx , eax ;㬥<> <E3ACA5> 蠥<EFBFBD> <20> <> <EFBFBD> ᨬ<EFBFBD> <E1A8AC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD> , ⠪ <20> <> <EFBFBD> -<2D> <> <20> 뫨 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <E1ABA5> <EFBFBD> <EFBFBD> 㧫<>
jmp .control
@ @ :
xor ecx , ecx ;ecx=0 - <20> <> <EFBFBD> 㧫<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> <> ࠭, <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <20> <> <20> 㦥<EFBFBD>
.control:
cmp tl_cur_pos , ebx ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ?
jl @ f
cmp dword [ esi + sb_offs_position ], ecx ;<3B> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ?
jl @ f
jmp .no_redraw
@ @ :
add tl_cur_pos , eax ;<3B> <> ६<EFBFBD> 頥<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cmp tl_cur_pos , ebx
jl @ f
mov tl_cur_pos , ebx
@ @ :
add dword [ esi + sb_offs_position ], eax ;<3B> <> ६<EFBFBD> 頥<EFBFBD> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD>
cmp dword [ esi + sb_offs_position ], ecx
jl @ f
mov dword [ esi + sb_offs_position ], ecx
@ @ :
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ᮢ<EFBFBD> <E1AEA2> <20> <> <EFBFBD> <EFBFBD> <20> <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
stdcall tl_draw , edi ;draw window
stdcall scroll_bar_vertical.draw , esi
.no_redraw:
2015-11-04 01:39:02 +01:00
ret
endp
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> /<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧥<> (ࠡ<> ⠥<EFBFBD> <20> 㧫<> <E3A7AB> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> 㧫<> )
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_node_close_open uses eax edx edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
call tl_get_cur_node_index ;eax = <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <20> <> <20> <> <EFBFBD> <EFBFBD> <20> ⮨<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
cmp eax , 2 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> ⮨<EFBFBD> <20> <> 㧫<> ?
jl @ f
2017-09-12 15:56:36 +02:00
imul eax , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
add eax , tl_data_nodes
;eax = 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <20> <> <EFBFBD> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
push eax
stdcall tl_node_poi_get_next_info , edi , eax
mov edx , eax ;edx = 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> 㧫<> eax
pop eax
2017-09-12 15:56:36 +02:00
or edx , edx ;<3B> <> <EFBFBD> <EFBFBD> <20> <> 㧫<> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ?
jz @ f
mov dl , byte [ edx + TreeNode.level ] ;<3B> <> ६ <20> <EFBFBD> <E0AEA2> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<>
cmp byte [ eax + TreeNode.level ], dl
2015-11-11 00:11:17 +01:00
jge @ f ;<3B> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <20> <> <EFBFBD> <EFBFBD> 襣<EFBFBD> <20> <EFBFBD> <E0AEA2> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> ୨ <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> 㭪樨
2017-09-12 15:56:36 +02:00
xor byte [ eax + TreeNode.close ], 1 ;*** <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ⨥/<2F> <> <EFBFBD> <EFBFBD> <EFBFBD> ⨥ 㧫<> ***
2015-11-11 00:11:17 +01:00
call tb_scrol_resize ;<3B> <> ࠡ<EFBFBD> ⪠ <20> <> <EFBFBD> <E0AEAB> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
stdcall tl_draw , edi ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD>
@ @ :
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;㢥<> <E3A2A5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <EFBFBD> <E0AEA2> <EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_node_lev_inc uses eax ecx edx edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
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
2017-09-12 15:56:36 +02:00
imul eax , si zeof.TreeNode
add eax , ecx ;eax = pointer to node struct
add ecx , si zeof.TreeNode ;ecx = pointer to 1 node struct
2010-02-09 15:54:59 +01:00
2015-11-11 00:11:17 +01:00
mov edx , eax
call tl_iterat_perv ;<3B> <EFBFBD> <E0AEA2> 塞 <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> 孨<EFBFBD> 㧥<>
cmp edx , ecx
jle @ f ;<3B> <20> <> <EFBFBD> 孥<EFBFBD> <E5ADA5> 㧫<> <20> <> <EFBFBD> <20> <> ⥪<> 騩 㧥<> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
2017-09-12 15:56:36 +02:00
mov cl , byte [ edx + TreeNode.level ] ;<3B> <> ६ <20> <EFBFBD> <E0AEA2> <EFBFBD> த<> ⥫<EFBFBD> <EFBFBD> <E1AAAE> 㧫<>
2015-11-11 00:11:17 +01:00
inc cl ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 1 <20> <20> <> <EFBFBD> <EFBFBD> 砥<EFBFBD> <20> <> <EFBFBD> ᨬ<EFBFBD> <E1A8AC> 쭮<EFBFBD> <20> <> <EFBFBD> 祭<EFBFBD> <E7A5AD>
2017-09-12 15:56:36 +02:00
cmp byte [ eax + TreeNode.level ], cl
2015-11-11 00:11:17 +01:00
jge @ f
2017-09-12 15:56:36 +02:00
inc byte [ eax + TreeNode.level ] ;㢥<> <E3A2A5> 稢<EFBFBD> <E7A8A2> <EFBFBD> <20> <> <EFBFBD> 祭<EFBFBD> <E7A5AD> 㧫<>
2015-11-11 00:11:17 +01:00
@ @ :
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;㬥<> <E3ACA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <EFBFBD> <E0AEA2> <EFBFBD>
2009-11-20 11:15:49 +01:00
align 4
2015-11-04 01:39:02 +01:00
proc tl_node_lev_dec uses eax edi , tlist : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
call tl_get_cur_node_index ;eax=po_t
cmp eax , 2
jl @ f
2017-09-12 15:56:36 +02:00
imul eax , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
add eax , tl_data_nodes
cmp byte [ eax + 2 ], 0
je @ f
dec byte [ eax + 2 ]
@ @ :
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-20 11:15:49 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> ६<EFBFBD> 頥<EFBFBD> 㧥<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD>
2009-11-25 12:01:46 +01:00
align 4
2015-11-14 22:31:00 +01:00
proc tl_node_move_up tlist : dword
pushad
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
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
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
imul eax , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
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
2017-09-12 15:56:36 +02:00
cmp dword [ edx + TreeNode.next ], ebx
2015-11-11 00:11:17 +01:00
jne .po8
call tl_node_move_po6 ;㧫<> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 塞 6 <20> <> 뫮<EFBFBD>
jmp .cur_mov
.po8:
call tl_node_move_po8 ;㧫<> <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 塞 8 <20> <> 뫮<EFBFBD>
.cur_mov:
push dword edi
call tl_cur_perv
push dword edi
call tl_draw
@ @ :
2015-11-14 22:31:00 +01:00
popad
2015-11-04 01:39:02 +01:00
ret
endp
2009-11-25 12:01:46 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> ६<EFBFBD> 頥<EFBFBD> 㧥<> <20> <> <EFBFBD> <EFBFBD>
2009-11-25 12:01:46 +01:00
align 4
2015-11-14 22:31:00 +01:00
proc tl_node_move_down tlist : dword
pushad
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
2015-11-11 00:11:17 +01:00
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
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
imul eax , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
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
2017-09-12 15:56:36 +02:00
cmp dword [ esi + TreeNode.next ], eax
2015-11-11 00:11:17 +01:00
jne .po8
xchg eax , ebx ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 冷<EFBFBD> <> <E1ABA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 塞<EFBFBD> <EFA5AC> 㧫<> <E3A7AB>
xchg edx , esi
call tl_node_move_po6 ;㧫<> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 塞 6 <20> <> 뫮<EFBFBD>
jmp .cur_mov
.po8: ;<3B> <20> <> <EFBFBD> <20> <> <EFBFBD> 冷<EFBFBD> <> <E1ABA5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<> <E3A7AB> <20> <> <20> <> <EFBFBD> 塞
call tl_node_move_po8 ;㧫<> <20> <> <EFBFBD> <EFBFBD> <20> <> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> 塞 8 <20> <> 뫮<EFBFBD>
.cur_mov:
stdcall tl_cur_next , edi
stdcall tl_draw , edi
@ @ :
2015-11-04 01:39:02 +01:00
ret
2015-11-14 22:31:00 +01:00
popad
2015-11-04 01:39:02 +01:00
endp
2009-11-25 12:01:46 +01:00
align 4
tl_node_move_po6:
2015-11-14 22:31:00 +01:00
mov ecx , edx ;save node pointer
call tl_move_perv
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.next ], ebx
2015-11-14 22:31:00 +01:00
mov edx , esi
call tl_move_next
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.perv ], eax
2015-11-14 22:31:00 +01:00
mov edx , ecx ;restore node pointer
2017-09-12 15:56:36 +02:00
mov ecx , dword [ edx + TreeNode.perv ]
mov dword [ esi + TreeNode.perv ], ecx
mov ecx , dword [ esi + TreeNode.next ]
mov dword [ edx + TreeNode.next ], ecx
2015-11-14 22:31:00 +01:00
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.perv ], ebx
mov dword [ esi + TreeNode.next ], eax
2015-11-14 22:31:00 +01:00
ret
2009-11-25 12:01:46 +01:00
;input
;eax = index 1 node struct
;ebx = index 2 node struct
;edx = pointer 1 node struct
;esi = pointer 2 node struct
;edi = pointer to 'TreeList' struct
;output:
;eax = ?
;ebx = ?
;ecx = ?
align 4
tl_node_move_po8:
2015-11-14 22:31:00 +01:00
mov ecx , edx ;save node pointer
call tl_move_perv
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.next ], ebx
2015-11-14 22:31:00 +01:00
mov edx , ecx
call tl_move_next
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.perv ], ebx
2015-11-14 22:31:00 +01:00
mov edx , esi
call tl_move_perv
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.next ], eax
2015-11-14 22:31:00 +01:00
mov edx , esi
call tl_move_next
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.perv ], eax
2015-11-14 22:31:00 +01:00
mov edx , ecx ;restore node pointer
2009-11-25 12:01:46 +01:00
2017-09-12 15:56:36 +02:00
mov eax , dword [ edx + TreeNode.perv ]
mov ebx , dword [ esi + TreeNode.perv ]
2015-11-14 22:31:00 +01:00
xchg eax , ebx
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.perv ], eax
mov dword [ esi + TreeNode.perv ], ebx
mov eax , dword [ edx + TreeNode.next ]
mov ebx , dword [ esi + TreeNode.next ]
2015-11-14 22:31:00 +01:00
xchg eax , ebx
2017-09-12 15:56:36 +02:00
mov dword [ edx + TreeNode.next ], eax
mov dword [ esi + TreeNode.next ], ebx
2015-11-14 22:31:00 +01:00
ret
2009-11-25 12:01:46 +01:00
;input:
; edi = pointer to 'TreeList' struct
align 4
tl_draw_caption_cur_pos:
2015-11-11 00:11:17 +01:00
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
2017-09-12 15:56:36 +02:00
lea edi ,[ txt_capt_cur.v ]
stdcall tl_convert_to_str , 5
2015-11-11 00:11:17 +01:00
mov edi , ebx
2009-12-08 17:09:03 +01:00
2015-11-11 00:11:17 +01:00
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 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> 訢<EFBFBD> <E8A8A2> <EFBFBD> 䮭 梥⮬ edi
lea edx ,[ txt_capt_cur ]
mov edi , tl_col_zag
2017-09-12 15:56:36 +02:00
mcall SF_DRAW_TEXT ;captions
2015-11-11 00:11:17 +01:00
popad
@ @ :
ret
2009-11-25 12:01:46 +01:00
2009-12-02 12:18:26 +01:00
;input:
2015-11-11 00:11:17 +01:00
; tlist - pointer to 'TreeList' struct
; opt - options: 0 - first element, 1 - add next element
; h_mem - pointer to memory
; mem_size - memory size
2009-12-02 12:18:26 +01:00
;output:
2015-11-11 00:11:17 +01:00
; eax - error code
2009-12-02 12:18:26 +01:00
align 4
2015-11-11 00:11:17 +01:00
proc tl_save_mem uses ebx ecx edx edi esi , tlist : dword , opt : dword , h_mem : dword , mem_size : dword
2017-09-12 15:56:36 +02:00
mov esi ,[ h_mem ]
mov edi ,[ tlist ]
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
cmp dword [ opt ], 0 ;add mode
je @ f
stdcall tl_get_mem_size , edi , esi ;eax = ࠧ<> <E0A0A7> <EFBFBD> ࠭<> <E0A0AD> <20> <> <EFBFBD> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
add esi , eax
@ @ :
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
xor ebx , ebx
mov bx , tl_info_size
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
call tl_get_node_count_all ;eax = all node count
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
mov ecx , eax ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 <> 쪮 <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
imul ecx , ebx ;㬭<> <E3ACAD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㧫<>
add ecx , tl_save_load_heder_size + 1 ;element header +1 end element sumbol
add ecx , esi ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <20> <> <EFBFBD> ⮬ ࠭<> <E0A0AD> <20> <> <EFBFBD> <EFBFBD> ᠭ<EFBFBD> <E1A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
sub ecx , dword [ h_mem ] ;<3B> ⭨<EFBFBD> <E2ADA8> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> ࠭<> <E0A0AD> <20> <> <EFBFBD> <EFBFBD> ᠭ<EFBFBD> <E1A0AD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> )
cmp ecx , dword [ mem_size ] ;ecx = element memory size
jg .err_mem_size
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
;save tree params (in header)
mov dword [ esi ], 'tree'
mov word [ esi + 4 ], bx
mov dword [ esi + 6 ], eax ;element count
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
mov eax , tl_style
mov dword [ esi + 10 ], eax
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
mov eax , tl_cur_pos
mov dword [ esi + 14 ], eax
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
mov ax , tl_info_capt_offs
mov word [ esi + 18 ], ax
2009-12-08 17:09:03 +01:00
2015-11-11 00:11:17 +01:00
mov ax , tl_info_capt_len
mov word [ esi + 20 ], ax
2009-12-08 17:09:03 +01:00
2015-11-11 00:11:17 +01:00
;copy scroll position
mov edx , tl_p_scroll
mov eax , dword [ edx + sb_offs_position ]
mov dword [ esi + 22 ], eax
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
add esi , tl_save_load_heder_size ;add header size
;cycle to nodes
mov edx , tl_data_nodes
mov ecx , edx
2017-09-12 15:56:36 +02:00
add ecx , si zeof.TreeNode
2015-11-11 00:11:17 +01:00
@ @ :
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
2017-09-12 15:56:36 +02:00
mov eax , dword [ edx + TreeNode.type ] ;eax = (type; level; close)
2015-11-11 00:11:17 +01:00
mov dword [ esi ], eax
add esi , 4
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'
xor eax , eax ;return error code
jmp @ f
.err_mem_size:
mov eax , tl_err_save_memory_size
@ @ :
ret
endp
2009-12-02 12:18:26 +01:00
;input:
2015-11-11 00:11:17 +01:00
; 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
; ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <> <EFBFBD> <EFBFBD> <20> <> <20> ᯮ<EFBFBD> <E1AFAE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> 砫<EFBFBD> <E7A0AB> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> )
; <20> <> <EFBFBD> <20> <> <EFBFBD> <20> ᯮ<EFBFBD> 짮<EFBFBD> <ECA7AE> <EFBFBD> <EFBFBD> <EFBFBD> <20> 㦭<EFBFBD> <20> <> ࠡ<EFBFBD> <E0A0A1> <EFBFBD> <EFBFBD> <EFBFBD> <20> 㭪<EFBFBD> <E3ADAA> <EFBFBD>
2009-12-02 12:18:26 +01:00
;output:
2015-11-11 00:11:17 +01:00
; 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
2009-12-02 12:18:26 +01:00
align 4
2015-11-11 00:11:17 +01:00
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
2017-09-12 15:56:36 +02:00
mov esi ,[ h_mem ]
mov edi ,[ tlist ]
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
mov dword [ er_code ], 0 ;return error code
2009-12-02 12:18:26 +01:00
2017-09-12 15:56:36 +02:00
mov ecx ,[ opt ]
or cx , cx ;load in array mode
jz @ f
2015-11-11 00:11:17 +01:00
;stdcall tl_get_mem_size, esi,edi ;<3B> <> ६ ࠧ<> <E0A0A7> <EFBFBD> ࠭<> <E0A0AD> <20> <> <EFBFBD> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
;add esi,eax
and ecx , 0xffff
cld
.beg_cycle:
cmp dword [ esi ], 'tree'
jne .no_tree
2017-09-12 15:56:36 +02:00
movzx ebx , word [ esi + 4 ]
2015-11-11 00:11:17 +01:00
add bx , 8
imul ebx , dword [ esi + 6 ]
add ebx , tl_save_load_heder_size
add esi , ebx
loop .beg_cycle
@ @ :
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
cmp dword [ esi ], 'tree'
jne .no_tree
bt dword [ opt ], 17 ;load in add mode
jc @ f
2017-09-12 15:56:36 +02:00
stdcall tl_info_clear , edi
2015-11-11 00:11:17 +01:00
@ @ :
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
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
@ @ :
2017-09-12 15:56:36 +02:00
mov ecx ,[ esi + 6 ] ;count nodes
2015-11-11 00:11:17 +01:00
cmp ecx , 1
jl .end_f
mov edx , esi ;save header pointer
add esi , tl_save_load_heder_size
2009-12-02 12:18:26 +01:00
2015-11-04 01:39:02 +01:00
cld
@ @ : ;load node params
2015-11-11 00:11:17 +01:00
mov eax , dword [ esi + 4 ]
2017-09-12 15:56:36 +02:00
ror eax , 16 ;eax - options (type; level; close)
2015-11-11 00:11:17 +01:00
add esi , 8
stdcall tl_node_add , edi , eax , esi
2015-11-04 01:39:02 +01:00
stdcall tl_cur_next , edi
2009-12-02 12:18:26 +01:00
;...
2015-11-11 00:11:17 +01:00
add esi , ebx
loop @ b
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
2017-09-12 15:56:36 +02:00
or ebx , ebx
jz .end_f
2015-11-11 00:11:17 +01:00
mov eax , dword [ edx + 22 ] ;set scroll pos
mov dword [ ebx + sb_offs_position ], eax
2015-11-04 01:39:02 +01:00
stdcall scroll_bar_vertical.draw , ebx
2015-11-11 00:11:17 +01:00
jmp .end_f
.no_tree:
mov dword [ er_code ], tl_err_load_caption
.end_f:
mov eax , dword [ er_code ]
ret
endp
2009-12-02 12:18:26 +01:00
2015-11-11 00:11:17 +01:00
;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> ⮩ <20> 㭪樥<E3ADAA> tl_save_mem <20> <> <EFBFBD> <20> <> <EFBFBD> ࠭<EFBFBD> <E0A0AD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⮢
2009-12-23 14:50:32 +01:00
;output:
2015-11-11 00:11:17 +01:00
; eax - error code
2009-12-23 14:50:32 +01:00
align 4
2015-11-11 00:11:17 +01:00
proc tl_get_mem_size uses ebx edi , tlist : dword , h_mem : dword
2017-09-12 15:56:36 +02:00
mov edi ,[ tlist ]
mov eax ,[ h_mem ]
2015-11-11 00:11:17 +01:00
@ @ :
cmp dword [ eax ], 'tree'
jne @ f
xor ebx , ebx
mov bx , word [ eax + 4 ]
add bx , 8 ;ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ⥫쭮<E2A5AB> <20> <> <EFBFBD> <EFBFBD> ଠ 樨 <20> <> 㧫<> (<28> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ; <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> , <20> <EFBFBD> <E0AEA2> <EFBFBD> , ...)
imul ebx , dword [ eax + 6 ]
add ebx , tl_save_load_heder_size
add eax , ebx
jmp @ b
@ @ :
sub eax , dword [ h_mem ] ;<3B> ⭨<EFBFBD> <E2ADA8> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <20> <> 砫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
;<3B> <20> <> <EFBFBD> <EFBFBD> 砥<EFBFBD> ࠧ<> <E0A0A7> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
ret
endp
2009-12-23 14:50:32 +01:00
2009-12-02 12:18:26 +01:00
;ascii scan key
; 13 28 Enter
; 32 57 Space
; 178 72 Up
; 177 80 Down
; 176 75 Left
; 179 77 Right
; 182 83 Delete
; 184 73 Pg Up
; 183 81 Pg Dn
tl_key_ascii db 13 , 32 , 178 , 177 , 176 , 179 , 182 , 184 , 183
tl_key_scan db 28 , 57 , 72 , 80 , 75 , 77 , 83 , 73 , 81
2017-09-12 15:56:36 +02:00
txt_capt_cur: db '<27> <> ப<EFBFBD> '
.v: db ' ' , 0
txt_capt_otm: db '<27> ⬥<EFBFBD> <E2ACA5> '
.v: db ' ' , 0
2009-12-08 17:09:03 +01:00
2017-09-12 15:56:36 +02:00
;description:
; <20> <> <EFBFBD> ॢ<EFBFBD> <E0A5A2> <20> <> <20> ASCII <20> <> ப<EFBFBD>
2009-12-08 17:09:03 +01:00
;input:
; eax = value
; edi = string buffer
align 4
2017-09-12 15:56:36 +02:00
proc tl_convert_to_str , len : dword
pushad
mov esi ,[ len ]
add esi , edi
dec esi
call .str
popad
2015-11-11 00:11:17 +01:00
ret
2017-09-12 15:56:36 +02:00
endp
2009-12-08 17:09:03 +01:00
align 4
.str:
2017-09-12 15:56:36 +02:00
mov ecx , 10 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> ⥬<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <E1ABA5> <EFBFBD>
2015-12-03 11:55:32 +01:00
cmp eax , ecx ;<3B> ࠢ<EFBFBD> <E0A0A2> <EFBFBD> <EFBFBD> <20> <20> eax <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 祬 <20> ecx <20> <> <20> <> ३<EFBFBD> <E0A5A9> <20> <> @@-1 <20> .<2E> . <20> <> pop eax
jb @ f
xor edx , edx ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> edx
div ecx ;ࠧ<> <E0A0A7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> - <20> <> <EFBFBD> <EFBFBD> ⮪ <20> edx
push edx ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <20> ⥪
call .str ;<3B> 맢<EFBFBD> <EBA7A2> <EFBFBD> ᠬ<> ᥡ<> <20> ⠪ <20> <> ⮣<> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> eax <20> <> <20> ⠭<EFBFBD> <E2A0AD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 祬 <20> ecx
pop eax
2017-09-12 15:56:36 +02:00
@ @ :
cmp edi , esi
jge @ f
or al , 0x30 ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 塞 ᨬ<> <E1A8AC> <EFBFBD> '0'
stosb ;<3B> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> al <20> <20> 祪<EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> [edi]
mov byte [ edi ], 0
@ @ :
ret