Rev 5948 | Rev 7508 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5948 | Rev 6972 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; ¬ ªà®á ¤«ï á¨á⥬®© ¡¨¡«¨®â¥ª¨ box_lib.obj |
1 | ; í«¥¬¥â TreeList ¤«ï ¡¨¡«¨®â¥ª¨ box_lib.obj |
2 | ; í«¥¬¥â TreeList ¤«ï Kolibri OS |
- | |
3 | ; ä ©« ¯®á«¥¤¨© à § ¨§¬¥ï«áï 03.12.2015 IgorA |
- | |
4 | ; ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï |
2 | ; ª®¤ ¯à¨¬¥¥ GPL2 «¨æ¥§¨ï |
- | 3 | ; ¯®á«¥¤ïï ¬®¤¨ä¨ª æ¨ï 12.09.2017 IgorA |
|
Line 5... | Line -... | ||
5 | - | ||
6 | 4 | ||
7 | sizeof.TreeList equ 20 |
5 | |
8 | ;struct TreeList |
6 | struct TreeNode |
9 | ; type dw ? ;+ 0 ⨯ í«¥¬¥â , ¨«¨ ¨¤¥ªá ¨ª®ª¨ ¤«ï 㧫 |
7 | type dw ? ;+ 0 ⨯ í«¥¬¥â , ¨«¨ ¨¤¥ªá ¨ª®ª¨ ¤«ï 㧫 |
10 | ; lev db ? ;+ 2 ã஢¥ì í«¥¬¥â |
8 | level db ? ;+ 2 ã஢¥ì í«¥¬¥â |
11 | ; clo db ? ;+ 3 ä« £ § ªàëâ¨ï, ¨«¨ ®âªàëâ¨ï (¨¬¥¥â á¬ëá« ¤«ï த¨â¥«ì᪮£® 㧫 ) |
9 | close db ? ;+ 3 ä« £ § ªàëâ¨ï, ¨«¨ ®âªàëâ¨ï (¨¬¥¥â á¬ëá« ¤«ï த¨â¥«ì᪮£® 㧫 ) |
12 | ; perv dd ? ;+ 4 ¨¤¥ªá ¯à¥¤ë¤ã饣® í«¥¬¥â |
10 | perv dd ? ;+ 4 ¨¤¥ªá ¯à¥¤ë¤ã饣® í«¥¬¥â |
13 | ; next dd ? ;+ 8 ¨¤¥ªá ¯®á«¥¤ãî饣® í«¥¬¥â |
11 | next dd ? ;+ 8 ¨¤¥ªá ¯®á«¥¤ãî饣® í«¥¬¥â |
14 | ; tc dd ? ;+12 ¢à¥¬. ᮧ¤ ¨ï |
12 | t_create dd ? ;+12 ¢à¥¬. ᮧ¤ ¨ï |
Line 15... | Line -... | ||
15 | ; td dd ? ;+16 ¢à¥¬. 㤠«¥¨ï |
- | |
16 | ;ends |
- | |
Line 17... | Line 13... | ||
17 | 13 | t_delete dd ? ;+16 ¢à¥¬. 㤠«¥¨ï |
|
18 | macro use_tree_list |
14 | ends |
19 | { |
15 | |
20 | 16 | ||
Line 21... | Line 17... | ||
21 | ;¢ë¤¥«¨¥ ¯ ¬ï⨠¤«ï áâàãªâãà ᯨ᪠¨ ®á®¢®© ¨ä®à¬ 樨 (ª®áâàãªâ®à) |
17 | ;¢ë¤¥«¨¥ ¯ ¬ï⨠¤«ï áâàãªâãà ᯨ᪠¨ ®á®¢®© ¨ä®à¬ 樨 (ª®áâàãªâ®à) |
22 | align 4 |
18 | align 16 |
23 | proc tl_data_init uses eax ecx edi, tlist:dword |
19 | proc tl_data_init uses eax ecx edi, tlist:dword |
24 | mov edi,dword[tlist] |
20 | mov edi,[tlist] |
25 | 21 | ||
26 | xor ecx,ecx |
22 | xor ecx,ecx |
27 | mov cx,tl_info_size |
23 | mov cx,tl_info_size |
Line 28... | Line 24... | ||
28 | imul ecx,tl_info_max_count |
24 | imul ecx,tl_info_max_count |
29 | invoke mem.alloc,ecx |
25 | invoke mem.alloc,ecx |
30 | mov tl_data_info,eax ;ª®¯¨à㥬 㪠§ â¥«ì ¯®«ãç¥ãî ¯ ¬ïâì ¢ áâàãªâãàã |
26 | mov tl_data_info,eax ;ª®¯¨à㥬 㪠§ â¥«ì ¯®«ãç¥ãî ¯ ¬ïâì ¢ áâàãªâãàã |
31 | mov tl_data_img,0 ;®¡ã«ï¥¬ 㪠§ ⥫ì 'data_img' |
27 | mov tl_data_img,0 ;®¡ã«ï¥¬ 㪠§ ⥫ì 'data_img' |
Line 32... | Line 28... | ||
32 | mov tl_data_img_sys,0 ;®¡ã«ï¥¬ 㪠§ ⥫ì 'data_img_sys' |
28 | mov tl_data_img_sys,0 ;®¡ã«ï¥¬ 㪠§ ⥫ì 'data_img_sys' |
Line 62... | Line 58... | ||
62 | endp |
58 | endp |
Line 63... | Line 59... | ||
63 | 59 | ||
64 | ;®ç¨á⪠¯ ¬ïâ¨ í«¥¬¥â (¤¥áâàãªâ®à) |
60 | ;®ç¨á⪠¯ ¬ïâ¨ í«¥¬¥â (¤¥áâàãªâ®à) |
65 | align 4 |
61 | align 4 |
66 | proc tl_data_clear uses eax edi, tlist:dword |
62 | proc tl_data_clear uses eax edi, tlist:dword |
67 | mov edi,dword[tlist] |
63 | mov edi,[tlist] |
68 | cmp tl_data_img,0 |
64 | cmp tl_data_img,0 |
69 | je @f |
65 | je @f |
70 | invoke mem.free,tl_data_img ;ç¨á⪠á¨á⥬ëå ¨ª®®ª |
66 | invoke mem.free,tl_data_img ;ç¨á⪠á¨á⥬ëå ¨ª®®ª |
71 | @@: |
67 | @@: |
Line 79... | Line 75... | ||
79 | endp |
75 | endp |
Line 80... | Line 76... | ||
80 | 76 | ||
81 | ;®ç¨á⪠ᯨ᪠(¨ä®à¬ 樨) |
77 | ;®ç¨á⪠ᯨ᪠(¨ä®à¬ 樨) |
82 | align 4 |
78 | align 4 |
83 | proc tl_info_clear uses eax ecx edi, tlist:dword |
79 | proc tl_info_clear uses eax ecx edi, tlist:dword |
84 | mov edi,dword[tlist] |
80 | mov edi,[tlist] |
85 | mov tl_ch_tim,0 |
81 | mov tl_ch_tim,0 |
86 | mov tl_tim_undo,0 |
82 | mov tl_tim_undo,0 |
87 | mov tl_cur_pos,0 |
83 | mov tl_cur_pos,0 |
88 | mov ecx,sizeof.TreeList |
84 | mov ecx,sizeof.TreeNode |
89 | imul ecx,tl_info_max_count |
85 | imul ecx,tl_info_max_count |
90 | mov eax,tl_data_nodes |
86 | mov eax,tl_data_nodes |
91 | @@: |
87 | @@: |
92 | mov byte[eax],0 ;ç¨á⨬ 㧫ë 0-¬¨ |
88 | mov byte[eax],0 ;ç¨á⨬ 㧫ë 0-¬¨ |
93 | inc eax |
89 | inc eax |
94 | loop @b |
90 | loop @b |
95 | mov eax,tl_data_nodes ;㪠§ ⥫ì 0-© 㧥« |
91 | mov eax,tl_data_nodes ;㪠§ ⥫ì 0-© 㧥« |
Line 96... | Line 92... | ||
96 | mov dword[eax+8],1 ;㪠§ ⥫ì next ¢ 0-¬ 㧫¥ ¯à¨à ¢¨¢ ¥¬ ª 1 |
92 | mov dword[eax+TreeNode.next],1 ;㪠§ ⥫ì next ¢ 0-¬ 㧫¥ ¯à¨à ¢¨¢ ¥¬ ª 1 |
97 | 93 | ||
98 | cmp tl_p_scroll,0 ;®¡à ¡®âª áªà®««¨£ |
94 | cmp tl_p_scroll,0 ;®¡à ¡®âª áªà®««¨£ |
99 | je @f |
95 | je @f |
Line 105... | Line 101... | ||
105 | endp |
101 | endp |
Line 106... | Line 102... | ||
106 | 102 | ||
107 | ;ॠªæ¨ï ª« ¢¨ âãàã |
103 | ;ॠªæ¨ï ª« ¢¨ âãàã |
108 | align 4 |
104 | align 4 |
109 | proc tl_key uses ebx ecx edi, tlist:dword |
105 | proc tl_key uses ebx ecx edi, tlist:dword |
Line 110... | Line 106... | ||
110 | mov edi,dword[tlist] |
106 | mov edi,[tlist] |
111 | 107 | ||
112 | mov ebx,tl_el_focus |
108 | mov ebx,tl_el_focus |
Line 113... | Line 109... | ||
113 | cmp dword[ebx],edi |
109 | cmp [ebx],edi |
114 | jne .no_focus ;í«¥¬¥â ¥ ¢ 䮪ãᥠ|
110 | jne .no_focus ;í«¥¬¥â ¥ ¢ 䮪ãᥠ|
Line 115... | Line 111... | ||
115 | 111 | ||
116 | push eax |
112 | push eax |
117 | mcall 66,2 ;¯®«ãç¨âì ०¨¬ ¢¢®¤ á ª« ¢¨ âãàë |
113 | mcall SF_KEYBOARD,SSF_GET_INPUT_MODE ;¯®«ãç¨âì ०¨¬ ¢¢®¤ á ª« ¢¨ âãàë |
118 | 114 | ||
Line 179... | Line 175... | ||
179 | 175 | ||
180 | ;ॠªæ¨ï ¬ëèì |
176 | ;ॠªæ¨ï ¬ëèì |
181 | align 4 |
177 | align 4 |
182 | proc tl_mouse, tlist:dword |
178 | proc tl_mouse, tlist:dword |
183 | pushad |
179 | pushad |
Line 184... | Line 180... | ||
184 | mov edi,dword[tlist] |
180 | mov edi,[tlist] |
Line 185... | Line 181... | ||
185 | 181 | ||
186 | mcall 37,1 ;ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® ®ª |
182 | mcall SF_MOUSE_GET,SSF_WINDOW_POSITION ;ª®®à¤¨ âë ¬ëè¨ ®â®á¨â¥«ì® ®ª |
187 | 183 | ||
188 | mov ebx,tl_box_left |
184 | mov ebx,tl_box_left |
Line 204... | Line 200... | ||
204 | add bx,tl_capt_cy |
200 | add bx,tl_capt_cy |
205 | cmp ax,bx ;¢¥àåïï £à ¨æ ®ª + ¢ëá®â ¯®¤¯¨á¨ |
201 | cmp ax,bx ;¢¥àåïï £à ¨æ ®ª + ¢ëá®â ¯®¤¯¨á¨ |
206 | jl .test_scroll |
202 | jl .test_scroll |
Line 207... | Line 203... | ||
207 | 203 | ||
208 | push eax ebx |
204 | push eax ebx |
209 | mcall 37,7 ;®¡à ¡®âª ª®«¥á ¬ëè¨ |
205 | mcall SF_MOUSE_GET,SSF_SCROLL_DATA |
210 | mov edx,eax |
206 | mov edx,eax |
211 | xor ecx,ecx |
207 | xor ecx,ecx |
212 | test eax,eax |
208 | test eax,eax |
213 | jz .mouse_next |
209 | jz .mouse_next |
Line 224... | Line 220... | ||
224 | mov cx,dx ;dx = mouse scroll data horizontal |
220 | mov cx,dx ;dx = mouse scroll data horizontal |
225 | test ecx,ecx |
221 | test ecx,ecx |
226 | jz .mouse_next |
222 | jz .mouse_next |
227 | @@: |
223 | @@: |
228 | stdcall tl_cur_next, edi |
224 | stdcall tl_cur_next, edi |
229 | dec ecx |
- | |
230 | jnz @r |
225 | loop @r |
231 | jmp .mouse_next |
226 | jmp .mouse_next |
232 | ;------------------------------------------------ |
227 | ;------------------------------------------------ |
233 | .decr: ;¢¥à⨪ «ì ï ¯à®ªàã⪠®âà¨æ ⥫ì ï |
228 | .decr: ;¢¥à⨪ «ì ï ¯à®ªàã⪠®âà¨æ ⥫ì ï |
234 | mov bx,ax ;ax = mouse scroll data vertical |
229 | mov bx,ax ;ax = mouse scroll data vertical |
235 | jmp @f |
230 | jmp @f |
Line 239... | Line 234... | ||
239 | mov ecx,0xffff |
234 | mov ecx,0xffff |
240 | sub ecx,ebx |
235 | sub ecx,ebx |
241 | inc ecx |
236 | inc ecx |
242 | @@: |
237 | @@: |
243 | stdcall tl_cur_perv, edi |
238 | stdcall tl_cur_perv, edi |
244 | dec ecx |
- | |
245 | jnz @r |
239 | loop @r |
246 | ;------------------------------------------------ |
240 | ;------------------------------------------------ |
247 | .mouse_next: |
241 | .mouse_next: |
248 | pop ebx eax |
- | |
249 | - | ||
250 | push eax ebx |
- | |
251 | mcall 37,2 |
- | |
Line -... | Line 242... | ||
- | 242 | ||
252 | 243 | mcall SF_MOUSE_GET,SSF_BUTTON |
|
253 | bt eax,0 ;left mouse button press |
244 | bt eax,0 ;left mouse button press |
254 | pop ebx eax |
245 | pop ebx eax |
Line 255... | Line 246... | ||
255 | jae .no_draw |
246 | jae .no_draw |
256 | 247 | ||
Line 257... | Line 248... | ||
257 | mov esi,tl_el_focus |
248 | mov esi,tl_el_focus |
258 | mov dword[esi],edi ;set focus |
249 | mov [esi],edi ;set focus |
259 | 250 | ||
260 | ; if '+' or '-' press |
251 | ; if '+' or '-' press |
Line 261... | Line 252... | ||
261 | mov esi,eax |
252 | mov esi,eax |
262 | shr esi,16 |
253 | shr esi,16 |
263 | sub esi,tl_box_left ;esi = mouse x coord in element window |
254 | sub esi,tl_box_left ;esi = mouse x coord in element window |
264 | - | ||
265 | and eax,0xffff |
255 | |
266 | sub ax,bx |
256 | and eax,0xffff |
267 | xor edx,edx |
257 | sub eax,ebx |
268 | xor ecx,ecx |
258 | xor edx,edx |
269 | mov cx,tl_img_cy |
259 | movzx ecx,tl_img_cy |
270 | div ecx |
260 | div ecx |
271 | cmp tl_p_scroll,0 ;ãç¨âë¢ ¥¬ áªà®««¨£ |
261 | cmp tl_p_scroll,0 ;ãç¨âë¢ ¥¬ áªà®««¨£ |
Line 272... | Line 262... | ||
272 | je @f |
262 | je @f |
273 | mov edx,tl_p_scroll |
263 | mov edx,tl_p_scroll |
274 | add eax,dword[edx+sb_offs_position] ;¤®¡ ¢«ï¥¬ áªà®««¨£ ¢¥àåã |
264 | add eax,[edx+sb_offs_position] ;¤®¡ ¢«ï¥¬ áªà®««¨£ ¢¥àåã |
Line 294... | Line 284... | ||
294 | 284 | ||
295 | ; if '+' or '-' press |
285 | ; if '+' or '-' press |
296 | call tl_get_cur_node_index ;eax = node index |
286 | call tl_get_cur_node_index ;eax = node index |
297 | cmp eax,2 |
287 | cmp eax,2 |
298 | jl .no_open_close ;ªãàá®à á⮨⠯ãá⮬ ¬¥áâ¥, ¡¥§ 㧫®¢ |
288 | jl .no_open_close ;ªãàá®à á⮨⠯ãá⮬ ¬¥áâ¥, ¡¥§ 㧫®¢ |
299 | imul eax,sizeof.TreeList |
289 | imul eax,sizeof.TreeNode |
300 | add eax,tl_data_nodes |
290 | add eax,tl_data_nodes |
301 | xor bx,bx |
291 | xor bx,bx |
302 | mov bl,byte[eax+2] ;+2 lev á®åà 塞 ã஢¥ì ⥪ã饣® 㧫 |
292 | mov bl,byte[eax+TreeNode.level] ;á®åà 塞 ã஢¥ì ⥪ã饣® 㧫 |
Line 303... | Line 293... | ||
303 | inc bx ;+ ¯®«¥ ¤«ï ªãàá®à |
293 | inc bx ;+ ¯®«¥ ¤«ï ªãàá®à |
304 | 294 | ||
305 | cmp si,tl_img_cx |
295 | cmp si,tl_img_cx |
Line 322... | Line 312... | ||
322 | call tl_draw_caption_cur_pos |
312 | call tl_draw_caption_cur_pos |
323 | jmp .no_draw |
313 | jmp .no_draw |
324 | ;--- mouse event for children scrollbar ---------------------------------------- |
314 | ;--- mouse event for children scrollbar ---------------------------------------- |
325 | .test_scroll: |
315 | .test_scroll: |
326 | mov edx,tl_p_scroll |
316 | mov edx,tl_p_scroll |
327 | cmp edx,0 |
317 | or edx,edx |
328 | je .no_in_wnd ;¯®«ì§®¢ â¥«ì ¥ ᮧ¤ « ¤®ç¥à¥£® áªà®««¨£ |
318 | jz .no_in_wnd ;¯®«ì§®¢ â¥«ì ¥ ᮧ¤ « ¤®ç¥à¥£® áªà®««¨£ |
329 | shr ebx,16 |
319 | shr ebx,16 |
330 | add bx,word[edx] ;+0 .size_x |
320 | add bx,word[edx] ;+0 .size_x |
331 | shl ebx,16 |
321 | shl ebx,16 |
332 | cmp eax,ebx ;¯à ¢ ï £à ¨æ ®ª |
322 | cmp eax,ebx ;¯à ¢ ï £à ¨æ ®ª |
333 | jg .no_in_wnd |
323 | jg .no_in_wnd |
Line 334... | Line 324... | ||
334 | 324 | ||
335 | mov eax,dword[edx+sb_offs_max_area] |
325 | mov eax,[edx+sb_offs_max_area] |
336 | cmp eax,dword[edx+sb_offs_cur_area] |
326 | cmp eax,[edx+sb_offs_cur_area] |
337 | jbe .no_in_wnd ;¢á¥ ã§«ë ¯®¯ ¤ îâ ¢ ®ª® áªà®««¨£ |
327 | jbe .no_in_wnd ;¢á¥ ã§«ë ¯®¯ ¤ îâ ¢ ®ª® áªà®««¨£ |
Line 338... | Line 328... | ||
338 | stdcall scroll_bar_vertical.mouse, edx ;scrollbar_ver_mouse |
328 | stdcall scroll_bar_vertical.mouse, edx ;scrollbar_ver_mouse |
339 | 329 | ||
Line 344... | Line 334... | ||
344 | @@: |
334 | @@: |
345 | cmp dword[edx+sb_offs_delta2],0 |
335 | cmp dword[edx+sb_offs_delta2],0 |
346 | jne .no_draw ;¯®¯ «¨ áªà®««¨£ - ¥ ᨬ ¥¬ 䮪ãá á TreeList |
336 | jne .no_draw ;¯®¯ «¨ áªà®««¨£ - ¥ ᨬ ¥¬ 䮪ãá á TreeList |
347 | ;------------------------------------------------------------------------------- |
337 | ;------------------------------------------------------------------------------- |
348 | .no_in_wnd: ;¥ ¯®¯ «¨ ¢ ®ª® - ¯®â¥àï 䮪ãá (¯à¨ ãá«®¢¨¨ ç⮠䮪ãá ¡ë« ¤ ®¬ í¥«¥¬¥â¥) |
338 | .no_in_wnd: ;¥ ¯®¯ «¨ ¢ ®ª® - ¯®â¥àï 䮪ãá (¯à¨ ãá«®¢¨¨ ç⮠䮪ãá ¡ë« ¤ ®¬ í¥«¥¬¥â¥) |
349 | mcall 37,2 ;¯à®¢¥à塞 ¦ â®áâì «î¡ëå ª®¯®ª |
339 | mcall SF_MOUSE_GET,SSF_BUTTON |
350 | cmp eax,0 ;¨ç¥£® ¥ ¦ «¨ eax=0 |
340 | or eax,eax ;¨ç¥£® ¥ ¦ «¨ eax=0 |
351 | je .no_draw |
341 | jz .no_draw |
352 | mov ebx,tl_el_focus |
342 | mov ebx,tl_el_focus |
353 | cmp dword[ebx],edi |
343 | cmp [ebx],edi |
354 | jne .no_draw ;í«¥¬¥â ¥ ¢ 䮪ãᥠ|
344 | jne .no_draw ;í«¥¬¥â ¥ ¢ 䮪ãᥠ|
355 | mov dword[ebx],0 ;reset focus |
345 | mov dword[ebx],0 ;reset focus |
356 | mov esi,tl_box_top |
346 | mov esi,tl_box_top |
357 | add esi,tl_box_height ;esi = coord bottom border |
347 | add esi,tl_box_height ;esi = coord bottom border |
358 | call tl_draw_cursor ;à¨á㥬 ªãàá®à á ¯®â¥àïë¬ ä®ªãᮬ |
348 | call tl_draw_cursor ;à¨á㥬 ªãàá®à á ¯®â¥àïë¬ ä®ªãᮬ |
Line 363... | Line 353... | ||
363 | endp |
353 | endp |
Line 364... | Line 354... | ||
364 | 354 | ||
365 | ;®â¬¥ ¤¥©á⢨ï |
355 | ;®â¬¥ ¤¥©á⢨ï |
366 | align 4 |
356 | align 4 |
367 | proc tl_info_undo uses eax edi, tlist:dword |
357 | proc tl_info_undo uses eax edi, tlist:dword |
368 | mov edi,dword[tlist] |
358 | mov edi,[tlist] |
369 | mov eax,tl_tim_undo |
359 | mov eax,tl_tim_undo |
370 | cmp tl_ch_tim,eax |
360 | cmp tl_ch_tim,eax |
371 | jbe @f |
361 | jbe @f |
372 | inc tl_tim_undo |
362 | inc tl_tim_undo |
Line 376... | Line 366... | ||
376 | endp |
366 | endp |
Line 377... | Line 367... | ||
377 | 367 | ||
378 | ;¯®¢â®à ¤¥©á⢨ï |
368 | ;¯®¢â®à ¤¥©á⢨ï |
379 | align 4 |
369 | align 4 |
380 | proc tl_info_redo uses edi, tlist:dword |
370 | proc tl_info_redo uses edi, tlist:dword |
381 | mov edi,dword[tlist] |
371 | mov edi,[tlist] |
382 | cmp tl_tim_undo,1 |
372 | cmp tl_tim_undo,1 |
383 | jl @f |
373 | jl @f |
384 | dec tl_tim_undo |
374 | dec tl_tim_undo |
385 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
375 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
Line 395... | Line 385... | ||
395 | jl .no_work |
385 | jl .no_work |
Line 396... | Line 386... | ||
396 | 386 | ||
397 | push eax ebx ecx edx |
387 | push eax ebx ecx edx |
398 | mov edx,tl_data_nodes |
388 | mov edx,tl_data_nodes |
399 | mov ecx,edx |
389 | mov ecx,edx |
400 | add ecx,sizeof.TreeList |
390 | add ecx,sizeof.TreeNode |
- | 391 | call tl_move_next ;long i=node[0].next; |
|
401 | call tl_move_next ;long i=node[0].next; |
392 | |
402 | mov eax,tl_tim_undo |
393 | mov eax,tl_tim_undo |
403 | sub tl_ch_tim,eax ;ch_tim-=tim_undo; |
- | |
- | 394 | sub tl_ch_tim,eax ;ch_tim-=tim_undo; |
|
404 | mov eax,tl_ch_tim |
395 | |
405 | cmp edx,ecx |
396 | cmp edx,ecx |
406 | jle @f |
397 | jle @f |
- | 398 | ;if(node[i].tc>ch_tim){ // ¥á«¨ ᮧ¤ ¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
|
407 | ;if(node[i].tc>ch_tim){ // ¥á«¨ ᮧ¤ ¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
399 | mov eax,tl_ch_tim |
408 | cmp dword[edx+12],eax |
400 | cmp [edx+TreeNode.t_create],eax |
409 | jle .no_u1 |
401 | jle .no_u1 |
410 | mov dword[edx+12],0 |
402 | mov dword[edx+TreeNode.t_create],0 |
Line 411... | Line 403... | ||
411 | mov dword[edx+16],0 |
403 | mov dword[edx+TreeNode.t_delete],0 |
412 | 404 | ||
413 | mov ebx, dword[edx+4] |
405 | mov ebx, [edx+TreeNode.perv] |
414 | imul ebx,sizeof.TreeList |
406 | imul ebx,sizeof.TreeNode |
415 | add ebx, tl_data_nodes ;.next |
407 | add ebx, tl_data_nodes ;.next |
Line 416... | Line 408... | ||
416 | push dword[edx+8] ;node[node[i].perv].next=node[i].next; |
408 | push dword[edx+TreeNode.next] ;node[node[i].perv].next=node[i].next; |
417 | pop dword[ebx+8] |
409 | pop dword[ebx+TreeNode.next] |
418 | 410 | ||
419 | mov ebx, dword[edx+8] |
411 | mov ebx, [edx+TreeNode.next] |
420 | imul ebx,sizeof.TreeList |
412 | imul ebx,sizeof.TreeNode |
421 | add ebx, tl_data_nodes ;.perv |
413 | add ebx, tl_data_nodes ;.perv |
Line 422... | Line 414... | ||
422 | push dword[edx+4] ;node[node[i].next].perv=node[i].perv; |
414 | push dword[edx+TreeNode.perv] ;node[node[i].next].perv=node[i].perv; |
423 | pop dword[ebx+4] |
415 | pop dword[ebx+TreeNode.perv] |
424 | .no_u1: |
416 | .no_u1: |
425 | 417 | ||
426 | ;else if(node[i].td>ch_tim) node[i].td=0; // ¥á«¨ 㤠«¥¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
418 | ;else if(node[i].td>ch_tim) node[i].td=0; // ¥á«¨ 㤠«¥¨¥ ᨬ¢®« ¡ë«® ®â¬¥¥® |
427 | cmp dword[edx+16],eax |
419 | cmp [edx+TreeNode.t_delete],eax |
428 | jle .no_u2 |
420 | jle .no_u2 |
429 | mov dword[edx+16],0 |
421 | mov dword[edx+TreeNode.t_delete],0 |
430 | .no_u2: |
422 | .no_u2: |
Line 439... | Line 431... | ||
439 | ;¢ë¢®¤ ᯨ᪠íªà |
431 | ;¢ë¢®¤ ᯨ᪠íªà |
440 | align 4 |
432 | align 4 |
441 | proc tl_draw, tlist:dword |
433 | proc tl_draw, tlist:dword |
442 | pushad |
434 | pushad |
443 | ;draw dir_list main rect |
435 | ;draw dir_list main rect |
444 | mov edi,dword[tlist] |
436 | mov edi,[tlist] |
445 | mov ebx,tl_box_left |
437 | mov ebx,tl_box_left |
446 | shl ebx,16 |
438 | shl ebx,16 |
447 | add ebx,tl_box_width |
439 | add ebx,tl_box_width |
448 | mov ecx,tl_box_top |
440 | mov ecx,tl_box_top |
449 | shl ecx,16 |
441 | shl ecx,16 |
450 | mov cx,tl_capt_cy |
442 | mov cx,tl_capt_cy |
451 | mov edx,tl_col_zag |
443 | mov edx,tl_col_zag |
452 | mcall 13 ;draw window caption |
444 | mcall SF_DRAW_RECT ;draw window caption |
Line 453... | Line 445... | ||
453 | 445 | ||
454 | add ecx,tl_box_top |
446 | add ecx,tl_box_top |
455 | shl ecx,16 |
447 | shl ecx,16 |
456 | add ecx,tl_box_height |
448 | add ecx,tl_box_height |
457 | sub cx,tl_capt_cy |
- | |
458 | mov edx,tl_col_bkg |
449 | sub cx,tl_capt_cy |
Line 459... | Line 450... | ||
459 | int 0x40 ;draw window client rect |
450 | mcall ,,,tl_col_bkg ;draw window client rect |
460 | 451 | ||
461 | cmp tl_capt_cy,9 ;9 - minimum caption height |
452 | cmp tl_capt_cy,9 ;9 - minimum caption height |
462 | jl @f |
453 | jl @f |
463 | mov ebx,edi ;calculate cursor position |
454 | mov ebx,edi ;calculate cursor position |
464 | mov eax,tl_cur_pos |
455 | mov eax,tl_cur_pos |
465 | inc eax |
- | |
466 | lea edi,[txt_capt_cur] |
456 | inc eax |
Line 467... | Line 457... | ||
467 | add edi,7 |
457 | lea edi,[txt_capt_cur.v] |
468 | call tl_convert_to_str |
458 | stdcall tl_convert_to_str, 5 |
469 | 459 | ||
470 | mov edi,ebx |
- | |
471 | mov eax,tl_tim_undo |
460 | mov edi,ebx |
472 | lea edi,[txt_capt_otm] |
461 | mov eax,tl_tim_undo |
Line 473... | Line 462... | ||
473 | add edi,7 |
462 | lea edi,[txt_capt_otm.v] |
474 | call tl_convert_to_str |
463 | stdcall tl_convert_to_str, 5 |
475 | mov edi,ebx ;restore edi |
464 | mov edi,ebx ;restore edi |
476 | 465 | ||
477 | mov eax,4 ;draw text captions |
466 | mov eax,SF_DRAW_TEXT ;captions |
478 | mov ebx,tl_box_left |
467 | mov ebx,tl_box_left |
Line 494... | Line 483... | ||
494 | 483 | ||
495 | ;cycle to nodes |
484 | ;cycle to nodes |
496 | xor eax,eax |
485 | xor eax,eax |
497 | mov edx,tl_data_nodes |
486 | mov edx,tl_data_nodes |
498 | mov ecx,edx |
487 | mov ecx,edx |
Line 499... | Line 488... | ||
499 | add ecx,sizeof.TreeList |
488 | add ecx,sizeof.TreeNode |
500 | 489 | ||
501 | ;*** ¯à®¯ã᪠㧫®¢, ª®â®àë¥ ¯à®¬®â ë áªà®««¨£®¬ *** |
490 | ;*** ¯à®¯ã᪠㧫®¢, ª®â®àë¥ ¯à®¬®â ë áªà®««¨£®¬ *** |
502 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
491 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
Line 537... | Line 526... | ||
537 | endp |
526 | endp |
Line 538... | Line 527... | ||
538 | 527 | ||
539 | ;¯¥à¥å®¤ á«¥¤ã騩 ¢¨¤¨¬ë© 㧥« (¯à®¯ãáª ï § ªàëâë¥) |
528 | ;¯¥à¥å®¤ á«¥¤ã騩 ¢¨¤¨¬ë© 㧥« (¯à®¯ãáª ï § ªàëâë¥) |
540 | ;input: |
529 | ;input: |
541 | ; ecx = pointer to 1 node struct |
530 | ; ecx = pointer to 1 node struct |
542 | ; edx = pointer to some node struct |
531 | ; edx = pointer to node struct |
543 | ; edi = pointer to 'TreeList' struct |
532 | ; edi = pointer to 'TreeList' struct |
544 | ;output: |
533 | ;output: |
545 | ; edx = pointer to next node struct |
534 | ; edx = pointer to next node struct |
546 | align 4 |
535 | align 4 |
547 | tl_iterat_next: |
536 | tl_iterat_next: |
548 | push bx |
537 | push bx |
549 | mov bl,0x7f |
538 | mov bl,0x7f |
550 | cmp byte[edx+3],1 |
539 | cmp byte[edx+TreeNode.close],1 |
551 | jne @f |
540 | jne @f |
552 | mov bl,byte[edx+2] |
541 | mov bl,byte[edx+TreeNode.level] |
Line 553... | Line 542... | ||
553 | @@: |
542 | @@: |
554 | 543 | ||
Line 561... | Line 550... | ||
561 | cmp edx,ecx |
550 | cmp edx,ecx |
562 | jle @f |
551 | jle @f |
563 | call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
552 | call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
564 | cmp al,1 |
553 | cmp al,1 |
565 | je .beg0 |
554 | je .beg0 |
566 | cmp bl,byte[edx+2] ;¯à®¯ã᪠§ ªàëâëå |
555 | cmp bl,byte[edx+TreeNode.level] ;¯à®¯ã᪠§ ªàëâëå |
567 | jl .beg0 |
556 | jl .beg0 |
568 | @@: |
557 | @@: |
569 | pop eax |
558 | pop eax |
570 | pop bx |
559 | pop bx |
571 | ret |
560 | ret |
Line 572... | Line 561... | ||
572 | 561 | ||
573 | .else: |
562 | .else: |
574 | call tl_move_next |
563 | call tl_move_next |
575 | cmp edx,ecx |
564 | cmp edx,ecx |
576 | jle .endif |
565 | jle .endif |
577 | cmp dword[edx+16],0 ;td = 'time delete' -> ¯à®¯ã᪠㤠«¥ëå |
566 | cmp dword[edx+TreeNode.t_delete],0 ;¯à®¯ã᪠㤠«¥ëå |
578 | jne .else |
567 | jne .else |
579 | cmp bl,byte[edx+2] ;¯à®¯ã᪠§ ªàëâëå |
568 | cmp bl,byte[edx+TreeNode.level] ;¯à®¯ã᪠§ ªàëâëå |
580 | jl .else |
569 | jl .else |
581 | .endif: |
570 | .endif: |
582 | pop bx |
571 | pop bx |
Line 583... | Line 572... | ||
583 | ret |
572 | ret |
584 | 573 | ||
585 | ;¯¥à¥å®¤ á«¥¤ã騩 ¢¨¤¨¬ë© 㧥« (¨ § ªàëâë¥ â®¦¥) |
574 | ;¯¥à¥å®¤ á«¥¤ã騩 ¢¨¤¨¬ë© 㧥« (¨ § ªàëâë¥ â®¦¥) |
586 | ;input: |
575 | ;input: |
587 | ; ecx = pointer to 1 node struct |
576 | ; ecx = pointer to 1 node struct |
588 | ; edx = pointer to some node struct |
577 | ; edx = pointer to node struct |
589 | ; edi = pointer to 'TreeList' struct |
578 | ; edi = pointer to 'TreeList' struct |
590 | ;output: |
579 | ;output: |
591 | ; edx = pointer to next visible node struct |
580 | ; edx = pointer to next visible node struct |
Line 607... | Line 596... | ||
607 | ret |
596 | ret |
608 | .else: |
597 | .else: |
609 | call tl_move_next |
598 | call tl_move_next |
610 | cmp edx,ecx |
599 | cmp edx,ecx |
611 | jle .endif |
600 | jle .endif |
612 | cmp dword[edx+16],0 ;td -> time delete |
601 | cmp dword[edx+TreeNode.t_delete],0 ;td -> time delete |
613 | jne .else |
602 | jne .else |
614 | .endif: |
603 | .endif: |
615 | ret |
604 | ret |
Line 616... | Line 605... | ||
616 | 605 | ||
617 | ;¯¥à¥å®¤ ¯à¥¤ë¤ã騩 ¢¨¤¨¬ë© 㧥« (¯à®¯ãáª ï § ªàëâë¥) |
606 | ;¯¥à¥å®¤ ¯à¥¤ë¤ã騩 ¢¨¤¨¬ë© 㧥« (¯à®¯ãáª ï § ªàëâë¥) |
618 | ;input: |
607 | ;input: |
619 | ; ecx = pointer to 1 node struct |
608 | ; ecx = pointer to 1 node struct |
620 | ; edx = pointer to some node struct |
609 | ; edx = pointer to node struct |
621 | ; edi = pointer to 'TreeList' struct |
610 | ; edi = pointer to 'TreeList' struct |
622 | align 4 |
611 | align 4 |
623 | tl_iterat_perv: |
- | |
624 | push eax |
612 | proc tl_iterat_perv uses eax |
625 | cmp tl_tim_undo,0 |
613 | cmp tl_tim_undo,0 |
Line 626... | Line 614... | ||
626 | je .beg1 |
614 | je .beg1 |
627 | 615 | ||
Line 635... | Line 623... | ||
635 | 623 | ||
636 | .beg1: |
624 | .beg1: |
637 | call tl_move_perv |
625 | call tl_move_perv |
638 | cmp edx,ecx |
626 | cmp edx,ecx |
639 | jle @f |
627 | jle @f |
640 | cmp dword[edx+16],0 ;td = 'time delete' -> ¯à®¯ã᪠㤠«¥ëå |
628 | cmp dword[edx+TreeNode.t_delete],0 ;td = 'time delete' -> ¯à®¯ã᪠㤠«¥ëå |
Line 641... | Line 629... | ||
641 | jne .beg1 |
629 | jne .beg1 |
642 | 630 | ||
643 | @@: |
- | |
644 | call tl_move_max_clo_par |
631 | @@: |
- | 632 | call tl_move_max_clo_par |
|
Line 645... | Line 633... | ||
645 | pop eax |
633 | ret |
646 | ret |
634 | endp |
647 | 635 | ||
648 | ; 室¨â த¨â¥«ì᪨© § ªàëâë© ã§¥« ¬ ªá¨¬ «ì®£® ã஢ï |
636 | ; 室¨â த¨â¥«ì᪨© § ªàëâë© ã§¥« ¬ ªá¨¬ «ì®£® ã஢ï |
649 | ;input: |
637 | ;input: |
650 | ; edx = pointer to some node struct |
638 | ; edx = pointer to node struct |
651 | ; edi = pointer to 'TreeList' struct |
639 | ; edi = pointer to 'TreeList' struct |
652 | ;output: |
640 | ;output: |
653 | ; edx = pointer closed parent node with maximum level |
641 | ; edx = pointer closed parent node with maximum level |
654 | align 4 |
642 | align 4 |
655 | proc tl_move_max_clo_par uses eax ebx |
643 | proc tl_move_max_clo_par uses eax ebx |
656 | mov eax,edx |
644 | mov eax,edx |
657 | xor ebx,ebx |
645 | xor ebx,ebx |
658 | .beg: |
646 | .beg: |
659 | call tl_move_par |
647 | call tl_move_par |
660 | cmp byte[edx+3],1 ;த¨â¥«ì᪨© 㧥« § ªàëâ ? |
648 | cmp byte[edx+TreeNode.close],1 ;த¨â¥«ì᪨© 㧥« § ªàëâ ? |
661 | jne @f |
649 | jne @f |
662 | mov eax,edx |
650 | mov eax,edx |
Line 669... | Line 657... | ||
669 | mov edx,eax |
657 | mov edx,eax |
670 | ret |
658 | ret |
671 | endp |
659 | endp |
Line 672... | Line 660... | ||
672 | 660 | ||
673 | ;input: |
661 | ;input: |
674 | ; edx = pointer to some node struct |
662 | ; edx = pointer to node struct |
675 | ; edi = pointer to 'TreeList' struct |
663 | ; edi = pointer to 'TreeList' struct |
676 | ;output: |
664 | ;output: |
677 | ; edx = pointer to next node struct |
665 | ; edx = pointer to next node struct |
678 | align 4 |
666 | align 4 |
679 | tl_move_next: |
667 | tl_move_next: |
680 | mov edx,dword[edx+8] |
668 | mov edx,[edx+TreeNode.next] |
681 | imul edx,sizeof.TreeList |
669 | imul edx,sizeof.TreeNode |
682 | add edx,tl_data_nodes |
670 | add edx,tl_data_nodes |
Line 683... | Line 671... | ||
683 | ret |
671 | ret |
684 | 672 | ||
685 | ;input: |
673 | ;input: |
686 | ; edx = pointer to some node struct |
674 | ; edx = pointer to node struct |
687 | ; edi = pointer to 'TreeList' struct |
675 | ; edi = pointer to 'TreeList' struct |
688 | ;output: |
676 | ;output: |
689 | ; edx = pointer to perv node struct |
677 | ; edx = pointer to perv node struct |
690 | align 4 |
678 | align 4 |
691 | tl_move_perv: |
679 | tl_move_perv: |
692 | mov edx,dword[edx+4] |
680 | mov edx,[edx+TreeNode.perv] |
693 | imul edx,sizeof.TreeList |
681 | imul edx,sizeof.TreeNode |
Line 694... | Line 682... | ||
694 | add edx,tl_data_nodes |
682 | add edx,tl_data_nodes |
695 | ret |
683 | ret |
696 | 684 | ||
697 | ;¯¥à¥¤¢¨£ ¥¬áï த¨â¥«ì᪨© 㧥«, ¥á«¨ â ª®£® ¥â, â® ®áâ ¢«ï¥¬ áâ ஥ § 票¥ 㪠§ ⥫ï |
685 | ;¯¥à¥¤¢¨£ ¥¬áï த¨â¥«ì᪨© 㧥«, ¥á«¨ â ª®£® ¥â, â® ®áâ ¢«ï¥¬ áâ ஥ § 票¥ 㪠§ ⥫ï |
698 | ;input: |
686 | ;input: |
699 | ; ecx = |
687 | ; ecx = pointer to 1 node struct |
700 | ; edx = pointer to some node struct |
688 | ; edx = pointer to node struct |
701 | ; edi = pointer to 'TreeList' struct |
689 | ; edi = pointer to 'TreeList' struct |
702 | ;output: |
690 | ;output: |
703 | ; edx = pointer to parent node struct |
691 | ; edx = pointer to parent node struct |
704 | align 4 |
692 | align 4 |
705 | tl_move_par: |
693 | tl_move_par: |
706 | cmp byte[edx+2],0 |
694 | cmp byte[edx+TreeNode.level],0 |
707 | je .end_f ;㧥« 0-£® ãà®¢ï ¥ ¬®¦¥â ¡ëâì ¤®ç¥à¨¬ |
695 | je .end_f ;㧥« 0-£® ãà®¢ï ¥ ¬®¦¥â ¡ëâì ¤®ç¥à¨¬ |
708 | push eax ebx esi |
696 | push eax ebx esi |
709 | mov esi,edx ;copy node pointer (edx) |
697 | mov esi,edx ;copy node pointer (edx) |
710 | mov bl,byte[edx+2] |
698 | mov bl,byte[edx+TreeNode.level] |
711 | @@: |
699 | @@: |
712 | call tl_move_perv |
700 | call tl_move_perv |
713 | cmp edx,ecx |
701 | cmp edx,ecx |
714 | jle @f ;¢á¥ ¢ëè¥ áâ®ï騥 ã§«ë ¥ த¨â¥«ì᪨¥ |
702 | jle @f ;¢á¥ ¢ëè¥ áâ®ï騥 ã§«ë ¥ த¨â¥«ì᪨¥ |
715 | call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
703 | call tl_node_not_vis ;¯à®¯ã᪠㤠«¥ëå ¨ ®â¬¥¥ëå |
716 | cmp al,1 |
704 | cmp al,1 |
717 | je @b |
705 | je @b |
718 | cmp byte[edx+2],bl |
706 | cmp byte[edx+TreeNode.level],bl |
719 | jl .end_0 ;ã¤ ç® è«¨ த¨â¥«ì᪨© 㧥« |
707 | jl .end_0 ;ã¤ ç® è«¨ த¨â¥«ì᪨© 㧥« |
720 | jmp @b |
708 | jmp @b |
Line 725... | Line 713... | ||
725 | .end_f: |
713 | .end_f: |
726 | ret |
714 | ret |
Line 727... | Line 715... | ||
727 | 715 | ||
728 | ;¯à®¢¥àï¥â ¢¨¤¨¬ë© «¨ 㪠§ ë© ã§¥« á ãç¥â®¬: ¤®¡ ¢«¥¨©, 㤠«¥¨©, ®â¬¥ ¤¥©á⢨© |
716 | ;¯à®¢¥àï¥â ¢¨¤¨¬ë© «¨ 㪠§ ë© ã§¥« á ãç¥â®¬: ¤®¡ ¢«¥¨©, 㤠«¥¨©, ®â¬¥ ¤¥©á⢨© |
729 | ;input: |
717 | ;input: |
730 | ; edx = pointer to symbol struct |
718 | ; edx = pointer to node struct |
731 | ; edi = pointer to 'TreeList' struct |
719 | ; edi = pointer to 'TreeList' struct |
732 | ;output: |
720 | ;output: |
733 | ; al = 1 if sumbol not visible |
721 | ; al = 1 if sumbol not visible |
734 | ; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo) |
722 | ; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo) |
735 | align 4 |
723 | align 4 |
736 | tl_node_not_vis: |
724 | tl_node_not_vis: |
737 | cmp dword[edx+16],0 |
725 | cmp dword[edx+TreeNode.t_delete],0 |
738 | je @f |
726 | je @f |
739 | mov eax,dword[edx+16] ;eax=node[i].td |
727 | mov eax,[edx+TreeNode.t_delete] ;eax=node[i].td |
740 | add eax,tl_tim_undo |
728 | add eax,tl_tim_undo |
741 | cmp eax,tl_ch_tim |
729 | cmp eax,tl_ch_tim |
742 | jg @f |
730 | jg @f |
743 | mov al,1 |
731 | mov al,1 |
744 | ret |
732 | ret |
Line 745... | Line 733... | ||
745 | @@: |
733 | @@: |
746 | 734 | ||
747 | mov eax,tl_ch_tim |
735 | mov eax,tl_ch_tim |
748 | sub eax,tl_tim_undo |
736 | sub eax,tl_tim_undo |
749 | cmp dword[edx+12],eax ;tc -> time create |
737 | cmp [edx+TreeNode.t_create],eax ;time create |
750 | jle @f |
738 | jle @f |
751 | mov al,1 |
739 | mov al,1 |
752 | ret |
740 | ret |
Line 767... | Line 755... | ||
767 | cmp tl_data_img_sys,0 ;ᬮâਬ ¥áâì «¨ 㪠§ â¥«ì ª à⨪ã á¨á⥬ëå ¨ª®®ª |
755 | cmp tl_data_img_sys,0 ;ᬮâਬ ¥áâì «¨ 㪠§ â¥«ì ª à⨪ã á¨á⥬ëå ¨ª®®ª |
768 | jne @f |
756 | jne @f |
769 | mov ebx,tl_box_left |
757 | mov ebx,tl_box_left |
770 | shl ebx,16 |
758 | shl ebx,16 |
771 | mov bx,tl_img_cx |
759 | mov bx,tl_img_cx |
772 | xor ecx,ecx |
- | |
773 | mov cx,tl_img_cy |
760 | movzx ecx,tl_img_cy |
774 | imul ecx,eax |
761 | imul ecx,eax |
775 | add ecx,tl_box_top |
762 | add ecx,tl_box_top |
776 | add cx,tl_capt_cy |
763 | add cx,tl_capt_cy |
Line 777... | Line 764... | ||
777 | 764 | ||
Line 786... | Line 773... | ||
786 | jge .crop0 |
773 | jge .crop0 |
787 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
774 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
788 | .crop0: |
775 | .crop0: |
Line 789... | Line 776... | ||
789 | 776 | ||
790 | mov edx,tl_col_txt |
777 | mov edx,tl_col_txt |
791 | mcall 13 ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì¨ª, â.ª. ¥â á¨á⥬ëå ¨ª®®ª |
778 | mcall SF_DRAW_RECT ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì¨ª, â.ª. ¥â á¨á⥬ëå ¨ª®®ª |
792 | jmp .end_f |
779 | jmp .end_f |
793 | @@: |
780 | @@: |
794 | mov ebx,tl_data_img_sys |
781 | mov ebx,tl_data_img_sys |
795 | imul ax,tl_img_cy |
782 | imul ax,tl_img_cy |
Line 801... | Line 788... | ||
801 | 788 | ||
802 | mov ecx,tl_el_focus ;¯à®¢¥à塞 ¢ 䮪ãá¥ í«¥¬¥â ¨«¨ ¥â |
789 | mov ecx,tl_el_focus ;¯à®¢¥à塞 ¢ 䮪ãá¥ í«¥¬¥â ¨«¨ ¥â |
803 | cmp dword[ecx],edi |
790 | cmp dword[ecx],edi |
804 | je .focus |
791 | je .focus |
805 | ;¥á«¨ ¥ ¢ 䮪ãᥠᤢ¨£ ¥¬ ª®®à¤¨ âë ¨ª®ªã ¥ ªâ¨¢®£® ªãàá®à |
- | |
806 | xor eax,eax |
- | |
807 | xor ecx,ecx |
792 | ;¥á«¨ ¥ ¢ 䮪ãᥠᤢ¨£ ¥¬ ª®®à¤¨ âë ¨ª®ªã ¥ ªâ¨¢®£® ªãàá®à |
808 | mov cx,tl_img_cx |
793 | movzx ecx,tl_img_cx |
809 | mov ax,tl_img_cy |
794 | movzx eax,tl_img_cy |
810 | imul eax,ecx |
795 | imul eax,ecx |
811 | imul eax,4*3 ;4=icon index 3=rgb |
796 | imul eax,4*3 ;4=icon index 3=rgb |
812 | add ebx,eax |
797 | add ebx,eax |
Line 824... | Line 809... | ||
824 | cmp si,tl_img_cy |
809 | cmp si,tl_img_cy |
825 | jge .crop1 |
810 | jge .crop1 |
826 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
811 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
827 | .crop1: |
812 | .crop1: |
Line 828... | Line 813... | ||
828 | 813 | ||
829 | mcall 7 ;à¨á㥬 ¨ª®ªã ªãàá®à |
814 | mcall SF_PUT_IMAGE ;à¨á㥬 ¨ª®ªã ªãàá®à |
830 | .end_f: |
815 | .end_f: |
831 | ret |
816 | ret |
Line 832... | Line 817... | ||
832 | endp |
817 | endp |
Line 841... | Line 826... | ||
841 | cmp eax,0 |
826 | cmp eax,0 |
842 | jl .end_f ;ªãàá®à 室¨âáï ¢ëè¥ ®ª , ¢ ®¡« á⨠¯à®ªàã祮© áªà®««¨£®¬ |
827 | jl .end_f ;ªãàá®à 室¨âáï ¢ëè¥ ®ª , ¢ ®¡« á⨠¯à®ªàã祮© áªà®««¨£®¬ |
843 | mov ebx,tl_box_left |
828 | mov ebx,tl_box_left |
844 | shl ebx,16 |
829 | shl ebx,16 |
845 | mov bx,tl_img_cx |
830 | mov bx,tl_img_cx |
846 | xor ecx,ecx |
- | |
847 | mov cx,tl_img_cy |
831 | movzx ecx,tl_img_cy |
848 | imul ecx,eax |
832 | imul ecx,eax |
849 | add ecx,tl_box_top |
833 | add ecx,tl_box_top |
850 | add cx,tl_capt_cy |
834 | add cx,tl_capt_cy |
Line 851... | Line 835... | ||
851 | 835 | ||
Line 858... | Line 842... | ||
858 | mov cx,tl_img_cy |
842 | mov cx,tl_img_cy |
859 | cmp si,tl_img_cy |
843 | cmp si,tl_img_cy |
860 | jge @f |
844 | jge @f |
861 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
845 | mov cx,si ;¥á«¨ ªãàá®à ¢¨¤¥ ç áâ¨ç® (¯®¯ « ¨¦îî £à ¨æã) |
862 | @@: |
846 | @@: |
863 | mcall 13,,,tl_col_bkg ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì¨ª á ä®®¢ë¬ 梥⮬ |
847 | mcall SF_DRAW_RECT,,,tl_col_bkg ;à¨á㥬 ¯à®á⮩ ¯àאַ㣮«ì¨ª á ä®®¢ë¬ 梥⮬ |
864 | .end_f: |
848 | .end_f: |
865 | ret |
849 | ret |
866 | endp |
850 | endp |
Line 867... | Line 851... | ||
867 | 851 | ||
Line 884... | Line 868... | ||
884 | ret |
868 | ret |
Line 885... | Line 869... | ||
885 | 869 | ||
886 | ;à¨áã¥â 㧥« á: ª à⨪®©, ¯®¤¯¨áìî, ¨ª®ª®© ®âªàëâ¨ï/§ ªàëâ¨ï ¨ «¨¨ï¬¨ ª த¨â. 㧫ã |
870 | ;à¨áã¥â 㧥« á: ª à⨪®©, ¯®¤¯¨áìî, ¨ª®ª®© ®âªàëâ¨ï/§ ªàëâ¨ï ¨ «¨¨ï¬¨ ª த¨â. 㧫ã |
887 | ;input: |
871 | ;input: |
888 | ; eax = node position (0, ..., max_nodes-scroll_pos) ¥ ¤® tl_box_height/tl_img_cy |
872 | ; eax = node position (0, ..., max_nodes-scroll_pos) ¥ ¤® tl_box_height/tl_img_cy |
889 | ; edx = pointer to some node struct |
873 | ; edx = pointer to node struct |
890 | ; edi = pointer to 'TreeList' struct |
874 | ; edi = pointer to 'TreeList' struct |
891 | ; esi = coord of bottom border |
875 | ; esi = coord of bottom border |
892 | align 4 |
876 | align 4 |
893 | proc tl_draw_node uses eax ebx ecx edx esi |
877 | proc tl_draw_node uses eax ebx ecx edx esi |
894 | mov ebx,1 ;1 - ¬¥áâ® ¯®¤ ªãàá®à |
878 | mov ebx,1 ;1 - ¬¥áâ® ¯®¤ ªãàá®à |
895 | bt tl_style,2 ;tl_list_box_mode |
879 | bt tl_style,2 ;tl_list_box_mode |
896 | jc @f |
880 | jc @f |
897 | inc ebx ;+1 - ¬¥áâ® ¯®¤ § ª +,- |
881 | inc ebx ;+1 - ¬¥áâ® ¯®¤ § ª +,- |
898 | add bl,byte[edx+2] ;¤®¡ ¢«ï¥¬ ã஢¥ì í«¥¬¥â ¤«ï ¥£® ãç¥â ¢ «¥¢®¬ ®âáâ㯥 ¨ª®ª¨ |
882 | add bl,byte[edx+TreeNode.level] ;¤®¡ ¢«ï¥¬ ã஢¥ì í«¥¬¥â ¤«ï ¥£® ãç¥â ¢ «¥¢®¬ ®âáâ㯥 ¨ª®ª¨ |
899 | @@: |
883 | @@: |
900 | imul bx,tl_img_cx |
884 | imul bx,tl_img_cx |
Line 901... | Line 885... | ||
901 | add ebx,tl_box_left |
885 | add ebx,tl_box_left |
902 | 886 | ||
903 | shl ebx,16 |
- | |
904 | mov bx,tl_img_cx |
887 | shl ebx,16 |
905 | xor ecx,ecx |
888 | mov bx,tl_img_cx |
906 | mov cx,tl_img_cy |
889 | movzx ecx,tl_img_cy |
907 | imul ecx,eax |
890 | imul ecx,eax |
908 | add cx,tl_capt_cy |
891 | add cx,tl_capt_cy |
Line 923... | Line 906... | ||
923 | @@: |
906 | @@: |
924 | call tl_draw_node_caption |
907 | call tl_draw_node_caption |
925 | .crop: |
908 | .crop: |
926 | mov esi,ecx ;save ecx |
909 | mov esi,ecx ;save ecx |
Line -... | Line 910... | ||
- | 910 | ||
927 | 911 | push edx |
|
928 | cmp tl_data_img,0 |
912 | cmp tl_data_img,0 |
929 | jne .draw_img_n |
- | |
930 | push edx |
- | |
931 | mov edx,tl_col_txt |
913 | jne .draw_img_n |
932 | mcall 13 ;draw node rect |
- | |
933 | pop edx |
914 | mcall SF_DRAW_RECT,,,tl_col_txt ;draw node rect |
934 | jmp @f |
915 | jmp @f |
935 | .draw_img_n: |
916 | .draw_img_n: |
936 | push ebx edx esi |
- | |
937 | xor esi,esi |
917 | push ebx esi |
938 | mov si,word[edx] ;get icon type |
918 | movzx esi,word[edx+TreeNode.type] ;get icon type |
939 | mov edx,ebx |
919 | mov edx,ebx |
940 | ror ecx,16 |
920 | ror ecx,16 |
941 | mov dx,cx |
921 | mov dx,cx |
942 | mov cx,bx |
922 | mov cx,bx |
Line 945... | Line 925... | ||
945 | imul bx,tl_img_cx |
925 | imul bx,tl_img_cx |
946 | imul bx,tl_img_cy |
926 | imul bx,tl_img_cy |
947 | imul ebx,esi ;esi = icon index |
927 | imul ebx,esi ;esi = icon index |
948 | add ebx,tl_data_img |
928 | add ebx,tl_data_img |
Line 949... | Line 929... | ||
949 | 929 | ||
950 | mcall 7 ;draw node icon '-' |
930 | mcall SF_PUT_IMAGE ;draw node icon '-' |
951 | pop esi edx ebx |
931 | pop esi ebx |
- | 932 | @@: |
|
Line 952... | Line 933... | ||
952 | @@: |
933 | pop edx |
953 | 934 | ||
954 | mov al,byte[edx+2] ;draw minus '-' |
935 | mov al,byte[edx+TreeNode.level] ;draw minus '-' |
Line 955... | Line 936... | ||
955 | mov ecx,tl_data_nodes |
936 | mov ecx,tl_data_nodes |
956 | add ecx,sizeof.TreeList |
937 | add ecx,sizeof.TreeNode |
957 | 938 | ||
958 | mov ah,10 ;get icon index '+' or '-' ? |
939 | mov ah,10 ;get icon index '+' or '-' ? |
959 | cmp byte[edx+3],1 |
940 | cmp byte[edx+TreeNode.close],1 |
Line 960... | Line 941... | ||
960 | jne .close |
941 | jne .close |
Line 972... | Line 953... | ||
972 | 953 | ||
973 | ;à¨áã¥â ¨ª®ª¨ ®âªàë⮣® ¨«¨ § ªàë⮣® 㧫 (®¡ëç® + ¨«¨ -) |
954 | ;à¨áã¥â ¨ª®ª¨ ®âªàë⮣® ¨«¨ § ªàë⮣® 㧫 (®¡ëç® + ¨«¨ -) |
974 | ;input: |
955 | ;input: |
975 | ; al = ã஢¥ì í«¥¬¥â |
956 | ; al = ã஢¥ì í«¥¬¥â |
976 | ; ecx = pointer to 1 node struct |
957 | ; ecx = pointer to 1 node struct |
977 | ; edx = pointer to some node struct |
958 | ; edx = pointer to node struct |
978 | ;... |
959 | ;... |
979 | align 4 |
960 | align 4 |
980 | proc tl_draw_node_icon_opn_clo uses eax ebx ecx edx esi |
961 | proc tl_draw_node_icon_opn_clo uses eax ebx ecx edx esi |
981 | inc al |
962 | inc al |
982 | call tl_iterat_next_all ;get next visible item |
963 | call tl_iterat_next_all ;get next visible item |
983 | cmp edx,ecx |
964 | cmp edx,ecx |
984 | jle @f |
965 | jle @f |
985 | mov ecx,esi ;load ecx |
966 | mov ecx,esi ;load ecx |
986 | cmp al,byte[edx+2] |
967 | cmp al,byte[edx+TreeNode.level] |
987 | jne @f |
968 | jne @f |
988 | ror ebx,16 |
969 | ror ebx,16 |
989 | sub bx,tl_img_cx |
970 | sub bx,tl_img_cx |
990 | ror ebx,16 |
971 | ror ebx,16 |
991 | cmp tl_data_img_sys,0 |
972 | cmp tl_data_img_sys,0 |
992 | jne .draw_img_s |
973 | jne .draw_img_s |
993 | mcall 13,,,tl_col_txt ;draw minus rect, if not system icons |
974 | mcall SF_DRAW_RECT,,,tl_col_txt ;draw minus rect, if not system icons |
994 | jmp @f |
975 | jmp @f |
995 | .draw_img_s: |
976 | .draw_img_s: |
996 | mov ecx,esi ;load ecx |
977 | mov ecx,esi ;load ecx |
997 | mov edx,ebx |
978 | mov edx,ebx |
Line 1004... | Line 985... | ||
1004 | imul bx,tl_img_cy |
985 | imul bx,tl_img_cy |
1005 | shr eax,8 |
986 | shr eax,8 |
1006 | and eax,0xff |
987 | and eax,0xff |
1007 | imul ebx,eax ;eax = icon index |
988 | imul ebx,eax ;eax = icon index |
1008 | add ebx,tl_data_img_sys |
989 | add ebx,tl_data_img_sys |
1009 | mcall 7 ;draw minus icon '-' |
990 | mcall SF_PUT_IMAGE ;draw minus icon '-' |
1010 | @@: |
991 | @@: |
1011 | ret |
992 | ret |
1012 | endp |
993 | endp |
Line 1013... | Line 994... | ||
1013 | 994 | ||
1014 | ;à¨á®¢ ¨¥ «¨¨¨ ª த¨â¥«ì᪮¬ã í«¥¬¥âã |
995 | ;à¨á®¢ ¨¥ «¨¨¨ ª த¨â¥«ì᪮¬ã í«¥¬¥âã |
1015 | ;input: |
996 | ;input: |
1016 | ; al = ã஢¥ì í«¥¬¥â |
997 | ; al = ã஢¥ì í«¥¬¥â |
1017 | ; ecx = pointer to 1 node struct |
998 | ; ecx = pointer to 1 node struct |
1018 | ; edx = pointer to some node struct |
999 | ; edx = pointer to node struct |
1019 | ;... |
1000 | ;... |
1020 | align 4 |
1001 | align 4 |
1021 | tl_draw_node_icon_par_lin: |
1002 | tl_draw_node_icon_par_lin: |
1022 | cmp byte[edx+3],1 |
1003 | cmp byte[edx+TreeNode.close],1 |
- | 1004 | je .close |
|
- | 1005 | or al,al |
|
1023 | je .close |
1006 | jz .close |
1024 | push eax ebx ecx edx esi |
- | |
1025 | cmp al,0 |
- | |
1026 | je @f |
1007 | push eax ebx ecx edx esi |
1027 | call tl_iterat_next_all ;get next visible item |
1008 | call tl_iterat_next_all ;get next visible item |
1028 | cmp edx,ecx |
1009 | cmp edx,ecx |
1029 | jle .line3 ;if end of list |
1010 | jle .line3 ;if end of list |
1030 | cmp al,byte[edx+2] |
1011 | cmp al,byte[edx+TreeNode.level] |
1031 | jne .line3 ;jg ??? |
1012 | jne .line3 ;jg ??? |
1032 | mov eax,3 ;line in middle element |
1013 | mov eax,3 ;line in middle element |
1033 | jmp .line2 |
1014 | jmp .line2 |
1034 | .line3: |
1015 | .line3: |
Line 1039... | Line 1020... | ||
1039 | ror ebx,16 |
1020 | ror ebx,16 |
1040 | sub bx,tl_img_cx |
1021 | sub bx,tl_img_cx |
1041 | ror ebx,16 |
1022 | ror ebx,16 |
1042 | cmp tl_data_img_sys,0 |
1023 | cmp tl_data_img_sys,0 |
1043 | jne .draw_img_s |
1024 | jne .draw_img_s |
1044 | mcall 13,,,tl_col_txt ;draw minus rect, if not system icons |
1025 | mcall SF_DRAW_RECT,,,tl_col_txt ;draw minus rect, if not system icons |
1045 | jmp @f |
1026 | jmp @f |
1046 | .draw_img_s: |
1027 | .draw_img_s: |
1047 | mov edx,ebx |
1028 | mov edx,ebx |
1048 | ror ecx,16 |
1029 | ror ecx,16 |
1049 | mov dx,cx |
1030 | mov dx,cx |
Line 1053... | Line 1034... | ||
1053 | imul bx,tl_img_cx |
1034 | imul bx,tl_img_cx |
1054 | imul bx,tl_img_cy |
1035 | imul bx,tl_img_cy |
Line 1055... | Line 1036... | ||
1055 | 1036 | ||
1056 | imul ebx,eax ;eax = icon index |
1037 | imul ebx,eax ;eax = icon index |
1057 | add ebx,tl_data_img_sys |
1038 | add ebx,tl_data_img_sys |
1058 | mcall 7 ;draw line icon |
1039 | mcall SF_PUT_IMAGE ;draw line icon |
1059 | @@: |
1040 | @@: |
1060 | pop esi edx ecx ebx eax |
1041 | pop esi edx ecx ebx eax |
1061 | .close: |
1042 | .close: |
Line 1062... | Line 1043... | ||
1062 | ret |
1043 | ret |
1063 | 1044 | ||
1064 | 1045 | ||
1065 | ;input: |
1046 | ;input: |
1066 | ; al = ã஢¥ì í«¥¬¥â |
1047 | ; al = ã஢¥ì í«¥¬¥â |
1067 | ; ebx = (node.left shl 16) + tl_img_cx |
1048 | ; ebx = (node.left shl 16) + tl_img_cx |
1068 | ; ecx = pointer to 1 node struct |
1049 | ; ecx = pointer to 1 node struct |
1069 | ; edx = pointer to some node struct |
1050 | ; edx = pointer to node struct |
1070 | ; edi = pointer to 'TreeList' struct |
1051 | ; edi = pointer to 'TreeList' struct |
1071 | align 4 |
1052 | align 4 |
1072 | proc tl_draw_node_icon_par_lin_up uses eax ebx ecx edx esi |
1053 | proc tl_draw_node_icon_par_lin_up uses eax ebx ecx edx esi |
1073 | cmp tl_data_img_sys,0 ;if not image |
1054 | cmp tl_data_img_sys,0 ;if not image |
1074 | je @f |
1055 | je @f |
1075 | cmp al,0 |
1056 | or al,al |
1076 | je @f |
1057 | jz @f |
1077 | xor esi,esi ;¢ si ¡ã¤¥¬ áç¨âë¢ âì ª®«-¢® ¨ª®®ª, ã¦ëå ¤«ï ¯à®à¨á®¢ª¨ «¨¨¨ |
1058 | xor esi,esi ;¢ si ¡ã¤¥¬ áç¨âë¢ âì ª®«-¢® ¨ª®®ª, ã¦ëå ¤«ï ¯à®à¨á®¢ª¨ «¨¨¨ |
1078 | ;--- 横« ¤«ï ¢ëç¨á«¥¨ï ª®««¨ç¥á⢠¢¥à⨪ «ìëå «¨¨© --- |
1059 | ;--- 横« ¤«ï ¢ëç¨á«¥¨ï ª®««¨ç¥á⢠¢¥à⨪ «ìëå «¨¨© --- |
1079 | .cycle0: |
1060 | .cycle0: |
Line 1080... | Line 1061... | ||
1080 | call tl_iterat_perv ;get perv visible item |
1061 | call tl_iterat_perv ;get perv visible item |
1081 | cmp edx,ecx |
1062 | cmp edx,ecx |
1082 | jle .cycle1 ;if begin of list |
1063 | jle .cycle1 ;if begin of list |
1083 | 1064 | ||
1084 | cmp byte[edx+2],al |
1065 | cmp byte[edx+TreeNode.level],al |
1085 | jle .cycle0end ;ã஢¥ì ¢¥à奣® í«¥¬¥â ¥ âॡã¥â ¯à®à¨á®¢ª¨ |
1066 | jle .cycle0end ;ã஢¥ì ¢¥à奣® í«¥¬¥â ¥ âॡã¥â ¯à®à¨á®¢ª¨ |
1086 | inc si |
1067 | inc si |
1087 | jmp .cycle0 |
1068 | jmp .cycle0 |
Line 1088... | Line 1069... | ||
1088 | .cycle0end: |
1069 | .cycle0end: |
1089 | cmp si,0 ;si = ª®«-¢® ¨ª®®ª «¨¨¨ ª®â®àë¥ ã¦® à¨á®¢ âì ᢥàåã |
1070 | or si,si ;si = ª®«-¢® ¨ª®®ª «¨¨¨ ª®â®àë¥ ã¦® à¨á®¢ âì ᢥàåã |
Line 1108... | Line 1089... | ||
1108 | imul bx,tl_img_cy |
1089 | imul bx,tl_img_cy |
1109 | add ebx,tl_data_img_sys |
1090 | add ebx,tl_data_img_sys |
Line 1110... | Line 1091... | ||
1110 | 1091 | ||
1111 | add esi,tl_box_top |
1092 | add esi,tl_box_top |
1112 | add si,tl_capt_cy ;si = ¢¥àåïï £à ¨æ ®ª |
1093 | add si,tl_capt_cy ;si = ¢¥àåïï £à ¨æ ®ª |
1113 | mov eax,7 |
1094 | mov eax,SF_PUT_IMAGE |
1114 | ;--- 横« ¤«ï à¨á®¢ ¨ï ¢¥à⨪ «ì®© «¨¨¨ --- |
1095 | ;--- 横« ¤«ï à¨á®¢ ¨ï ¢¥à⨪ «ì®© «¨¨¨ --- |
1115 | .cycle1: |
1096 | .cycle1: |
1116 | sub dx,tl_img_cy ;¯®¤¨¬ ¥¬ ª®®à¤¨ âã y ¢¢¥àå |
1097 | sub dx,tl_img_cy ;¯®¤¨¬ ¥¬ ª®®à¤¨ âã y ¢¢¥àå |
1117 | cmp dx,si |
1098 | cmp dx,si |
Line 1132... | Line 1113... | ||
1132 | align 4 |
1113 | align 4 |
1133 | tl_get_rows_count: |
1114 | tl_get_rows_count: |
1134 | push ecx edx |
1115 | push ecx edx |
1135 | mov eax,tl_box_height |
1116 | mov eax,tl_box_height |
1136 | sub ax,tl_capt_cy |
1117 | sub ax,tl_capt_cy |
1137 | xor ecx,ecx |
- | |
1138 | mov cx,tl_img_cy |
1118 | movzx ecx,tl_img_cy |
1139 | xor edx,edx |
1119 | xor edx,edx |
1140 | div ecx |
1120 | div ecx |
1141 | pop edx ecx |
1121 | pop edx ecx |
1142 | ret |
1122 | ret |
Line 1143... | Line 1123... | ||
1143 | 1123 | ||
1144 | ;input: |
1124 | ;input: |
1145 | ; eax = node position |
1125 | ; eax = node position |
1146 | ; ebx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [img_cx] |
1126 | ; ebx = [ª®®à¤¨ â ¯® ®á¨ x]*65536 + [img_cx] |
1147 | ; ecx = [ª®®à¤¨ â ¯® ®á¨ y]*65536 + [img_cy] |
1127 | ; ecx = [ª®®à¤¨ â ¯® ®á¨ y]*65536 + [img_cy] |
1148 | ; edx = pointer to some node struct |
1128 | ; edx = pointer to node struct |
1149 | ; edi = pointer to TreeInfo struct |
1129 | ; edi = pointer to TreeInfo struct |
1150 | align 4 |
1130 | align 4 |
1151 | proc tl_draw_node_caption uses ebx ecx edx esi |
1131 | proc tl_draw_node_caption uses ebx ecx edx esi |
1152 | xor esi,esi |
1132 | xor esi,esi |
Line 1172... | Line 1152... | ||
1172 | mov ebx,ecx |
1152 | mov ebx,ecx |
1173 | add bx,tl_img_cy ;¢ëà ¢¨¢¨¨¥ ¯® ¨¦¥© £à ¨æ¥ ¨ª®ª¨ |
1153 | add bx,tl_img_cy ;¢ëà ¢¨¢¨¨¥ ¯® ¨¦¥© £à ¨æ¥ ¨ª®ª¨ |
1174 | sub bx,9 ;®â¨¬ ¥¬ ¢ëá®âã ⥪áâ |
1154 | sub bx,9 ;®â¨¬ ¥¬ ¢ëá®âã ⥪áâ |
1175 | mov ecx,tl_col_txt |
1155 | mov ecx,tl_col_txt |
1176 | and ecx,0xffffff |
1156 | and ecx,0xffffff |
1177 | mcall 4 |
1157 | mcall SF_DRAW_TEXT |
1178 | @@: |
1158 | @@: |
1179 | ret |
1159 | ret |
1180 | endp |
1160 | endp |
Line 1181... | Line 1161... | ||
1181 | 1161 | ||
Line 1226... | Line 1206... | ||
1226 | ; tlist - 㪠§ ⥫ì áâàãªâãàã «¨áâ |
1206 | ; tlist - 㪠§ ⥫ì áâàãªâãàã «¨áâ |
1227 | ; n_opt - ®¯æ¨¨ ¤®¡ ¢«¥¨ï |
1207 | ; n_opt - ®¯æ¨¨ ¤®¡ ¢«¥¨ï |
1228 | ; n_info - 㪠§ â¥«ì ¤®¡ ¢«ï¥¬ë¥ ¤ ë¥ |
1208 | ; n_info - 㪠§ â¥«ì ¤®¡ ¢«ï¥¬ë¥ ¤ ë¥ |
1229 | align 4 |
1209 | align 4 |
1230 | proc tl_node_add uses eax ebx ecx edx edi, tlist:dword, n_opt:dword, n_info:dword |
1210 | proc tl_node_add uses eax ebx ecx edx edi, tlist:dword, n_opt:dword, n_info:dword |
1231 | mov edi,dword[tlist] |
1211 | mov edi,[tlist] |
Line 1232... | Line 1212... | ||
1232 | 1212 | ||
Line 1233... | Line 1213... | ||
1233 | call tl_info_set_undo |
1213 | call tl_info_set_undo |
1234 | 1214 | ||
1235 | mov ebx,sizeof.TreeList |
1215 | mov ebx,sizeof.TreeNode |
1236 | imul ebx,tl_info_max_count |
1216 | imul ebx,tl_info_max_count |
1237 | add ebx,tl_data_nodes |
1217 | add ebx,tl_data_nodes |
1238 | ;-- |
1218 | ;-- |
1239 | call tl_get_cur_node_index ;eax=po_t |
1219 | call tl_get_cur_node_index ;eax=po_t |
1240 | imul eax,sizeof.TreeList |
1220 | imul eax,sizeof.TreeNode |
1241 | add eax,tl_data_nodes |
1221 | add eax,tl_data_nodes |
1242 | mov edx,eax |
1222 | mov edx,eax |
1243 | call tl_move_perv |
1223 | call tl_move_perv |
1244 | call tl_get_node_index ;eax = index of pointer [edx] |
1224 | call tl_get_node_index ;eax = index of pointer [edx] |
1245 | ;-- |
1225 | ;-- |
1246 | mov edx,sizeof.TreeList |
1226 | mov edx,sizeof.TreeNode |
1247 | shl edx,1 |
1227 | shl edx,1 |
1248 | add edx,tl_data_nodes |
1228 | add edx,tl_data_nodes |
1249 | @@: ;for(i=2;i |
1229 | @@: ;for(i=2;i |
1250 | cmp dword [edx+12],0 |
1230 | cmp dword[edx+TreeNode.t_create],0 |
1251 | jne .u0 |
1231 | jne .u0 |
Line 1252... | Line 1232... | ||
1252 | cmp dword [edx+16],0 |
1232 | cmp dword[edx+TreeNode.t_delete],0 |
1253 | jne .u0 |
1233 | jne .u0 |
1254 | 1234 | ||
1255 | inc tl_ch_tim |
1235 | inc tl_ch_tim |
1256 | mov ecx,dword[n_opt] |
1236 | mov ecx,dword[n_opt] |
1257 | ror ecx,16 ;cx = type |
1237 | ror ecx,16 ;cx = type |
1258 | mov word[edx],cx |
1238 | mov word[edx+TreeNode.type],cx |
1259 | rol ecx,8 ;cl = close|open |
1239 | rol ecx,8 ;cl = close|open |
1260 | mov byte[edx+3],cl ;node[i].clo |
1240 | mov byte[edx+TreeNode.close],cl ;node[i].clo |
1261 | mov byte[edx+2],0 ;node[i].lev=0 |
1241 | mov byte[edx+TreeNode.level],0 ;node[i].lev=0 |
1262 | bt tl_style,2 ;tl_list_box_mode |
1242 | bt tl_style,2 ;tl_list_box_mode |
1263 | jc .l_box_m |
1243 | jc .l_box_m |
1264 | mov cl,byte[n_opt] |
1244 | mov cl,byte[n_opt] |
1265 | mov byte[edx+2],cl ;node[i].lev |
1245 | mov byte[edx+TreeNode.level],cl ;node[i].lev |
1266 | .l_box_m: |
1246 | .l_box_m: |
1267 | push tl_ch_tim ;node[i].tc=ch_tim; |
1247 | push tl_ch_tim ;node[i].tc=ch_tim; |
1268 | pop dword[edx+12] |
1248 | pop dword[edx+TreeNode.t_create] |
1269 | mov [edx+4],eax ;node[i].perv=po_t; |
1249 | mov [edx+TreeNode.perv],eax ;node[i].perv=po_t; |
1270 | ;*** copy node data *** |
1250 | ;*** copy node data *** |
1271 | push esi |
1251 | push esi |
Line 1281... | Line 1261... | ||
1281 | mov edi,dword[n_info] ;pointer to node data |
1261 | mov edi,dword[n_info] ;pointer to node data |
1282 | xchg edi,esi |
1262 | xchg edi,esi |
1283 | rep movsb |
1263 | rep movsb |
Line 1284... | Line 1264... | ||
1284 | 1264 | ||
1285 | mov esi,edi |
1265 | mov esi,edi |
1286 | mov edi,dword[tlist] ;restore edi |
1266 | mov edi,[tlist] ;restore edi |
1287 | mov cx,tl_info_capt_offs |
1267 | mov cx,tl_info_capt_offs |
1288 | cmp cx,tl_info_size |
1268 | cmp cx,tl_info_size |
1289 | jge .no_text_data |
1269 | jge .no_text_data |
1290 | cmp tl_info_capt_len,0 ;¯à®¢¥à塞 ¥áâì «¨ ®£à ¨ç¥¨¥ ¤«¨ã áâப¨ |
1270 | cmp tl_info_capt_len,0 ;¯à®¢¥à塞 ¥áâì «¨ ®£à ¨ç¥¨¥ ¤«¨ã áâப¨ |
Line 1299... | Line 1279... | ||
1299 | mov byte[esi],0 |
1279 | mov byte[esi],0 |
1300 | .no_text_data: |
1280 | .no_text_data: |
1301 | pop esi ;restore esi |
1281 | pop esi ;restore esi |
Line 1302... | Line 1282... | ||
1302 | 1282 | ||
1303 | mov ecx,eax |
1283 | mov ecx,eax |
1304 | imul ecx,sizeof.TreeList |
1284 | imul ecx,sizeof.TreeNode |
1305 | add ecx,tl_data_nodes ; *** ecx = node[po_t] *** |
1285 | add ecx,tl_data_nodes ; *** ecx = node[po_t] *** |
1306 | add ecx,8 ; *** ecx = node[po_t].next *** |
1286 | add ecx,TreeNode.next ; *** ecx = node[po_t].next *** |
1307 | push dword[ecx] ;node[i].next=node[po_t].next; |
1287 | push dword[ecx] ;node[i].next=node[po_t].next; |
Line 1308... | Line 1288... | ||
1308 | pop dword[edx+8] |
1288 | pop dword[edx+TreeNode.next] |
1309 | 1289 | ||
1310 | call tl_get_node_index ;*** eax = i *** |
1290 | call tl_get_node_index ;*** eax = i *** |
1311 | cmp eax,tl_info_max_count |
1291 | cmp eax,tl_info_max_count |
1312 | jge .u0 |
1292 | jge .u0 |
1313 | mov [ecx],eax ;node[po_t].next=i; // áá뫪¨ ¯¥à¥ ¯à ¢«ï¥¬ |
1293 | mov [ecx],eax ;node[po_t].next=i; // áá뫪¨ ¯¥à¥ ¯à ¢«ï¥¬ |
1314 | mov ecx,[edx+8] ; *** ecx = node[i].next *** |
1294 | mov ecx,[edx+TreeNode.next] ; *** ecx = node[i].next *** |
1315 | imul ecx,sizeof.TreeList |
1295 | imul ecx,sizeof.TreeNode |
Line 1316... | Line 1296... | ||
1316 | add ecx,tl_data_nodes ; *** ecx = node[node[i].next] *** |
1296 | add ecx,tl_data_nodes ; *** ecx = node[node[i].next] *** |
1317 | mov [ecx+4],eax ;node[node[i].next].perv=i; |
1297 | mov [ecx+TreeNode.perv],eax ;node[node[i].next].perv=i; |
1318 | 1298 | ||
1319 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1299 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1320 | jmp @f |
1300 | jmp @f |
1321 | .u0: |
1301 | .u0: |
1322 | add edx,sizeof.TreeList |
1302 | add edx,sizeof.TreeNode |
1323 | cmp edx,ebx ;enf of node memory ? |
1303 | cmp edx,ebx ;enf of node memory ? |
1324 | jle @b |
1304 | jle @b |
Line 1349... | Line 1329... | ||
1349 | 1329 | ||
1350 | ;input: |
1330 | ;input: |
1351 | ;n_info - pointer to node info |
1331 | ;n_info - pointer to node info |
1352 | align 4 |
1332 | align 4 |
1353 | proc tl_node_set_data uses eax ecx edx edi esi, tlist:dword, n_info:dword |
1333 | proc tl_node_set_data uses eax ecx edx edi esi, tlist:dword, n_info:dword |
1354 | mov edi,dword[tlist] |
1334 | mov edi,[tlist] |
1355 | call tl_get_cur_node_index ;eax=po_t |
1335 | call tl_get_cur_node_index ;eax=po_t |
1356 | cmp eax,2 |
1336 | cmp eax,2 |
1357 | jl @f |
1337 | jl @f |
1358 | xor ecx,ecx |
1338 | xor ecx,ecx |
Line 1362... | Line 1342... | ||
1362 | mov edi,eax |
1342 | mov edi,eax |
1363 | mov esi,dword[n_info] ;pointer to node data |
1343 | mov esi,dword[n_info] ;pointer to node data |
1364 | rep movsb |
1344 | rep movsb |
Line 1365... | Line 1345... | ||
1365 | 1345 | ||
1366 | mov esi,edi |
1346 | mov esi,edi |
1367 | mov edi,dword[tlist] ;restore edi |
1347 | mov edi,[tlist] ;restore edi |
1368 | mov cx,tl_info_capt_offs |
1348 | mov cx,tl_info_capt_offs |
1369 | cmp cx,tl_info_size |
1349 | cmp cx,tl_info_size |
1370 | jge .no_text_data |
1350 | jge .no_text_data |
1371 | mov ax,tl_info_capt_len ;¯à®¢¥à塞 ¥áâì «¨ ®£à ¨ç¥¨¥ ¤«¨ã ⥪áâ |
1351 | mov ax,tl_info_capt_len ;¯à®¢¥à塞 ¥áâì «¨ ®£à ¨ç¥¨¥ ¤«¨ã ⥪áâ |
1372 | cmp ax,0 |
1352 | or ax,ax |
1373 | je .no_limit |
1353 | jz .no_limit |
1374 | add cx,ax ;cx = tl_info_capt_offs + tl_info_capt_len |
1354 | add cx,ax ;cx = tl_info_capt_offs + tl_info_capt_len |
1375 | and ecx,0xffff |
1355 | and ecx,0xffff |
1376 | xor eax,eax |
1356 | xor eax,eax |
1377 | mov ax,tl_info_size |
1357 | mov ax,tl_info_size |
Line 1392... | Line 1372... | ||
1392 | ; tlist - pointer to 'TreeList' struct |
1372 | ; tlist - pointer to 'TreeList' struct |
1393 | ;output: |
1373 | ;output: |
1394 | ; eax - pointer to node data |
1374 | ; eax - pointer to node data |
1395 | align 4 |
1375 | align 4 |
1396 | proc tl_node_get_data uses ecx edi, tlist:dword |
1376 | proc tl_node_get_data uses ecx edi, tlist:dword |
1397 | mov edi,dword[tlist] |
1377 | mov edi,[tlist] |
1398 | call tl_get_cur_node_index ;eax=po_t |
1378 | call tl_get_cur_node_index ;eax=po_t |
1399 | cmp eax,2 |
1379 | cmp eax,2 |
1400 | jl @f |
1380 | jl @f |
1401 | movzx ecx,tl_info_size |
1381 | movzx ecx,tl_info_size |
1402 | imul eax,ecx |
1382 | imul eax,ecx |
Line 1414... | Line 1394... | ||
1414 | ; node_ind - node index |
1394 | ; node_ind - node index |
1415 | ;output: |
1395 | ;output: |
1416 | ; eax - pointer to node info |
1396 | ; eax - pointer to node info |
1417 | align 4 |
1397 | align 4 |
1418 | proc tl_node_poi_get_info uses ebx ecx edx edi, tlist:dword, node_ind:dword |
1398 | proc tl_node_poi_get_info uses ebx ecx edx edi, tlist:dword, node_ind:dword |
1419 | mov edi,dword[tlist] |
1399 | mov edi,[tlist] |
1420 | mov ebx,dword[node_ind] |
1400 | mov ebx,dword[node_ind] |
Line 1421... | Line 1401... | ||
1421 | 1401 | ||
1422 | ;cycle to nodes |
1402 | ;cycle to nodes |
1423 | mov edx,tl_data_nodes |
1403 | mov edx,tl_data_nodes |
1424 | mov ecx,edx |
1404 | mov ecx,edx |
1425 | add ecx,sizeof.TreeList |
1405 | add ecx,sizeof.TreeNode |
1426 | @@: |
1406 | @@: |
1427 | call tl_iterat_next_all |
1407 | call tl_iterat_next_all |
1428 | cmp edx,ecx |
1408 | cmp edx,ecx |
1429 | jle @f |
1409 | jle @f |
Line 1444... | Line 1424... | ||
1444 | ; node_p - node param struct |
1424 | ; node_p - node param struct |
1445 | ;output: |
1425 | ;output: |
1446 | ; eax - pointer to next node struct |
1426 | ; eax - pointer to next node struct |
1447 | align 4 |
1427 | align 4 |
1448 | proc tl_node_poi_get_next_info uses ecx edx edi, tlist:dword, node_p:dword |
1428 | proc tl_node_poi_get_next_info uses ecx edx edi, tlist:dword, node_p:dword |
1449 | mov edi,dword[tlist] |
1429 | mov edi,[tlist] |
1450 | mov edx,dword[node_p] |
1430 | mov edx,dword[node_p] |
Line 1451... | Line 1431... | ||
1451 | 1431 | ||
1452 | mov ecx,tl_data_nodes |
1432 | mov ecx,tl_data_nodes |
Line 1453... | Line 1433... | ||
1453 | add ecx,sizeof.TreeList |
1433 | add ecx,sizeof.TreeNode |
1454 | 1434 | ||
1455 | call tl_iterat_next_all |
1435 | call tl_iterat_next_all |
1456 | cmp edx,ecx |
1436 | cmp edx,ecx |
Line 1467... | Line 1447... | ||
1467 | ; node_p - node param struct |
1447 | ; node_p - node param struct |
1468 | ;output: |
1448 | ;output: |
1469 | ; eax - pointer |
1449 | ; eax - pointer |
1470 | align 4 |
1450 | align 4 |
1471 | proc tl_node_poi_get_data uses ecx edx edi, tlist:dword, node_p:dword |
1451 | proc tl_node_poi_get_data uses ecx edx edi, tlist:dword, node_p:dword |
1472 | mov edi,dword[tlist] |
1452 | mov edi,[tlist] |
1473 | mov edx,dword[node_p] |
1453 | mov edx,dword[node_p] |
Line 1474... | Line 1454... | ||
1474 | 1454 | ||
1475 | call tl_get_node_index ;eax = node index |
1455 | call tl_get_node_index ;eax = node index |
1476 | cmp eax,2 |
1456 | cmp eax,2 |
Line 1495... | Line 1475... | ||
1495 | proc tl_get_cur_node_index uses ecx edx |
1475 | proc tl_get_cur_node_index uses ecx edx |
1496 | ;cycle to nodes |
1476 | ;cycle to nodes |
1497 | xor eax,eax |
1477 | xor eax,eax |
1498 | mov edx,tl_data_nodes |
1478 | mov edx,tl_data_nodes |
1499 | mov ecx,edx |
1479 | mov ecx,edx |
1500 | add ecx,sizeof.TreeList |
1480 | add ecx,sizeof.TreeNode |
1501 | @@: |
1481 | @@: |
1502 | call tl_iterat_next |
1482 | call tl_iterat_next |
1503 | cmp edx,ecx |
1483 | cmp edx,ecx |
1504 | jle @f |
1484 | jle @f |
1505 | cmp eax,tl_cur_pos |
1485 | cmp eax,tl_cur_pos |
Line 1508... | Line 1488... | ||
1508 | jmp @b |
1488 | jmp @b |
1509 | @@: |
1489 | @@: |
1510 | mov eax,edx |
1490 | mov eax,edx |
1511 | sub eax,tl_data_nodes |
1491 | sub eax,tl_data_nodes |
1512 | xor edx,edx |
1492 | xor edx,edx |
1513 | mov ecx,sizeof.TreeList |
1493 | mov ecx,sizeof.TreeNode |
1514 | div ecx |
1494 | div ecx |
1515 | ret |
1495 | ret |
1516 | endp |
1496 | endp |
Line 1517... | Line 1497... | ||
1517 | 1497 | ||
Line 1525... | Line 1505... | ||
1525 | tl_get_node_index: |
1505 | tl_get_node_index: |
1526 | push ecx edx |
1506 | push ecx edx |
1527 | mov eax,edx |
1507 | mov eax,edx |
1528 | sub eax,tl_data_nodes |
1508 | sub eax,tl_data_nodes |
1529 | xor edx,edx |
1509 | xor edx,edx |
1530 | mov ecx,sizeof.TreeList |
1510 | mov ecx,sizeof.TreeNode |
1531 | div ecx |
1511 | div ecx |
1532 | pop edx ecx |
1512 | pop edx ecx |
1533 | ret |
1513 | ret |
Line 1534... | Line 1514... | ||
1534 | 1514 | ||
1535 | ;㤠«¨âì 㧥« |
1515 | ;㤠«¨âì 㧥« |
1536 | align 4 |
1516 | align 4 |
1537 | proc tl_node_delete uses eax edx edi, tlist:dword |
1517 | proc tl_node_delete uses eax edx edi, tlist:dword |
1538 | mov edi,dword[tlist] |
1518 | mov edi,[tlist] |
1539 | call tl_get_cur_node_index ;eax=po_t |
1519 | call tl_get_cur_node_index ;eax=po_t |
1540 | cmp eax,2 |
1520 | cmp eax,2 |
1541 | jl @f |
1521 | jl @f |
1542 | imul eax,sizeof.TreeList |
1522 | imul eax,sizeof.TreeNode |
1543 | add eax,tl_data_nodes |
1523 | add eax,tl_data_nodes |
1544 | mov edx,eax |
1524 | mov edx,eax |
1545 | inc tl_ch_tim |
1525 | inc tl_ch_tim |
1546 | mov eax,tl_ch_tim |
1526 | mov eax,tl_ch_tim |
1547 | mov dword[edx+16],eax |
1527 | mov dword[edx+TreeNode.t_delete],eax |
1548 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1528 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1549 | @@: |
1529 | @@: |
1550 | ret |
1530 | ret |
Line 1551... | Line 1531... | ||
1551 | endp |
1531 | endp |
1552 | 1532 | ||
1553 | ;¯®áâ ¢¨âì ªãàá®à ¯¥à¢ë© 㧥« |
1533 | ;¯®áâ ¢¨âì ªãàá®à ¯¥à¢ë© 㧥« |
1554 | align 4 |
1534 | align 4 |
1555 | proc tl_cur_beg uses edi, tlist:dword |
1535 | proc tl_cur_beg uses edi, tlist:dword |
1556 | mov edi,dword[tlist] |
1536 | mov edi,[tlist] |
1557 | mov tl_cur_pos,0 |
1537 | mov tl_cur_pos,0 |
1558 | cmp tl_p_scroll,0 |
1538 | cmp tl_p_scroll,0 |
1559 | je @f |
1539 | je @f |
Line 1565... | Line 1545... | ||
1565 | endp |
1545 | endp |
Line 1566... | Line 1546... | ||
1566 | 1546 | ||
1567 | ;¯¥à¥¥á⨠ªãàá®à 1 ¯®§¨æ¨î ¨¦¥ |
1547 | ;¯¥à¥¥á⨠ªãàá®à 1 ¯®§¨æ¨î ¨¦¥ |
1568 | align 4 |
1548 | align 4 |
1569 | proc tl_cur_next uses eax ebx edi esi, tlist:dword |
1549 | proc tl_cur_next uses eax ebx edi esi, tlist:dword |
1570 | mov edi,dword[tlist] |
1550 | mov edi,[tlist] |
1571 | call tl_get_node_count ;eax = node count |
1551 | call tl_get_node_count ;eax = node count |
1572 | cmp tl_cur_pos,eax |
1552 | cmp tl_cur_pos,eax |
1573 | jge .no_redraw |
1553 | jge .no_redraw |
1574 | mov esi,tl_box_top |
1554 | mov esi,tl_box_top |
Line 1586... | Line 1566... | ||
1586 | inc dword[ebx+sb_offs_position] |
1566 | inc dword[ebx+sb_offs_position] |
1587 | stdcall scroll_bar_vertical.draw,ebx |
1567 | stdcall scroll_bar_vertical.draw,ebx |
1588 | stdcall tl_draw,dword[tlist] ;¯®« ï ¯¥à¥à¨á®¢ª ®ª |
1568 | stdcall tl_draw,dword[tlist] ;¯®« ï ¯¥à¥à¨á®¢ª ®ª |
1589 | jmp .no_redraw |
1569 | jmp .no_redraw |
1590 | @@: |
1570 | @@: |
1591 | mov edi,dword[tlist] ;restore edi |
1571 | mov edi,[tlist] ;restore edi |
1592 | call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
1572 | call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
1593 | call tl_draw_caption_cur_pos |
1573 | call tl_draw_caption_cur_pos |
1594 | .no_redraw: |
1574 | .no_redraw: |
1595 | ret |
1575 | ret |
1596 | endp |
1576 | endp |
Line 1605... | Line 1585... | ||
1605 | push ecx edx |
1585 | push ecx edx |
1606 | ;cycle to nodes |
1586 | ;cycle to nodes |
1607 | xor eax,eax |
1587 | xor eax,eax |
1608 | mov edx,tl_data_nodes |
1588 | mov edx,tl_data_nodes |
1609 | mov ecx,edx |
1589 | mov ecx,edx |
1610 | add ecx,sizeof.TreeList |
1590 | add ecx,sizeof.TreeNode |
1611 | @@: |
1591 | @@: |
1612 | call tl_iterat_next |
1592 | call tl_iterat_next |
1613 | cmp edx,ecx |
1593 | cmp edx,ecx |
1614 | jle @f |
1594 | jle @f |
1615 | inc eax |
1595 | inc eax |
Line 1628... | Line 1608... | ||
1628 | push ecx edx |
1608 | push ecx edx |
1629 | ;cycle to nodes |
1609 | ;cycle to nodes |
1630 | xor eax,eax |
1610 | xor eax,eax |
1631 | mov edx,tl_data_nodes |
1611 | mov edx,tl_data_nodes |
1632 | mov ecx,edx |
1612 | mov ecx,edx |
1633 | add ecx,sizeof.TreeList |
1613 | add ecx,sizeof.TreeNode |
1634 | @@: |
1614 | @@: |
1635 | call tl_iterat_next_all |
1615 | call tl_iterat_next_all |
1636 | cmp edx,ecx |
1616 | cmp edx,ecx |
1637 | jle @f |
1617 | jle @f |
1638 | inc eax |
1618 | inc eax |
Line 1642... | Line 1622... | ||
1642 | ret |
1622 | ret |
Line 1643... | Line 1623... | ||
1643 | 1623 | ||
1644 | ;¯¥à¥¥á⨠ªãàá®à 1 ¯®§¨æ¨î ¢ëè¥ |
1624 | ;¯¥à¥¥á⨠ªãàá®à 1 ¯®§¨æ¨î ¢ëè¥ |
1645 | align 4 |
1625 | align 4 |
1646 | proc tl_cur_perv uses eax edi esi, tlist:dword |
1626 | proc tl_cur_perv uses eax edi esi, tlist:dword |
1647 | mov edi,dword[tlist] |
1627 | mov edi,[tlist] |
1648 | cmp tl_cur_pos,0 |
1628 | cmp tl_cur_pos,0 |
1649 | je .no_redraw |
1629 | je .no_redraw |
1650 | mov esi,tl_box_top |
1630 | mov esi,tl_box_top |
1651 | add esi,tl_box_height ;esi = coord bottom border |
1631 | add esi,tl_box_height ;esi = coord bottom border |
Line 1663... | Line 1643... | ||
1663 | dec dword[eax+sb_offs_position] |
1643 | dec dword[eax+sb_offs_position] |
1664 | stdcall scroll_bar_vertical.draw, eax |
1644 | stdcall scroll_bar_vertical.draw, eax |
1665 | stdcall tl_draw, dword[tlist] ;¯®« ï ¯¥à¥à¨á®¢ª ®ª |
1645 | stdcall tl_draw, dword[tlist] ;¯®« ï ¯¥à¥à¨á®¢ª ®ª |
1666 | jmp .no_redraw |
1646 | jmp .no_redraw |
1667 | @@: |
1647 | @@: |
1668 | mov edi,dword[tlist] ;restore edi |
1648 | mov edi,[tlist] ;restore edi |
1669 | call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
1649 | call tl_draw_cursor ;¯¥à¥à¨á®¢ª ªãàá®à |
1670 | call tl_draw_caption_cur_pos |
1650 | call tl_draw_caption_cur_pos |
1671 | .no_redraw: |
1651 | .no_redraw: |
1672 | ret |
1652 | ret |
1673 | endp |
1653 | endp |
Line 1674... | Line 1654... | ||
1674 | 1654 | ||
1675 | ;¯¥à¥¥á⨠ªãàá®à 1 áâà ¨æã ¢ëè¥ |
1655 | ;¯¥à¥¥á⨠ªãàá®à 1 áâà ¨æã ¢ëè¥ |
1676 | align 4 |
1656 | align 4 |
1677 | proc tl_cur_page_up uses eax edi esi, tlist:dword |
1657 | proc tl_cur_page_up uses eax edi esi, tlist:dword |
Line 1678... | Line 1658... | ||
1678 | mov edi,dword[tlist] |
1658 | mov edi,[tlist] |
1679 | 1659 | ||
1680 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
1660 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
1681 | je .no_redraw |
1661 | je .no_redraw |
Line 1713... | Line 1693... | ||
1713 | align 4 |
1693 | align 4 |
1714 | proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword |
1694 | proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword |
1715 | ;eax - ª®«-¢® áâப áâà ¨æ¥ |
1695 | ;eax - ª®«-¢® áâப áâà ¨æ¥ |
1716 | ;ebx - ¬ ªá. ¯®§¨æ¨ï ªãàá®à |
1696 | ;ebx - ¬ ªá. ¯®§¨æ¨ï ªãàá®à |
1717 | ;ecx - ¬ ªá. ¯®§¨æ¨ï áªà®««¨£ |
1697 | ;ecx - ¬ ªá. ¯®§¨æ¨ï áªà®««¨£ |
1718 | mov edi,dword[tlist] |
1698 | mov edi,[tlist] |
1719 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
1699 | cmp tl_p_scroll,0 ;¥á«¨ ¥áâì 㪠§ ⥫ì áªà®««¨£ |
1720 | je .no_redraw |
1700 | je .no_redraw |
1721 | mov esi,tl_p_scroll |
1701 | mov esi,tl_p_scroll |
1722 | call tl_get_node_count ;eax = node count |
1702 | call tl_get_node_count ;eax = node count |
1723 | mov ebx,eax |
1703 | mov ebx,eax |
Line 1758... | Line 1738... | ||
1758 | endp |
1738 | endp |
Line 1759... | Line 1739... | ||
1759 | 1739 | ||
1760 | ;®âªàëâì/§ ªàëâì 㧥« (à ¡®â ¥â á 㧫 ¬¨ ª®â®àë¥ ¨¬¥îâ ¤®ç¥à¨¥ 㧫ë) |
1740 | ;®âªàëâì/§ ªàëâì 㧥« (à ¡®â ¥â á 㧫 ¬¨ ª®â®àë¥ ¨¬¥îâ ¤®ç¥à¨¥ 㧫ë) |
1761 | align 4 |
1741 | align 4 |
1762 | proc tl_node_close_open uses eax edx edi, tlist:dword |
1742 | proc tl_node_close_open uses eax edx edi, tlist:dword |
1763 | mov edi,dword[tlist] |
1743 | mov edi,[tlist] |
1764 | call tl_get_cur_node_index ;eax = ¯®§¨æ¨ï 㧫 ª®â®à®¬ á⮨⠪ãàá®à |
1744 | call tl_get_cur_node_index ;eax = ¯®§¨æ¨ï 㧫 ª®â®à®¬ á⮨⠪ãàá®à |
1765 | cmp eax,2 ;ªãàá®à á⮨â 㧫¥ ? |
1745 | cmp eax,2 ;ªãàá®à á⮨â 㧫¥ ? |
1766 | jl @f |
1746 | jl @f |
1767 | imul eax,sizeof.TreeList |
1747 | imul eax,sizeof.TreeNode |
1768 | add eax,tl_data_nodes |
1748 | add eax,tl_data_nodes |
1769 | ;eax = 㪠§ ⥫ì áâàãªâãàã 㧫 ¢ë¡à ®£® ªãàá®à®¬ |
1749 | ;eax = 㪠§ ⥫ì áâàãªâãàã 㧫 ¢ë¡à ®£® ªãàá®à®¬ |
1770 | push eax |
1750 | push eax |
1771 | stdcall tl_node_poi_get_next_info, edi,eax |
1751 | stdcall tl_node_poi_get_next_info, edi,eax |
1772 | mov edx,eax ;edx = 㪠§ ⥫ì áâàãªâãàã 㧫 ª®â®àë© ¨¤¥â ¯®á«¥ 㧫 eax |
1752 | mov edx,eax ;edx = 㪠§ ⥫ì áâàãªâãàã 㧫 ª®â®àë© ¨¤¥â ¯®á«¥ 㧫 eax |
1773 | pop eax |
1753 | pop eax |
1774 | cmp edx,0 ;¥áâì «¨ ã§«ë ¨¦¥ ¢ë¡à ®£® ¬¨ ? |
1754 | or edx,edx ;¥áâì «¨ ã§«ë ¨¦¥ ¢ë¡à ®£® ¬¨ ? |
1775 | je @f |
1755 | jz @f |
1776 | mov dl,byte[edx+2] ;¡¥à¥¬ ã஢¥ì ¨¦¥£® 㧫 |
1756 | mov dl,byte[edx+TreeNode.level] ;¡¥à¥¬ ã஢¥ì ¨¦¥£® 㧫 |
1777 | cmp byte[eax+2],dl ;+2 = .lev |
1757 | cmp byte[eax+TreeNode.level],dl |
1778 | jge @f ;¥á«¨ ¨¦¨¥ ã§«ë ¬¥ì襣® ã஢ï, § ç¨â ®¨ ¥ ¤®ç¥à¨¥, ª®¥æ äãªæ¨¨ |
1758 | jge @f ;¥á«¨ ¨¦¨¥ ã§«ë ¬¥ì襣® ã஢ï, § ç¨â ®¨ ¥ ¤®ç¥à¨¥, ª®¥æ äãªæ¨¨ |
1779 | xor byte[eax+3],1 ;+3 = .clo *** ®âªàë⨥/§ ªàë⨥ 㧫 *** |
1759 | xor byte[eax+TreeNode.close],1 ;*** ®âªàë⨥/§ ªàë⨥ 㧫 *** |
Line 1780... | Line 1760... | ||
1780 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1760 | call tb_scrol_resize ;®¡à ¡®âª áªà®««¨£ |
1781 | 1761 | ||
1782 | stdcall tl_draw, edi ;®¡®¢«¥¨¥ ®ª |
1762 | stdcall tl_draw, edi ;®¡®¢«¥¨¥ ®ª |
1783 | @@: |
1763 | @@: |
Line 1784... | Line 1764... | ||
1784 | ret |
1764 | ret |
1785 | endp |
1765 | endp |
1786 | 1766 | ||
1787 | ;㢥«¨ç¨âì ã஢¥ì |
1767 | ;㢥«¨ç¨âì ã஢¥ì |
1788 | align 4 |
1768 | align 4 |
1789 | proc tl_node_lev_inc uses eax ecx edx edi, tlist:dword |
1769 | proc tl_node_lev_inc uses eax ecx edx edi, tlist:dword |
1790 | mov edi,dword[tlist] |
1770 | mov edi,[tlist] |
1791 | bt tl_style,2 ;tl_list_box_mode |
1771 | bt tl_style,2 ;tl_list_box_mode |
1792 | jc @f |
1772 | jc @f |
1793 | call tl_get_cur_node_index ;eax=po_t |
1773 | call tl_get_cur_node_index ;eax=po_t |
1794 | cmp eax,2 |
1774 | cmp eax,2 |
1795 | jl @f |
1775 | jl @f |
1796 | mov ecx,tl_data_nodes |
1776 | mov ecx,tl_data_nodes |
Line 1797... | Line 1777... | ||
1797 | imul eax,sizeof.TreeList |
1777 | imul eax,sizeof.TreeNode |
1798 | add eax,ecx ;eax = pointer to some node struct |
1778 | add eax,ecx ;eax = pointer to node struct |
1799 | add ecx,sizeof.TreeList ;ecx = pointer to 1 node struct |
1779 | add ecx,sizeof.TreeNode ;ecx = pointer to 1 node struct |
1800 | 1780 | ||
1801 | mov edx,eax |
1781 | mov edx,eax |
1802 | call tl_iterat_perv ;¯à®¢¥à塞 ¥áâì «¨ ¢¥à娩 㧥« |
1782 | call tl_iterat_perv ;¯à®¢¥à塞 ¥áâì «¨ ¢¥à娩 㧥« |
1803 | cmp edx,ecx |
1783 | cmp edx,ecx |
1804 | jle @f ;¥á«¨ ¢¥à奣® 㧫 ¥â ⮠⥪ã騩 㧥« ¥ ¤¢¨£ ¥¬ |
1784 | jle @f ;¥á«¨ ¢¥à奣® 㧫 ¥â ⮠⥪ã騩 㧥« ¥ ¤¢¨£ ¥¬ |
1805 | mov cl,byte[edx+2] ;¡¥à¥¬ ã஢¥ì த¨â¥«ì᪮£® 㧫 |
1785 | mov cl,byte[edx+TreeNode.level] ;¡¥à¥¬ ã஢¥ì த¨â¥«ì᪮£® 㧫 |
1806 | inc cl ;¤®¡ ¢«ï¥¬ 1 ¨ ¯®«ãç ¥¬ ¬ ªá¨¬ «ì®¥ § 票¥ |
1786 | inc cl ;¤®¡ ¢«ï¥¬ 1 ¨ ¯®«ãç ¥¬ ¬ ªá¨¬ «ì®¥ § 票¥ |
1807 | cmp byte[eax+2],cl |
1787 | cmp byte[eax+TreeNode.level],cl |
1808 | jge @f |
1788 | jge @f |
Line 1809... | Line 1789... | ||
1809 | inc byte[eax+2] ;㢥«¨ç¨¢ ¥¬ § 票¥ 㧫 |
1789 | inc byte[eax+TreeNode.level] ;㢥«¨ç¨¢ ¥¬ § 票¥ 㧫 |
1810 | @@: |
1790 | @@: |
1811 | ret |
1791 | ret |
1812 | endp |
1792 | endp |
1813 | 1793 | ||
1814 | ;㬥ìè¨âì ã஢¥ì |
1794 | ;㬥ìè¨âì ã஢¥ì |
1815 | align 4 |
1795 | align 4 |
1816 | proc tl_node_lev_dec uses eax edi, tlist:dword |
1796 | proc tl_node_lev_dec uses eax edi, tlist:dword |
1817 | mov edi,dword[tlist] |
1797 | mov edi,[tlist] |
1818 | call tl_get_cur_node_index ;eax=po_t |
1798 | call tl_get_cur_node_index ;eax=po_t |
1819 | cmp eax,2 |
1799 | cmp eax,2 |
1820 | jl @f |
1800 | jl @f |
1821 | imul eax,sizeof.TreeList |
1801 | imul eax,sizeof.TreeNode |
Line 1829... | Line 1809... | ||
1829 | 1809 | ||
1830 | ;¯¥à¥¬¥é ¥¬ 㧥« ¢¢¥àå |
1810 | ;¯¥à¥¬¥é ¥¬ 㧥« ¢¢¥àå |
1831 | align 4 |
1811 | align 4 |
1832 | proc tl_node_move_up tlist:dword |
1812 | proc tl_node_move_up tlist:dword |
1833 | pushad |
1813 | pushad |
1834 | mov edi,dword[tlist] |
1814 | mov edi,[tlist] |
1835 | call tl_get_cur_node_index ;eax=po_t |
1815 | call tl_get_cur_node_index ;eax=po_t |
1836 | cmp eax,2 |
1816 | cmp eax,2 |
1837 | jl @f |
1817 | jl @f |
1838 | mov ebx,eax ;copy index of node struct |
1818 | mov ebx,eax ;copy index of node struct |
1839 | mov edx,tl_data_nodes |
1819 | mov edx,tl_data_nodes |
1840 | mov ecx,edx |
1820 | mov ecx,edx |
1841 | add ecx,sizeof.TreeList |
1821 | add ecx,sizeof.TreeNode |
1842 | imul eax,sizeof.TreeList |
1822 | imul eax,sizeof.TreeNode |
1843 | add eax,edx ;eax = pointer to 2 node struct |
1823 | add eax,edx ;eax = pointer to 2 node struct |
1844 | mov edx,eax ;edx = pointer to 2 node struct |
1824 | mov edx,eax ;edx = pointer to 2 node struct |
1845 | mov esi,eax ;esi = pointer to 2 node struct |
1825 | mov esi,eax ;esi = pointer to 2 node struct |
1846 | call tl_iterat_perv ;edx = pointer to 1 node struct |
1826 | call tl_iterat_perv ;edx = pointer to 1 node struct |
1847 | call tl_get_node_index ;eax = index of 1 node struct |
1827 | call tl_get_node_index ;eax = index of 1 node struct |
1848 | cmp edx,ecx |
1828 | cmp edx,ecx |
1849 | jle @f |
1829 | jle @f |
1850 | cmp dword[edx+8],ebx ;+8 next |
1830 | cmp dword[edx+TreeNode.next],ebx |
1851 | jne .po8 |
1831 | jne .po8 |
1852 | call tl_node_move_po6 ;ã§«ë ¨¤ãâ ¯®¤àï¤ ¬¥ï¥¬ 6 ááë«®ª |
1832 | call tl_node_move_po6 ;ã§«ë ¨¤ãâ ¯®¤àï¤ ¬¥ï¥¬ 6 ááë«®ª |
1853 | jmp .cur_mov |
1833 | jmp .cur_mov |
1854 | .po8: |
1834 | .po8: |
Line 1865... | Line 1845... | ||
1865 | 1845 | ||
1866 | ;¯¥à¥¬¥é ¥¬ 㧥« ¢¨§ |
1846 | ;¯¥à¥¬¥é ¥¬ 㧥« ¢¨§ |
1867 | align 4 |
1847 | align 4 |
1868 | proc tl_node_move_down tlist:dword |
1848 | proc tl_node_move_down tlist:dword |
1869 | pushad |
1849 | pushad |
1870 | mov edi,dword[tlist] |
1850 | mov edi,[tlist] |
1871 | call tl_get_cur_node_index ;eax=po_t |
1851 | call tl_get_cur_node_index ;eax=po_t |
1872 | cmp eax,2 |
1852 | cmp eax,2 |
1873 | jl @f |
1853 | jl @f |
1874 | mov ebx,eax ;copy index of node struct |
1854 | mov ebx,eax ;copy index of node struct |
1875 | mov edx,tl_data_nodes |
1855 | mov edx,tl_data_nodes |
1876 | mov ecx,edx |
1856 | mov ecx,edx |
1877 | add ecx,sizeof.TreeList |
1857 | add ecx,sizeof.TreeNode |
1878 | imul eax,sizeof.TreeList |
1858 | imul eax,sizeof.TreeNode |
1879 | add eax,edx ;eax = pointer to 1 node struct |
1859 | add eax,edx ;eax = pointer to 1 node struct |
1880 | mov edx,eax ;edx = pointer to 1 node struct |
1860 | mov edx,eax ;edx = pointer to 1 node struct |
1881 | mov esi,eax ;esi = pointer to 1 node struct |
1861 | mov esi,eax ;esi = pointer to 1 node struct |
1882 | call tl_iterat_next ;edx = pointer to 2 node struct |
1862 | call tl_iterat_next ;edx = pointer to 2 node struct |
1883 | call tl_get_node_index ;eax = index of 2 node struct |
1863 | call tl_get_node_index ;eax = index of 2 node struct |
1884 | cmp edx,ecx |
1864 | cmp edx,ecx |
1885 | jle @f |
1865 | jle @f |
1886 | cmp dword[esi+8],eax ;+8 next |
1866 | cmp dword[esi+TreeNode.next],eax |
1887 | jne .po8 |
1867 | jne .po8 |
1888 | xchg eax,ebx ;¬¥ï¥ ¯®à冷ª á«¥¤®¢ ¨ï § ¬¥ï¥¬ëå 㧫®¢ |
1868 | xchg eax,ebx ;¬¥ï¥ ¯®à冷ª á«¥¤®¢ ¨ï § ¬¥ï¥¬ëå 㧫®¢ |
1889 | xchg edx,esi |
1869 | xchg edx,esi |
1890 | call tl_node_move_po6 ;ã§«ë ¨¤ãâ ¯®¤àï¤ ¬¥ï¥¬ 6 ááë«®ª |
1870 | call tl_node_move_po6 ;ã§«ë ¨¤ãâ ¯®¤àï¤ ¬¥ï¥¬ 6 ááë«®ª |
Line 1901... | Line 1881... | ||
1901 | 1881 | ||
1902 | align 4 |
1882 | align 4 |
1903 | tl_node_move_po6: |
1883 | tl_node_move_po6: |
1904 | mov ecx,edx ;save node pointer |
1884 | mov ecx,edx ;save node pointer |
1905 | call tl_move_perv |
1885 | call tl_move_perv |
Line 1906... | Line 1886... | ||
1906 | mov dword[edx+8],ebx |
1886 | mov dword[edx+TreeNode.next],ebx |
1907 | 1887 | ||
1908 | mov edx,esi |
1888 | mov edx,esi |
1909 | call tl_move_next |
1889 | call tl_move_next |
Line 1910... | Line -... | ||
1910 | mov dword[edx+4],eax |
- | |
1911 | mov edx,ecx ;restore node pointer |
1890 | mov dword[edx+TreeNode.perv],eax |
1912 | 1891 | mov edx,ecx ;restore node pointer |
|
1913 | ;+4 perv |
- | |
1914 | mov ecx,dword[edx+4] |
1892 | |
1915 | mov dword[esi+4],ecx |
1893 | mov ecx,dword[edx+TreeNode.perv] |
Line 1916... | Line 1894... | ||
1916 | ;+8 next |
1894 | mov dword[esi+TreeNode.perv],ecx |
1917 | mov ecx,dword[esi+8] |
1895 | mov ecx,dword[esi+TreeNode.next] |
1918 | mov dword[edx+8],ecx |
1896 | mov dword[edx+TreeNode.next],ecx |
Line 1919... | Line 1897... | ||
1919 | 1897 | ||
1920 | mov dword[edx+4],ebx |
1898 | mov dword[edx+TreeNode.perv],ebx |
1921 | mov dword[esi+8],eax |
1899 | mov dword[esi+TreeNode.next],eax |
Line 1933... | Line 1911... | ||
1933 | ;ecx = ? |
1911 | ;ecx = ? |
1934 | align 4 |
1912 | align 4 |
1935 | tl_node_move_po8: |
1913 | tl_node_move_po8: |
1936 | mov ecx,edx ;save node pointer |
1914 | mov ecx,edx ;save node pointer |
1937 | call tl_move_perv |
1915 | call tl_move_perv |
1938 | mov dword[edx+8],ebx |
1916 | mov dword[edx+TreeNode.next],ebx |
1939 | mov edx,ecx |
1917 | mov edx,ecx |
1940 | call tl_move_next |
1918 | call tl_move_next |
1941 | mov dword[edx+4],ebx |
1919 | mov dword[edx+TreeNode.perv],ebx |
1942 | mov edx,esi |
1920 | mov edx,esi |
1943 | call tl_move_perv |
1921 | call tl_move_perv |
1944 | mov dword[edx+8],eax |
1922 | mov dword[edx+TreeNode.next],eax |
1945 | mov edx,esi |
1923 | mov edx,esi |
1946 | call tl_move_next |
1924 | call tl_move_next |
1947 | mov dword[edx+4],eax |
1925 | mov dword[edx+TreeNode.perv],eax |
1948 | mov edx,ecx ;restore node pointer |
1926 | mov edx,ecx ;restore node pointer |
Line 1949... | Line -... | ||
1949 | - | ||
1950 | ;+4 perv |
1927 | |
1951 | mov eax,dword[edx+4] |
1928 | mov eax,dword[edx+TreeNode.perv] |
1952 | mov ebx,dword[esi+4] |
1929 | mov ebx,dword[esi+TreeNode.perv] |
1953 | xchg eax,ebx |
1930 | xchg eax,ebx |
1954 | mov dword[edx+4],eax |
1931 | mov dword[edx+TreeNode.perv],eax |
1955 | mov dword[esi+4],ebx |
1932 | mov dword[esi+TreeNode.perv],ebx |
1956 | ;+8 next |
1933 | |
1957 | mov eax,dword[edx+8] |
1934 | mov eax,dword[edx+TreeNode.next] |
1958 | mov ebx,dword[esi+8] |
1935 | mov ebx,dword[esi+TreeNode.next] |
1959 | xchg eax,ebx |
1936 | xchg eax,ebx |
1960 | mov dword[edx+8],eax |
1937 | mov dword[edx+TreeNode.next],eax |
1961 | mov dword[esi+8],ebx |
1938 | mov dword[esi+TreeNode.next],ebx |
Line 1962... | Line 1939... | ||
1962 | ret |
1939 | ret |
1963 | 1940 | ||
1964 | ;input: |
1941 | ;input: |
Line 1969... | Line 1946... | ||
1969 | jl @f |
1946 | jl @f |
1970 | pushad |
1947 | pushad |
1971 | mov ebx,edi ;calculate cursor position |
1948 | mov ebx,edi ;calculate cursor position |
1972 | mov eax,tl_cur_pos |
1949 | mov eax,tl_cur_pos |
1973 | inc eax |
1950 | inc eax |
1974 | lea edi,[txt_capt_cur] |
1951 | lea edi,[txt_capt_cur.v] |
1975 | add edi,7 |
- | |
1976 | call tl_convert_to_str |
1952 | stdcall tl_convert_to_str, 5 |
1977 | mov edi,ebx |
1953 | mov edi,ebx |
Line 1978... | Line 1954... | ||
1978 | 1954 | ||
1979 | mov ebx,tl_box_left |
1955 | mov ebx,tl_box_left |
1980 | shl ebx,16 |
1956 | shl ebx,16 |
1981 | add ebx,5*65536+3 |
1957 | add ebx,5*65536+3 |
1982 | add ebx,tl_box_top |
1958 | add ebx,tl_box_top |
1983 | mov ecx,tl_col_txt |
1959 | mov ecx,tl_col_txt |
1984 | or ecx,0xc0000000 ;0x40000000 § ªà 訢 âì ä® æ¢¥â®¬ edi |
1960 | or ecx,0xc0000000 ;0x40000000 § ªà 訢 âì ä® æ¢¥â®¬ edi |
1985 | lea edx,[txt_capt_cur] |
1961 | lea edx,[txt_capt_cur] |
1986 | mov edi,tl_col_zag |
1962 | mov edi,tl_col_zag |
1987 | mcall 4 ;draw text captions |
- | |
1988 | 1963 | mcall SF_DRAW_TEXT ;captions |
|
1989 | popad |
1964 | popad |
1990 | @@: |
1965 | @@: |
Line 1991... | Line 1966... | ||
1991 | ret |
1966 | ret |
Line 1997... | Line 1972... | ||
1997 | ; mem_size - memory size |
1972 | ; mem_size - memory size |
1998 | ;output: |
1973 | ;output: |
1999 | ; eax - error code |
1974 | ; eax - error code |
2000 | align 4 |
1975 | align 4 |
2001 | proc tl_save_mem uses ebx ecx edx edi esi, tlist:dword, opt:dword, h_mem:dword, mem_size:dword |
1976 | proc tl_save_mem uses ebx ecx edx edi esi, tlist:dword, opt:dword, h_mem:dword, mem_size:dword |
2002 | mov esi,dword[h_mem] |
1977 | mov esi,[h_mem] |
2003 | mov edi,dword[tlist] |
1978 | mov edi,[tlist] |
Line 2004... | Line 1979... | ||
2004 | 1979 | ||
2005 | cmp dword[opt],0 ;add mode |
1980 | cmp dword[opt],0 ;add mode |
2006 | je @f |
1981 | je @f |
2007 | stdcall tl_get_mem_size, edi,esi ;eax = à §¬¥à à ¥¥ á®åà ñëå ¤ ëå |
1982 | stdcall tl_get_mem_size, edi,esi ;eax = à §¬¥à à ¥¥ á®åà ñëå ¤ ëå |
Line 2046... | Line 2021... | ||
2046 | add esi,tl_save_load_heder_size ;add header size |
2021 | add esi,tl_save_load_heder_size ;add header size |
Line 2047... | Line 2022... | ||
2047 | 2022 | ||
2048 | ;cycle to nodes |
2023 | ;cycle to nodes |
2049 | mov edx,tl_data_nodes |
2024 | mov edx,tl_data_nodes |
2050 | mov ecx,edx |
2025 | mov ecx,edx |
2051 | add ecx,sizeof.TreeList |
2026 | add ecx,sizeof.TreeNode |
2052 | @@: |
2027 | @@: |
2053 | call tl_iterat_next_all |
2028 | call tl_iterat_next_all |
2054 | cmp edx,ecx |
2029 | cmp edx,ecx |
2055 | jle @f |
2030 | jle @f |
2056 | ;save node params |
2031 | ;save node params |
2057 | call tl_get_node_index ;eax = index of pointer [edx] |
2032 | call tl_get_node_index ;eax = index of pointer [edx] |
Line 2058... | Line 2033... | ||
2058 | mov dword[esi],eax |
2033 | mov dword[esi],eax |
2059 | 2034 | ||
2060 | add esi,4 |
2035 | add esi,4 |
2061 | mov eax,dword[edx] ;eax = (type; lev; clo) |
2036 | mov eax,dword[edx+TreeNode.type] ;eax = (type; level; close) |
Line 2062... | Line 2037... | ||
2062 | mov dword[esi],eax |
2037 | mov dword[esi],eax |
Line 2107... | Line 2082... | ||
2107 | align 4 |
2082 | align 4 |
2108 | proc tl_load_mem uses ebx ecx edx edi esi, tlist:dword, opt:dword, h_mem:dword, mem_size:dword |
2083 | proc tl_load_mem uses ebx ecx edx edi esi, tlist:dword, opt:dword, h_mem:dword, mem_size:dword |
2109 | locals |
2084 | locals |
2110 | er_code dd ? |
2085 | er_code dd ? |
2111 | endl |
2086 | endl |
2112 | mov esi,dword[h_mem] |
2087 | mov esi,[h_mem] |
2113 | mov edi,dword[tlist] |
2088 | mov edi,[tlist] |
Line 2114... | Line 2089... | ||
2114 | 2089 | ||
Line 2115... | Line 2090... | ||
2115 | mov dword[er_code],0 ;return error code |
2090 | mov dword[er_code],0 ;return error code |
2116 | 2091 | ||
2117 | mov ecx,dword[opt] |
2092 | mov ecx,[opt] |
2118 | cmp cx,0 ;load in array mode |
2093 | or cx,cx ;load in array mode |
2119 | je @f |
2094 | jz @f |
2120 | ;stdcall tl_get_mem_size, esi,edi ;¡¥à¥¬ à §¬¥à à ¥¥ á®åà ñëå ¤ ëå |
2095 | ;stdcall tl_get_mem_size, esi,edi ;¡¥à¥¬ à §¬¥à à ¥¥ á®åà ñëå ¤ ëå |
2121 | ;add esi,eax |
2096 | ;add esi,eax |
2122 | and ecx,0xffff |
2097 | and ecx,0xffff |
2123 | cld |
2098 | cld |
2124 | .beg_cycle: |
2099 | .beg_cycle: |
2125 | cmp dword[esi],'tree' |
- | |
2126 | jne .no_tree |
2100 | cmp dword[esi],'tree' |
2127 | xor ebx,ebx |
2101 | jne .no_tree |
2128 | mov bx,word[esi+4] |
2102 | movzx ebx,word[esi+4] |
2129 | add bx,8 |
2103 | add bx,8 |
2130 | imul ebx,dword[esi+6] |
2104 | imul ebx,dword[esi+6] |
2131 | add ebx,tl_save_load_heder_size |
2105 | add ebx,tl_save_load_heder_size |
Line 2135... | Line 2109... | ||
2135 | 2109 | ||
2136 | cmp dword[esi],'tree' |
2110 | cmp dword[esi],'tree' |
2137 | jne .no_tree |
2111 | jne .no_tree |
2138 | bt dword[opt],17 ;load in add mode |
2112 | bt dword[opt],17 ;load in add mode |
2139 | jc @f |
2113 | jc @f |
2140 | stdcall tl_info_clear, dword edi |
2114 | stdcall tl_info_clear, edi |
Line 2141... | Line 2115... | ||
2141 | @@: |
2115 | @@: |
2142 | 2116 | ||
2143 | xor ebx,ebx |
2117 | xor ebx,ebx |
2144 | mov bx,word[esi+4] ;info_size |
2118 | mov bx,word[esi+4] ;info_size |
2145 | cmp bx,tl_info_size |
2119 | cmp bx,tl_info_size |
2146 | je @f |
2120 | je @f |
2147 | or dword[er_code],tl_err_load_info_size |
2121 | or dword[er_code],tl_err_load_info_size |
2148 | @@: |
2122 | @@: |
2149 | mov ecx,dword[esi+6] ;count nodes |
2123 | mov ecx,[esi+6] ;count nodes |
2150 | cmp ecx,1 |
2124 | cmp ecx,1 |
2151 | jl .end_f |
2125 | jl .end_f |
Line 2152... | Line 2126... | ||
2152 | mov edx,esi ;save header pointer |
2126 | mov edx,esi ;save header pointer |
2153 | add esi,tl_save_load_heder_size |
2127 | add esi,tl_save_load_heder_size |
2154 | 2128 | ||
2155 | cld |
2129 | cld |
2156 | @@: ;load node params |
2130 | @@: ;load node params |
2157 | mov eax,dword[esi+4] |
2131 | mov eax,dword[esi+4] |
2158 | ror eax,16 ;eax - options (type; lev; clo) |
2132 | ror eax,16 ;eax - options (type; level; close) |
2159 | add esi,8 |
2133 | add esi,8 |
2160 | stdcall tl_node_add, edi,eax,esi |
2134 | stdcall tl_node_add, edi,eax,esi |
Line 2166... | Line 2140... | ||
2166 | bt dword[opt],17 ;load in add mode |
2140 | bt dword[opt],17 ;load in add mode |
2167 | jc .no_tree |
2141 | jc .no_tree |
2168 | mov eax,dword[edx+14] ;set cursor pos |
2142 | mov eax,dword[edx+14] ;set cursor pos |
2169 | mov tl_cur_pos,eax |
2143 | mov tl_cur_pos,eax |
2170 | mov ebx,tl_p_scroll |
2144 | mov ebx,tl_p_scroll |
2171 | cmp ebx,0 |
2145 | or ebx,ebx |
2172 | je .end_f |
2146 | jz .end_f |
2173 | mov eax,dword[edx+22] ;set scroll pos |
2147 | mov eax,dword[edx+22] ;set scroll pos |
2174 | mov dword[ebx+sb_offs_position],eax |
2148 | mov dword[ebx+sb_offs_position],eax |
2175 | stdcall scroll_bar_vertical.draw, ebx |
2149 | stdcall scroll_bar_vertical.draw, ebx |
2176 | jmp .end_f |
2150 | jmp .end_f |
2177 | .no_tree: |
2151 | .no_tree: |
Line 2184... | Line 2158... | ||
2184 | ;¡¥à¥â à §¬¥à ¯ ¬ï⨠§ ï⮩ äãªæ¨¥© tl_save_mem ¯à¨ á®åà ¥¨¨ í«¥¬¥â®¢ |
2158 | ;¡¥à¥â à §¬¥à ¯ ¬ï⨠§ ï⮩ äãªæ¨¥© tl_save_mem ¯à¨ á®åà ¥¨¨ í«¥¬¥â®¢ |
2185 | ;output: |
2159 | ;output: |
2186 | ; eax - error code |
2160 | ; eax - error code |
2187 | align 4 |
2161 | align 4 |
2188 | proc tl_get_mem_size uses ebx edi, tlist:dword, h_mem:dword |
2162 | proc tl_get_mem_size uses ebx edi, tlist:dword, h_mem:dword |
2189 | mov edi,dword[tlist] |
2163 | mov edi,[tlist] |
2190 | mov eax,dword[h_mem] |
2164 | mov eax,[h_mem] |
2191 | @@: |
2165 | @@: |
2192 | cmp dword[eax],'tree' |
2166 | cmp dword[eax],'tree' |
2193 | jne @f |
2167 | jne @f |
2194 | xor ebx,ebx |
2168 | xor ebx,ebx |
2195 | mov bx,word[eax+4] |
2169 | mov bx,word[eax+4] |
Line 2217... | Line 2191... | ||
2217 | ; 183 81 Pg Dn |
2191 | ; 183 81 Pg Dn |
Line 2218... | Line 2192... | ||
2218 | 2192 | ||
2219 | tl_key_ascii db 13,32,178,177,176,179,182,184,183 |
2193 | tl_key_ascii db 13,32,178,177,176,179,182,184,183 |
Line 2220... | Line 2194... | ||
2220 | tl_key_scan db 28,57, 72, 80, 75, 77, 83, 73, 81 |
2194 | tl_key_scan db 28,57, 72, 80, 75, 77, 83, 73, 81 |
- | 2195 | ||
2221 | 2196 | txt_capt_cur: db 'âப ' |
|
- | 2197 | .v: db ' ',0 |
|
Line -... | Line 2198... | ||
- | 2198 | txt_capt_otm: db '⬥ë ' |
|
2222 | txt_capt_cur db 'âப ',0 |
2199 | .v: db ' ',0 |
2223 | txt_capt_otm db '⬥ë ',0 |
2200 | |
2224 | 2201 | ;description: |
|
2225 | ;íâ®â ª®¤ ¥ ¬®©, ® ¯à¥®¡à §ã¥â ç¨á«® ¢ áâபã |
2202 | ; ¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâபã |
2226 | ;input: |
2203 | ;input: |
2227 | ; eax = value |
2204 | ; eax = value |
2228 | ; edi = string buffer |
2205 | ; edi = string buffer |
2229 | align 4 |
2206 | align 4 |
- | 2207 | proc tl_convert_to_str, len:dword |
|
- | 2208 | pushad |
|
2230 | tl_convert_to_str: |
2209 | mov esi,[len] |
2231 | pushad |
2210 | add esi,edi |
2232 | mov dword[edi+1],0x20202020 |
2211 | dec esi |
- | 2212 | call .str |
|
Line 2233... | Line 2213... | ||
2233 | call .str |
2213 | popad |
2234 | popad |
2214 | ret |
2235 | ret |
2215 | endp |
2236 | - | ||
2237 | align 4 |
2216 | |
2238 | .str: |
2217 | align 4 |
2239 | mov ecx,0x0a ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï ¨§¬¥ïîâáï ॣ¨áâàë ebx,eax,ecx,edx ¢å®¤ë¥ ¯ à ¬¥âàë eax - ç¨á«® |
2218 | .str: |
2240 | ;¯à¥à¥¢®¤ ç¨á« ¢ ASCII áâப㠢§®¤ë¥ ¤ ë¥ ecx=á¨á⥬ áç¨á«¥ï edi ¤à¥á ªã¤ § ¯¨áë¢ âì, ¡ã¤¥¬ áâபã, ¯à¨ç¥¬ ª®¥æ ¯¥à¥¬¥®© |
2219 | mov ecx,10 ;§ ¤ ¥âáï á¨á⥬ áç¨á«¥¨ï |
2241 | cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
2220 | cmp eax,ecx ;áà ¢¨âì ¥á«¨ ¢ eax ¬¥ìè¥ ç¥¬ ¢ ecx â® ¯¥à¥©â¨ @@-1 â.¥. pop eax |
2242 | jb @f |
2221 | jb @f |
2243 | xor edx,edx ;®ç¨áâ¨âì edx |
2222 | xor edx,edx ;®ç¨áâ¨âì edx |
2244 | div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
- | |
- | 2223 | div ecx ;à §¤¥«¨âì - ®áâ ⮪ ¢ edx |
|
- | 2224 | push edx ;¯®«®¦¨âì ¢ á⥪ |
|
- | 2225 | call .str ;¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
|
2245 | push edx ;¯®«®¦¨âì ¢ á⥪ |
2226 | pop eax |
2246 | call .str ;¢ë§¢ âì á ¬ã á¥¡ï ¨ â ª ¤® ⮣® ¬®¬¥â ¯®ª ¢ eax ¥ á⠥⠬¥ìè¥ ç¥¬ ¢ ecx |
2227 | @@: |
2247 | pop eax |
- | |
- | 2228 | cmp edi,esi |
|
- | 2229 | jge @f |
|
2248 | @@: ;cmp al,10 ;¯à®¢¥à¨âì ¥ ¬¥ìè¥ «¨ § 票¥ ¢ al 祬 10 (¤«ï á¨á⥬ë áç¨á«¥ï 10 ¤ ï ª®¬ ¤ - «¨è ï)) |
2230 | or al,0x30 ;¤®¡ ¢«ï¥¬ ᨬ¢®« '0' |