Rev 5879 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5879 | Rev 5911 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
1 | ; ¬ ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
2 | ; í«¥¬¥â TreeList ¤«ï Kolibri OS |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 04.11.2015 IgorA |
3 | ; ä ©« ¯®á«¥¤¨© à § ¨§¬¥ï«áï 10.11.2015 IgorA |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
4 | ; ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | 6 | ||
7 | sizeof.TreeList equ 20 |
7 | sizeof.TreeList equ 20 |
8 | ;struct TreeList |
8 | ;struct TreeList |
9 | ; type dw ? ;+ 0 òèï ýëåìåíòà, èëè èíäåêñ èêîíêè äëÿ óçëà |
9 | ; type dw ? ;+ 0 ⨯ í«¥¬¥â , ¨«¨ ¨¤¥ªá ¨ª®ª¨ ¤«ï 㧫 |
10 | ; lev db ? ;+ 2 óðîâåíü ýëåìåíòà |
10 | ; lev db ? ;+ 2 ã஢¥ì í«¥¬¥â |
11 | ; clo db ? ;+ 3 ôëàã çàêðûòèÿ, èëè îòêðûòèÿ (èìååò ñìûñë äëÿ ðîäèòåëüñêîãî óçëà) |
11 | ; clo db ? ;+ 3 ä« £ § ªàëâ¨ï, ¨«¨ ®âªàëâ¨ï (¨¬¥¥â á¬ëá« ¤«ï த¨â¥«ì᪮£® 㧫 ) |
12 | ; perv dd ? ;+ 4 èíäåêñ ïðåäûäóùåãî ýëåìåíòà |
12 | ; perv dd ? ;+ 4 ¨¤¥ªá ¯à¥¤ë¤ã饣® í«¥¬¥â |
13 | ; next dd ? ;+ 8 èíäåêñ ïîñëåäóþùåãî ýëåìåíòà |
13 | ; next dd ? ;+ 8 ¨¤¥ªá ¯®á«¥¤ãî饣® í«¥¬¥â |
14 | ; tc dd ? ;+12 âðåì. ñîçäàíèÿ |
14 | ; tc dd ? ;+12 ¢à¥¬. ᮧ¤ ¨ï |
Line 15... | Line 15... | ||
15 | ; td dd ? ;+16 âðåì. óäàëåíèÿ |
15 | ; td dd ? ;+16 ¢à¥¬. 㤠«¥¨ï |
16 | ;ends |
16 | ;ends |
Line 17... | Line 17... | ||
17 | 17 | ||
18 | macro use_tree_list |
18 | macro use_tree_list |
19 | { |
19 | { |
20 | 20 | ||
Line 21... | Line 21... | ||
21 | ;âûäåëíèå ïàìÿòè äëÿ ñòðóêòóð ñïèñêà è îñíîâíîé èíôîðìàöèè (êîíñòðóêòîð) |
21 | ;¢ë¤¥«¨¥ ¯ ¬ï⨠¤«ï áâàãªâãà ᯨ᪠¨ ®á®¢®© ¨ä®à¬ 樨 (ª®áâàãªâ®à) |
22 | align 4 |
22 | align 4 |
23 | proc tl_data_init uses eax ecx edi, tlist:dword |
23 | proc tl_data_init uses eax ecx edi, tlist:dword |
24 | mov edi,dword[tlist] |
24 | mov edi,dword[tlist] |
25 | 25 | ||
26 | xor ecx,ecx |
26 | xor ecx,ecx |
27 | mov cx,tl_info_size |
27 | mov cx,tl_info_size |
Line 28... | Line 28... | ||
28 | imul ecx,tl_info_max_count |
28 | imul ecx,tl_info_max_count |
29 | invoke mem.alloc,ecx |
29 | invoke mem.alloc,ecx |
30 | mov tl_data_info,eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
30 | mov tl_data_info,eax ;ª®¯¨à㥬 㪠§ â¥«ì ¯®«ãç¥ãî ¯ ¬ïâì ¢ áâàãªâãàã |
31 | mov tl_data_img,0 ;îáíóëÿåì óêàçàòåëü 'data_img' |
31 | mov tl_data_img,0 ;®¡ã«ï¥¬ 㪠§ ⥫ì 'data_img' |
Line 32... | Line 32... | ||
32 | mov tl_data_img_sys,0 ;îáíóëÿåì óêàçàòåëü 'data_img_sys' |
32 | mov tl_data_img_sys,0 ;®¡ã«ï¥¬ 㪠§ ⥫ì 'data_img_sys' |
Line 33... | Line 33... | ||
33 | 33 | ||
34 | mov ecx,sizeof.TreeList |
34 | mov ecx,sizeof.TreeList |
35 | imul ecx,tl_info_max_count |
35 | imul ecx,tl_info_max_count |
36 | invoke mem.alloc,ecx |
36 | invoke mem.alloc,ecx |
37 | mov tl_data_nodes,eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
37 | mov tl_data_nodes,eax ;ª®¯¨à㥬 㪠§ â¥«ì ¯®«ãç¥ãî ¯ ¬ïâì ¢ áâàãªâãàã |
38 | 38 | ||
39 | stdcall tl_info_clear, edi |
39 | stdcall tl_info_clear, edi |
40 | 40 | ||
41 | ;íàñòðîéêè äî÷åðíåãî ñêðîëëèíãà |
41 | ; áâனª¨ ¤®ç¥à¥£® áªà®««¨£ |
42 | cmp tl_p_scrol,0 |
42 | cmp tl_p_scroll,0 |
43 | je @f |
43 | je @f |
44 | mov eax,tl_p_scrol |
44 | mov eax,tl_p_scroll |
45 | ;*** öâåòîâûå íàñòðîéêè *** |
45 | ;*** æ¢¥â®¢ë¥ áâனª¨ *** |
46 | mov ecx,tl_col_bkg |
46 | mov ecx,tl_col_bkg |
47 | mov dword[eax+sb_offs_bckg_col],ecx |
47 | mov dword[eax+sb_offs_bckg_col],ecx |
48 | mov ecx,tl_col_zag |
48 | mov ecx,tl_col_zag |
49 | mov dword[eax+sb_offs_frnt_col],ecx |
49 | mov dword[eax+sb_offs_frnt_col],ecx |
Line 59... | Line 59... | ||
59 | mov word[eax+6],cx |
59 | mov word[eax+6],cx |
60 | @@: |
60 | @@: |
61 | ret |
61 | ret |
62 | endp |
62 | endp |
Line 63... | Line 63... | ||
63 | 63 | ||
64 | ;î÷èñòêà ïàìÿòè ýëåìåíòà (äåñòðóêòîð) |
64 | ;®ç¨á⪠¯ ¬ïâ¨ í«¥¬¥â (¤¥áâàãªâ®à) |
65 | align 4 |
65 | align 4 |
66 | proc tl_data_clear uses edi, tlist:dword |
66 | proc tl_data_clear uses edi, tlist:dword |
67 | ;uses eax ??? |
67 | ;uses eax ??? |
68 | mov edi,dword[tlist] |
68 | mov edi,dword[tlist] |
69 | cmp tl_data_img,0 |
69 | cmp tl_data_img,0 |
70 | je @f |
70 | je @f |
71 | invoke mem.free,tl_data_img ;÷èñòêà ñèñòåìíûõ èêîíîê |
71 | invoke mem.free,tl_data_img ;ç¨á⪠á¨á⥬ëå ¨ª®®ª |
72 | @@: |
72 | @@: |
73 | cmp tl_data_img_sys,0 |
73 | cmp tl_data_img_sys,0 |
74 | je @f |
74 | je @f |
75 | invoke mem.free,tl_data_img_sys ;÷èñòêà ñèñòåìíûõ èêîíîê |
75 | invoke mem.free,tl_data_img_sys ;ç¨á⪠á¨á⥬ëå ¨ª®®ª |
76 | @@: |
76 | @@: |
77 | invoke mem.free,tl_data_info |
77 | invoke mem.free,tl_data_info |
78 | invoke mem.free,tl_data_nodes |
78 | invoke mem.free,tl_data_nodes |
79 | ret |
79 | ret |
Line 80... | Line 80... | ||
80 | endp |
80 | endp |
81 | 81 | ||
82 | ;î÷èñòêà ñïèñêà (èíôîðìàöèè) |
82 | ;®ç¨á⪠ᯨ᪠(¨ä®à¬ 樨) |
83 | align 4 |
83 | align 4 |
84 | proc tl_info_clear uses eax ecx edi, tlist:dword |
84 | proc tl_info_clear uses eax ecx edi, tlist:dword |
85 | mov edi,dword[tlist] |
- | |
86 | mov tl_ch_tim,0 |
85 | mov edi,dword[tlist] |
87 | mov dword[edi+34],0 ;ls_tim |
86 | mov tl_ch_tim,0 |
88 | mov tl_tim_undo,0 |
87 | mov tl_tim_undo,0 |
89 | mov tl_cur_pos,0 |
88 | mov tl_cur_pos,0 |
90 | mov ecx,sizeof.TreeList |
89 | mov ecx,sizeof.TreeList |
91 | imul ecx,tl_info_max_count |
90 | imul ecx,tl_info_max_count |
92 | mov eax,tl_data_nodes |
91 | mov eax,tl_data_nodes |
93 | @@: |
92 | @@: |
94 | mov byte[eax],0 ;÷èñòèì óçëû 0-ìè |
93 | mov byte[eax],0 ;ç¨á⨬ 㧫ë 0-¬¨ |
95 | inc eax |
94 | inc eax |
96 | loop @b |
95 | loop @b |
Line 97... | Line 96... | ||
97 | mov eax,tl_data_nodes ;óêàçàòåëü íà 0-é óçåë |
96 | mov eax,tl_data_nodes ;㪠§ ⥫ì 0-© 㧥« |
98 | mov dword[eax+8],1 ;óêàçàòåëü next â 0-ì óçëå ïðèðàâíèâàåì ê 1 |
97 | mov dword[eax+8],1 ;㪠§ ⥫ì next ¢ 0-¬ 㧫¥ ¯à¨à ¢¨¢ ¥¬ ª 1 |
99 | 98 | ||
100 | cmp tl_p_scrol,0 ;îáðàáîòêà ñêðîëëèíãà |
99 | cmp tl_p_scroll,0 ;®¡à ¡®âª áªà®««¨£ |
101 | je @f |
100 | je @f |
102 | mov eax,tl_p_scrol |
101 | mov eax,tl_p_scroll |
103 | mov dword[eax+sb_offs_position],0 |
102 | mov dword[eax+sb_offs_position],0 |
104 | call tb_scrol_resize |
103 | call tb_scrol_resize |
Line 105... | Line 104... | ||
105 | @@: |
104 | @@: |
106 | ret |
105 | ret |
107 | endp |
106 | endp |
108 | 107 | ||
Line 109... | Line 108... | ||
109 | ;ðåàêöèÿ íà êëàâèàòóðó |
108 | ;ॠªæ¨ï ª« ¢¨ âãàã |
110 | align 4 |
109 | align 4 |
111 | proc tl_key uses ebx ecx edi, tlist:dword |
110 | proc tl_key uses ebx ecx edi, tlist:dword |
Line 112... | Line 111... | ||
112 | mov edi,dword[tlist] |
111 | mov edi,dword[tlist] |
113 | 112 | ||
Line 114... | Line 113... | ||
114 | mov ebx,tl_el_focus |
113 | mov ebx,tl_el_focus |
115 | cmp dword[ebx],edi |
114 | cmp dword[ebx],edi |
116 | jne .no_focus ;ýëåìåíò íå â ôîêóñå |
115 | jne .no_focus ;í«¥¬¥â ¥ ¢ 䮪ãᥠ|
117 | 116 | ||
118 | push eax |
117 | push eax |
119 | mcall 66,2 ;ïîëó÷èòü ðåæèì ââîäà ñ êëàâèàòóðû |
118 | mcall 66,2 ;¯®«ãç¨âì ०¨¬ ¢¢®¤ á ª« ¢¨ âãàë |
Line 177... | Line 176... | ||
177 | stdcall tl_draw, edi |
176 | stdcall tl_draw, edi |
178 | .no_focus: |
177 | .no_focus: |
179 | ret |
178 | ret |
180 | endp |
179 | endp |
Line 181... | Line 180... | ||
181 | 180 | ||
182 | ;ðåàêöèÿ íà ìûøü |
181 | ;ॠªæ¨ï ¬ëèì |
183 | align 4 |
182 | align 4 |
184 | proc tl_mouse, tlist:dword |
183 | proc tl_mouse, tlist:dword |
185 | pushad |
184 | pushad |
Line 186... | Line 185... | ||
186 | mov edi,dword[tlist] |
185 | mov edi,dword[tlist] |
Line 187... | Line 186... | ||
187 | 186 | ||
188 | mcall 37,1 ;êîîðäèíàòû ìûøè îòíîñèòåëüíî îêíà |
187 | mcall 37,1 ;ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® ®ª |
189 | 188 | ||
190 | mov ebx,tl_box_left |
189 | mov ebx,tl_box_left |
Line 191... | Line 190... | ||
191 | shl ebx,16 |
190 | shl ebx,16 |
192 | cmp eax,ebx ;ëåâàÿ ãðàíèöà îêíà |
191 | cmp eax,ebx ;«¥¢ ï £à ¨æ ®ª |
193 | jl .no_in_wnd ;.test_scroll íå ïðèìåíÿåì |
192 | jl .no_in_wnd ;.test_scroll ¥ ¯à¨¬¥ï¥¬ |
194 | 193 | ||
195 | shr ebx,16 |
194 | shr ebx,16 |
Line 196... | Line 195... | ||
196 | add ebx,tl_box_width |
195 | add ebx,tl_box_width |
197 | shl ebx,16 |
196 | shl ebx,16 |
198 | cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
197 | cmp eax,ebx ;¯à ¢ ï £à ¨æ ®ª |
199 | jg .test_scroll |
198 | jg .test_scroll |
Line 200... | Line 199... | ||
200 | 199 | ||
201 | mov ebx,tl_box_top |
200 | mov ebx,tl_box_top |
202 | add ebx,tl_box_height |
201 | add ebx,tl_box_height |
203 | cmp ax,bx ;íèæíÿÿ ãðàíèöà îêíà |
202 | cmp ax,bx ;¨¦ïï £à ¨æ ®ª |
Line 204... | Line 203... | ||
204 | jg .test_scroll |
203 | jg .test_scroll |
205 | 204 | ||
Line 227... | Line 226... | ||
227 | sub ax,bx |
226 | sub ax,bx |
228 | xor edx,edx |
227 | xor edx,edx |
229 | xor ecx,ecx |
228 | xor ecx,ecx |
230 | mov cx,tl_img_cy |
229 | mov cx,tl_img_cy |
231 | div ecx |
230 | div ecx |
232 | cmp tl_p_scrol,0 ;ó÷èòûâàåì ñêðîëëèíã |
231 | cmp tl_p_scroll,0 ;ãç¨âë¢ ¥¬ áªà®««¨£ |
233 | je @f |
232 | je @f |
234 | mov edx,tl_p_scrol |
233 | mov edx,tl_p_scroll |
235 | add eax,dword[edx+sb_offs_position] ;äîáàâëÿåì ñêðîëëèíã íà âåðõó |
234 | add eax,dword[edx+sb_offs_position] ;¤®¡ ¢«ï¥¬ áªà®««¨£ ¢¥àåã |
236 | @@: |
235 | @@: |
Line 237... | Line 236... | ||
237 | 236 | ||
238 | mov ecx,eax |
237 | mov ecx,eax |
239 | call tl_get_node_count ;eax = node count |
238 | call tl_get_node_count ;eax = node count |
240 | cmp eax,ecx |
239 | cmp eax,ecx |
241 | jl @f |
240 | jl @f |
242 | mov eax,ecx ;åñëè êóðñîð íå âûøåë çà ïðåäåëû óçëîâ, âîññòàíàâëèâàåì ñòàðîå çíà÷åíèå eax |
241 | mov eax,ecx ;¥á«¨ ªãàá®à ¥ ¢ë襫 § ¯à¥¤¥«ë 㧫®¢, ¢®ááâ ¢«¨¢ ¥¬ áâ ஥ § 票¥ eax |
Line 243... | Line 242... | ||
243 | @@: |
242 | @@: |
244 | 243 | ||
245 | cmp eax,tl_cur_pos ;åñëè íîâîå çíà÷åíèå êóðñîðà ñîâïàëî ñ ïðåäûäóùèì |
244 | cmp eax,tl_cur_pos ;¥á«¨ ®¢®¥ § 票¥ ªãàá®à ᮢ¯ «® á ¯à¥¤ë¤ã騬 |
246 | je @f ;òî íå ñòèðàåì êóðñîð |
245 | je @f ;â® ¥ áâ¨à ¥¬ ªãàá®à |
247 | push esi |
246 | push esi |
248 | mov esi,tl_box_top |
247 | mov esi,tl_box_top |
249 | add esi,tl_box_height ;esi = coord bottom border |
248 | add esi,tl_box_height ;esi = coord bottom border |
250 | call tl_draw_null_cursor ;ñòèðàåì êóðñîð |
249 | call tl_draw_null_cursor ;áâ¨à ¥¬ ªãàá®à |
Line 251... | Line 250... | ||
251 | pop esi |
250 | pop esi |
Line 252... | Line 251... | ||
252 | @@: |
251 | @@: |
253 | 252 | ||
254 | mov tl_cur_pos,eax |
253 | mov tl_cur_pos,eax |
255 | 254 | ||
256 | ; if '+' or '-' press |
255 | ; if '+' or '-' press |
257 | call tl_get_cur_node_index ;eax = node index |
256 | call tl_get_cur_node_index ;eax = node index |
258 | cmp eax,2 |
257 | cmp eax,2 |
259 | jl .no_open_close ;êóðñîð ñòîèò íà ïóñòîì ìåñòå, áåç óçëîâ |
258 | jl .no_open_close ;ªãàá®à á⮨⠯ãá⮬ ¬¥áâ¥, ¡¥§ 㧫®¢ |
260 | imul eax,sizeof.TreeList |
259 | imul eax,sizeof.TreeList |
Line 261... | Line 260... | ||
261 | add eax,tl_data_nodes |
260 | add eax,tl_data_nodes |
262 | xor bx,bx |
261 | xor bx,bx |
263 | mov bl,byte[eax+2] ;+2 lev ñîõðàíÿåì óðîâåíü òåêóùåãî óçëà |
262 | mov bl,byte[eax+2] ;+2 lev á®åà 塞 ã஢¥ì ⥪ã饣® 㧫 |
264 | inc bx ;+ ïîëå äëÿ êóðñîðà |
263 | inc bx ;+ ¯®«¥ ¤«ï ªãàá®à |
265 | 264 | ||
266 | cmp si,tl_img_cx |
265 | cmp si,tl_img_cx |
267 | jl .no_open_close ;ìûøåé ïîïàëè íà ëåâîå ïîëå äëÿ êóðñîðà, ãäå òî÷íî íåò '+' è '-' |
266 | jl .no_open_close ;¬ë襩 ¯®¯ «¨ «¥¢®¥ ¯®«¥ ¤«ï ªãàá®à , £¤¥ â®ç® ¥â '+' ¨ '-' |
Line 277... | Line 276... | ||
277 | stdcall tl_node_close_open, edi |
276 | stdcall tl_node_close_open, edi |
278 | .no_open_close: |
277 | .no_open_close: |
Line 279... | Line 278... | ||
279 | 278 | ||
280 | mov esi,tl_box_top |
279 | mov esi,tl_box_top |
281 | add esi,tl_box_height ;esi = coord bottom border |
280 | add esi,tl_box_height ;esi = coord bottom border |
282 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
281 | call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
283 | call tl_draw_caption_cur_pos |
282 | call tl_draw_caption_cur_pos |
284 | jmp .no_draw |
283 | jmp .no_draw |
285 | ;--- mouse event for children scrollbar ---------------------------------------- |
284 | ;--- mouse event for children scrollbar ---------------------------------------- |
286 | .test_scroll: |
285 | .test_scroll: |
287 | mov edx,tl_p_scrol |
286 | mov edx,tl_p_scroll |
288 | cmp edx,0 |
287 | cmp edx,0 |
289 | je .no_in_wnd ;ïîëüçîâàòåëü íå ñîçäàë äî÷åðíåãî ñêðîëëèíãà |
288 | je .no_in_wnd ;¯®«ì§®¢ â¥«ì ¥ ᮧ¤ « ¤®ç¥à¥£® áªà®««¨£ |
290 | shr ebx,16 |
289 | shr ebx,16 |
291 | add bx,word[edx] ;+0 .size_x |
290 | add bx,word[edx] ;+0 .size_x |
292 | shl ebx,16 |
291 | shl ebx,16 |
293 | cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
292 | cmp eax,ebx ;¯à ¢ ï £à ¨æ ®ª |
Line 294... | Line 293... | ||
294 | jg .no_in_wnd |
293 | jg .no_in_wnd |
295 | 294 | ||
296 | mov eax,dword[edx+sb_offs_max_area] |
295 | mov eax,dword[edx+sb_offs_max_area] |
297 | cmp eax,dword[edx+sb_offs_cur_area] |
296 | cmp eax,dword[edx+sb_offs_cur_area] |
Line 298... | Line 297... | ||
298 | jbe .no_in_wnd ;âñå óçëû ïîïàäàþò â îêíî ñêðîëëèíãà |
297 | jbe .no_in_wnd ;¢á¥ ã§«ë ¯®¯ ¤ îâ ¢ ®ª® áªà®««¨£ |
299 | stdcall scroll_bar_vertical.mouse, edx ;scrollbar_ver_mouse |
298 | stdcall scroll_bar_vertical.mouse, edx ;scrollbar_ver_mouse |
300 | 299 | ||
301 | cmp dword[edx+sb_offs_redraw],0 |
300 | cmp dword[edx+sb_offs_redraw],0 |
302 | je @f |
301 | je @f |
303 | mov dword[edx+sb_offs_redraw],0 |
302 | mov dword[edx+sb_offs_redraw],0 |
304 | stdcall tl_draw, edi ;ïðîèçîøëè èçìåíåíèÿ ñêðîëëèíãà |
303 | stdcall tl_draw, edi ;¯à®¨§®è«¨ ¨§¬¥¥¨ï áªà®««¨£ |
305 | @@: |
304 | @@: |
306 | cmp dword[edx+sb_offs_delta2],0 |
305 | cmp dword[edx+sb_offs_delta2],0 |
307 | jne .no_draw ;ïîïàëè íà ñêðîëëèíã - íå ñíèìàåì ôîêóñ ñ TreeList |
306 | jne .no_draw ;¯®¯ «¨ áªà®««¨£ - ¥ ᨬ ¥¬ 䮪ãá á TreeList |
308 | ;------------------------------------------------------------------------------- |
307 | ;------------------------------------------------------------------------------- |
309 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
308 | .no_in_wnd: ;¥ ¯®¯ «¨ ¢ ®ª® - ¯®â¥àï 䮪ãá (¯à¨ ãá«®¢¨¨ ç⮠䮪ãá ¡ë« ¤ ®¬ í¥«¥¬¥â¥) |
Line 310... | Line 309... | ||
310 | mcall 37,2 ;ïðîâåðÿåì íàæàòîñòü ëþáûõ êíîïîê |
309 | mcall 37,2 ;¯à®¢¥à塞 ¦ â®áâì «î¡ëå ª®¯®ª |
311 | cmp eax,0 ;íè÷åãî íå íàæàëè eax=0 |
310 | cmp eax,0 ;¨ç¥£® ¥ ¦ «¨ eax=0 |
312 | je .no_draw |
311 | je .no_draw |
313 | 312 | ||
314 | mov ebx,tl_el_focus |
313 | mov ebx,tl_el_focus |
315 | cmp dword[ebx],edi |
314 | cmp dword[ebx],edi |
316 | jne .no_draw ;ýëåìåíò íå â ôîêóñå |
315 | jne .no_draw ;í«¥¬¥â ¥ ¢ 䮪ãᥠ|
317 | mov dword[ebx],0 ;reset focus |
316 | mov dword[ebx],0 ;reset focus |
Line 318... | Line 317... | ||
318 | mov esi,tl_box_top |
317 | mov esi,tl_box_top |
319 | add esi,tl_box_height ;esi = coord bottom border |
318 | add esi,tl_box_height ;esi = coord bottom border |
320 | call tl_draw_cursor ;ðèñóåì êóðñîð ñ ïîòåðÿíûì ôîêóñîì |
319 | call tl_draw_cursor ;à¨á㥬 ªãàá®à á ¯®â¥àïë¬ ä®ªãᮬ |
Line 321... | Line 320... | ||
321 | .no_draw: |
320 | .no_draw: |
322 | 321 | ||
323 | popad |
322 | popad |
324 | ret |
323 | ret |
325 | endp |
324 | endp |
326 | 325 | ||
327 | ;îòìåíà äåéñòâèÿ |
326 | ;®â¬¥ ¤¥©á⢨ï |
328 | align 4 |
327 | align 4 |
329 | proc tl_info_undo uses eax edi, tlist:dword |
328 | proc tl_info_undo uses eax edi, tlist:dword |
330 | mov edi,dword[tlist] |
329 | mov edi,dword[tlist] |
331 | mov eax,tl_tim_undo |
330 | mov eax,tl_tim_undo |
332 | cmp tl_ch_tim,eax |
331 | cmp tl_ch_tim,eax |
Line 333... | Line 332... | ||
333 | jbe @f |
332 | jbe @f |
334 | inc tl_tim_undo |
333 | inc tl_tim_undo |
335 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
334 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
336 | @@: |
335 | @@: |
337 | ret |
336 | ret |
338 | endp |
337 | endp |
339 | 338 | ||
340 | ;ïîâòîð äåéñòâèÿ |
339 | ;¯®¢â®à ¤¥©á⢨ï |
341 | align 4 |
340 | align 4 |
342 | proc tl_info_redo uses edi, tlist:dword |
341 | proc tl_info_redo uses edi, tlist:dword |
343 | mov edi,dword[tlist] |
342 | mov edi,dword[tlist] |
Line 344... | Line 343... | ||
344 | cmp tl_tim_undo,1 |
343 | cmp tl_tim_undo,1 |
345 | jl @f |
344 | jl @f |
346 | dec tl_tim_undo |
345 | dec tl_tim_undo |
347 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
346 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
348 | @@: |
347 | @@: |
349 | ret |
348 | ret |
Line 362... | Line 361... | ||
362 | add ecx,sizeof.TreeList |
361 | add ecx,sizeof.TreeList |
363 | call tl_move_next ;long i=node[0].next; |
362 | call tl_move_next ;long i=node[0].next; |
364 | mov eax,tl_tim_undo |
363 | mov eax,tl_tim_undo |
365 | sub tl_ch_tim,eax ;ch_tim-=tim_undo; |
364 | sub tl_ch_tim,eax ;ch_tim-=tim_undo; |
366 | mov eax,tl_ch_tim |
365 | mov eax,tl_ch_tim |
367 | cmp [edi+34],eax ;if(ls_tim>ch_tim) |
- | |
368 | jle @f |
- | |
369 | mov dword[edi+34],0 ;ls_tim=0 |
- | |
370 | @@: |
- | |
371 | cmp edx,ecx |
366 | cmp edx,ecx |
372 | jle @f |
367 | jle @f |
Line 373... | Line 368... | ||
373 | 368 | ||
374 | ;if(node[i].tc>ch_tim){ // åñëè ñîçäàíèå ñèìâîëà áûëî îòìåíåíî |
369 | ;if(node[i].tc>ch_tim){ // ¥á«¨ ᮧ¤ ¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
375 | cmp dword[edx+12],eax |
370 | cmp dword[edx+12],eax |
376 | jle .no_u1 |
371 | jle .no_u1 |
377 | mov dword[edx+12],0 |
372 | mov dword[edx+12],0 |
Line 389... | Line 384... | ||
389 | push dword[edx+4] ;node[node[i].next].perv=node[i].perv; |
384 | push dword[edx+4] ;node[node[i].next].perv=node[i].perv; |
390 | pop dword[ebx+4] |
385 | pop dword[ebx+4] |
Line 391... | Line 386... | ||
391 | 386 | ||
Line 392... | Line 387... | ||
392 | .no_u1: |
387 | .no_u1: |
393 | 388 | ||
394 | ;else if(node[i].td>ch_tim) node[i].td=0; // åñëè óäàëåíèå ñèìâîëà áûëî îòìåíåíî |
389 | ;else if(node[i].td>ch_tim) node[i].td=0; // ¥á«¨ 㤠«¥¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
395 | cmp dword[edx+16],eax |
390 | cmp dword[edx+16],eax |
396 | jle .no_u2 |
391 | jle .no_u2 |
Line 409... | Line 404... | ||
409 | pop edx ecx ebx eax |
404 | pop edx ecx ebx eax |
410 | .no_work: |
405 | .no_work: |
Line 411... | Line 406... | ||
411 | 406 | ||
Line 412... | Line 407... | ||
412 | ret |
407 | ret |
413 | 408 | ||
414 | ;âûâîä ñïèñêà íà ýêðàí |
409 | ;¢ë¢®¤ ᯨ᪠íªà |
415 | align 4 |
410 | align 4 |
416 | proc tl_draw, tlist:dword |
411 | proc tl_draw, tlist:dword |
417 | pushad |
412 | pushad |
Line 471... | Line 466... | ||
471 | xor eax,eax |
466 | xor eax,eax |
472 | mov edx,tl_data_nodes |
467 | mov edx,tl_data_nodes |
473 | mov ecx,edx |
468 | mov ecx,edx |
474 | add ecx,sizeof.TreeList |
469 | add ecx,sizeof.TreeList |
Line 475... | Line 470... | ||
475 | 470 | ||
476 | ;*** ïðîïóñê óçëîâ, êîòîðûå ïðîìîòàíû ñêðîëëèíãîì *** |
471 | ;*** ¯à®¯ã᪠㧫®¢, ª®â®àë¥ ¯à®¬®â ë áªà®««¨£®¬ *** |
477 | cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
472 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
478 | je .end_c1 |
473 | je .end_c1 |
479 | mov esi,tl_p_scrol |
474 | mov esi,tl_p_scroll |
480 | cmp dword[esi+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
475 | cmp dword[esi+sb_offs_position],0 ;¥á«¨ áªà®««¨£ ¢¥àåã, ¢ë室¨¬ |
481 | je .end_c1 |
476 | je .end_c1 |
482 | @@: |
477 | @@: |
483 | call tl_iterat_next |
478 | call tl_iterat_next |
484 | cmp edx,ecx |
479 | cmp edx,ecx |
Line 501... | Line 496... | ||
501 | jmp @b |
496 | jmp @b |
502 | @@: |
497 | @@: |
Line 503... | Line 498... | ||
503 | 498 | ||
Line 504... | Line 499... | ||
504 | call tl_draw_cursor |
499 | call tl_draw_cursor |
505 | 500 | ||
506 | mov edi,tl_p_scrol ;ðèñóåì äî÷åðíèé ñêðîëëèíã |
501 | mov edi,tl_p_scroll ;à¨á㥬 ¤®ç¥à¨© áªà®««¨£ |
507 | cmp edi,0 ;äëÿ òîãî ÷òî-áû åãî íå ïðèøëîñü ðèñîâàòü â ïîëüçîâàòåëüñêîé ïðîãðàììå |
502 | cmp edi,0 ;¤«ï ⮣® çâ®-¡ë ¥£® ¥ ¯à¨è«®áì à¨á®¢ âì ¢ ¯®«ì§®¢ ⥫ì᪮© ¯à®£à ¬¬¥ |
Line 508... | Line 503... | ||
508 | je .end_draw ;åñëè íåò ñêðîëëèíãà âûõîäèì |
503 | je .end_draw ;¥á«¨ ¥â áªà®««¨£ ¢ë室¨¬ |
509 | stdcall scroll_bar_vertical.draw, edi |
504 | stdcall scroll_bar_vertical.draw, edi |
510 | 505 | ||
511 | .end_draw: |
506 | .end_draw: |
Line 512... | Line 507... | ||
512 | popad |
507 | popad |
513 | ret |
508 | ret |
514 | endp |
509 | endp |
515 | 510 | ||
516 | ;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
511 | ;¯¥à¥å®¤ á«¥¤ã騩 ¢¨¤¨¬ë© 㧥« (¯à®¯ãáª ï § ªàëâë¥) |
517 | ;input: |
512 | ;input: |
Line 535... | Line 530... | ||
535 | push eax |
530 | push eax |
536 | .beg0: |
531 | .beg0: |
537 | call tl_move_next |
532 | call tl_move_next |
538 | cmp edx,ecx |
533 | cmp edx,ecx |
539 | jle @f |
534 | jle @f |
540 | call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
535 | call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
541 | cmp al,1 |
536 | cmp al,1 |
542 | je .beg0 |
537 | je .beg0 |
543 | cmp bl,byte[edx+2] ;ïðîïóñê çàêðûòûõ |
538 | cmp bl,byte[edx+2] ;¯à®¯ã᪠§ ªàëâëå |
544 | jl .beg0 |
539 | jl .beg0 |
545 | @@: |
540 | @@: |
546 | pop eax |
541 | pop eax |
547 | pop bx |
542 | pop bx |
548 | ret |
543 | ret |
Line 549... | Line 544... | ||
549 | 544 | ||
550 | .else: |
545 | .else: |
551 | call tl_move_next |
546 | call tl_move_next |
552 | cmp edx,ecx |
547 | cmp edx,ecx |
553 | jle .endif |
548 | jle .endif |
554 | cmp dword[edx+16],0 ;td = 'time delete' -> ïðîïóñê óäàëåííûõ |
549 | cmp dword[edx+16],0 ;td = 'time delete' -> ¯à®¯ã᪠㤠«¥ëå |
555 | jne .else |
550 | jne .else |
556 | cmp bl,byte[edx+2] ;ïðîïóñê çàêðûòûõ |
551 | cmp bl,byte[edx+2] ;¯à®¯ã᪠§ ªàëâëå |
557 | jl .else |
552 | jl .else |
558 | .endif: |
553 | .endif: |
559 | pop bx |
554 | pop bx |
Line 560... | Line 555... | ||
560 | ret |
555 | ret |
561 | 556 | ||
562 | ;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (è íà çàêðûòûå òîæå) |
557 | ;¯¥à¥å®¤ á«¥¤ã騩 ¢¨¤¨¬ë© 㧥« (¨ § ªàëâë¥ â®¦¥) |
563 | ;input: |
558 | ;input: |
564 | ; ecx = pointer to 1 node struct |
559 | ; ecx = pointer to 1 node struct |
565 | ; edx = pointer to some node struct |
560 | ; edx = pointer to some node struct |
Line 589... | Line 584... | ||
589 | cmp dword[edx+16],0 ;td -> time delete |
584 | cmp dword[edx+16],0 ;td -> time delete |
590 | jne .else |
585 | jne .else |
591 | .endif: |
586 | .endif: |
592 | ret |
587 | ret |
Line 593... | Line 588... | ||
593 | 588 | ||
594 | ;ïåðåõîä íà ïðåäûäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
589 | ;¯¥à¥å®¤ ¯à¥¤ë¤ã騩 ¢¨¤¨¬ë© 㧥« (¯à®¯ãáª ï § ªàëâë¥) |
595 | ;input: |
590 | ;input: |
596 | ; ecx = pointer to 1 node struct |
591 | ; ecx = pointer to 1 node struct |
597 | ; edx = pointer to some node struct |
592 | ; edx = pointer to some node struct |
598 | ; edi = pointer to 'TreeList' struct |
593 | ; edi = pointer to 'TreeList' struct |
Line 604... | Line 599... | ||
604 | 599 | ||
605 | .beg0: |
600 | .beg0: |
606 | call tl_move_perv |
601 | call tl_move_perv |
607 | cmp edx,ecx |
602 | cmp edx,ecx |
608 | jle @f |
603 | jle @f |
609 | call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
604 | call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
610 | cmp al,1 |
605 | cmp al,1 |
Line 611... | Line 606... | ||
611 | je .beg0 |
606 | je .beg0 |
612 | 607 | ||
613 | .beg1: |
608 | .beg1: |
614 | call tl_move_perv |
609 | call tl_move_perv |
615 | cmp edx,ecx |
610 | cmp edx,ecx |
616 | jle @f |
611 | jle @f |
Line 617... | Line 612... | ||
617 | cmp dword[edx+16],0 ;td = 'time delete' -> ïðîïóñê óäàëåííûõ |
612 | cmp dword[edx+16],0 ;td = 'time delete' -> ¯à®¯ã᪠㤠«¥ëå |
618 | jne .beg1 |
613 | jne .beg1 |
619 | 614 | ||
620 | @@: |
615 | @@: |
Line 621... | Line 616... | ||
621 | call tl_move_max_clo_par |
616 | call tl_move_max_clo_par |
622 | pop eax |
617 | pop eax |
623 | ret |
618 | ret |
624 | 619 | ||
625 | ;íàõîäèò ðîäèòåëüñêèé çàêðûòûé óçåë ìàêñèìàëüíîãî óðîâíÿ |
620 | ; 室¨â த¨â¥«ì᪨© § ªàëâë© ã§¥« ¬ ªá¨¬ «ì®£® ã஢ï |
626 | ;input: |
621 | ;input: |
Line 632... | Line 627... | ||
632 | proc tl_move_max_clo_par uses eax ebx |
627 | proc tl_move_max_clo_par uses eax ebx |
633 | mov eax,edx |
628 | mov eax,edx |
634 | xor ebx,ebx |
629 | xor ebx,ebx |
635 | .beg: |
630 | .beg: |
636 | call tl_move_par |
631 | call tl_move_par |
637 | cmp byte[edx+3],1 ;ðîäèòåëüñêèé óçåë çàêðûò ? |
632 | cmp byte[edx+3],1 ;த¨â¥«ì᪨© 㧥« § ªàëâ ? |
638 | jne @f |
633 | jne @f |
639 | mov eax,edx |
634 | mov eax,edx |
640 | @@: |
635 | @@: |
641 | cmp ebx,edx |
636 | cmp ebx,edx |
642 | je .end_f |
637 | je .end_f |
Line 669... | Line 664... | ||
669 | mov edx,dword[edx+4] |
664 | mov edx,dword[edx+4] |
670 | imul edx,sizeof.TreeList |
665 | imul edx,sizeof.TreeList |
671 | add edx,tl_data_nodes |
666 | add edx,tl_data_nodes |
672 | ret |
667 | ret |
Line 673... | Line 668... | ||
673 | 668 | ||
674 | ;ïåðåäâèãàåìñÿ íà ðîäèòåëüñêèé óçåë, åñëè òàêîãî íåò, òî îñòàâëÿåì ñòàðîå çíà÷åíèå óêàçàòåëÿ |
669 | ;¯¥à¥¤¢¨£ ¥¬áï த¨â¥«ì᪨© 㧥«, ¥á«¨ â ª®£® ¥â, â® ®áâ ¢«ï¥¬ áâ ஥ § 票¥ 㪠§ ⥫ï |
675 | ;input: |
670 | ;input: |
676 | ; ecx = |
671 | ; ecx = |
677 | ; edx = pointer to some node struct |
672 | ; edx = pointer to some node struct |
678 | ; edi = pointer to 'TreeList' struct |
673 | ; edi = pointer to 'TreeList' struct |
679 | ;output: |
674 | ;output: |
680 | ; edx = pointer to parent node struct |
675 | ; edx = pointer to parent node struct |
681 | align 4 |
676 | align 4 |
682 | tl_move_par: |
677 | tl_move_par: |
683 | cmp byte[edx+2],0 |
678 | cmp byte[edx+2],0 |
684 | je .end_f ;óçåë 0-ãî óðîâíÿ íå ìîæåò áûòü äî÷åðíèì |
679 | je .end_f ;㧥« 0-£® ãà®¢ï ¥ ¬®¦¥â ¡ëâì ¤®ç¥à¨¬ |
685 | push eax ebx esi |
680 | push eax ebx esi |
686 | mov esi,edx ;copy node pointer (edx) |
681 | mov esi,edx ;copy node pointer (edx) |
687 | mov bl,byte[edx+2] |
682 | mov bl,byte[edx+2] |
688 | @@: |
683 | @@: |
689 | call tl_move_perv |
684 | call tl_move_perv |
690 | cmp edx,ecx |
685 | cmp edx,ecx |
691 | jle @f ;âñå âûøå ñòîÿùèå óçëû íå ðîäèòåëüñêèå |
686 | jle @f ;¢á¥ ¢ëè¥ áâ®ï騥 ã§«ë ¥ த¨â¥«ì᪨¥ |
692 | call tl_node_not_vis ;ïðîïóñê óäàëåííûõ è îòìåíåííûõ |
687 | call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
693 | cmp al,1 |
688 | cmp al,1 |
694 | je @b |
689 | je @b |
695 | cmp byte[edx+2],bl |
690 | cmp byte[edx+2],bl |
696 | jl .end_0 ;óäà÷íî íàøëè ðîäèòåëüñêèé óçåë |
691 | jl .end_0 ;ã¤ ç® è«¨ த¨â¥«ì᪨© 㧥« |
697 | jmp @b |
692 | jmp @b |
698 | @@: |
693 | @@: |
699 | mov esi,ebx ;restore node pointer |
694 | mov esi,ebx ;restore node pointer |
700 | .end_0: |
695 | .end_0: |
701 | pop esi ebx eax |
696 | pop esi ebx eax |
702 | .end_f: |
697 | .end_f: |
Line 703... | Line 698... | ||
703 | ret |
698 | ret |
704 | 699 | ||
705 | ;ïðîâåðÿåò âèäèìûé ëè óêàçàííûé óçåë ñ ó÷åòîì: äîáàâëåíèé, óäàëåíèé, îòìåí äåéñòâèé |
700 | ;¯à®¢¥àï¥â ¢¨¤¨¬ë© «¨ 㪠§ ë© ã§¥« á ãç¥â®¬: ¤®¡ ¢«¥¨©, 㤠«¥¨©, ®â¬¥ ¤¥©á⢨© |
706 | ;input: |
701 | ;input: |
707 | ; edx = pointer to symbol struct |
702 | ; edx = pointer to symbol struct |
708 | ; edi = pointer to 'TreeList' struct |
703 | ; edi = pointer to 'TreeList' struct |
Line 729... | Line 724... | ||
729 | ret |
724 | ret |
730 | @@: |
725 | @@: |
731 | xor al,al |
726 | xor al,al |
732 | ret |
727 | ret |
Line 733... | Line 728... | ||
733 | 728 | ||
734 | ;ðèñóåì êóðñîð íà ýêðàíå |
729 | ;à¨á㥬 ªãàá®à íªà ¥ |
735 | ;input: |
730 | ;input: |
736 | ; edi = pointer to TreeInfo struct |
731 | ; edi = pointer to TreeInfo struct |
737 | ; esi = coord bottom border |
732 | ; esi = coord bottom border |
738 | align 4 |
733 | align 4 |
739 | proc tl_draw_cursor uses eax ebx ecx edx esi |
734 | proc tl_draw_cursor uses eax ebx ecx edx esi |
740 | call tl_get_display_cur_pos ;eax = cursor pos in screen |
735 | call tl_get_display_cur_pos ;eax = cursor pos in screen |
741 | cmp eax,0 |
736 | cmp eax,0 |
Line 742... | Line 737... | ||
742 | jl .end_f ;êóðñîð íàõîäèòñÿ âûøå îêíà, â îáëàñòè ïðîêðó÷åííîé ñêðîëëèíãîì |
737 | jl .end_f ;ªãàá®à 室¨âáï ¢ëè¥ ®ª , ¢ ®¡« á⨠¯à®ªàã祮© áªà®««¨£®¬ |
743 | 738 | ||
744 | cmp tl_data_img_sys,0 ;ñìîòðèì åñòü ëè óêàçàòåëü íà êàðòèíêó ñèñòåìíûõ èêîíîê |
739 | cmp tl_data_img_sys,0 ;ᬮâਬ ¥áâì «¨ 㪠§ â¥«ì ª à⨪ã á¨á⥬ëå ¨ª®®ª |
745 | jne @f |
740 | jne @f |
746 | mov ebx,tl_box_left |
741 | mov ebx,tl_box_left |
747 | shl ebx,16 |
742 | shl ebx,16 |
Line 751... | Line 746... | ||
751 | imul ecx,eax |
746 | imul ecx,eax |
752 | add ecx,tl_box_top |
747 | add ecx,tl_box_top |
753 | add cx,tl_capt_cy |
748 | add cx,tl_capt_cy |
Line 754... | Line 749... | ||
754 | 749 | ||
755 | ;crop image if on the border |
750 | ;crop image if on the border |
756 | cmp esi,ecx ;åñëè êóðñîð âíèçó è åãî âîîáùå íå âèäíî |
751 | cmp esi,ecx ;¥á«¨ ªãàá®à ¢¨§ã ¨ ¥£® ¢®®¡é¥ ¥ ¢¨¤® |
Line 757... | Line 752... | ||
757 | jl .end_f |
752 | jl .end_f |
758 | 753 | ||
759 | sub esi,ecx |
754 | sub esi,ecx |
760 | shl ecx,16 |
755 | shl ecx,16 |
761 | mov cx,tl_img_cy |
756 | mov cx,tl_img_cy |
762 | cmp si,tl_img_cy |
757 | cmp si,tl_img_cy |
763 | jge .crop0 |
758 | jge .crop0 |
Line 764... | Line 759... | ||
764 | mov cx,si ;åñëè êóðñîð âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
759 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
765 | .crop0: |
760 | .crop0: |
766 | 761 | ||
767 | mov edx,tl_col_txt |
762 | mov edx,tl_col_txt |
768 | mcall 13 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê, ò.ê. íåò ñèñòåìíûõ èêîíîê |
763 | mcall 13 ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì¨ª, â.ª. ¥â á¨á⥬ëå ¨ª®®ª |
769 | jmp .end_f |
764 | jmp .end_f |
770 | @@: |
765 | @@: |
771 | mov ebx,tl_data_img_sys |
766 | mov ebx,tl_data_img_sys |
772 | imul ax,tl_img_cy |
767 | imul ax,tl_img_cy |
773 | mov edx,tl_box_left |
768 | mov edx,tl_box_left |
774 | shl edx,16 |
769 | shl edx,16 |
Line 775... | Line 770... | ||
775 | mov dx,ax |
770 | mov dx,ax |
776 | add edx,tl_box_top |
771 | add edx,tl_box_top |
777 | add dx,tl_capt_cy |
772 | add dx,tl_capt_cy |
778 | 773 | ||
779 | mov ecx,tl_el_focus ;ïðîâåðÿåì â ôîêóñå ýëåìåíò èëè íåò |
774 | mov ecx,tl_el_focus ;¯à®¢¥à塞 ¢ 䮪ãá¥ í«¥¬¥â ¨«¨ ¥â |
780 | cmp dword[ecx],edi |
775 | cmp dword[ecx],edi |
781 | je .focus |
776 | je .focus |
782 | ;åñëè íå â ôîêóñå ñäâèãàåì êîîðäèíàòû íà èêîíêó íå àêòèâíîãî êóðñîðà |
777 | ;¥á«¨ ¥ ¢ 䮪ãᥠᤢ¨£ ¥¬ ª®®à¤¨ âë ¨ª®ªã ¥ ªâ¨¢®£® ªãàá®à |
783 | xor eax,eax |
778 | xor eax,eax |
Line 792... | Line 787... | ||
792 | mov cx,tl_img_cx |
787 | mov cx,tl_img_cx |
793 | shl ecx,16 |
788 | shl ecx,16 |
794 | mov cx,tl_img_cy |
789 | mov cx,tl_img_cy |
Line 795... | Line 790... | ||
795 | 790 | ||
796 | ;crop image if on the border |
791 | ;crop image if on the border |
797 | cmp si,dx ;åñëè êóðñîð âíèçó è åãî âîîáùå íå âèäíî |
792 | cmp si,dx ;¥á«¨ ªãàá®à ¢¨§ã ¨ ¥£® ¢®®¡é¥ ¥ ¢¨¤® |
Line 798... | Line 793... | ||
798 | jl .end_f |
793 | jl .end_f |
799 | 794 | ||
800 | sub si,dx |
795 | sub si,dx |
801 | cmp si,tl_img_cy |
796 | cmp si,tl_img_cy |
802 | jge .crop1 |
797 | jge .crop1 |
Line 803... | Line 798... | ||
803 | mov cx,si ;åñëè êóðñîð âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
798 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
804 | .crop1: |
799 | .crop1: |
805 | 800 | ||
806 | mcall 7 ;ðèñóåì èêîíêó êóðñîðà |
801 | mcall 7 ;à¨á㥬 ¨ª®ªã ªãàá®à |
Line 807... | Line 802... | ||
807 | .end_f: |
802 | .end_f: |
808 | ret |
803 | ret |
809 | endp |
804 | endp |
810 | 805 | ||
811 | ;ñòèðàåì êóðñîð íà ýêðàíå |
806 | ;áâ¨à ¥¬ ªãàá®à íªà ¥ |
812 | ;input: |
807 | ;input: |
813 | ; edi = pointer to TreeInfo struct |
808 | ; edi = pointer to TreeInfo struct |
814 | ; esi = coord bottom border |
809 | ; esi = coord bottom border |
815 | align 4 |
810 | align 4 |
Line 816... | Line 811... | ||
816 | proc tl_draw_null_cursor uses eax ebx ecx edx esi |
811 | proc tl_draw_null_cursor uses eax ebx ecx edx esi |
817 | call tl_get_display_cur_pos ;eax = cursor pos in screen |
812 | call tl_get_display_cur_pos ;eax = cursor pos in screen |
818 | cmp eax,0 |
813 | cmp eax,0 |
819 | jl .end_f ;êóðñîð íàõîäèòñÿ âûøå îêíà, â îáëàñòè ïðîêðó÷åííîé ñêðîëëèíãîì |
814 | jl .end_f ;ªãàá®à 室¨âáï ¢ëè¥ ®ª , ¢ ®¡« á⨠¯à®ªàã祮© áªà®««¨£®¬ |
Line 826... | Line 821... | ||
826 | imul ecx,eax |
821 | imul ecx,eax |
827 | add ecx,tl_box_top |
822 | add ecx,tl_box_top |
828 | add cx,tl_capt_cy |
823 | add cx,tl_capt_cy |
Line 829... | Line 824... | ||
829 | 824 | ||
830 | ;crop image if on the border |
825 | ;crop image if on the border |
831 | cmp esi,ecx ;åñëè êóðñîð âíèçó è åãî âîîáùå íå âèäíî |
826 | cmp esi,ecx ;¥á«¨ ªãàá®à ¢¨§ã ¨ ¥£® ¢®®¡é¥ ¥ ¢¨¤® |
Line 832... | Line 827... | ||
832 | jl .end_f |
827 | jl .end_f |
833 | 828 | ||
834 | sub esi,ecx |
829 | sub esi,ecx |
835 | shl ecx,16 |
830 | shl ecx,16 |
836 | mov cx,tl_img_cy |
831 | mov cx,tl_img_cy |
837 | cmp si,tl_img_cy |
832 | cmp si,tl_img_cy |
838 | jge @f |
833 | jge @f |
Line 839... | Line 834... | ||
839 | mov cx,si ;åñëè êóðñîð âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
834 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
840 | @@: |
835 | @@: |
Line 841... | Line 836... | ||
841 | 836 | ||
842 | mov edx,tl_col_bkg |
837 | mov edx,tl_col_bkg |
843 | mcall 13 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê ñ ôîíîâûì öâåòîì |
838 | mcall 13 ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì¨ª á ä®®¢ë¬ 梥⮬ |
Line 844... | Line 839... | ||
844 | 839 | ||
845 | .end_f: |
840 | .end_f: |
846 | ret |
841 | ret |
847 | endp |
842 | endp |
848 | 843 | ||
849 | ;áåðåò ïîçèöèþ êóðñîðà, îòíîñèòåëüíî ýêðàíà |
844 | ;¡¥à¥â ¯®§¨æ¨î ªãàá®à , ®â®á¨â¥«ì® íªà |
850 | ;input: |
845 | ;input: |
851 | ; edi = pointer to TreeInfo struct |
846 | ; edi = pointer to TreeInfo struct |
852 | ;output: |
847 | ;output: |
853 | ; eax = index |
848 | ; eax = index |
854 | align 4 |
849 | align 4 |
855 | tl_get_display_cur_pos: |
850 | tl_get_display_cur_pos: |
856 | mov eax,tl_cur_pos |
851 | mov eax,tl_cur_pos |
857 | cmp tl_p_scrol,0 |
852 | cmp tl_p_scroll,0 |
858 | je @f |
853 | je @f |
859 | push ebx |
854 | push ebx |
860 | mov ebx,tl_p_scrol |
855 | mov ebx,tl_p_scroll |
Line 861... | Line 856... | ||
861 | mov ebx,dword[ebx+sb_offs_position] |
856 | mov ebx,dword[ebx+sb_offs_position] |
862 | sub eax,ebx ;îòíèìàåì ïîçèöèþ ñêðîëëèíãà |
857 | sub eax,ebx ;®â¨¬ ¥¬ ¯®§¨æ¨î áªà®««¨£ |
863 | pop ebx |
858 | pop ebx |
864 | @@: |
859 | @@: |
865 | ret |
860 | ret |
866 | 861 | ||
867 | ;ðèñóåò óçåë ñ: êàðòèíêîé, ïîäïèñüþ, èêîíêîé îòêðûòèÿ/çàêðûòèÿ è ëèíèÿìè ê ðîäèò. óçëó |
862 | ;à¨áã¥â 㧥« á: ª à⨪®©, ¯®¤¯¨áìî, ¨ª®ª®© ®âªàëâ¨ï/§ ªàëâ¨ï ¨ «¨¨ï¬¨ ª த¨â. 㧫ã |
868 | ;input: |
863 | ;input: |
869 | ; eax = node position |
864 | ; eax = node position |
870 | ; edx = pointer to some node struct |
865 | ; edx = pointer to some node struct |
871 | ; edi = pointer to 'TreeList' struct |
866 | ; edi = pointer to 'TreeList' struct |
872 | ; esi = coord of bottom border |
867 | ; esi = coord of bottom border |
873 | align 4 |
868 | align 4 |
874 | proc tl_draw_node uses eax ebx ecx edx esi |
869 | proc tl_draw_node uses eax ebx ecx edx esi |
875 | mov ebx,1 ;1 - ìåñòî ïîä êóðñîð |
870 | mov ebx,1 ;1 - ¬¥áâ® ¯®¤ ªãàá®à |
876 | bt tl_style,2 ;tl_list_box_mode |
871 | bt tl_style,2 ;tl_list_box_mode |
Line 877... | Line 872... | ||
877 | jc @f |
872 | jc @f |
Line 888... | Line 883... | ||
888 | imul ecx,eax |
883 | imul ecx,eax |
889 | add ecx,tl_box_top |
884 | add ecx,tl_box_top |
890 | add cx,tl_capt_cy |
885 | add cx,tl_capt_cy |
Line 891... | Line 886... | ||
891 | 886 | ||
892 | ;crop image if on the border |
887 | ;crop image if on the border |
893 | cmp esi,ecx ;åñëè óçåë âíèçó è åãî âîîáùå íå âèäíî |
888 | cmp esi,ecx ;¥á«¨ 㧥« ¢¨§ã ¨ ¥£® ¢®®¡é¥ ¥ ¢¨¤® |
Line 894... | Line 889... | ||
894 | jl .end_draw |
889 | jl .end_draw |
895 | 890 | ||
896 | sub esi,ecx |
891 | sub esi,ecx |
897 | shl ecx,16 |
892 | shl ecx,16 |
898 | mov cx,tl_img_cy |
893 | mov cx,tl_img_cy |
899 | cmp si,tl_img_cy |
894 | cmp si,tl_img_cy |
900 | jge @f |
895 | jge @f |
901 | mov cx,si ;åñëè óçåë âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
896 | mov cx,si ;¥á«¨ 㧥« ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
902 | jmp .crop ;ïðîïóñêàåì ðèñîâàíèå íàäïèñè, êîòîðàÿ ñêîðåå âñåãî òîæå âûëåçåò çà íèæíþþ ãðàíèöó |
897 | jmp .crop ;¯à®¯ã᪠¥¬ à¨á®¢ ¨¥ ¤¯¨á¨, ª®â®à ï ᪮॥ ¢á¥£® ⮦¥ ¢ë«¥§¥â § ¨¦îî £à ¨æã |
903 | @@: |
898 | @@: |
904 | call tl_draw_node_caption |
899 | call tl_draw_node_caption |
Line 939... | Line 934... | ||
939 | cmp byte[edx+3],1 |
934 | cmp byte[edx+3],1 |
940 | jne .close |
935 | jne .close |
941 | dec ah |
936 | dec ah |
942 | .close: |
937 | .close: |
Line 943... | Line 938... | ||
943 | 938 | ||
944 | call tl_draw_node_icon_opn_clo ;ðèñîâàíèå èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà |
939 | call tl_draw_node_icon_opn_clo ;à¨á®¢ ¨¥ ¨ª®ª¨ ®âªàë⮣® ¨«¨ § ªàë⮣® 㧫 |
945 | bt tl_style,1 |
940 | bt tl_style,1 |
946 | jae .end_draw |
941 | jae .end_draw |
947 | call tl_draw_node_icon_par_lin ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
942 | call tl_draw_node_icon_par_lin ;à¨á®¢ ¨¥ «¨¨¨ ª த¨â¥«ì᪮¬ã í«¥¬¥âã |
948 | call tl_draw_node_icon_par_lin_up ;ðèñîâàíèå âåðòèêàëüíîé ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
943 | call tl_draw_node_icon_par_lin_up ;à¨á®¢ ¨¥ ¢¥à⨪ «ì®© «¨¨¨ ª த¨â¥«ì᪮¬ã í«¥¬¥âã |
949 | .end_draw: |
944 | .end_draw: |
950 | ret |
945 | ret |
Line 951... | Line 946... | ||
951 | endp |
946 | endp |
952 | 947 | ||
953 | ;ðèñóåò èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà (îáû÷íî + èëè -) |
948 | ;à¨áã¥â ¨ª®ª¨ ®âªàë⮣® ¨«¨ § ªàë⮣® 㧫 (®¡ëç® + ¨«¨ -) |
954 | ;input: |
949 | ;input: |
955 | ; al = óðîâåíü ýëåìåíòà |
950 | ; al = ã஢¥ì í«¥¬¥â |
956 | ; ecx = pointer to 1 node struct |
951 | ; ecx = pointer to 1 node struct |
957 | ; edx = pointer to some node struct |
952 | ; edx = pointer to some node struct |
958 | ;... |
953 | ;... |
Line 990... | Line 985... | ||
990 | mcall 7 ;draw minus icon '-' |
985 | mcall 7 ;draw minus icon '-' |
991 | @@: |
986 | @@: |
992 | ret |
987 | ret |
993 | endp |
988 | endp |
Line 994... | Line 989... | ||
994 | 989 | ||
995 | ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
990 | ;à¨á®¢ ¨¥ «¨¨¨ ª த¨â¥«ì᪮¬ã í«¥¬¥âã |
996 | ;input: |
991 | ;input: |
997 | ; al = óðîâåíü ýëåìåíòà |
992 | ; al = ã஢¥ì í«¥¬¥â |
998 | ; ecx = pointer to 1 node struct |
993 | ; ecx = pointer to 1 node struct |
999 | ; edx = pointer to some node struct |
994 | ; edx = pointer to some node struct |
1000 | ;... |
995 | ;... |
1001 | align 4 |
996 | align 4 |
Line 1049... | Line 1044... | ||
1049 | .close: |
1044 | .close: |
1050 | ret |
1045 | ret |
Line 1051... | Line 1046... | ||
1051 | 1046 | ||
1052 | 1047 | ||
1053 | ;input: |
1048 | ;input: |
1054 | ; al = óðîâåíü ýëåìåíòà |
1049 | ; al = ã஢¥ì í«¥¬¥â |
1055 | ; ecx = pointer to 1 node struct |
1050 | ; ecx = pointer to 1 node struct |
1056 | ; edx = pointer to some node struct |
1051 | ; edx = pointer to some node struct |
1057 | ; edi = pointer to 'TreeList' struct |
1052 | ; edi = pointer to 'TreeList' struct |
Line 1062... | Line 1057... | ||
1062 | cmp tl_data_img_sys,0 ;if not image |
1057 | cmp tl_data_img_sys,0 ;if not image |
1063 | je @f |
1058 | je @f |
1064 | cmp al,0 |
1059 | cmp al,0 |
1065 | je @f |
1060 | je @f |
Line 1066... | Line 1061... | ||
1066 | 1061 | ||
1067 | xor esi,esi ;â si áóäåì íàñ÷èòûâàòü êîë-âî èêîíîê, íóæíûõ äëÿ ïðîðèñîâêè ëèíèè |
1062 | xor esi,esi ;¢ si ¡ã¤¥¬ áç¨âë¢ âì ª®«-¢® ¨ª®®ª, ã¦ëå ¤«ï ¯à®à¨á®¢ª¨ «¨¨¨ |
1068 | ;--- öèêë äëÿ âû÷èñëåíèÿ êîëëè÷åñòâà âåðòèêàëüíûõ ëèíèé --- |
1063 | ;--- 横« ¤«ï ¢ëç¨á«¥¨ï ª®««¨ç¥á⢠¢¥à⨪ «ìëå «¨¨© --- |
1069 | .cycle0: |
1064 | .cycle0: |
1070 | call tl_iterat_perv ;get perv visible item |
1065 | call tl_iterat_perv ;get perv visible item |
1071 | cmp edx,ecx |
1066 | cmp edx,ecx |
Line 1072... | Line 1067... | ||
1072 | jle .cycle1 ;if begin of list |
1067 | jle .cycle1 ;if begin of list |
1073 | 1068 | ||
1074 | cmp byte[edx+2],al |
1069 | cmp byte[edx+2],al |
1075 | jle .cycle0end ;óðîâåíü âåðõíåãî ýëåìåíòà íå òðåáóåò ïðîðèñîâêè |
1070 | jle .cycle0end ;ã஢¥ì ¢¥à奣® í«¥¬¥â ¥ âॡã¥â ¯à®à¨á®¢ª¨ |
1076 | inc si |
1071 | inc si |
1077 | jmp .cycle0 |
1072 | jmp .cycle0 |
1078 | .cycle0end: |
1073 | .cycle0end: |
1079 | cmp si,0 ;si = êîë-âî èêîíîê ëèíèè êîòîðûå íóæíî íàðèñîâàòü ñâåðõó |
1074 | cmp si,0 ;si = ª®«-¢® ¨ª®®ª «¨¨¨ ª®â®àë¥ ã¦® à¨á®¢ âì ᢥàåã |
Line 1080... | Line 1075... | ||
1080 | je @f |
1075 | je @f |
1081 | shl esi,16 |
1076 | shl esi,16 |
Line 1097... | Line 1092... | ||
1097 | imul bx,tl_img_cx |
1092 | imul bx,tl_img_cx |
1098 | imul bx,tl_img_cy |
1093 | imul bx,tl_img_cy |
1099 | add ebx,tl_data_img_sys |
1094 | add ebx,tl_data_img_sys |
Line 1100... | Line 1095... | ||
1100 | 1095 | ||
1101 | add esi,tl_box_top |
1096 | add esi,tl_box_top |
1102 | add si,tl_capt_cy ;si = âåðõíÿÿ ãðàíèöà îêíà |
1097 | add si,tl_capt_cy ;si = ¢¥àåïï £à ¨æ ®ª |
1103 | mov eax,7 |
1098 | mov eax,7 |
1104 | ;--- öèêë äëÿ ðèñîâàíèÿ âåðòèêàëüíîé ëèíèè --- |
1099 | ;--- 横« ¤«ï à¨á®¢ ¨ï ¢¥à⨪ «ì®© «¨¨¨ --- |
1105 | .cycle1: |
1100 | .cycle1: |
1106 | sub dx,tl_img_cy ;ïîäíèìàåì êîîðäèíàòó y ââåðõ |
1101 | sub dx,tl_img_cy ;¯®¤¨¬ ¥¬ ª®®à¤¨ âã y ¢¢¥àå |
1107 | cmp dx,si |
1102 | cmp dx,si |
1108 | jl @f |
1103 | jl @f |
1109 | cmp esi,0x10000 |
1104 | cmp esi,0x10000 |
1110 | jl @f |
1105 | jl @f |
1111 | int 0x40 ;draw line icon |
1106 | int 0x40 ;draw line icon |
1112 | sub esi,0x10000 ;óìåíüøàåì ñ÷åò÷èê èêîíîê |
1107 | sub esi,0x10000 ;㬥ìè ¥¬ áç¥â稪 ¨ª®®ª |
1113 | jmp .cycle1 |
1108 | jmp .cycle1 |
1114 | @@: |
1109 | @@: |
1115 | pop esi |
1110 | pop esi |
1116 | pop edx ecx ebx eax |
1111 | pop edx ecx ebx eax |
Line 1132... | Line 1127... | ||
1132 | pop edx ecx |
1127 | pop edx ecx |
1133 | ret |
1128 | ret |
Line 1134... | Line 1129... | ||
1134 | 1129 | ||
1135 | ;input: |
1130 | ;input: |
1136 | ; eax = node position |
1131 | ; eax = node position |
1137 | ; ebx = [êîîðäèíàòà ïî îñè x]*65536 + [img_cx] |
1132 | ; ebx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [img_cx] |
1138 | ; ecx = [êîîðäèíàòà ïî îñè y]*65536 + [img_cy] |
1133 | ; ecx = [ª®®à¤¨ â ¯® ®á¨ y]*65536 + [img_cy] |
1139 | ; edx = pointer to some node struct |
1134 | ; edx = pointer to some node struct |
1140 | ; edi = pointer to TreeInfo struct |
1135 | ; edi = pointer to TreeInfo struct |
1141 | align 4 |
1136 | align 4 |
1142 | tl_draw_node_caption: |
1137 | tl_draw_node_caption: |
Line 1154... | Line 1149... | ||
1154 | add si,tl_info_capt_offs |
1149 | add si,tl_info_capt_offs |
1155 | add esi,tl_data_info |
1150 | add esi,tl_data_info |
1156 | mov edx,esi |
1151 | mov edx,esi |
Line 1157... | Line 1152... | ||
1157 | 1152 | ||
1158 | shr ebx,16 |
1153 | shr ebx,16 |
1159 | add bx,tl_img_cx ;ñäâèãàåì íàäïèñü ïî ãîðèçîíòàëè ---> |
1154 | add bx,tl_img_cx ;ᤢ¨£ ¥¬ ¤¯¨áì ¯® £®à¨§®â «¨ ---> |
1160 | add bx,3 ;îòñòóï |
1155 | add bx,3 ;®âáâ㯠|
1161 | ;bx = coord. x |
1156 | ;bx = coord. x |
1162 | call tl_strlen ;eax = strlen |
1157 | call tl_strlen ;eax = strlen |
1163 | call tl_get_draw_text_len |
1158 | call tl_get_draw_text_len |
1164 | mov cx,bx |
1159 | mov cx,bx |
1165 | ror ecx,16 |
1160 | ror ecx,16 |
1166 | mov ebx,ecx |
1161 | mov ebx,ecx |
1167 | add bx,tl_img_cy ;âûðàâíèâèíèå ïî íèæíåé ãðàíèöå èêîíêè |
1162 | add bx,tl_img_cy ;¢ëà ¢¨¢¨¨¥ ¯® ¨¦¥© £à ¨æ¥ ¨ª®ª¨ |
1168 | sub bx,9 ;îòíèìàåì âûñîòó òåêñòà |
1163 | sub bx,9 ;®â¨¬ ¥¬ ¢ëá®âã ⥪áâ |
1169 | mov ecx,tl_col_txt |
1164 | mov ecx,tl_col_txt |
1170 | and ecx,0xffffff |
1165 | and ecx,0xffffff |
1171 | ; or ecx,0x80000000 ;text is ASCIIZ |
1166 | ; or ecx,0x80000000 ;text is ASCIIZ |
1172 | mcall 4 |
1167 | mcall 4 |
Line 1180... | Line 1175... | ||
1180 | ;output: |
1175 | ;output: |
1181 | ; esi = text len |
1176 | ; esi = text len |
1182 | align 4 |
1177 | align 4 |
1183 | tl_get_draw_text_len: |
1178 | tl_get_draw_text_len: |
1184 | push eax ecx edx |
1179 | push eax ecx edx |
1185 | mov esi,eax ;áåðåì äëèííó ñòðîêè |
1180 | mov esi,eax ;¡¥à¥¬ ¤«¨ã áâப¨ |
Line 1186... | Line 1181... | ||
1186 | 1181 | ||
1187 | mov eax,tl_box_left |
1182 | mov eax,tl_box_left |
1188 | add eax,tl_box_width |
1183 | add eax,tl_box_width |
1189 | cmp eax,ebx |
1184 | cmp eax,ebx |
1190 | jle .text_null ;åñëè ïîäïèñü ïîëíîñòüþ âñÿ çà ýêðàíîì |
1185 | jle .text_null ;¥á«¨ ¯®¤¯¨áì ¯®«®áâìî ¢áï § íªà ®¬ |
1191 | sub eax,ebx |
1186 | sub eax,ebx |
1192 | xor edx,edx |
1187 | xor edx,edx |
1193 | mov ecx,6 ;øèðèíà ñèñòåìíîãî øðèôòà |
1188 | mov ecx,6 ;è¨à¨ á¨á⥬®£® èà¨äâ |
Line 1194... | Line 1189... | ||
1194 | div ecx ;ñìîòðèì ñêîëüêî ñèìâîëîâ ìîæåò ïîìåñòèòüñÿ íà ýêðàíå |
1189 | div ecx ;ᬮâਬ ᪮«ìª® ᨬ¢®«®¢ ¬®¦¥â ¯®¬¥áâ¨âìáï íªà ¥ |
1195 | 1190 | ||
1196 | cmp esi,eax |
1191 | cmp esi,eax |
1197 | jl @f |
1192 | jl @f |
1198 | mov esi,eax ;åñëè äëèííà òåêñòà ìåíüøå, ÷åì âñå ìåñòî ïîä ñòðîêó |
1193 | mov esi,eax ;¥á«¨ ¤«¨ ⥪áâ ¬¥ìè¥, 祬 ¢á¥ ¬¥áâ® ¯®¤ áâபã |
1199 | jmp @f |
1194 | jmp @f |
1200 | .text_null: |
1195 | .text_null: |
1201 | xor esi,esi |
1196 | xor esi,esi |
Line 1217... | Line 1212... | ||
1217 | jmp @b |
1212 | jmp @b |
1218 | @@: |
1213 | @@: |
1219 | sub eax,esi |
1214 | sub eax,esi |
1220 | ret |
1215 | ret |
Line 1221... | Line 1216... | ||
1221 | 1216 | ||
1222 | ;äîáàâèòü óçåë |
1217 | ;¤®¡ ¢¨âì 㧥« |
1223 | ;input: |
1218 | ;input: |
1224 | ; tlist - óêàçàòåëü íà ñòðóêòóðó ëèñòà |
1219 | ; tlist - 㪠§ ⥫ì áâàãªâãàã «¨áâ |
1225 | ; n_opt - îïöèè äîáàâëåíèÿ |
1220 | ; n_opt - ®¯æ¨¨ ¤®¡ ¢«¥¨ï |
1226 | ; n_info - óêàçàòåëü íà äîáàâëÿåìûå äàííûå |
1221 | ; n_info - 㪠§ â¥«ì ¤®¡ ¢«ï¥¬ë¥ ¤ ë¥ |
1227 | align 4 |
1222 | align 4 |
1228 | proc tl_node_add uses eax ebx ecx edx edi, n_info:dword, n_opt:dword, tlist:dword |
1223 | proc tl_node_add uses eax ebx ecx edx edi, tlist:dword, n_opt:dword, n_info:dword |
Line 1229... | Line 1224... | ||
1229 | mov edi,dword[tlist] |
1224 | mov edi,dword[tlist] |
Line 1230... | Line 1225... | ||
1230 | 1225 | ||
Line 1284... | Line 1279... | ||
1284 | mov esi,edi |
1279 | mov esi,edi |
1285 | mov edi,dword[tlist] ;restore edi |
1280 | mov edi,dword[tlist] ;restore edi |
1286 | mov cx,tl_info_capt_offs |
1281 | mov cx,tl_info_capt_offs |
1287 | cmp cx,tl_info_size |
1282 | cmp cx,tl_info_size |
1288 | jge .no_text_data |
1283 | jge .no_text_data |
1289 | cmp tl_info_capt_len,0 ;ïðîâåðÿåì åñòü ëè îãðàíè÷åíèå íà äëèííó ñòðîêè |
1284 | cmp tl_info_capt_len,0 ;¯à®¢¥à塞 ¥áâì «¨ ®£à ¨ç¥¨¥ ¤«¨ã áâப¨ |
1290 | je .no_len_ogran |
1285 | je .no_len_ogran |
1291 | add cx,tl_info_capt_len |
1286 | add cx,tl_info_capt_len |
1292 | and ecx,0xffff |
1287 | and ecx,0xffff |
1293 | add esi,ecx |
1288 | add esi,ecx |
1294 | mov cx,tl_info_size |
1289 | mov cx,tl_info_size |
Line 1308... | Line 1303... | ||
1308 | 1303 | ||
1309 | call tl_get_node_index ;*** eax = i *** |
1304 | call tl_get_node_index ;*** eax = i *** |
1310 | cmp eax,tl_info_max_count |
1305 | cmp eax,tl_info_max_count |
Line 1311... | Line 1306... | ||
1311 | jge .u0 |
1306 | jge .u0 |
1312 | 1307 | ||
1313 | mov [ecx],eax ;node[po_t].next=i; // ññûëêè ïåðåíàïðàâëÿåì |
1308 | mov [ecx],eax ;node[po_t].next=i; // áá뫪¨ ¯¥à¥ ¯à ¢«ï¥¬ |
1314 | mov ecx,[edx+8] ; *** ecx = node[i].next *** |
1309 | mov ecx,[edx+8] ; *** ecx = node[i].next *** |
1315 | imul ecx,sizeof.TreeList |
1310 | imul ecx,sizeof.TreeList |
Line 1316... | Line 1311... | ||
1316 | add ecx,tl_data_nodes ; *** ecx = node[node[i].next] *** |
1311 | add ecx,tl_data_nodes ; *** ecx = node[node[i].next] *** |
1317 | mov [ecx+4],eax ;node[node[i].next].perv=i; |
1312 | mov [ecx+4],eax ;node[node[i].next].perv=i; |
1318 | 1313 | ||
1319 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
1314 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1320 | jmp @f |
1315 | jmp @f |
1321 | .u0: |
1316 | .u0: |
Line 1328... | Line 1323... | ||
1328 | 1323 | ||
1329 | ;input: |
1324 | ;input: |
1330 | ; edi = pointer to TreeInfo struct |
1325 | ; edi = pointer to TreeInfo struct |
1331 | align 4 |
1326 | align 4 |
1332 | proc tb_scrol_resize uses eax ecx edx |
1327 | proc tb_scrol_resize uses eax ecx edx |
1333 | cmp tl_p_scrol,0 ;îáðàáîòêà ñêðîëëèíãà |
1328 | cmp tl_p_scroll,0 ;®¡à ¡®âª áªà®««¨£ |
1334 | je @f |
1329 | je @f |
1335 | call tl_get_node_count ;eax = node count |
1330 | call tl_get_node_count ;eax = node count |
1336 | mov ecx,eax |
1331 | mov ecx,eax |
1337 | call tl_get_rows_count |
1332 | call tl_get_rows_count |
1338 | cmp ecx,eax |
1333 | cmp ecx,eax |
1339 | jg .ye_sb |
1334 | jg .ye_sb |
1340 | xor ecx,ecx |
1335 | xor ecx,ecx |
Line 1341... | Line 1336... | ||
1341 | .ye_sb: |
1336 | .ye_sb: |
1342 | 1337 | ||
1343 | mov edx,tl_p_scrol |
1338 | mov edx,tl_p_scroll |
1344 | mov dword[edx+sb_offs_cur_area],eax |
1339 | mov dword[edx+sb_offs_cur_area],eax |
1345 | mov dword[edx+sb_offs_max_area],ecx |
1340 | mov dword[edx+sb_offs_max_area],ecx |
1346 | stdcall scroll_bar_vertical.draw,edx |
1341 | stdcall scroll_bar_vertical.draw,edx |
1347 | @@: |
1342 | @@: |
Line 1348... | Line 1343... | ||
1348 | ret |
1343 | ret |
1349 | endp |
1344 | endp |
1350 | 1345 | ||
1351 | ;input: |
1346 | ;input: |
1352 | ;n_info - pointer to node info |
1347 | ;n_info - pointer to node info |
1353 | align 4 |
1348 | align 4 |
1354 | proc tl_node_set_data uses eax ecx edx edi esi, n_info:dword, tlist:dword |
1349 | proc tl_node_set_data uses eax ecx edx edi esi, tlist:dword, n_info:dword |
1355 | mov edi,dword[tlist] |
1350 | mov edi,dword[tlist] |
1356 | call tl_get_cur_node_index ;eax=po_t |
1351 | call tl_get_cur_node_index ;eax=po_t |
Line 1367... | Line 1362... | ||
1367 | mov esi,edi |
1362 | mov esi,edi |
1368 | mov edi,dword[tlist] ;restore edi |
1363 | mov edi,dword[tlist] ;restore edi |
1369 | mov cx,tl_info_capt_offs |
1364 | mov cx,tl_info_capt_offs |
1370 | cmp cx,tl_info_size |
1365 | cmp cx,tl_info_size |
1371 | jge .no_text_data |
1366 | jge .no_text_data |
1372 | mov ax,tl_info_capt_len ;ïðîâåðÿåì åñòü ëè îãðàíè÷åíèå íà äëèííó òåêñòà |
1367 | mov ax,tl_info_capt_len ;¯à®¢¥à塞 ¥áâì «¨ ®£à ¨ç¥¨¥ ¤«¨ã ⥪áâ |
1373 | cmp ax,0 |
1368 | cmp ax,0 |
1374 | je .no_limit |
1369 | je .no_limit |
1375 | add cx,ax ;cx = tl_info_capt_offs + tl_info_capt_len |
1370 | add cx,ax ;cx = tl_info_capt_offs + tl_info_capt_len |
1376 | and ecx,0xffff |
1371 | and ecx,0xffff |
1377 | xor eax,eax |
1372 | xor eax,eax |
1378 | mov ax,tl_info_size |
1373 | mov ax,tl_info_size |
1379 | cmp eax,ecx |
1374 | cmp eax,ecx |
1380 | jl .no_limit ;ïîëüçîâàòåëü çàäàë ñëèøêîì áîëüøóþ äëèííó òåêñòà |
1375 | jl .no_limit ;¯®«ì§®¢ â¥«ì § ¤ « ᫨誮¬ ¡®«ìèãî ¤«¨ã ⥪áâ |
1381 | add esi,ecx |
1376 | add esi,ecx |
1382 | sub esi,eax |
1377 | sub esi,eax |
1383 | .no_limit: |
1378 | .no_limit: |
1384 | dec esi |
1379 | dec esi |
1385 | mov byte[esi],0 ;îáíóëÿåì ïîñëåäíèé ñèìâîë ïîäïèñè, ÷òî-áû íå ãëþ÷èëî åñëè ïîëüçîâàòåëü çàäàë íåïðàâèëüíóþ ñòðóêòóðó |
1380 | mov byte[esi],0 ;®¡ã«ï¥¬ ¯®á«¥¤¨© ᨬ¢®« ¯®¤¯¨á¨, çâ®-¡ë ¥ £«î稫® ¥á«¨ ¯®«ì§®¢ â¥«ì § ¤ « ¥¯à ¢¨«ìãî áâàãªâãàã |
1386 | .no_text_data: |
1381 | .no_text_data: |
Line 1387... | Line 1382... | ||
1387 | 1382 | ||
1388 | @@: |
1383 | @@: |
1389 | ret |
1384 | ret |
Line -... | Line 1385... | ||
- | 1385 | endp |
|
1390 | endp |
1386 | |
1391 | 1387 | ;¢§ïâì 㪠§ â¥«ì ¤ ë¥ ã§« ¯®¤ ªãàá®à®¬ |
|
- | 1388 | ;input: |
|
- | 1389 | ; tlist - pointer to 'TreeList' struct |
|
1392 | ;input: |
1390 | ;output: |
1393 | ;dword[ebp+ 8] - pointer to 'TreeList' struct |
- | |
1394 | align 4 |
- | |
1395 | tl_node_get_data: ;âçÿòü óêàçàòåëü íà äàííûå óçëà ïîä êóðñîðîì |
- | |
1396 | push ebp |
1391 | ; eax - pointer to node data |
1397 | mov ebp,esp |
1392 | align 4 |
1398 | push eax ecx edi |
1393 | proc tl_node_get_data uses ecx edi, tlist:dword |
1399 | mov edi,dword[ebp+8] |
- | |
1400 | call tl_get_cur_node_index ;eax=po_t |
1394 | mov edi,dword[tlist] |
1401 | mov dword[ebp+8],0 ;if return 0 pointer |
1395 | call tl_get_cur_node_index ;eax=po_t |
1402 | cmp eax,2 |
- | |
1403 | jl @f |
1396 | cmp eax,2 |
1404 | xor ecx,ecx |
1397 | jl @f |
1405 | mov cx,tl_info_size |
1398 | movzx ecx,tl_info_size |
1406 | imul eax,ecx |
1399 | imul eax,ecx |
1407 | add eax,tl_data_info |
1400 | add eax,tl_data_info |
1408 | mov dword[ebp+8],eax ;return node data pointer |
1401 | jmp .end_f ;return node data pointer |
1409 | @@: |
1402 | @@: |
1410 | pop edi ecx eax |
1403 | xor eax,eax |
- | 1404 | .end_f: |
|
Line -... | Line 1405... | ||
- | 1405 | ret |
|
1411 | pop ebp |
1406 | endp |
- | 1407 | ||
1412 | ret |
1408 | ;¢§ïâì 㪠§ ⥫ì áâàãªâãàã 㧫 ¢ 㪠§ ®© ¯®§¨æ¨¨ |
- | 1409 | ;input: |
|
1413 | 1410 | ; tlist - pointer to 'TreeList' struct |
|
1414 | ;input: |
1411 | ; node_ind - node index |
1415 | ;dword[ebp+ 8] - node index |
1412 | ;output: |
1416 | ;dword[ebp+12] - pointer to 'TreeList' struct |
- | |
1417 | align 4 |
- | |
1418 | tl_node_poi_get_info: ;âçÿòü óêàçàòåëü íà ñòðóêòóðó óçëà â óêàçàííîé ïîçèöèè |
- | |
1419 | push ebp |
1413 | ; eax - pointer to node info |
1420 | mov ebp,esp |
1414 | align 4 |
Line 1421... | Line 1415... | ||
1421 | push eax ecx edx edi |
1415 | proc tl_node_poi_get_info uses ebx ecx edi, tlist:dword, node_ind:dword |
1422 | mov edi,dword[ebp+12] |
1416 | mov edi,dword[tlist] |
1423 | mov eax,dword[ebp+8] |
1417 | mov ebx,dword[node_ind] |
1424 | 1418 | ||
1425 | ;cycle to nodes |
1419 | ;cycle to nodes |
1426 | mov edx,tl_data_nodes |
1420 | mov eax,tl_data_nodes |
1427 | mov ecx,edx |
1421 | mov ecx,eax |
1428 | add ecx,sizeof.TreeList |
1422 | add ecx,sizeof.TreeList |
1429 | @@: |
1423 | @@: |
1430 | call tl_iterat_next_all |
1424 | call tl_iterat_next_all |
1431 | cmp edx,ecx |
1425 | cmp eax,ecx |
1432 | jle @f |
1426 | jle @f |
1433 | dec eax |
1427 | dec ebx |
1434 | cmp eax,0 |
1428 | cmp ebx,0 |
1435 | jg @b |
1429 | jg @b |
1436 | jmp .find |
- | |
1437 | @@: |
- | |
1438 | xor edx,edx |
1430 | jmp .find |
1439 | .find: |
1431 | @@: |
Line -... | Line 1432... | ||
- | 1432 | xor eax,eax |
|
1440 | mov dword[ebp+12],edx |
1433 | .find: |
- | 1434 | ret |
|
1441 | pop edi edx ecx eax |
1435 | endp |
- | 1436 | ||
1442 | pop ebp |
1437 | ;¢§ïâì 㪠§ ⥫ì á«¥¤ãéãî áâàãªâãàã 㧫 |
1443 | ret 4 |
1438 | ;input: |
1444 | 1439 | ; tlist - pointer to 'TreeList' struct |
|
1445 | ;input: |
- | |
1446 | ;dword[ebp+ 8] - node param struct |
- | |
1447 | ;dword[ebp+12] - pointer to 'TreeList' struct |
- | |
1448 | align 4 |
1440 | ; node_p - node param struct |
1449 | tl_node_poi_get_next_info: ;âçÿòü óêàçàòåëü íà ñëåäóùóþ ñòðóêòóðó óçëà |
1441 | ;output: |
Line 1450... | Line 1442... | ||
1450 | push ebp |
1442 | ; eax - pointer to next node struct |
1451 | mov ebp,esp |
1443 | align 4 |
Line 1452... | Line 1444... | ||
1452 | push ecx edx edi |
1444 | proc tl_node_poi_get_next_info uses ecx edx edi, tlist:dword, node_p:dword |
1453 | mov edi,dword[ebp+12] |
1445 | mov edi,dword[tlist] |
1454 | mov edx,dword[ebp+8] |
1446 | mov edx,dword[node_p] |
1455 | 1447 | ||
1456 | mov ecx,tl_data_nodes |
1448 | mov ecx,tl_data_nodes |
- | 1449 | add ecx,sizeof.TreeList |
|
- | 1450 | ||
- | 1451 | call tl_iterat_next_all |
|
Line 1457... | Line 1452... | ||
1457 | add ecx,sizeof.TreeList |
1452 | cmp edx,ecx |
1458 | - | ||
1459 | call tl_iterat_next_all |
- | |
1460 | cmp edx,ecx |
- | |
1461 | jg @f |
- | |
1462 | xor edx,edx |
1453 | jg @f |
1463 | @@: |
1454 | xor edx,edx |
1464 | 1455 | @@: |
|
1465 | mov dword[ebp+12],edx |
1456 | mov eax,edx |
1466 | pop edi edx ecx |
- | |
1467 | pop ebp |
1457 | ret |
1468 | ret 4 |
1458 | endp |
1469 | 1459 | ||
1470 | ;input: |
1460 | ;¢§ïâì 㪠§ â¥«ì ¤ ë¥ ã§« |
1471 | ;dword[ebp+ 8] - node param struct |
1461 | ;input: |
Line 1472... | Line -... | ||
1472 | ;dword[ebp+12] - pointer to 'TreeList' struct |
- | |
1473 | align 4 |
1462 | ; tlist - pointer to 'TreeList' struct |
1474 | tl_node_poi_get_data: ;âçÿòü óêàçàòåëü íà äàííûå óçëà |
1463 | ; node_p - node param struct |
1475 | push ebp |
1464 | ;output: |
1476 | mov ebp,esp |
1465 | ; eax - pointer |
1477 | push eax ecx edx edi |
1466 | align 4 |
1478 | mov edi,dword[ebp+12] |
1467 | proc tl_node_poi_get_data uses ecx edx edi, tlist:dword, node_p:dword |
1479 | mov edx,dword[ebp+8] |
1468 | mov edi,dword[tlist] |
1480 | 1469 | mov edx,dword[node_p] |
|
1481 | mov dword[ebp+12],0 |
1470 | |
1482 | call tl_get_node_index ;eax = node index |
1471 | call tl_get_node_index ;eax = node index |
1483 | cmp eax,2 |
1472 | cmp eax,2 |
1484 | jl @f |
1473 | jl @f |
- | 1474 | xor ecx,ecx |
|
Line 1485... | Line 1475... | ||
1485 | xor ecx,ecx |
1475 | mov cx,tl_info_size |
1486 | mov cx,tl_info_size |
1476 | imul eax,ecx |
1487 | imul eax,ecx |
1477 | add eax,tl_data_info |
1488 | add eax,dword[edi] |
1478 | jmp .end_f ;return node data pointer |
1489 | mov dword[ebp+12],eax ;return node data pointer |
1479 | @@: |
1490 | @@: |
1480 | xor eax,eax ;¢®§¢à é ¥¬ 0 ¢ á«ãç ¥ ¥ 㤠箣® ¯®¨áª |
Line 1519... | Line 1509... | ||
1519 | mov ecx,sizeof.TreeList |
1509 | mov ecx,sizeof.TreeList |
1520 | div ecx |
1510 | div ecx |
1521 | ret |
1511 | ret |
1522 | endp |
1512 | endp |
Line 1523... | Line 1513... | ||
1523 | 1513 | ||
1524 | ;áåðåò ïîçèöèþ óêàçàííîãî ñèìâîëà |
1514 | ;¡¥à¥â ¯®§¨æ¨î 㪠§ ®£® ᨬ¢®« |
1525 | ;input: |
1515 | ;input: |
1526 | ; edx = pointer node memory |
1516 | ; edx = pointer node memory |
1527 | ; edi = pointer 'tl' struct |
1517 | ; edi = pointer 'tl' struct |
1528 | ;output: |
1518 | ;output: |
Line 1536... | Line 1526... | ||
1536 | mov ecx,sizeof.TreeList |
1526 | mov ecx,sizeof.TreeList |
1537 | div ecx |
1527 | div ecx |
1538 | pop edx ecx |
1528 | pop edx ecx |
1539 | ret |
1529 | ret |
Line 1540... | Line 1530... | ||
1540 | 1530 | ||
1541 | ;óäàëèòü óçåë |
1531 | ;㤠«¨âì 㧥« |
1542 | align 4 |
1532 | align 4 |
1543 | proc tl_node_delete uses eax edx edi, tlist:dword |
1533 | proc tl_node_delete uses eax edx edi, tlist:dword |
1544 | mov edi,dword[tlist] |
1534 | mov edi,dword[tlist] |
1545 | call tl_get_cur_node_index ;eax=po_t |
1535 | call tl_get_cur_node_index ;eax=po_t |
Line 1549... | Line 1539... | ||
1549 | add eax,tl_data_nodes |
1539 | add eax,tl_data_nodes |
1550 | mov edx,eax |
1540 | mov edx,eax |
1551 | inc tl_ch_tim |
1541 | inc tl_ch_tim |
1552 | mov eax,tl_ch_tim |
1542 | mov eax,tl_ch_tim |
1553 | mov dword[edx+16],eax |
1543 | mov dword[edx+16],eax |
1554 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
1544 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1555 | @@: |
1545 | @@: |
1556 | ret |
1546 | ret |
1557 | endp |
1547 | endp |
Line 1558... | Line 1548... | ||
1558 | 1548 | ||
1559 | ;ïîñòàâèòü êóðñîð íà ïåðâûé óçåë |
1549 | ;¯®áâ ¢¨âì ªãàá®à ¯¥à¢ë© 㧥« |
1560 | align 4 |
1550 | align 4 |
1561 | proc tl_cur_beg uses edi, tlist:dword |
1551 | proc tl_cur_beg uses edi, tlist:dword |
1562 | mov edi,dword[tlist] |
1552 | mov edi,dword[tlist] |
1563 | mov tl_cur_pos,0 |
1553 | mov tl_cur_pos,0 |
1564 | cmp tl_p_scrol,0 |
1554 | cmp tl_p_scroll,0 |
1565 | je @f |
1555 | je @f |
1566 | mov edi,tl_p_scrol |
1556 | mov edi,tl_p_scroll |
1567 | mov dword[edi+sb_offs_position],0 |
1557 | mov dword[edi+sb_offs_position],0 |
1568 | stdcall scroll_bar_vertical.draw, edi |
1558 | stdcall scroll_bar_vertical.draw, edi |
1569 | @@: |
1559 | @@: |
1570 | ret |
1560 | ret |
Line 1571... | Line 1561... | ||
1571 | endp |
1561 | endp |
1572 | 1562 | ||
1573 | ;ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ íèæå |
1563 | ;¯¥à¥¥á⨠ªãàá®à 1 ¯®§¨æ¨î ¨¦¥ |
1574 | align 4 |
1564 | align 4 |
1575 | proc tl_cur_next uses eax ebx edi esi, tlist:dword |
1565 | proc tl_cur_next uses eax ebx edi esi, tlist:dword |
1576 | mov edi,dword[tlist] |
1566 | mov edi,dword[tlist] |
1577 | call tl_get_node_count ;eax = node count |
1567 | call tl_get_node_count ;eax = node count |
1578 | ;inc eax |
1568 | ;inc eax |
1579 | cmp tl_cur_pos,eax |
1569 | cmp tl_cur_pos,eax |
1580 | jge .no_redraw |
1570 | jge .no_redraw |
1581 | mov esi,tl_box_top |
1571 | mov esi,tl_box_top |
1582 | add esi,tl_box_height ;esi = coord bottom border |
1572 | add esi,tl_box_height ;esi = coord bottom border |
Line 1583... | Line 1573... | ||
1583 | call tl_draw_null_cursor ;ñòèðàåì êóðñîð |
1573 | call tl_draw_null_cursor ;áâ¨à ¥¬ ªãàá®à |
1584 | inc tl_cur_pos |
1574 | inc tl_cur_pos |
1585 | 1575 | ||
1586 | cmp tl_p_scrol,0 ;if not scrol struct |
1576 | cmp tl_p_scroll,0 ;if not scrol struct |
1587 | je @f |
1577 | je @f |
1588 | call tl_get_rows_count ;eax = rows count |
1578 | call tl_get_rows_count ;eax = rows count |
1589 | mov ebx,tl_p_scrol |
1579 | mov ebx,tl_p_scroll |
1590 | add eax,dword[ebx+sb_offs_position] |
1580 | add eax,dword[ebx+sb_offs_position] |
1591 | cmp tl_cur_pos,eax |
1581 | cmp tl_cur_pos,eax |
Line 1592... | Line 1582... | ||
1592 | jl @f |
1582 | jl @f |
1593 | inc dword[ebx+sb_offs_position] |
1583 | inc dword[ebx+sb_offs_position] |
1594 | stdcall scroll_bar_vertical.draw,ebx |
1584 | stdcall scroll_bar_vertical.draw,ebx |
1595 | 1585 | ||
1596 | stdcall tl_draw,dword[tlist] ;ïîëíàÿ ïåðåðèñîâêà îêíà |
1586 | stdcall tl_draw,dword[tlist] ;¯®« ï ¯¥à¥à¨á®¢ª ®ª |
1597 | jmp .no_redraw |
1587 | jmp .no_redraw |
1598 | @@: |
1588 | @@: |
1599 | mov edi,dword[tlist] ;restore edi |
1589 | mov edi,dword[tlist] ;restore edi |
1600 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
1590 | call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
Line 1601... | Line 1591... | ||
1601 | call tl_draw_caption_cur_pos |
1591 | call tl_draw_caption_cur_pos |
1602 | .no_redraw: |
1592 | .no_redraw: |
1603 | ret |
1593 | ret |
1604 | endp |
1594 | endp |
1605 | 1595 | ||
1606 | ;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (íå ñ÷èòàÿ çàêðûòûõ äî÷åðíèõ) |
1596 | ;¡¥à¥â ç¨á«® ¢á¥å ¢¨¤¨¬ëå 㧫®¢ (¥ áç¨â ï § ªàëâëå ¤®ç¥à¨å) |
Line 1624... | Line 1614... | ||
1624 | jmp @b |
1614 | jmp @b |
1625 | @@: |
1615 | @@: |
1626 | pop edx ecx |
1616 | pop edx ecx |
1627 | ret |
1617 | ret |
Line 1628... | Line 1618... | ||
1628 | 1618 | ||
1629 | ;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (ñ÷èòàÿ çàêðûòûå äî÷åðíèå) |
1619 | ;¡¥à¥â ç¨á«® ¢á¥å ¢¨¤¨¬ëå 㧫®¢ (áç¨â ï § ªàëâë¥ ¤®ç¥à¨¥) |
1630 | ;input: |
1620 | ;input: |
1631 | ; edi = pointer 'tl' struct |
1621 | ; edi = pointer 'tl' struct |
1632 | ;output: |
1622 | ;output: |
1633 | ; eax = struct index of current node |
1623 | ; eax = struct index of current node |
Line 1647... | Line 1637... | ||
1647 | jmp @b |
1637 | jmp @b |
1648 | @@: |
1638 | @@: |
1649 | pop edx ecx |
1639 | pop edx ecx |
1650 | ret |
1640 | ret |
Line 1651... | Line 1641... | ||
1651 | 1641 | ||
1652 | ;ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ âûøå |
1642 | ;¯¥à¥¥á⨠ªãàá®à 1 ¯®§¨æ¨î ¢ëè¥ |
1653 | align 4 |
1643 | align 4 |
1654 | proc tl_cur_perv uses eax edi esi, tlist:dword |
1644 | proc tl_cur_perv uses eax edi esi, tlist:dword |
1655 | mov edi,dword[tlist] |
1645 | mov edi,dword[tlist] |
1656 | cmp tl_cur_pos,0 |
1646 | cmp tl_cur_pos,0 |
1657 | je .no_redraw |
1647 | je .no_redraw |
1658 | mov esi,tl_box_top |
1648 | mov esi,tl_box_top |
1659 | add esi,tl_box_height ;esi = coord bottom border |
1649 | add esi,tl_box_height ;esi = coord bottom border |
1660 | call tl_draw_null_cursor ;ñòèðàåì êóðñîð |
1650 | call tl_draw_null_cursor ;áâ¨à ¥¬ ªãàá®à |
Line 1661... | Line 1651... | ||
1661 | dec tl_cur_pos ;äâèãàåì êóðñîð ââåðõ |
1651 | dec tl_cur_pos ;¤¢¨£ ¥¬ ªãàá®à ¢¢¥àå |
1662 | 1652 | ||
1663 | cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
1653 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
1664 | je @f |
1654 | je @f |
1665 | mov eax,tl_p_scrol |
1655 | mov eax,tl_p_scroll |
1666 | cmp dword[eax+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
1656 | cmp dword[eax+sb_offs_position],0 ;¥á«¨ áªà®««¨£ ¢¥àåã, ¢ë室¨¬ |
1667 | je @f |
1657 | je @f |
1668 | mov edi,tl_cur_pos |
1658 | mov edi,tl_cur_pos |
1669 | cmp edi,dword[eax+sb_offs_position] ;åñëè êóðñîð óøåë âûøå ñêðîëëèíãà, òîãäà îïóñêàåì ñêðîëëèíã |
1659 | cmp edi,dword[eax+sb_offs_position] ;¥á«¨ ªãàá®à ã襫 ¢ëè¥ áªà®««¨£ , ⮣¤ ®¯ã᪠¥¬ áªà®««¨£ |
1670 | jge @f |
1660 | jge @f |
1671 | dec dword[eax+sb_offs_position] |
1661 | dec dword[eax+sb_offs_position] |
1672 | stdcall scroll_bar_vertical.draw, eax |
1662 | stdcall scroll_bar_vertical.draw, eax |
1673 | stdcall tl_draw, dword[tlist] ;ïîëíàÿ ïåðåðèñîâêà îêíà |
1663 | stdcall tl_draw, dword[tlist] ;¯®« ï ¯¥à¥à¨á®¢ª ®ª |
1674 | jmp .no_redraw |
1664 | jmp .no_redraw |
1675 | @@: |
- | |
1676 | mov edi,dword[tlist] ;restore edi |
- | |
1677 | ;mov esi,tl_box_top |
1665 | @@: |
1678 | ;add esi,tl_box_height ;esi = coord bottom border |
1666 | mov edi,dword[tlist] ;restore edi |
1679 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
1667 | call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
1680 | call tl_draw_caption_cur_pos |
1668 | call tl_draw_caption_cur_pos |
1681 | .no_redraw: |
1669 | .no_redraw: |
Line 1682... | Line 1670... | ||
1682 | ret |
1670 | ret |
1683 | endp |
1671 | endp |
1684 | 1672 | ||
1685 | ;ïåðåíåñòè êóðñîð íà 1 ñòðàíèöó âûøå |
1673 | ;¯¥à¥¥á⨠ªãàá®à 1 áâà ¨æã ¢ëè¥ |
Line 1686... | Line 1674... | ||
1686 | align 4 |
1674 | align 4 |
1687 | proc tl_cur_page_up uses eax edi esi, tlist:dword |
1675 | proc tl_cur_page_up uses eax edi esi, tlist:dword |
Line 1688... | Line 1676... | ||
1688 | mov edi,dword[tlist] |
1676 | mov edi,dword[tlist] |
1689 | 1677 | ||
Line 1690... | Line 1678... | ||
1690 | cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
1678 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
1691 | je .no_redraw |
1679 | je .no_redraw |
1692 | 1680 | ||
1693 | mov esi,tl_p_scrol |
1681 | mov esi,tl_p_scroll |
1694 | call tl_get_rows_count ;eax = rows count |
1682 | call tl_get_rows_count ;eax = rows count |
1695 | 1683 | ||
1696 | cmp tl_cur_pos,0 |
1684 | cmp tl_cur_pos,0 |
1697 | jne @f |
1685 | jne @f |
1698 | cmp dword[esi+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
1686 | cmp dword[esi+sb_offs_position],0 ;¥á«¨ áªà®««¨£ ¢¥àåã, ¢ë室¨¬ |
1699 | jne @f |
1687 | jne @f |
1700 | jmp .no_redraw |
1688 | jmp .no_redraw |
1701 | @@: |
1689 | @@: |
1702 | cmp tl_cur_pos,eax ;ïðîâåðÿåì ïîçèöèþ êóðñîðà è êîë-âî ñòîê íà ñòðàíèöå |
1690 | cmp tl_cur_pos,eax ;¯à®¢¥à塞 ¯®§¨æ¨î ªãàá®à ¨ ª®«-¢® á⮪ áâà ¨æ¥ |
Line 1711... | Line 1699... | ||
1711 | sub dword[esi+sb_offs_position],eax |
1699 | sub dword[esi+sb_offs_position],eax |
1712 | jmp .scroll |
1700 | jmp .scroll |
1713 | @@: |
1701 | @@: |
1714 | mov dword[esi+sb_offs_position],0 |
1702 | mov dword[esi+sb_offs_position],0 |
1715 | .scroll: |
1703 | .scroll: |
1716 | ;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
1704 | ;¯¥à¥à¨á®¢ª¨ ®ª ¨ áªà®««¨£ |
1717 | stdcall tl_draw, edi ;draw window |
1705 | stdcall tl_draw, edi ;draw window |
1718 | stdcall scroll_bar_vertical.draw, esi |
1706 | stdcall scroll_bar_vertical.draw, esi |
1719 | .no_redraw: |
1707 | .no_redraw: |
1720 | ret |
1708 | ret |
1721 | endp |
1709 | endp |
Line 1722... | Line 1710... | ||
1722 | 1710 | ||
1723 | ;ïåðåíåñòè êóðñîð íà 1 ñòðàíèöó íèæå |
1711 | ;¯¥à¥¥á⨠ªãàá®à 1 áâà ¨æã ¨¦¥ |
1724 | align 4 |
1712 | align 4 |
1725 | proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword |
1713 | proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword |
1726 | ;eax - êîë-âî ñòðîê íà ñòðàíèöå |
1714 | ;eax - ª®«-¢® áâப áâà ¨æ¥ |
1727 | ;ebx - ìàêñ. ïîçèöèÿ êóðñîðà |
1715 | ;ebx - ¬ ªá. ¯®§¨æ¨ï ªãàá®à |
1728 | ;ecx - ìàêñ. ïîçèöèÿ ñêðîëëèíãà |
1716 | ;ecx - ¬ ªá. ¯®§¨æ¨ï áªà®««¨£ |
Line 1729... | Line 1717... | ||
1729 | mov edi,dword[tlist] |
1717 | mov edi,dword[tlist] |
1730 | 1718 | ||
Line 1731... | Line 1719... | ||
1731 | cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
1719 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
1732 | je .no_redraw |
1720 | je .no_redraw |
1733 | 1721 | ||
1734 | mov esi,tl_p_scrol |
1722 | mov esi,tl_p_scroll |
Line 1735... | Line 1723... | ||
1735 | call tl_get_node_count ;eax = node count |
1723 | call tl_get_node_count ;eax = node count |
1736 | mov ebx,eax |
1724 | mov ebx,eax |
1737 | call tl_get_rows_count ;eax = rows count |
1725 | call tl_get_rows_count ;eax = rows count |
1738 | 1726 | ||
1739 | mov ecx,ebx |
1727 | mov ecx,ebx |
1740 | inc ecx ;åñëè íèæíèé óçåë âèäåí íà ïîëîâèíó |
1728 | inc ecx ;¥á«¨ ¨¦¨© 㧥« ¢¨¤¥ ¯®«®¢¨ã |
1741 | cmp ecx,eax ;if (ecx>eax) { ecx=ecx-eax } else { ecx=0 } |
1729 | cmp ecx,eax ;if (ecx>eax) { ecx=ecx-eax } else { ecx=0 } |
1742 | jl @f |
1730 | jl @f |
1743 | sub ecx,eax ;óìåíüøàåì ìàêñèìàëüíóþ ïîçèöèþ ñêðîëëèíãà, òàê ÷òî-áû áûëè âèäíû ïîñëåäíèå óçëû |
1731 | sub ecx,eax ;㬥ìè ¥¬ ¬ ªá¨¬ «ìãî ¯®§¨æ¨î áªà®««¨£ , â ª çâ®-¡ë ¡ë«¨ ¢¨¤ë ¯®á«¥¤¨¥ 㧫ë |
Line 1744... | Line 1732... | ||
1744 | jmp .control |
1732 | jmp .control |
1745 | @@: |
1733 | @@: |
1746 | xor ecx,ecx ;ecx=0 - âñå óçëû âëàçÿò â ýêðàí, ñêðîëëèíã íå íóæåí |
1734 | xor ecx,ecx ;ecx=0 - ¢á¥ ã§«ë ¢« §ïâ ¢ íªà , áªà®««¨£ ¥ 㦥 |
1747 | .control: |
1735 | .control: |
1748 | 1736 | ||
1749 | cmp tl_cur_pos,ebx ;êóðñîð âíèçó ? |
1737 | cmp tl_cur_pos,ebx ;ªãàá®à ¢¨§ã ? |
Line 1750... | Line 1738... | ||
1750 | jl @f |
1738 | jl @f |
1751 | cmp dword[esi+sb_offs_position],ecx ;ñêðîëëèíã âíèçó ? |
1739 | cmp dword[esi+sb_offs_position],ecx ;áªà®««¨£ ¢¨§ã ? |
1752 | jl @f |
1740 | jl @f |
1753 | jmp .no_redraw |
1741 | jmp .no_redraw |
1754 | @@: |
1742 | @@: |
Line 1755... | Line 1743... | ||
1755 | 1743 | ||
1756 | add tl_cur_pos,eax ;ïåðåìåùàåì êóðñîð |
1744 | add tl_cur_pos,eax ;¯¥à¥¬¥é ¥¬ ªãàá®à |
1757 | cmp tl_cur_pos,ebx |
1745 | cmp tl_cur_pos,ebx |
1758 | jl @f |
1746 | jl @f |
1759 | mov tl_cur_pos,ebx |
1747 | mov tl_cur_pos,ebx |
Line 1760... | Line 1748... | ||
1760 | @@: |
1748 | @@: |
1761 | 1749 | ||
1762 | add dword[esi+sb_offs_position],eax ;ïåðåìåùàåì ñêðîëëèíã |
1750 | add dword[esi+sb_offs_position],eax ;¯¥à¥¬¥é ¥¬ áªà®««¨£ |
1763 | cmp dword[esi+sb_offs_position],ecx |
1751 | cmp dword[esi+sb_offs_position],ecx |
1764 | jl @f |
1752 | jl @f |
1765 | mov dword[esi+sb_offs_position],ecx |
1753 | mov dword[esi+sb_offs_position],ecx |
Line 1766... | Line 1754... | ||
1766 | @@: |
1754 | @@: |
1767 | 1755 | ||
1768 | ;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
1756 | ;¯¥à¥à¨á®¢ª¨ ®ª ¨ áªà®««¨£ |
1769 | stdcall tl_draw, edi ;draw window |
1757 | stdcall tl_draw, edi ;draw window |
1770 | stdcall scroll_bar_vertical.draw, esi |
1758 | stdcall scroll_bar_vertical.draw, esi |
1771 | .no_redraw: |
1759 | .no_redraw: |
1772 | ret |
1760 | ret |
1773 | endp |
1761 | endp |
1774 | 1762 | ||
1775 | ;îòêðûòü/çàêðûòü óçåë (ðàáîòàåò ñ óçëàìè êîòîðûå èìåþò äî÷åðíèå óçëû) |
1763 | ;®âªàëâì/§ ªàëâì 㧥« (à ¡®â ¥â á 㧫 ¬¨ ª®â®àë¥ ¨¬¥îâ ¤®ç¥à¨¥ 㧫ë) |
1776 | align 4 |
- | |
1777 | proc tl_node_close_open uses eax edx edi, tlist:dword |
1764 | align 4 |
1778 | mov edi,dword[tlist] |
1765 | proc tl_node_close_open uses eax edx edi, tlist:dword |
1779 | call tl_get_cur_node_index ;eax = ïîçèöèÿ óçëà íà êîòîðîì ñòîèò êóðñîð |
1766 | mov edi,dword[tlist] |
- | 1767 | call tl_get_cur_node_index ;eax = ¯®§¨æ¨ï 㧫 ª®â®à®¬ á⮨⠪ãàá®à |
|
1780 | cmp eax,2 ;êóðñîð ñòîèò íà óçëå ? |
1768 | cmp eax,2 ;ªãàá®à á⮨â 㧫¥ ? |
1781 | jl @f |
1769 | jl @f |
1782 | imul eax,sizeof.TreeList |
1770 | imul eax,sizeof.TreeList |
1783 | add eax,tl_data_nodes |
1771 | add eax,tl_data_nodes |
1784 | ;eax = óêàçàòåëü íà ñòðóêòóðó óçëà âûáðàííîãî êóðñîðîì |
1772 | ;eax = 㪠§ ⥫ì áâàãªâãàã 㧫 ¢ë¡à ®£® ªãàá®à®¬ |
1785 | push dword edi |
1773 | push eax |
1786 | push dword eax |
1774 | stdcall tl_node_poi_get_next_info, edi,eax |
Line 1787... | Line 1775... | ||
1787 | call tl_node_poi_get_next_info |
1775 | mov edx,eax ;edx = 㪠§ ⥫ì áâàãªâãàã 㧫 ª®â®àë© ¨¤¥â ¯®á«¥ 㧫 eax |
1788 | pop dword edx ;edx = óêàçàòåëü íà ñòðóêòóðó óçëà êîòîðûé èäåò ïîñëå óçëà eax |
1776 | pop eax |
1789 | cmp edx,0 ;åñòü ëè óçëû íèæå âûáðàííîãî íàìè ? |
1777 | cmp edx,0 ;¥áâì «¨ ã§«ë ¨¦¥ ¢ë¡à ®£® ¬¨ ? |
1790 | je @f |
1778 | je @f |
Line 1791... | Line 1779... | ||
1791 | mov dl,byte[edx+2] ;áåðåì óðîâåíü íèæíåãî óçëà |
1779 | mov dl,byte[edx+2] ;¡¥à¥¬ ã஢¥ì ¨¦¥£® 㧫 |
1792 | cmp byte[eax+2],dl ;+2 = .lev |
1780 | cmp byte[eax+2],dl ;+2 = .lev |
1793 | jge @f ;åñëè íèæíèå óçëû ìåíüøåãî óðîâíÿ, çíà÷èò îíè íå äî÷åðíèå, êîíåö ôóíêöèè |
1781 | jge @f ;¥á«¨ ¨¦¨¥ ã§«ë ¬¥ì襣® ã஢ï, § ç¨â ®¨ ¥ ¤®ç¥à¨¥, ª®¥æ äãªæ¨¨ |
1794 | xor byte[eax+3],1 ;+3 = .clo *** îòêðûòèå/çàêðûòèå óçëà *** |
1782 | xor byte[eax+3],1 ;+3 = .clo *** ®âªàë⨥/§ ªàë⨥ 㧫 *** |
1795 | call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
1783 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1796 | 1784 | ||
Line 1812... | Line 1800... | ||
1812 | imul eax,sizeof.TreeList |
1800 | imul eax,sizeof.TreeList |
1813 | add eax,ecx ;eax = pointer to some node struct |
1801 | add eax,ecx ;eax = pointer to some node struct |
1814 | add ecx,sizeof.TreeList ;ecx = pointer to 1 node struct |
1802 | add ecx,sizeof.TreeList ;ecx = pointer to 1 node struct |
Line 1815... | Line 1803... | ||
1815 | 1803 | ||
1816 | mov edx,eax |
1804 | mov edx,eax |
1817 | call tl_iterat_perv ;ïðîâåðÿåì åñòü ëè âåðõíèé óçåë |
1805 | call tl_iterat_perv ;¯à®¢¥à塞 ¥áâì «¨ ¢¥à娩 㧥« |
1818 | cmp edx,ecx |
1806 | cmp edx,ecx |
1819 | jle @f ;åñëè âåðõíåãî óçëà íåò òî òåêóùèé óçåë íå äâèãàåì |
1807 | jle @f ;¥á«¨ ¢¥à奣® 㧫 ¥â ⮠⥪ã騩 㧥« ¥ ¤¢¨£ ¥¬ |
1820 | mov cl,byte[edx+2] ;áåðåì óðîâåíü ðîäèòåëüñêîãî óçëà |
1808 | mov cl,byte[edx+2] ;¡¥à¥¬ ã஢¥ì த¨â¥«ì᪮£® 㧫 |
1821 | inc cl ;äîáàâëÿåì 1 è ïîëó÷àåì ìàêñèìàëüíîå çíà÷åíèå |
1809 | inc cl ;¤®¡ ¢«ï¥¬ 1 ¨ ¯®«ãç ¥¬ ¬ ªá¨¬ «ì®¥ § 票¥ |
1822 | cmp byte[eax+2],cl |
1810 | cmp byte[eax+2],cl |
1823 | jge @f |
1811 | jge @f |
1824 | inc byte[eax+2] ;óâåëè÷èâàåì çíà÷åíèå óçëà |
1812 | inc byte[eax+2] ;㢥«¨ç¨¢ ¥¬ § 票¥ 㧫 |
1825 | @@: |
1813 | @@: |
1826 | ret |
1814 | ret |
Line 1827... | Line 1815... | ||
1827 | endp |
1815 | endp |
1828 | 1816 | ||
1829 | ;óìåíüøèòü óðîâåíü |
1817 | ;㬥ìè¨âì ã஢¥ì |
1830 | align 4 |
1818 | align 4 |
1831 | proc tl_node_lev_dec uses eax edi, tlist:dword |
1819 | proc tl_node_lev_dec uses eax edi, tlist:dword |
1832 | mov edi,dword[tlist] |
1820 | mov edi,dword[tlist] |
Line 1840... | Line 1828... | ||
1840 | dec byte[eax+2] |
1828 | dec byte[eax+2] |
1841 | @@: |
1829 | @@: |
1842 | ret |
1830 | ret |
1843 | endp |
1831 | endp |
Line 1844... | Line 1832... | ||
1844 | 1832 | ||
1845 | ;ïåðåìåùàåì óçåë ââåðõ |
1833 | ;¯¥à¥¬¥é ¥¬ 㧥« ¢¢¥àå |
1846 | align 4 |
1834 | align 4 |
1847 | proc tl_node_move_up uses eax ebx ecx edx edi esi, tlist:dword |
1835 | proc tl_node_move_up uses eax ebx ecx edx edi esi, tlist:dword |
1848 | mov edi,dword[tlist] |
1836 | mov edi,dword[tlist] |
1849 | call tl_get_cur_node_index ;eax=po_t |
1837 | call tl_get_cur_node_index ;eax=po_t |
Line 1861... | Line 1849... | ||
1861 | call tl_get_node_index ;eax = index of 1 node struct |
1849 | call tl_get_node_index ;eax = index of 1 node struct |
1862 | cmp edx,ecx |
1850 | cmp edx,ecx |
1863 | jle @f |
1851 | jle @f |
1864 | cmp dword[edx+8],ebx ;+8 next |
1852 | cmp dword[edx+8],ebx ;+8 next |
1865 | jne .po8 |
1853 | jne .po8 |
1866 | call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê |
1854 | call tl_node_move_po6 ;ã§«ë ¨¤ãâ ¯®¤àï¤ ¬¥ï¥¬ 6 ááë«®ª |
1867 | jmp .cur_mov |
1855 | jmp .cur_mov |
1868 | .po8: |
1856 | .po8: |
1869 | call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê |
1857 | call tl_node_move_po8 ;ã§«ë ¨¤ãâ ¥ ¯®¤àï¤ ¬¥ï¥¬ 8 ááë«®ª |
1870 | .cur_mov: |
1858 | .cur_mov: |
1871 | push dword edi |
1859 | push dword edi |
1872 | call tl_cur_perv |
1860 | call tl_cur_perv |
1873 | push dword edi |
1861 | push dword edi |
1874 | call tl_draw |
1862 | call tl_draw |
1875 | @@: |
1863 | @@: |
1876 | ret |
1864 | ret |
1877 | endp |
1865 | endp |
Line 1878... | Line 1866... | ||
1878 | 1866 | ||
1879 | ;ïåðåìåùàåì óçåë âíèç |
1867 | ;¯¥à¥¬¥é ¥¬ 㧥« ¢¨§ |
1880 | align 4 |
1868 | align 4 |
1881 | proc tl_node_move_down uses eax ebx ecx edx edi esi, tlist:dword |
1869 | proc tl_node_move_down uses eax ebx ecx edx edi esi, tlist:dword |
1882 | mov edi,dword[tlist] |
1870 | mov edi,dword[tlist] |
1883 | call tl_get_cur_node_index ;eax=po_t |
1871 | call tl_get_cur_node_index ;eax=po_t |
Line 1895... | Line 1883... | ||
1895 | call tl_get_node_index ;eax = index of 2 node struct |
1883 | call tl_get_node_index ;eax = index of 2 node struct |
1896 | cmp edx,ecx |
1884 | cmp edx,ecx |
1897 | jle @f |
1885 | jle @f |
1898 | cmp dword[esi+8],eax ;+8 next |
1886 | cmp dword[esi+8],eax ;+8 next |
1899 | jne .po8 |
1887 | jne .po8 |
1900 | xchg eax,ebx ;ìåíÿå ïîðÿäîê ñëåäîâàíèÿ çàìåíÿåìûõ óçëîâ |
1888 | xchg eax,ebx ;¬¥ï¥ ¯®à冷ª á«¥¤®¢ ¨ï § ¬¥ï¥¬ëå 㧫®¢ |
1901 | xchg edx,esi |
1889 | xchg edx,esi |
1902 | call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê |
1890 | call tl_node_move_po6 ;ã§«ë ¨¤ãâ ¯®¤àï¤ ¬¥ï¥¬ 6 ááë«®ª |
1903 | jmp .cur_mov |
1891 | jmp .cur_mov |
1904 | .po8: ;à òóò ïîðÿäîê ñëåäîâàíèÿ óçëîâ íå ìåíÿåì |
1892 | .po8: ; âãâ ¯®à冷ª á«¥¤®¢ ¨ï 㧫®¢ ¥ ¬¥ï¥¬ |
1905 | call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê |
1893 | call tl_node_move_po8 ;ã§«ë ¨¤ãâ ¥ ¯®¤àï¤ ¬¥ï¥¬ 8 ááë«®ª |
1906 | .cur_mov: |
1894 | .cur_mov: |
1907 | stdcall tl_cur_next, edi |
1895 | stdcall tl_cur_next, edi |
1908 | stdcall tl_draw, edi |
1896 | stdcall tl_draw, edi |
1909 | @@: |
1897 | @@: |
1910 | ret |
1898 | ret |
Line 1978... | Line 1966... | ||
1978 | ; edi = pointer to 'TreeList' struct |
1966 | ; edi = pointer to 'TreeList' struct |
1979 | align 4 |
1967 | align 4 |
1980 | tl_draw_caption_cur_pos: |
1968 | tl_draw_caption_cur_pos: |
1981 | cmp tl_capt_cy,9 ;9 - minimum caption height |
1969 | cmp tl_capt_cy,9 ;9 - minimum caption height |
1982 | jl @f |
1970 | jl @f |
1983 | push eax ebx ecx edx edi esi |
1971 | pushad |
1984 | mov ebx,edi ;calculate cursor position |
1972 | mov ebx,edi ;calculate cursor position |
1985 | mov eax,tl_cur_pos |
1973 | mov eax,tl_cur_pos |
1986 | inc eax |
1974 | inc eax |
1987 | lea edi,[txt_capt_cur] |
1975 | lea edi,[txt_capt_cur] |
1988 | add edi,7 |
1976 | add edi,7 |
1989 | call tl_convert_to_str |
1977 | call tl_convert_to_str |
1990 | mov edi,ebx |
1978 | mov edi,ebx |
Line 1991... | Line -... | ||
1991 | - | ||
1992 | mov eax,4 ;draw text captions |
1979 | |
1993 | mov ebx,tl_box_left |
1980 | mov ebx,tl_box_left |
1994 | shl ebx,16 |
1981 | shl ebx,16 |
1995 | add ebx,5*65536+3 |
1982 | add ebx,5*65536+3 |
1996 | add ebx,tl_box_top |
1983 | add ebx,tl_box_top |
1997 | mov ecx,tl_col_txt |
1984 | mov ecx,tl_col_txt |
1998 | or ecx,0xc0000000 ;0x40000000 çàêðàøèâàòü ôîí öâåòîì edi |
1985 | or ecx,0xc0000000 ;0x40000000 § ªà 訢 âì ä® æ¢¥â®¬ edi |
1999 | lea edx,[txt_capt_cur] |
1986 | lea edx,[txt_capt_cur] |
2000 | mov edi,tl_col_zag |
1987 | mov edi,tl_col_zag |
Line 2001... | Line 1988... | ||
2001 | int 0x40 |
1988 | mcall 4 ;draw text captions |
2002 | 1989 | ||
2003 | pop esi edi edx ecx ebx eax |
1990 | popad |
Line 2004... | Line 1991... | ||
2004 | @@: |
1991 | @@: |
2005 | ret |
- | |
2006 | 1992 | ret |
|
2007 | ;input: |
1993 | |
2008 | ;dword[ebp+ 8] - memory size |
1994 | ;input: |
- | 1995 | ; tlist - pointer to 'TreeList' struct |
|
2009 | ;dword[ebp+12] - pointer to memory |
1996 | ; opt - options: 0 - first element, 1 - add next element |
2010 | ;dword[ebp+16] - options: 0 - first element, 1 - add next element |
1997 | ; h_mem - pointer to memory |
2011 | ;dword[ebp+20] - pointer to 'TreeList' struct |
1998 | ; mem_size - memory size |
2012 | ;output: |
- | |
2013 | ;dword[ebp+ 8] - error code |
- | |
2014 | align 4 |
- | |
2015 | tl_save_mem: |
1999 | ;output: |
2016 | push ebp |
2000 | ; eax - error code |
2017 | mov ebp,esp |
2001 | align 4 |
Line 2018... | Line 2002... | ||
2018 | push eax ebx ecx edx edi esi |
2002 | proc tl_save_mem uses ebx ecx edx edi esi, tlist:dword, opt:dword, h_mem:dword, mem_size:dword |
2019 | mov esi,dword[ebp+12] |
2003 | mov esi,dword[h_mem] |
2020 | mov edi,dword[ebp+20] |
- | |
2021 | - | ||
2022 | cmp dword[ebp+16],0 ;add mode |
2004 | mov edi,dword[tlist] |
2023 | je @f |
- | |
2024 | push dword edi |
2005 | |
2025 | push dword esi |
2006 | cmp dword[opt],0 ;add mode |
Line 2026... | Line 2007... | ||
2026 | call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
2007 | je @f |
2027 | pop ebx |
2008 | stdcall tl_get_mem_size, edi,esi ;eax = à §¬¥à à ¥¥ á®åà ñëå ¤ ëå |
Line 2028... | Line 2009... | ||
2028 | add esi,ebx |
2009 | add esi,eax |
Line 2029... | Line 2010... | ||
2029 | @@: |
2010 | @@: |
2030 | 2011 | ||
2031 | xor ebx,ebx |
2012 | xor ebx,ebx |
2032 | mov bx,tl_info_size |
2013 | mov bx,tl_info_size |
2033 | 2014 | ||
2034 | call tl_get_node_count_all ;eax = all node count |
2015 | call tl_get_node_count_all ;eax = all node count |
2035 | 2016 | ||
Line 2036... | Line 2017... | ||
2036 | mov ecx,eax ;âû÷èñëÿåì ñêîëüêî ïàìÿòè äîëæíî áûòü çàïîëíåíî |
2017 | mov ecx,eax ;¢ëç¨á«ï¥¬ ᪮«ìª® ¯ ¬ï⨠¤®«¦® ¡ëâì § ¯®«¥® |
2037 | imul ecx,ebx ;óìíîæàåì íà ðàçìåð ñòðóêòóðû óçëà |
2018 | imul ecx,ebx ;㬮¦ ¥¬ à §¬¥à áâàãªâãàë 㧫 |
2038 | add ecx,tl_save_load_heder_size+1 ;element header +1 end element sumbol |
2019 | add ecx,tl_save_load_heder_size+1 ;element header +1 end element sumbol |
Line 2057... | Line 2038... | ||
2057 | 2038 | ||
2058 | mov ax,tl_info_capt_len |
2039 | mov ax,tl_info_capt_len |
Line 2059... | Line 2040... | ||
2059 | mov word[esi+20],ax |
2040 | mov word[esi+20],ax |
2060 | 2041 | ||
2061 | ;copy scroll position |
2042 | ;copy scroll position |
2062 | mov edx,tl_p_scrol |
2043 | mov edx,tl_p_scroll |
Line 2063... | Line 2044... | ||
2063 | mov eax,dword[edx+sb_offs_position] |
2044 | mov eax,dword[edx+sb_offs_position] |
Line 2080... | Line 2061... | ||
2080 | add esi,4 |
2061 | add esi,4 |
2081 | mov eax,dword[edx] ;eax = (type; lev; clo) |
2062 | mov eax,dword[edx] ;eax = (type; lev; clo) |
2082 | mov dword[esi],eax |
2063 | mov dword[esi],eax |
2083 | add esi,4 |
2064 | add esi,4 |
Line 2084... | Line 2065... | ||
2084 | 2065 | ||
2085 | stdcall tl_node_poi_get_data, edx,edi |
- | |
Line 2086... | Line 2066... | ||
2086 | pop dword eax |
2066 | stdcall tl_node_poi_get_data, edi,edx ;eax - pointer node data |
2087 | 2067 | ||
2088 | ;call tl_node_copy_data |
2068 | ;call tl_node_copy_data |
2089 | push ecx edi |
2069 | push ecx edi |
Line 2095... | Line 2075... | ||
2095 | pop edi ecx |
2075 | pop edi ecx |
2096 | ;add esi,ebx |
2076 | ;add esi,ebx |
2097 | jmp @b |
2077 | jmp @b |
2098 | @@: |
2078 | @@: |
2099 | mov byte[esi],0 ;end of 'treelist' |
2079 | mov byte[esi],0 ;end of 'treelist' |
2100 | mov dword[ebp+20],0 ;return error code |
2080 | xor eax,eax ;return error code |
2101 | jmp @f |
2081 | jmp @f |
2102 | .err_mem_size: |
2082 | .err_mem_size: |
2103 | or dword[ebp+20],tl_err_save_memory_size |
2083 | mov eax,tl_err_save_memory_size |
2104 | @@: |
2084 | @@: |
2105 | pop esi edi edx ecx ebx eax |
- | |
2106 | pop ebp |
2085 | ret |
2107 | ret 12 |
2086 | endp |
Line 2108... | Line 2087... | ||
2108 | 2087 | ||
2109 | ;input: |
2088 | ;input: |
- | 2089 | ; tlist - pointer to 'TreeList' struct |
|
2110 | ;dword[ebp+ 8] - memory size |
2090 | ; opt - options: element index + (2*(add mode)+(init mode)) shl 16 |
2111 | ;dword[ebp+12] - pointer to memory |
2091 | ; h_mem - pointer to memory |
2112 | ;word[ebp+16] - options: element index |
2092 | ; mem_size - memory size |
2113 | ;word[ebp+18] - options: 2*(add mode)+(init mode) |
2093 | ; à §¬¥à ¯ ¬ïâ¨, ¯®ª ¥ ¨á¯®«ì§ã¥âáï ( § ç «áï ¤«ï ª®â஫ï) |
2114 | ;dword[ebp+20] - pointer to 'TreeList' struct |
2094 | ; ¤«ï ¥£® ¨á¯®«ì§®¢ ¨ï 㦮 ¤®à ¡®â âì äãªæ¨î |
2115 | ;output: |
2095 | ;output: |
- | 2096 | ; eax - error code |
|
- | 2097 | ;memory header format: |
|
- | 2098 | ; +0 - (4) 'tree' |
|
- | 2099 | ; +4 - (2) info size |
|
- | 2100 | ; +6 - (4) count nodes |
|
- | 2101 | ; +10 - (4) tlist style |
|
- | 2102 | ; +14 - (4) cursor pos |
|
- | 2103 | ; +18 - (2) info capt offs |
|
- | 2104 | ; +20 - (2) info capt len |
|
- | 2105 | ; +22 - (4) scroll pos |
|
- | 2106 | ;memory data format: |
|
2116 | ;dword[ebp+ 8] - error code |
2107 | ; +26 - (info size + 8) * count nodes |
- | 2108 | align 4 |
|
2117 | align 4 |
2109 | proc tl_load_mem uses ebx ecx edx edi esi, tlist:dword, opt:dword, h_mem:dword, mem_size:dword |
2118 | tl_load_mem: |
2110 | locals |
2119 | push ebp |
2111 | er_code dd ? |
2120 | mov ebp,esp |
- | |
2121 | push eax ebx ecx edx edi esi |
2112 | endl |
2122 | mov esi,dword[ebp+12] |
2113 | mov esi,dword[h_mem] |
Line 2123... | Line 2114... | ||
2123 | mov edi,dword[ebp+20] |
2114 | mov edi,dword[tlist] |
Line 2124... | Line -... | ||
2124 | - | ||
2125 | mov dword[ebp+20],0 ;return error code |
2115 | |
2126 | 2116 | mov dword[er_code],0 ;return error code |
|
2127 | xor ecx,ecx |
2117 | |
2128 | mov cx,word[ebp+16] |
- | |
2129 | cmp cx,0 ;load in array mode |
- | |
2130 | je @f |
2118 | mov ecx,dword[opt] |
2131 | ; push dword edi |
2119 | cmp cx,0 ;load in array mode |
2132 | ; push dword esi |
2120 | je @f |
- | 2121 | ;stdcall tl_get_mem_size, esi,edi ;¡¥à¥¬ à §¬¥à à ¥¥ á®åà ñëå ¤ ëå |
|
2133 | ; call tl_get_mem_size ;áåðåì ðàçìåð ðàíåå ñîõðàí¸ííûõ äàííûõ |
2122 | ;add esi,eax |
2134 | ; pop ebx |
2123 | and ecx,0xffff |
2135 | ; add esi,ebx |
2124 | cld |
2136 | .beg_cycle: |
2125 | .beg_cycle: |
2137 | cmp dword[esi],'tree' |
2126 | cmp dword[esi],'tree' |
Line 2145... | Line 2134... | ||
2145 | loop .beg_cycle |
2134 | loop .beg_cycle |
2146 | @@: |
2135 | @@: |
Line 2147... | Line 2136... | ||
2147 | 2136 | ||
2148 | cmp dword[esi],'tree' |
2137 | cmp dword[esi],'tree' |
2149 | jne .no_tree |
2138 | jne .no_tree |
2150 | bt word[ebp+18],1 ;load in add mode |
2139 | bt dword[opt],17 ;load in add mode |
2151 | jc @f |
2140 | jc @f |
2152 | stdcall tl_info_clear, dword edi |
2141 | stdcall tl_info_clear, dword edi |
Line 2153... | Line 2142... | ||
2153 | @@: |
2142 | @@: |
2154 | 2143 | ||
2155 | xor ebx,ebx |
2144 | xor ebx,ebx |
2156 | mov bx,word[esi+4] ;info_size |
2145 | mov bx,word[esi+4] ;info_size |
2157 | cmp bx,tl_info_size |
2146 | cmp bx,tl_info_size |
2158 | je @f |
2147 | je @f |
2159 | or dword[ebp+20],tl_err_load_info_size |
2148 | or dword[er_code],tl_err_load_info_size |
2160 | @@: |
2149 | @@: |
2161 | mov ecx,dword[esi+6] ;count nodes |
2150 | mov ecx,dword[esi+6] ;count nodes |
2162 | cmp ecx,1 |
2151 | cmp ecx,1 |
Line 2167... | Line 2156... | ||
2167 | cld |
2156 | cld |
2168 | @@: ;load node params |
2157 | @@: ;load node params |
2169 | mov eax,dword[esi+4] |
2158 | mov eax,dword[esi+4] |
2170 | ror eax,16 ;eax - options (type; lev; clo) |
2159 | ror eax,16 ;eax - options (type; lev; clo) |
2171 | add esi,8 |
2160 | add esi,8 |
2172 | stdcall tl_node_add, esi,eax,edi |
2161 | stdcall tl_node_add, edi,eax,esi |
2173 | stdcall tl_cur_next, edi |
2162 | stdcall tl_cur_next, edi |
2174 | ;... |
2163 | ;... |
2175 | add esi,ebx |
2164 | add esi,ebx |
2176 | loop @b |
2165 | loop @b |
Line 2177... | Line 2166... | ||
2177 | 2166 | ||
2178 | bt word[ebp+18],1 ;load in add mode |
2167 | bt dword[opt],17 ;load in add mode |
2179 | jc .no_tree |
2168 | jc .no_tree |
2180 | mov eax,dword[edx+14] ;set cursor pos |
2169 | mov eax,dword[edx+14] ;set cursor pos |
2181 | mov tl_cur_pos,eax |
- | |
2182 | mov eax,dword[edx+22] ;set scroll pos |
2170 | mov tl_cur_pos,eax |
2183 | mov ebx,tl_p_scrol |
2171 | mov ebx,tl_p_scroll |
2184 | cmp ebx,0 |
2172 | cmp ebx,0 |
- | 2173 | je .end_f |
|
2185 | je .end_f |
2174 | mov eax,dword[edx+22] ;set scroll pos |
2186 | mov dword[ebx+sb_offs_position],eax |
2175 | mov dword[ebx+sb_offs_position],eax |
2187 | stdcall scroll_bar_vertical.draw, ebx |
2176 | stdcall scroll_bar_vertical.draw, ebx |
2188 | jmp .end_f |
2177 | jmp .end_f |
2189 | .no_tree: |
2178 | .no_tree: |
2190 | mov dword[ebp+20],tl_err_load_caption |
2179 | mov dword[er_code],tl_err_load_caption |
2191 | .end_f: |
2180 | .end_f: |
2192 | pop esi edi edx ecx ebx eax |
2181 | mov eax,dword[er_code] |
2193 | pop ebp |
2182 | ret |
2194 | ret 12 |
2183 | endp |
2195 | - | ||
2196 | ;input: |
- | |
2197 | ;dword[ebp+ 8] - pointer to memory |
2184 | |
2198 | ;dword[ebp+12] - pointer to 'TreeList' struct |
2185 | ;¡¥à¥â à §¬¥à ¯ ¬ï⨠§ ï⮩ äãªæ¨¥© tl_save_mem ¯à¨ á®åà ¥¨¨ í«¥¬¥â®¢ |
2199 | ;output: |
2186 | ;output: |
2200 | ;dword[ebp+ 8] - error code |
2187 | ; eax - error code |
2201 | align 4 |
- | |
2202 | tl_get_mem_size: ;áåðåò ðàçìåð ïàìÿòè çàíÿòîé ôóíêöèåé tl_save_mem ïðè ñîõðàíåíèè ýëåìåíòîâ |
- | |
2203 | push ebp |
- | |
2204 | mov ebp,esp |
2188 | align 4 |
2205 | push ebx edi esi |
2189 | proc tl_get_mem_size uses ebx edi, tlist:dword, h_mem:dword |
2206 | mov esi,dword[ebp+ 8] |
2190 | mov edi,dword[tlist] |
2207 | mov edi,dword[ebp+12] |
2191 | mov eax,dword[h_mem] |
2208 | @@: |
2192 | @@: |
2209 | cmp dword[esi],'tree' |
2193 | cmp dword[eax],'tree' |
2210 | jne @f |
2194 | jne @f |
2211 | xor ebx,ebx |
2195 | xor ebx,ebx |
2212 | mov bx,word[esi+4] |
2196 | mov bx,word[eax+4] |
2213 | add bx,8 ;ðàçìåð äîïîëíèòåëüíîé èíôîðìàöèè îá óçëå (èíäåêñ çàïèñè; èíäåêñ èêîíêè, óðîâåíü, ...) |
2197 | add bx,8 ;à §¬¥à ¤®¯®«¨â¥«ì®© ¨ä®à¬ 樨 ®¡ 㧫¥ (¨¤¥ªá § ¯¨á¨; ¨¤¥ªá ¨ª®ª¨, ã஢¥ì, ...) |
2214 | imul ebx,dword[esi+6] |
2198 | imul ebx,dword[eax+6] |
2215 | add ebx,tl_save_load_heder_size |
2199 | add ebx,tl_save_load_heder_size |
2216 | add esi,ebx |
2200 | add eax,ebx |
2217 | jmp @b |
2201 | jmp @b |
2218 | @@: |
- | |
2219 | sub esi,dword[ebp+ 8] |
2202 | @@: |
2220 | mov dword[ebp+12],esi ;âîçâðàùàåì ðàçìåð áëîêà ïàìÿòè |
2203 | sub eax,dword[h_mem] ;®â¨¬ ¥¬ 㪠§ ⥫ì ç «® ¯ ¬ï⨠|
2221 | pop esi edi edx |
2204 | ;¨ ¯®«ãç ¥¬ à §¬¥à ¡«®ª ¯ ¬ï⨠|
2222 | pop ebp |
2205 | ret |
Line 2223... | Line 2206... | ||
2223 | ret 4 |
2206 | endp |
2224 | 2207 | ||
2225 | 2208 | ||
Line 2238... | Line 2221... | ||
2238 | tl_key_scan db 28,57, 72, 80, 75, 77, 83, 73, 81 |
2221 | tl_key_scan db 28,57, 72, 80, 75, 77, 83, 73, 81 |
Line 2239... | Line 2222... | ||
2239 | 2222 | ||
2240 | txt_capt_cur db 'âப ',0 |
2223 | txt_capt_cur db 'âப ',0 |
Line 2241... | Line 2224... | ||
2241 | txt_capt_otm db '⬥ë ',0 |
2224 | txt_capt_otm db '⬥ë ',0 |
2242 | 2225 | ||
2243 | ;ýòîò êîä íå ìîé, îí ïðåîáðàçóåò ÷èñëî â ñòðîêó |
2226 | ;íâ®â ª®¤ ¥ ¬®©, ® ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã |
2244 | ;input: |
2227 | ;input: |
2245 | ; eax = value |
2228 | ; eax = value |
2246 | ; edi = string buffer |
2229 | ; edi = string buffer |
Line 2252... | Line 2235... | ||
2252 | popad |
2235 | popad |
2253 | ret |
2236 | ret |
Line 2254... | Line 2237... | ||
2254 | 2237 | ||
2255 | align 4 |
2238 | align 4 |
2256 | .str: |
2239 | .str: |
2257 | mov ecx,0x0a ;çàäàåòñÿ ñèñòåìà ñ÷èñëåíèÿ èçìåíÿþòñÿ ðåãèñòðû ebx,eax,ecx,edx âõîäíûå ïàðàìåòðû eax - ÷èñëî |
2240 | mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
2258 | ;ïðåðåâîä ÷èñëà â ASCII ñòðîêó âçîäíûå äàííûå ecx=ñèñòåìà ñ÷èñëåíÿ edi àäðåñ êóäà çàïèñûâàòü, áóäåì ñòðîêó, ïðè÷åì êîíåö ïåðåìåííîé |
2241 | ;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
2259 | cmp eax,ecx ;ñðàâíèòü åñëè â eax ìåíüøå ÷åì â ecx òî ïåðåéòè íà @@-1 ò.å. íà pop eax |
2242 | cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
2260 | jb @f |
2243 | jb @f |
2261 | xor edx,edx ;î÷èñòèòü edx |
2244 | xor edx,edx ;®ç¨áâ¨âì edx |
2262 | div ecx ;ðàçäåëèòü - îñòàòîê â edx |
2245 | div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
2263 | push edx ;ïîëîæèòü â ñòåê |
- | |
2264 | ;dec edi ;ñìåùåíèå íåîáõîäèìîå äëÿ çàïèñè ñ êîíöà ñòðîêè |
2246 | push edx ;¯®«®¦¨âì ¢ á⥪ |
2265 | call .str;ïåðåéòè íà ñàìó ñåáÿ ò.å. âûçâàòü ñàìó ñåáÿ è òàê äî òîãî ìîìåíòà ïîêà â eax íå ñòàíåò ìåíüøå ÷åì â ecx |
2247 | call .str;¯¥à¥©â¨ á ¬ã ᥡï â.¥. ¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
2266 | pop eax |
2248 | pop eax |
2267 | @@: ;cmp al,10 ;ïðîâåðèòü íå ìåíüøå ëè çíà÷åíèå â al ÷åì 10 (äëÿ ñèñòåìû ñ÷èñëåíÿ 10 äàííàÿ êîìàíäà - ëèøíàÿ)) |
- | |
2268 | ;sbb al,$69 ;- ÷åñòíî äàííàÿ èíñòðóêöèÿ ìåíÿ çàñòàâëÿåò çàäóìàòüñÿ ò.å. ÿ íå çíàþ êàê ýòî ðàáîòàåò |
- | |
2269 | ;das ;ïîñëå äàííîé êîìàíäû êàê áû ïðîèñõîäèò óìåíüøåíèå al íà 66h (â êíèãå íàïèñàíî äðóãîå) |
2249 | @@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
2270 | or al,0x30 ;äàííàÿ êîìàíäà êîðî÷å ÷åì äâå âûøå |
2250 | or al,0x30 ;¤ ï ª®¬ ¤ ª®à®ç¥ 祬 ¤¢¥ ¢ëè¥ |
2271 | stosb ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi |
2251 | stosb ;§ ¯¨á âì í«¥¬¥â ¨§ ॣ¨áâà al ¢ ï祪㠯 ¬ï⨠es:edi |
2272 | ret ;âåðíóòüñÿ î÷åíü èíòåðåñíûé õîä ò.ê. ïîêà â ñòåêå õðàíèòüñÿ êîë-âî âûçîâîâ òî ñòîëüêî ðàç ìû è áóäåì âûçûâàòüñÿ |
2252 | ret ;¢¥àãâìáï ®ç¥ì ¨â¥à¥áë© å®¤ â.ª. ¯®ª ¢ á⥪¥ åà ¨âìáï ª®«-¢® ¢ë§®¢®¢ â® á⮫쪮 à § ¬ë ¨ ¡ã¤¥¬ ¢ë§ë¢ âìáï |