Rev 1277 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1277 | Rev 1283 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 20.11.2009 IgorA |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.11.2009 IgorA |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
Line 5... | Line 5... | ||
5 | 5 | ||
- | 6 | ||
- | 7 | sizeof.TreeList equ 20 |
|
- | 8 | ;struct TreeList |
|
- | 9 | ; type dw ? ;+ 0 òèï ýëåìåíòà, èëè èíäåêñ èêîíêè äëÿ óçëà |
|
- | 10 | ; lev db ? ;+ 2 óðîâåíü ýëåìåíòà |
|
- | 11 | ; clo db ? ;+ 3 ôëàã çàêðûòèÿ, èëè îòêðûòèÿ (èìååò ñìûñë äëÿ ðîäèòåëüñêîãî óçëà) |
|
- | 12 | ; perv dd ? ;+ 4 èíäåêñ ïðåäûäóùåãî ýëåìåíòà |
|
- | 13 | ; next dd ? ;+ 8 èíäåêñ ïîñëåäóþùåãî ýëåìåíòà |
|
- | 14 | ; tc dd ? ;+12 âðåì. ñîçäàíèÿ |
|
Line -... | Line 15... | ||
- | 15 | ; td dd ? ;+16 âðåì. óäàëåíèÿ |
|
6 | 16 | ;ends |
|
- | 17 | ||
7 | sizeof.TreeList equ 20 |
18 | tl_info_size equ word[edi +4] ;ðàçìåð äàííûõ âûäåëÿåìûõ äëÿ êàæäîãî óçëà (ïîëüçîâàòåëüñüêèå äàííûå + òåêñò äëÿ ïîäïèñè) |
8 | 19 | tl_style equ dword[edi+10] ;ñòèëè ýëåìåíòà |
|
9 | tl_style equ dword[edi+10] ;ñòèëè ýëåìåíòà |
20 | tl_data_nodes equ dword[edi+14] ;óêàçàòåëü íà ñòðóêòóðû óçëîâ |
10 | tl_img_cx equ word[edi+22] ;øèðèíà èêîíîê |
21 | tl_img_cx equ word[edi+22] ;øèðèíà èêîíîê |
11 | tl_img_cy equ word[edi+24] ;âûñîòà èêîíîê |
22 | tl_img_cy equ word[edi+24] ;âûñîòà èêîíîê |
Line 19... | Line 30... | ||
19 | tl_box_left equ dword[edi+58] |
30 | tl_box_left equ dword[edi+58] |
20 | tl_box_top equ dword[edi+62] |
31 | tl_box_top equ dword[edi+62] |
21 | tl_box_width equ dword[edi+66] |
32 | tl_box_width equ dword[edi+66] |
22 | tl_box_height equ dword[edi+70] |
33 | tl_box_height equ dword[edi+70] |
23 | tl_capt_cy equ word[edi+74] ;âûñîòà ïîäïèñè |
34 | tl_capt_cy equ word[edi+74] ;âûñîòà ïîäïèñè |
24 | tl_info_capt_offs equ dword[edi+76] |
35 | tl_info_capt_offs equ dword[edi+76] ;ñäâèã äëÿ íà÷àëà òåêñòà (ïîäïèñè óçëà) |
25 | tl_el_focus equ dword[edi+80] ;óêàçàòåëü íà ñòðóêòóðó ýëåìåíòà â ôîêóñå |
36 | tl_el_focus equ dword[edi+80] ;óêàçàòåëü íà ñòðóêòóðó ýëåìåíòà â ôîêóñå |
26 | tl_p_scrol equ dword[edi+84] ;óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà |
37 | tl_p_scrol equ dword[edi+84] ;óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà |
27 | tl_sb_draw equ dword[edi+88] ;óêàçàòåëü íà ôóíêöèþ ïåðåðèñîâûâàþùóþ ñêðîëëèíã |
38 | tl_sb_draw equ dword[edi+88] ;óêàçàòåëü íà ôóíêöèþ ïåðåðèñîâûâàþùóþ ñêðîëëèíã |
28 | tl_on_press equ dword[edi+96] ;óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ âûçûâàåòñÿ ïðè íàæàòèè Enter |
39 | tl_on_press equ dword[edi+96] ;óêàçàòåëü íà ôóíêöèþ, êîòîðàÿ âûçûâàåòñÿ ïðè íàæàòèè Enter |
Line 29... | Line 40... | ||
29 | 40 | ||
30 | ;êîíñòàíòû ñòèëÿ |
41 | ;êîíñòàíòû ñòèëÿ |
31 | tl_key_no_edit equ 1b ;ýëåìåíò íåëüçÿ ðåäàêòèðîâàòü íà êëàâèàòóðå (èçìåíÿòü óðîâíè, óäàëÿòü) |
42 | tl_key_no_edit equ 1b ;ýëåìåíò íåëüçÿ ðåäàêòèðîâàòü íà êëàâèàòóðå (èçìåíÿòü óðîâíè, óäàëÿòü) |
32 | tl_draw_par_line equ 10b ;ðèñîâàòü ëèíèè ê ðîäèòåëüñêîìó óçëó |
43 | tl_draw_par_line equ 10b ;ðèñîâàòü ëèíèè ê ðîäèòåëüñêîìó óçëó |
Line 33... | Line -... | ||
33 | tl_list_box_mode equ 100b ;ñòèëü íå îòîáðàæàåò óðîâíè (êàê â ListBox âñå îäíîãî óðîâíÿ) |
- | |
34 | - | ||
35 | macro use_tree_list_structs |
- | |
36 | { |
44 | tl_list_box_mode equ 100b ;ñòèëü íå îòîáðàæàåò óðîâíè (êàê â ListBox âñå îäíîãî óðîâíÿ) |
37 | struct TreeInfo |
- | |
38 | data_info dd ? ;+ 0 óêàçàòåëü íà îñíîâíûå äàíûå |
45 | |
39 | info_size dw ? ;+ 4 ðàçìåð èíôîðìàöèîííîé ñòðóêòóðû (ïîëüçîâàòåëüñüêèå äàííûå + òåêñò äëÿ ïîäïèñè) |
- | |
40 | info_max_count dd ? ;+ 6 ìàêñèìàëüíîå êîëëè÷åñòâî ñòðóêòóð |
- | |
41 | style dd ? ;+10 ñòèëè ýëåìåíòà |
46 | ;data_info dd ? ;+ 0 óêàçàòåëü íà îñíîâíûå äàíûå |
42 | data_nodes dd ? ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
- | |
43 | data_img dd ? ;+18 óêàçàòåëü íà èçîáðàæåíèÿ |
- | |
44 | img_cx dw ? ;+22 øèðèíà èêîíîê |
- | |
45 | img_cy dw ? ;+24 âûñîòà èêîíîê |
- | |
46 | data_img_sys dd ? ;+26 óêàçàòåëü íà ñèñòåìíûå èçîáðàæåíèÿ (ñòðåëêè, ïëþñèêè) |
47 | ;info_max_count dd ? ;+ 6 ìàêñèìàëüíîå êîëëè÷åñòâî ñòðóêòóð |
47 | ch_tim dd ? ;+30 êîëè÷åñòâî èçìåíåíèé â ôàéëå |
- | |
48 | ls_tim dd ? ;+34 âðåìÿ ïîñëåäíåãî ñîõðàíåíèÿ |
- | |
49 | tim_undo dd ? ;+38 êîëè÷åñòâî îòìåíåííûõ äåéñòâèé |
- | |
50 | cur_pos dd ? ;+42 ïîçèöèÿ êóðñîðà |
- | |
51 | col_bkg dd ? ;+46 öâåò ôîíà |
- | |
52 | col_zag dd ? ;+50 öâåò çàãîëîâêà |
- | |
53 | col_txt dd ? ;+54 öâåò òåêñòà |
- | |
54 | wndMain BOX ? ;+58 ðàçìåð îêíà äëÿ âûâîäà |
- | |
55 | capt_cy dw ? ;+74 âûñîòà ïîäïèñè |
- | |
56 | info_capt_offs dd ? ;+76 ñäâèã äëÿ íà÷àëà òåêñòà (ïîäïèñè óçëà) |
- | |
57 | el_focus dd ? ;+80 óêàçàòåëü íà ñòðóêòóðó ýëåìåíòà â ôîêóñå |
- | |
58 | p_scrol dd ? ;+84 óêàçàòåëü íà ñòðóêòóðó ñêðîëëèíãà |
48 | ;data_img dd ? ;+18 óêàçàòåëü íà èçîáðàæåíèÿ |
59 | sb_draw dd ? ;+88 óêàçàòåëü íà ôóíêöèþ ïåðåðèñîâûâàþùóþ ñêðîëëèíã |
- | |
60 | on_activate dd ? ;+92 óêàçàòåëü íà ôóíêöèþ ïðè àêòèâèðîâàíèè óçëà |
- | |
61 | on_press dd ? ;+96 óêàçàòåëü íà ôóíêöèþ ïðè íàæàòèè Enter |
- | |
62 | ends |
- | |
63 | - | ||
64 | struct TreeList |
- | |
65 | type dw ? ;+ 0 òèï ýëåìåíòà, èëè èíäåêñ èêîíêè äëÿ óçëà |
- | |
66 | lev db ? ;+ 2 óðîâåíü ýëåìåíòà |
- | |
67 | clo db ? ;+ 3 ôëàã çàêðûòèÿ, èëè îòêðûòèÿ (èìååò ñìûñë äëÿ ðîäèòåëüñêîãî óçëà) |
- | |
68 | perv dd ? ;+ 4 èíäåêñ ïðåäûäóùåãî ýëåìåíòà |
- | |
69 | next dd ? ;+ 8 èíäåêñ ïîñëåäóþùåãî ýëåìåíòà |
- | |
70 | tc dd ? ;+12 âðåì. ñîçäàíèÿ |
- | |
71 | td dd ? ;+16 âðåì. óäàëåíèÿ |
- | |
Line 72... | Line 49... | ||
72 | ends |
49 | ;ls_tim dd ? ;+34 âðåìÿ ïîñëåäíåãî ñîõðàíåíèÿ |
73 | } |
50 | ;on_activate dd ? ;+92 óêàçàòåëü íà ôóíêöèþ ïðè àêòèâèðîâàíèè óçëà |
74 | 51 | ||
75 | struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
52 | struc tree_list info_size,info_max_count,style, img_cx,img_cy,\ |
76 | col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
53 | col_bkg,col_zag,col_txt, box_l,box_t,box_w,box_h, capt_cy,info_capt_offs,\ |
77 | el_focus, p_scrol,p_sb_draw,fun_enter { |
54 | el_focus, p_scrol,p_sb_draw,on_press { |
78 | .data_info dd 0 |
55 | .data_info dd 0 |
79 | .info_size dw info_size |
56 | .info_size dw info_size |
Line 99... | Line 76... | ||
99 | .info_capt_offs dd info_capt_offs |
76 | .info_capt_offs dd info_capt_offs |
100 | .el_focus dd el_focus |
77 | .el_focus dd el_focus |
101 | .p_scrol dd p_scrol |
78 | .p_scrol dd p_scrol |
102 | .p_sb_draw dd p_sb_draw |
79 | .p_sb_draw dd p_sb_draw |
103 | .on_activate dd 0 |
80 | .on_activate dd 0 |
104 | .on_press dd fun_enter |
81 | .on_press dd on_press |
105 | } |
82 | } |
Line 106... | Line 83... | ||
106 | 83 | ||
107 | ;----------------------------------------------------------------------------- |
84 | ;----------------------------------------------------------------------------- |
108 | ;ôóíêöèÿ äëÿ âûäåëåíèÿ ïàìÿòè |
85 | ;ôóíêöèÿ äëÿ âûäåëåíèÿ ïàìÿòè |
Line 142... | Line 119... | ||
142 | mov ebp,esp |
119 | mov ebp,esp |
143 | push eax ecx edi |
120 | push eax ecx edi |
144 | mov edi,dword[ebp+8] |
121 | mov edi,dword[ebp+8] |
Line 145... | Line 122... | ||
145 | 122 | ||
146 | xor ecx,ecx |
123 | xor ecx,ecx |
147 | mov cx,word[edi+4] |
124 | mov cx,tl_info_size |
148 | imul ecx,dword[edi+6] |
125 | imul ecx,dword[edi+6] |
149 | call mem_Alloc |
126 | call mem_Alloc |
150 | mov dword[edi],eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
127 | mov dword[edi],eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
151 | mov dword[edi+18],0 ;îáíóëÿåì óêàçàòåëü 'data_img' |
128 | mov dword[edi+18],0 ;îáíóëÿåì óêàçàòåëü 'data_img' |
Line 152... | Line 129... | ||
152 | mov tl_data_img_sys,0 ;îáíóëÿåì óêàçàòåëü 'data_img_sys' |
129 | mov tl_data_img_sys,0 ;îáíóëÿåì óêàçàòåëü 'data_img_sys' |
153 | 130 | ||
154 | mov ecx,sizeof.TreeList |
131 | mov ecx,sizeof.TreeList |
155 | imul ecx,dword[edi+6] |
132 | imul ecx,dword[edi+6] |
Line 156... | Line 133... | ||
156 | call mem_Alloc |
133 | call mem_Alloc |
157 | mov dword[edi+14],eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
134 | mov tl_data_nodes,eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
Line 158... | Line 135... | ||
158 | 135 | ||
Line 200... | Line 177... | ||
200 | call mem_Free ;÷èñòêà ñèñòåìíûõ èêîíîê |
177 | call mem_Free ;÷èñòêà ñèñòåìíûõ èêîíîê |
201 | @@: |
178 | @@: |
202 | mov ecx,dword[edi] |
179 | mov ecx,dword[edi] |
203 | call mem_Free |
180 | call mem_Free |
Line 204... | Line 181... | ||
204 | 181 | ||
205 | mov ecx,dword[edi+14] |
182 | mov ecx,tl_data_nodes |
206 | call mem_Free |
183 | call mem_Free |
207 | pop edi ecx |
184 | pop edi ecx |
208 | pop ebp |
185 | pop ebp |
Line 219... | Line 196... | ||
219 | mov tl_tim_undo,0 |
196 | mov tl_tim_undo,0 |
220 | mov tl_cur_pos,0 |
197 | mov tl_cur_pos,0 |
221 | ;xor ecx,ecx |
198 | ;xor ecx,ecx |
222 | mov ecx,sizeof.TreeList |
199 | mov ecx,sizeof.TreeList |
223 | imul ecx,dword[edi+6] |
200 | imul ecx,dword[edi+6] |
224 | mov eax,dword[edi+14] |
201 | mov eax,tl_data_nodes |
225 | @@: |
202 | @@: |
226 | mov byte[eax],0 ;÷èñòèì óçëû 0-ìè |
203 | mov byte[eax],0 ;÷èñòèì óçëû 0-ìè |
227 | inc eax |
204 | inc eax |
228 | loop @b |
205 | loop @b |
229 | mov eax,dword[edi+14] ;óêàçàòåëü íà 1-é óçåë |
206 | mov eax,tl_data_nodes ;óêàçàòåëü íà 0-é óçåë |
230 | mov dword[eax+8],1 ;óêàçàòåëü next â 1-ì óçëå ïðèðàâíèâàåì ê 1 |
207 | mov dword[eax+8],1 ;óêàçàòåëü next â 0-ì óçëå ïðèðàâíèâàåì ê 1 |
231 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
208 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
232 | pop edi ecx eax |
209 | pop edi ecx eax |
233 | pop ebp |
210 | pop ebp |
234 | ret 4 |
211 | ret 4 |
Line 312... | Line 289... | ||
312 | int 0x40 |
289 | int 0x40 |
Line 313... | Line 290... | ||
313 | 290 | ||
314 | bt eax,0 ;left mouse button press |
291 | bt eax,0 ;left mouse button press |
Line 315... | Line -... | ||
315 | jae .no_draw |
- | |
316 | - | ||
317 | mov ebx,tl_el_focus |
- | |
318 | mov dword[ebx],edi ;set focus |
292 | jae .no_draw |
319 | 293 | ||
320 | mov eax,37 |
294 | mov eax,37 |
Line 321... | Line 295... | ||
321 | mov ebx,1 |
295 | mov ebx,1 |
Line 340... | Line 314... | ||
340 | sub ebx,tl_box_height |
314 | sub ebx,tl_box_height |
341 | add bx,tl_capt_cy |
315 | add bx,tl_capt_cy |
342 | cmp ax,bx ;âåðõíÿÿ ãðàíèöà îêíà + âûñîòà ïîäïèñè |
316 | cmp ax,bx ;âåðõíÿÿ ãðàíèöà îêíà + âûñîòà ïîäïèñè |
343 | jl .no_in_wnd |
317 | jl .no_in_wnd |
Line -... | Line 318... | ||
- | 318 | ||
- | 319 | mov esi,tl_el_focus |
|
- | 320 | mov dword[esi],edi ;set focus |
|
344 | 321 | ||
345 | ; if '+' or '-' press |
322 | ; if '+' or '-' press |
346 | mov esi,eax |
323 | mov esi,eax |
347 | shr esi,16 |
324 | shr esi,16 |
Line 364... | Line 341... | ||
364 | cmp eax,ecx |
341 | cmp eax,ecx |
365 | jl @f |
342 | jl @f |
366 | mov eax,ecx ;åñëè êóðñîð íå âûøåë çà ïðåäåëû óçëîâ, âîññòàíàâëèâàåì ñòàðîå çíà÷åíèå eax |
343 | mov eax,ecx ;åñëè êóðñîð íå âûøåë çà ïðåäåëû óçëîâ, âîññòàíàâëèâàåì ñòàðîå çíà÷åíèå eax |
367 | @@: |
344 | @@: |
Line 368... | Line -... | ||
368 | - | ||
369 | mov ebx,0x80000000 ;ñòàâèì ôëàã äëÿ âûõîäà áåç îáíîâëåíèÿ |
345 | |
370 | cmp eax,tl_cur_pos ;åñëè íîâîå çíà÷åíèå êóðñîðà ñîâïàëî ñ ïðåäûäóùèì |
346 | cmp eax,tl_cur_pos ;åñëè íîâîå çíà÷åíèå êóðñîðà ñîâïàëî ñ ïðåäûäóùèì |
- | 347 | je @f ;òî íå ñòèðàåì êóðñîð |
|
371 | je @f ;òî ìîæåì âûéòè áåç îáíîâëåíèÿ îêíà |
348 | push esi |
- | 349 | mov esi,tl_box_top |
|
- | 350 | add esi,tl_box_height ;esi = coord bottom border |
|
- | 351 | call tl_draw_null_cursor ;ñòèðàåì êóðñîð |
|
372 | xor ebx,ebx |
352 | pop esi |
Line 373... | Line 353... | ||
373 | @@: |
353 | @@: |
Line 374... | Line 354... | ||
374 | 354 | ||
375 | mov tl_cur_pos,eax |
355 | mov tl_cur_pos,eax |
376 | 356 | ||
377 | ; if '+' or '-' press |
357 | ; if '+' or '-' press |
378 | call tl_get_cur_node_index ;eax = node index |
358 | call tl_get_cur_node_index ;eax = node index |
379 | cmp eax,2 |
359 | cmp eax,2 |
380 | jl .no_open_close ;êóðñîð ñòîèò íà ïóñòîì ìåñòå, áåç óçëîâ |
360 | jl .no_open_close ;êóðñîð ñòîèò íà ïóñòîì ìåñòå, áåç óçëîâ |
381 | imul eax,sizeof.TreeList |
361 | imul eax,sizeof.TreeList |
382 | add eax,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
362 | add eax,tl_data_nodes |
Line 383... | Line 363... | ||
383 | xor bx,bx |
363 | xor bx,bx |
Line 397... | Line 377... | ||
397 | 377 | ||
398 | push dword edi |
378 | push dword edi |
399 | call tl_node_close_open |
379 | call tl_node_close_open |
Line 400... | Line 380... | ||
400 | .no_open_close: |
380 | .no_open_close: |
401 | - | ||
402 | bt ebx,31 |
381 | |
403 | jc .no_draw |
382 | mov esi,tl_box_top |
404 | push dword edi |
383 | add esi,tl_box_height ;esi = coord bottom border |
405 | call tl_draw |
384 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
406 | jmp .no_draw |
385 | jmp .no_draw |
- | 386 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
|
- | 387 | mov ebx,tl_el_focus |
|
407 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà |
388 | cmp dword[ebx],edi |
408 | mov ebx,tl_el_focus |
389 | jne .no_draw ;ýëåìåíò íå â ôîêóñå |
Line 409... | Line 390... | ||
409 | mov dword[ebx],0 ;reset focus |
390 | mov dword[ebx],0 ;reset focus |
410 | .no_draw: |
391 | .no_draw: |
Line 454... | Line 435... | ||
454 | ; mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû |
435 | ; mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû |
455 | cmp tl_tim_undo,1 |
436 | cmp tl_tim_undo,1 |
456 | jl .no_work |
437 | jl .no_work |
Line 457... | Line 438... | ||
457 | 438 | ||
458 | push eax ebx ecx edx |
439 | push eax ebx ecx edx |
459 | mov edx,dword[edi+14] |
440 | mov edx,tl_data_nodes |
460 | mov ecx,edx |
441 | mov ecx,edx |
461 | add ecx,sizeof.TreeList |
442 | add ecx,sizeof.TreeList |
462 | call tl_move_next ;long i=tex[0].next; |
443 | call tl_move_next ;long i=node[0].next; |
463 | mov eax,tl_tim_undo |
444 | mov eax,tl_tim_undo |
464 | sub tl_ch_tim,eax ;ch_tim-=tim_undo; |
445 | sub tl_ch_tim,eax ;ch_tim-=tim_undo; |
465 | mov eax,tl_ch_tim |
446 | mov eax,tl_ch_tim |
466 | cmp [edi+34],eax ;if(ls_tim>ch_tim) |
447 | cmp [edi+34],eax ;if(ls_tim>ch_tim) |
467 | jle @f |
448 | jle @f |
468 | mov dword[edi+34],0 ;ls_tim=0 |
449 | mov dword[edi+34],0 ;ls_tim=0 |
469 | @@: |
450 | @@: |
470 | cmp edx,ecx |
451 | cmp edx,ecx |
Line 471... | Line 452... | ||
471 | jle @f |
452 | jle @f |
472 | 453 | ||
473 | ;if(tex[i].tc>ch_tim){ // åñëè ñîçäàíèå ñèìâîëà áûëî îòìåíåíî |
454 | ;if(node[i].tc>ch_tim){ // åñëè ñîçäàíèå ñèìâîëà áûëî îòìåíåíî |
474 | cmp dword[edx+12],eax |
455 | cmp dword[edx+12],eax |
475 | jle .no_u1 |
456 | jle .no_u1 |
Line 476... | Line 457... | ||
476 | mov dword[edx+12],0 |
457 | mov dword[edx+12],0 |
477 | mov dword[edx+16],0 |
458 | mov dword[edx+16],0 |
478 | 459 | ||
479 | mov ebx, dword[edx+4] |
460 | mov ebx, dword[edx+4] |
480 | imul ebx,sizeof.TreeList |
461 | imul ebx,sizeof.TreeList |
Line 481... | Line 462... | ||
481 | add ebx, dword[edi+14] ;.next |
462 | add ebx, tl_data_nodes ;.next |
482 | push dword[edx+8] ;tex[tex[i].perv].next=tex[i].next; |
463 | push dword[edx+8] ;node[node[i].perv].next=node[i].next; |
483 | pop dword[ebx+8] |
464 | pop dword[ebx+8] |
484 | 465 | ||
485 | mov ebx, dword[edx+8] |
466 | mov ebx, dword[edx+8] |
Line 486... | Line 467... | ||
486 | imul ebx,sizeof.TreeList |
467 | imul ebx,sizeof.TreeList |
Line 487... | Line 468... | ||
487 | add ebx, dword[edi+14] ;.perv |
468 | add ebx, tl_data_nodes ;.perv |
488 | push dword[edx+4] ;tex[tex[i].next].perv=tex[i].perv; |
469 | push dword[edx+4] ;node[node[i].next].perv=node[i].perv; |
489 | pop dword[ebx+4] |
470 | pop dword[ebx+4] |
490 | 471 | ||
491 | .no_u1: |
472 | .no_u1: |
Line 586... | Line 567... | ||
586 | ;@@: |
567 | ;@@: |
587 | ;---debug--- |
568 | ;---debug--- |
Line 588... | Line 569... | ||
588 | 569 | ||
589 | ;cycle to nodes |
570 | ;cycle to nodes |
590 | xor eax,eax |
571 | xor eax,eax |
591 | mov edx,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
572 | mov edx,tl_data_nodes |
592 | mov ecx,edx |
573 | mov ecx,edx |
Line 593... | Line 574... | ||
593 | add ecx,sizeof.TreeList |
574 | add ecx,sizeof.TreeList |
594 | 575 | ||
Line 748... | Line 729... | ||
748 | ; edx = pointer to next node struct |
729 | ; edx = pointer to next node struct |
749 | align 4 |
730 | align 4 |
750 | tl_move_next: |
731 | tl_move_next: |
751 | mov edx,dword[edx+8] |
732 | mov edx,dword[edx+8] |
752 | imul edx,sizeof.TreeList |
733 | imul edx,sizeof.TreeList |
753 | add edx,dword[edi+14] |
734 | add edx,tl_data_nodes |
754 | ret |
735 | ret |
Line 755... | Line 736... | ||
755 | 736 | ||
756 | ;input: |
737 | ;input: |
757 | ; edx = pointer to some node struct |
738 | ; edx = pointer to some node struct |
Line 760... | Line 741... | ||
760 | ; edx = pointer to perv node struct |
741 | ; edx = pointer to perv node struct |
761 | align 4 |
742 | align 4 |
762 | tl_move_perv: |
743 | tl_move_perv: |
763 | mov edx,dword[edx+4] |
744 | mov edx,dword[edx+4] |
764 | imul edx,sizeof.TreeList |
745 | imul edx,sizeof.TreeList |
765 | add edx,dword[edi+14] |
746 | add edx,tl_data_nodes |
766 | ret |
747 | ret |
Line 767... | Line 748... | ||
767 | 748 | ||
768 | ;input: |
749 | ;input: |
769 | ; edx = pointer to symbol struct |
750 | ; edx = pointer to symbol struct |
770 | ; edi = pointer to 'TreeList' struct |
751 | ; edi = pointer to 'TreeList' struct |
771 | ;output: |
752 | ;output: |
772 | ; al = 1 if sumbol not visible |
753 | ; al = 1 if sumbol not visible |
773 | ; (tex[i].td+tim_Undo<=ch_tim && tex[i].td) || (tex[i].tc>ch_tim-tim_Undo) |
754 | ; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo) |
774 | align 4 |
755 | align 4 |
775 | tl_node_not_vis: |
756 | tl_node_not_vis: |
776 | cmp dword[edx+16],0 |
757 | cmp dword[edx+16],0 |
777 | je @f |
758 | je @f |
778 | mov eax,dword[edx+16] ;eax=tex[i].td |
759 | mov eax,dword[edx+16] ;eax=node[i].td |
779 | add eax,tl_tim_undo |
760 | add eax,tl_tim_undo |
780 | cmp eax,tl_ch_tim |
761 | cmp eax,tl_ch_tim |
781 | jg @f |
762 | jg @f |
782 | mov al,1 |
763 | mov al,1 |
Line 984... | Line 965... | ||
984 | int 0x40 ;draw node icon '-' |
965 | int 0x40 ;draw node icon '-' |
985 | pop esi edx ebx |
966 | pop esi edx ebx |
986 | @@: |
967 | @@: |
Line 987... | Line 968... | ||
987 | 968 | ||
988 | mov al,byte[edx+2] ;draw minus '-' |
969 | mov al,byte[edx+2] ;draw minus '-' |
989 | mov ecx,dword[edi+14] |
970 | mov ecx,tl_data_nodes |
Line 990... | Line 971... | ||
990 | add ecx,sizeof.TreeList |
971 | add ecx,sizeof.TreeList |
991 | 972 | ||
992 | mov ah,10 ;get icon index '+' or '-' ? |
973 | mov ah,10 ;get icon index '+' or '-' ? |
Line 1126... | Line 1107... | ||
1126 | align 4 |
1107 | align 4 |
1127 | tl_draw_node_caption: |
1108 | tl_draw_node_caption: |
1128 | push ebx ecx edx esi |
1109 | push ebx ecx edx esi |
Line 1129... | Line 1110... | ||
1129 | 1110 | ||
1130 | xor esi,esi |
1111 | xor esi,esi |
1131 | mov si,word[edi+4];info_size |
1112 | mov si,tl_info_size |
1132 | cmp esi,tl_info_capt_offs |
1113 | cmp esi,tl_info_capt_offs |
Line 1133... | Line 1114... | ||
1133 | jle @f ;if caption size <= 0 |
1114 | jle @f ;if caption size <= 0 |
1134 | 1115 | ||
Line 1218... | Line 1199... | ||
1218 | 1199 | ||
Line 1219... | Line 1200... | ||
1219 | call tl_info_set_undo |
1200 | call tl_info_set_undo |
1220 | 1201 | ||
1221 | mov ebx,sizeof.TreeList |
1202 | mov ebx,sizeof.TreeList |
1222 | imul ebx,dword[edi+6] ;+6 ìàêñ. êîëè÷åñòâî óçëîâ |
1203 | imul ebx,dword[edi+6] ;+6 ìàêñ. êîëè÷åñòâî óçëîâ |
1223 | add ebx,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1204 | add ebx,tl_data_nodes |
1224 | ;-- |
1205 | ;-- |
1225 | call tl_get_cur_node_index ;eax=po_t |
1206 | call tl_get_cur_node_index ;eax=po_t |
1226 | imul eax,sizeof.TreeList |
1207 | imul eax,sizeof.TreeList |
1227 | add eax,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1208 | add eax,tl_data_nodes |
1228 | mov edx,eax |
1209 | mov edx,eax |
1229 | call tl_move_perv |
1210 | call tl_move_perv |
1230 | call tl_get_node_index ;eax = index of pointer [edx] |
1211 | call tl_get_node_index ;eax = index of pointer [edx] |
1231 | ;-- |
1212 | ;-- |
1232 | mov edx,sizeof.TreeList |
1213 | mov edx,sizeof.TreeList |
1233 | shl edx,1 |
1214 | shl edx,1 |
1234 | add edx,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1215 | add edx,tl_data_nodes |
1235 | @@: ;for(i=2;i |
1216 | @@: ;for(i=2;i |
1236 | cmp dword [edx+12],0 |
1217 | cmp dword [edx+12],0 |
1237 | jne .u0 |
1218 | jne .u0 |
Line 1238... | Line 1219... | ||
1238 | cmp dword [edx+16],0 |
1219 | cmp dword [edx+16],0 |
1239 | jne .u0 |
1220 | jne .u0 |
1240 | 1221 | ||
1241 | inc tl_ch_tim |
1222 | inc tl_ch_tim |
- | 1223 | push word[ebp+14] ;get type |
|
- | 1224 | pop word[edx] |
|
- | 1225 | mov byte[edx+2], 0 ;node[i].lev=0 |
|
- | 1226 | bt tl_style,2 ;tl_list_box_mode |
|
- | 1227 | jc .l_box_m |
|
1242 | push word[ebp+14] ;get type |
1228 | mov cl,byte[ebp+12] |
1243 | pop word[edx] |
1229 | mov byte[edx+2],cl ;node[i].lev |
1244 | mov byte[edx+2], 0 ;node[i].lev=0 |
1230 | .l_box_m: |
1245 | push tl_ch_tim ;node[i].tc=ch_tim; |
1231 | push tl_ch_tim ;node[i].tc=ch_tim; |
1246 | pop dword[edx+12] |
1232 | pop dword[edx+12] |
1247 | mov dword[edx+4], eax ;node[i].perv=po_t; |
1233 | mov dword[edx+4], eax ;node[i].perv=po_t; |
1248 | ;*** copy node data *** |
1234 | ;*** copy node data *** |
1249 | push esi |
1235 | push esi |
Line 1250... | Line 1236... | ||
1250 | xor ecx,ecx |
1236 | xor ecx,ecx |
1251 | mov cx,word[edi+4];info_size |
1237 | mov cx,tl_info_size |
1252 | mov esi,ecx |
1238 | mov esi,ecx |
Line 1261... | Line 1247... | ||
1261 | rep movsb |
1247 | rep movsb |
Line 1262... | Line 1248... | ||
1262 | 1248 | ||
1263 | mov esi,edi |
1249 | mov esi,edi |
1264 | mov edi,dword[ebp+16] ;restore edi |
1250 | mov edi,dword[ebp+16] ;restore edi |
1265 | mov ecx,tl_info_capt_offs |
1251 | mov ecx,tl_info_capt_offs |
1266 | cmp cx,word[edi+4] ;+4 info_size |
1252 | cmp cx,tl_info_size |
1267 | jge .no_text_data |
1253 | jge .no_text_data |
1268 | dec esi |
1254 | dec esi |
1269 | mov byte[esi],0 |
1255 | mov byte[esi],0 |
1270 | .no_text_data: |
1256 | .no_text_data: |
Line 1271... | Line 1257... | ||
1271 | pop esi ;restore esi |
1257 | pop esi ;restore esi |
1272 | 1258 | ||
1273 | mov ecx,eax |
1259 | mov ecx,eax |
1274 | imul ecx,sizeof.TreeList |
1260 | imul ecx,sizeof.TreeList |
1275 | add ecx,dword[edi+14] ; *** ecx = tex[po_t] *** |
1261 | add ecx,tl_data_nodes ; *** ecx = node[po_t] *** |
1276 | add ecx,8 ; *** ecx = tex[po_t].next *** |
1262 | add ecx,8 ; *** ecx = node[po_t].next *** |
Line 1277... | Line 1263... | ||
1277 | push dword [ecx] ;tex[i].next=tex[po_t].next; |
1263 | push dword [ecx] ;node[i].next=node[po_t].next; |
1278 | pop dword [edx+8] |
1264 | pop dword [edx+8] |
1279 | 1265 | ||
Line 1280... | Line 1266... | ||
1280 | call tl_get_node_index ;*** eax = i *** |
1266 | call tl_get_node_index ;*** eax = i *** |
1281 | cmp eax,dword[edi+6] ;info_max_count |
1267 | cmp eax,dword[edi+6] ;info_max_count |
1282 | jge .u0 |
1268 | jge .u0 |
1283 | 1269 | ||
1284 | mov [ecx],eax ;tex[po_t].next=i; // ññûëêè ïåðåíàïðàâëÿåì |
1270 | mov [ecx],eax ;node[po_t].next=i; // ññûëêè ïåðåíàïðàâëÿåì |
Line 1285... | Line 1271... | ||
1285 | mov ecx,[edx+8] ; *** ecx = tex[i].next *** |
1271 | mov ecx,[edx+8] ; *** ecx = node[i].next *** |
1286 | imul ecx,sizeof.TreeList |
1272 | imul ecx,sizeof.TreeList |
1287 | add ecx,dword[edi+14] ; *** ecx = tex[tex[i].next] *** |
1273 | add ecx,tl_data_nodes ; *** ecx = node[node[i].next] *** |
1288 | mov [ecx+4],eax ;tex[tex[i].next].perv=i; |
1274 | mov [ecx+4],eax ;node[node[i].next].perv=i; |
Line 1334... | Line 1320... | ||
1334 | mov edi,dword[ebp+12] |
1320 | mov edi,dword[ebp+12] |
1335 | call tl_get_cur_node_index ;eax=po_t |
1321 | call tl_get_cur_node_index ;eax=po_t |
1336 | cmp eax,2 |
1322 | cmp eax,2 |
1337 | jl @f |
1323 | jl @f |
1338 | xor ecx,ecx |
1324 | xor ecx,ecx |
1339 | mov cx,word[edi+4];info_size |
1325 | mov cx,tl_info_size |
1340 | imul eax,ecx |
1326 | imul eax,ecx |
1341 | add eax,dword[edi] |
1327 | add eax,dword[edi] |
1342 | mov edi,eax |
1328 | mov edi,eax |
1343 | mov esi,dword[ebp+8] ;pointer to node data |
1329 | mov esi,dword[ebp+8] ;pointer to node data |
1344 | rep movsb |
1330 | rep movsb |
Line 1345... | Line 1331... | ||
1345 | 1331 | ||
1346 | mov esi,edi |
1332 | mov esi,edi |
1347 | mov edi,dword[ebp+12] ;restore edi |
1333 | mov edi,dword[ebp+12] ;restore edi |
1348 | mov ecx,tl_info_capt_offs |
1334 | mov ecx,tl_info_capt_offs |
1349 | cmp cx,word[edi+4] ;+4 info_size |
1335 | cmp cx,tl_info_size |
1350 | jge .no_text_data |
1336 | jge .no_text_data |
1351 | dec esi |
1337 | dec esi |
1352 | mov byte[esi],0 |
1338 | mov byte[esi],0 |
Line 1368... | Line 1354... | ||
1368 | call tl_get_cur_node_index ;eax=po_t |
1354 | call tl_get_cur_node_index ;eax=po_t |
1369 | mov dword[ebp+8],0 ;if return 0 pointer |
1355 | mov dword[ebp+8],0 ;if return 0 pointer |
1370 | cmp eax,2 |
1356 | cmp eax,2 |
1371 | jl @f |
1357 | jl @f |
1372 | xor ecx,ecx |
1358 | xor ecx,ecx |
1373 | mov cx,word[edi+4];info_size |
1359 | mov cx,tl_info_size |
1374 | imul eax,ecx |
1360 | imul eax,ecx |
1375 | add eax,dword[edi] |
1361 | add eax,dword[edi] |
1376 | mov dword[ebp+8],eax ;return node data pointer |
1362 | mov dword[ebp+8],eax ;return node data pointer |
1377 | @@: |
1363 | @@: |
1378 | pop edi ecx eax |
1364 | pop edi ecx eax |
Line 1389... | Line 1375... | ||
1389 | push eax ecx edx edi |
1375 | push eax ecx edx edi |
1390 | mov edi,dword[ebp+12] |
1376 | mov edi,dword[ebp+12] |
1391 | mov eax,dword[ebp+8] |
1377 | mov eax,dword[ebp+8] |
Line 1392... | Line 1378... | ||
1392 | 1378 | ||
1393 | ;cycle to nodes |
1379 | ;cycle to nodes |
1394 | mov edx,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1380 | mov edx,tl_data_nodes |
1395 | mov ecx,edx |
1381 | mov ecx,edx |
1396 | add ecx,sizeof.TreeList |
1382 | add ecx,sizeof.TreeList |
1397 | @@: |
1383 | @@: |
1398 | call tl_iterat_next_all |
1384 | call tl_iterat_next_all |
Line 1419... | Line 1405... | ||
1419 | mov ebp,esp |
1405 | mov ebp,esp |
1420 | push ecx edx edi |
1406 | push ecx edx edi |
1421 | mov edi,dword[ebp+12] |
1407 | mov edi,dword[ebp+12] |
1422 | mov edx,dword[ebp+8] |
1408 | mov edx,dword[ebp+8] |
Line 1423... | Line 1409... | ||
1423 | 1409 | ||
1424 | mov ecx,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1410 | mov ecx,tl_data_nodes |
Line 1425... | Line 1411... | ||
1425 | add ecx,sizeof.TreeList |
1411 | add ecx,sizeof.TreeList |
1426 | 1412 | ||
1427 | call tl_iterat_next_all |
1413 | call tl_iterat_next_all |
Line 1449... | Line 1435... | ||
1449 | mov dword[ebp+12],0 |
1435 | mov dword[ebp+12],0 |
1450 | call tl_get_node_index ;eax = node index |
1436 | call tl_get_node_index ;eax = node index |
1451 | cmp eax,2 |
1437 | cmp eax,2 |
1452 | jl @f |
1438 | jl @f |
1453 | xor ecx,ecx |
1439 | xor ecx,ecx |
1454 | mov cx,word[edi+4];info_size |
1440 | mov cx,tl_info_size |
1455 | imul eax,ecx |
1441 | imul eax,ecx |
1456 | add eax,dword[edi] |
1442 | add eax,dword[edi] |
1457 | mov dword[ebp+12],eax ;return node data pointer |
1443 | mov dword[ebp+12],eax ;return node data pointer |
1458 | @@: |
1444 | @@: |
1459 | pop edi ecx eax |
1445 | pop edi ecx eax |
Line 1467... | Line 1453... | ||
1467 | align 4 |
1453 | align 4 |
1468 | tl_get_cur_node_index: ;áåðåò ïîçèöèþ ïîä êóðñîðîì |
1454 | tl_get_cur_node_index: ;áåðåò ïîçèöèþ ïîä êóðñîðîì |
1469 | push ecx edx |
1455 | push ecx edx |
1470 | ;cycle to nodes |
1456 | ;cycle to nodes |
1471 | xor eax,eax |
1457 | xor eax,eax |
1472 | mov edx,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1458 | mov edx,tl_data_nodes |
1473 | mov ecx,edx |
1459 | mov ecx,edx |
1474 | add ecx,sizeof.TreeList |
1460 | add ecx,sizeof.TreeList |
1475 | @@: |
1461 | @@: |
1476 | call tl_iterat_next |
1462 | call tl_iterat_next |
1477 | cmp edx,ecx |
1463 | cmp edx,ecx |
Line 1480... | Line 1466... | ||
1480 | je @f |
1466 | je @f |
1481 | inc eax |
1467 | inc eax |
1482 | jmp @b |
1468 | jmp @b |
1483 | @@: |
1469 | @@: |
1484 | mov eax,edx |
1470 | mov eax,edx |
1485 | sub eax,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1471 | sub eax,tl_data_nodes |
1486 | xor edx,edx |
1472 | xor edx,edx |
1487 | mov ecx,sizeof.TreeList |
1473 | mov ecx,sizeof.TreeList |
1488 | div ecx |
1474 | div ecx |
1489 | pop edx ecx |
1475 | pop edx ecx |
1490 | ret |
1476 | ret |
Line 1496... | Line 1482... | ||
1496 | ; eax = struct index of current node |
1482 | ; eax = struct index of current node |
1497 | align 4 |
1483 | align 4 |
1498 | tl_get_node_index: ;áåðåò ïîçèöèþ óêàçàííîãî ñèìâîëà |
1484 | tl_get_node_index: ;áåðåò ïîçèöèþ óêàçàííîãî ñèìâîëà |
1499 | push ecx edx |
1485 | push ecx edx |
1500 | mov eax,edx |
1486 | mov eax,edx |
1501 | sub eax,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1487 | sub eax,tl_data_nodes |
1502 | xor edx,edx |
1488 | xor edx,edx |
1503 | mov ecx,sizeof.TreeList |
1489 | mov ecx,sizeof.TreeList |
1504 | div ecx |
1490 | div ecx |
1505 | pop edx ecx |
1491 | pop edx ecx |
1506 | ret |
1492 | ret |
Line 1513... | Line 1499... | ||
1513 | mov edi,dword[ebp+8] |
1499 | mov edi,dword[ebp+8] |
1514 | call tl_get_cur_node_index ;eax=po_t |
1500 | call tl_get_cur_node_index ;eax=po_t |
1515 | cmp eax,2 |
1501 | cmp eax,2 |
1516 | jl @f |
1502 | jl @f |
1517 | imul eax,sizeof.TreeList |
1503 | imul eax,sizeof.TreeList |
1518 | add eax,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1504 | add eax,tl_data_nodes |
1519 | mov edx,eax |
1505 | mov edx,eax |
1520 | inc tl_ch_tim |
1506 | inc tl_ch_tim |
1521 | mov eax,tl_ch_tim |
1507 | mov eax,tl_ch_tim |
1522 | mov dword[edx+16],eax |
1508 | mov dword[edx+16],eax |
1523 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
1509 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
Line 1594... | Line 1580... | ||
1594 | align 4 |
1580 | align 4 |
1595 | tl_get_node_count: ;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (íå ñ÷èòàÿ çàêðûòûõ äî÷åðíèõ) |
1581 | tl_get_node_count: ;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (íå ñ÷èòàÿ çàêðûòûõ äî÷åðíèõ) |
1596 | push ecx edx |
1582 | push ecx edx |
1597 | ;cycle to nodes |
1583 | ;cycle to nodes |
1598 | xor eax,eax |
1584 | xor eax,eax |
1599 | mov edx,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1585 | mov edx,tl_data_nodes |
1600 | mov ecx,edx |
1586 | mov ecx,edx |
1601 | add ecx,sizeof.TreeList |
1587 | add ecx,sizeof.TreeList |
1602 | @@: |
1588 | @@: |
1603 | call tl_iterat_next |
1589 | call tl_iterat_next |
1604 | cmp edx,ecx |
1590 | cmp edx,ecx |
Line 1657... | Line 1643... | ||
1657 | mov edi,dword[ebp+8] |
1643 | mov edi,dword[ebp+8] |
1658 | call tl_get_cur_node_index ;eax = ïîçèöèÿ óçëà íà êîòîðîì ñòîèò êóðñîð |
1644 | call tl_get_cur_node_index ;eax = ïîçèöèÿ óçëà íà êîòîðîì ñòîèò êóðñîð |
1659 | cmp eax,2 ;êóðñîð ñòîèò íà óçëå ? |
1645 | cmp eax,2 ;êóðñîð ñòîèò íà óçëå ? |
1660 | jl @f |
1646 | jl @f |
1661 | imul eax,sizeof.TreeList |
1647 | imul eax,sizeof.TreeList |
1662 | add eax,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1648 | add eax,tl_data_nodes |
1663 | ;eax = óêàçàòåëü íà ñòðóêòóðó óçëà âûáðàííîãî êóðñîðîì |
1649 | ;eax = óêàçàòåëü íà ñòðóêòóðó óçëà âûáðàííîãî êóðñîðîì |
1664 | push dword edi |
1650 | push dword edi |
1665 | push dword eax |
1651 | push dword eax |
1666 | call tl_node_poi_get_next_info |
1652 | call tl_node_poi_get_next_info |
1667 | pop dword edx ;edx = óêàçàòåëü íà ñòðóêòóðó óçëà êîòîðûé èäåò ïîñëå óçëà eax |
1653 | pop dword edx ;edx = óêàçàòåëü íà ñòðóêòóðó óçëà êîòîðûé èäåò ïîñëå óçëà eax |
Line 1690... | Line 1676... | ||
1690 | jc @f |
1676 | jc @f |
1691 | call tl_get_cur_node_index ;eax=po_t |
1677 | call tl_get_cur_node_index ;eax=po_t |
1692 | cmp eax,2 |
1678 | cmp eax,2 |
1693 | jl @f |
1679 | jl @f |
1694 | imul eax,sizeof.TreeList |
1680 | imul eax,sizeof.TreeList |
1695 | add eax,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1681 | add eax,tl_data_nodes |
1696 | mov edx,eax |
1682 | mov edx,eax |
1697 | inc word[edx+2] |
1683 | inc word[edx+2] |
1698 | @@: |
1684 | @@: |
1699 | pop edi edx eax |
1685 | pop edi edx eax |
1700 | pop ebp |
1686 | pop ebp |
Line 1708... | Line 1694... | ||
1708 | mov edi,dword[ebp+8] |
1694 | mov edi,dword[ebp+8] |
1709 | call tl_get_cur_node_index ;eax=po_t |
1695 | call tl_get_cur_node_index ;eax=po_t |
1710 | cmp eax,2 |
1696 | cmp eax,2 |
1711 | jl @f |
1697 | jl @f |
1712 | imul eax,sizeof.TreeList |
1698 | imul eax,sizeof.TreeList |
1713 | add eax,dword[edi+14] ;+14 óêàçàòåëü íà ñòðóêòóðû óçëîâ |
1699 | add eax,tl_data_nodes |
1714 | mov edx,eax |
1700 | mov edx,eax |
1715 | cmp word[edx+2],0 |
1701 | cmp word[edx+2],0 |
1716 | je @f |
1702 | je @f |
1717 | dec word[edx+2] |
1703 | dec word[edx+2] |
1718 | @@: |
1704 | @@: |