1,6 → 1,6 |
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
; ýëåìåíò TreeList äëÿ Kolibri OS |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 04.11.2015 IgorA |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 01.12.2010 IgorA |
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
|
|
17,17 → 17,18 |
|
macro use_tree_list |
{ |
|
;âûäåëíèå ïàìÿòè äëÿ ñòðóêòóð ñïèñêà è îñíîâíîé èíôîðìàöèè (êîíñòðóêòîð) |
align 4 |
proc tl_data_init uses eax ecx edi, tlist:dword |
mov edi,dword[tlist] |
tl_data_init: ;âûäåëíèå ïàìÿòè äëÿ ñòðóêòóð ñïèñêà è îñíîâíîé èíôîðìàöèè (êîíñòðóêòîð) |
push ebp |
mov ebp,esp |
push eax ecx edi |
mov edi,dword[ebp+8] |
|
xor ecx,ecx |
mov cx,tl_info_size |
imul ecx,tl_info_max_count |
invoke mem.alloc,ecx |
mov tl_data_info,eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
mov dword[edi],eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
mov tl_data_img,0 ;îáíóëÿåì óêàçàòåëü 'data_img' |
mov tl_data_img_sys,0 ;îáíóëÿåì óêàçàòåëü 'data_img_sys' |
|
36,7 → 37,8 |
invoke mem.alloc,ecx |
mov tl_data_nodes,eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó |
|
stdcall tl_info_clear, edi |
push dword edi |
call tl_info_clear |
|
;íàñòðîéêè äî÷åðíåãî ñêðîëëèíãà |
cmp tl_p_scrol,0 |
58,13 → 60,13 |
mov ecx,tl_box_top |
mov word[eax+6],cx |
@@: |
ret |
endp |
pop edi ecx eax |
pop ebp |
ret 4 |
|
;î÷èñòêà ïàìÿòè ýëåìåíòà (äåñòðóêòîð) |
align 4 |
proc tl_data_clear uses edi, tlist:dword |
;uses eax ??? |
proc tl_data_clear, tlist:dword ;î÷èñòêà ïàìÿòè ýëåìåíòà (äåñòðóêòîð) |
push edi |
mov edi,dword[tlist] |
cmp tl_data_img,0 |
je @f |
74,19 → 76,24 |
je @f |
invoke mem.free,tl_data_img_sys ;÷èñòêà ñèñòåìíûõ èêîíîê |
@@: |
invoke mem.free,tl_data_info |
invoke mem.free,dword[edi] |
|
invoke mem.free,tl_data_nodes |
pop edi |
ret |
endp |
|
;î÷èñòêà ñïèñêà (èíôîðìàöèè) |
align 4 |
proc tl_info_clear uses eax ecx edi, tlist:dword |
mov edi,dword[tlist] |
tl_info_clear: ;î÷èñòêà ñïèñêà (èíôîðìàöèè) |
push ebp |
mov ebp,esp |
push eax ecx edi |
mov edi,dword[ebp+8] |
mov tl_ch_tim,0 |
mov dword[edi+34],0 ;ls_tim |
mov tl_tim_undo,0 |
mov tl_cur_pos,0 |
;xor ecx,ecx |
mov ecx,sizeof.TreeList |
imul ecx,tl_info_max_count |
mov eax,tl_data_nodes |
103,13 → 110,17 |
mov dword[eax+sb_offs_position],0 |
call tb_scrol_resize |
@@: |
ret |
endp |
pop edi ecx eax |
pop ebp |
ret 4 |
|
;ðåàêöèÿ íà êëàâèàòóðó |
|
align 4 |
proc tl_key uses ebx ecx edi, tlist:dword |
mov edi,dword[tlist] |
tl_key: ;ðåàêöèÿ íà êëàâèàòóðó |
push ebp |
mov ebp,esp |
push ebx ecx edi |
mov edi,dword[ebp+8] |
|
mov ebx,tl_el_focus |
cmp dword[ebx],edi |
116,7 → 127,9 |
jne .no_focus ;ýëåìåíò íå â ôîêóñå |
|
push eax |
mcall 66,2 ;ïîëó÷èòü ðåæèì ââîäà ñ êëàâèàòóðû |
mov eax,66 |
mov ebx,2 |
int 0x40 ;ïîëó÷èòü ðåæèì ââîäà ñ êëàâèàòóðû |
|
lea ecx,[tl_key_scan] |
cmp eax,1 ;1 = ñêàíêîäû |
134,23 → 147,28 |
@@: |
cmp ah,byte[ecx+1] ;Space |
jne @f |
stdcall tl_node_close_open, edi |
push dword edi |
call tl_node_close_open |
@@: |
cmp ah,byte[ecx+2] ;Up |
jne @f |
stdcall tl_cur_perv, edi |
push dword edi |
call tl_cur_perv |
@@: |
cmp ah,byte[ecx+3] ;Down |
jne @f |
stdcall tl_cur_next, edi |
push dword edi |
call tl_cur_next |
@@: |
cmp ah,byte[ecx+7] ;Page Up |
jne @f |
stdcall tl_cur_page_up, edi |
push dword edi |
call tl_cur_page_up |
@@: |
cmp ah,byte[ecx+8] ;Page Down |
jne @f |
stdcall tl_cur_page_down, edi |
push dword edi |
call tl_cur_page_down |
@@: |
|
bt tl_style,0 ;tl_key_no_edit |
157,17 → 175,20 |
jc .no_edit |
cmp ah,byte[ecx+4] ;Left |
jne @f |
stdcall tl_node_lev_dec, edi |
push dword edi |
call tl_node_lev_dec |
mov bx,1 |
@@: |
cmp ah,byte[ecx+5] ;Right |
jne @f |
stdcall tl_node_lev_inc, edi |
push dword edi |
call tl_node_lev_inc |
mov bx,1 |
@@: |
cmp ah,byte[ecx+6] ;Delete |
jne @f |
stdcall tl_node_delete, edi |
push dword edi |
call tl_node_delete |
mov bx,1 |
@@: |
.no_edit: |
174,25 → 195,31 |
|
cmp bx,1 |
jne .no_focus |
stdcall tl_draw, edi |
push dword edi |
call tl_draw |
.no_focus: |
ret |
endp |
|
;ðåàêöèÿ íà ìûøü |
pop edi ecx ebx |
pop ebp |
ret 4 |
|
align 4 |
proc tl_mouse, tlist:dword |
tl_mouse: ;ðåàêöèÿ íà ìûøü |
push ebp |
mov ebp,esp |
pushad |
mov edi,dword[tlist] |
mov edi,dword[ebp+8] |
|
mcall 37,1 ;êîîðäèíàòû ìûøè îòíîñèòåëüíî îêíà |
mov eax,37 |
mov ebx,1 |
int 0x40 |
|
mov ebx,tl_box_left |
shl ebx,16 |
cmp eax,ebx ;ëåâàÿ ãðàíèöà îêíà |
jl .no_in_wnd ;.test_scroll íå ïðèìåíÿåì |
jl .no_in_wnd ;.test_scroll |
|
shr ebx,16 |
mov ebx,tl_box_left |
add ebx,tl_box_width |
shl ebx,16 |
cmp eax,ebx ;ïðàâàÿ ãðàíèöà îêíà |
209,12 → 236,15 |
jl .test_scroll |
|
push eax ebx |
mcall 37,2 |
mov eax,37 |
mov ebx,2 |
int 0x40 |
|
bt eax,0 ;left mouse button press |
pop ebx eax |
jae .no_draw |
|
|
mov esi,tl_el_focus |
mov dword[esi],edi ;set focus |
|
232,7 → 262,7 |
cmp tl_p_scrol,0 ;ó÷èòûâàåì ñêðîëëèíã |
je @f |
mov edx,tl_p_scrol |
add eax,dword[edx+sb_offs_position] ;äîáàâëÿåì ñêðîëëèíã íà âåðõó |
add eax,dword[edx+24] ;äîáàâëÿåì ñêðîëëèíã íà âåðõó |
@@: |
|
mov ecx,eax |
274,7 → 304,8 |
cmp ax,bx |
jne .no_open_close |
|
stdcall tl_node_close_open, edi |
push dword edi |
call tl_node_close_open |
.no_open_close: |
|
mov esi,tl_box_top |
296,19 → 327,23 |
mov eax,dword[edx+sb_offs_max_area] |
cmp eax,dword[edx+sb_offs_cur_area] |
jbe .no_in_wnd ;âñå óçëû ïîïàäàþò â îêíî ñêðîëëèíãà |
stdcall scroll_bar_vertical.mouse, edx ;scrollbar_ver_mouse |
push dword edx |
call scroll_bar_vertical.mouse ;scrollbar_ver_mouse |
|
cmp dword[edx+sb_offs_redraw],0 |
je @f |
mov dword[edx+sb_offs_redraw],0 |
stdcall tl_draw, edi ;ïðîèçîøëè èçìåíåíèÿ ñêðîëëèíãà |
push dword edi |
call tl_draw ;ïðîèçîøëè èçìåíåíèÿ ñêðîëëèíãà |
@@: |
cmp dword[edx+sb_offs_delta2],0 |
jne .no_draw ;ïîïàëè íà ñêðîëëèíã - íå ñíèìàåì ôîêóñ ñ TreeList |
;------------------------------------------------------------------------------- |
.no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
mcall 37,2 ;ïðîâåðÿåì íàæàòîñòü ëþáûõ êíîïîê |
cmp eax,0 ;íè÷åãî íå íàæàëè eax=0 |
mov eax,37 ;ïðîâåðÿåì íàæàòîñòü ëþáûõ êíîïîê |
mov ebx,2 |
int 0x40 |
cmp eax,0 ;íè÷å íå íàæàëè eax=0 |
je .no_draw |
|
mov ebx,tl_el_focus |
321,13 → 356,15 |
.no_draw: |
|
popad |
ret |
endp |
pop ebp |
ret 4 |
|
;îòìåíà äåéñòâèÿ |
align 4 |
proc tl_info_undo uses eax edi, tlist:dword |
mov edi,dword[tlist] |
tl_info_undo: ;îòìåíà äåéñòâèÿ |
push ebp |
mov ebp,esp |
push eax edi |
mov edi,dword[ebp+8] |
mov eax,tl_tim_undo |
cmp tl_ch_tim,eax |
jbe @f |
334,25 → 371,33 |
inc tl_tim_undo |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
@@: |
ret |
endp |
pop edi eax |
pop ebp |
ret 4 |
|
;ïîâòîð äåéñòâèÿ |
align 4 |
proc tl_info_redo uses edi, tlist:dword |
mov edi,dword[tlist] |
tl_info_redo: ;ïîâòîð äåéñòâèÿ |
push ebp |
mov ebp,esp |
push edi |
mov edi,dword[ebp+8] |
cmp tl_tim_undo,1 |
jl @f |
dec tl_tim_undo |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
@@: |
ret |
endp |
pop edi |
pop ebp |
ret 4 |
|
;óäàëåíèå îòìåíåííûõ äåéñòâèé |
;âíóòðåííÿÿ ôóíêöèÿ, íå äëÿ ýêñïîðòà |
align 4 |
tl_info_set_undo: |
tl_info_set_undo: ;óäàëåíèå îòìåíåííûõ äåéñòâèé |
; push ebp |
; mov ebp,esp |
; push edi |
; mov edi,dword[ebp+8] |
|
; mov [dragk],0 ;çàêàí÷èâàåì âûäåëåíèå îò êëàâèàòóðû |
cmp tl_tim_undo,1 |
jl .no_work |
|
409,14 → 454,18 |
pop edx ecx ebx eax |
.no_work: |
|
; pop edi |
; pop ebp |
; ret 4 |
ret |
|
;âûâîä ñïèñêà íà ýêðàí |
align 4 |
proc tl_draw, tlist:dword |
tl_draw: ;âûâîä ñïèñêà íà ýêðàí |
push ebp |
mov ebp,esp |
pushad |
;draw dir_list main rect |
mov edi,dword[tlist] |
mov edi,dword[ebp+8] |
mov ebx,tl_box_left |
shl ebx,16 |
add ebx,tl_box_width |
424,7 → 473,8 |
shl ecx,16 |
mov cx,tl_capt_cy |
mov edx,tl_col_zag |
mcall 13 ;draw window caption |
mov eax,13 |
int 0x40 ;draw window caption |
|
add ecx,tl_box_top |
shl ecx,16 |
477,7 → 527,7 |
cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
je .end_c1 |
mov esi,tl_p_scrol |
cmp dword[esi+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
cmp dword[esi+24],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
je .end_c1 |
@@: |
call tl_iterat_next |
484,7 → 534,7 |
cmp edx,ecx |
jle .end_draw |
inc eax |
cmp eax,dword[esi+sb_offs_position] |
cmp eax,dword[esi+24] |
jge .end_c1 |
jmp @b |
.end_c1: |
506,14 → 556,14 |
mov edi,tl_p_scrol ;ðèñóåì äî÷åðíèé ñêðîëëèíã |
cmp edi,0 ;äëÿ òîãî ÷òî-áû åãî íå ïðèøëîñü ðèñîâàòü â ïîëüçîâàòåëüñêîé ïðîãðàììå |
je .end_draw ;åñëè íåò ñêðîëëèíãà âûõîäèì |
stdcall scroll_bar_vertical.draw, edi |
push dword edi |
call scroll_bar_vertical.draw |
|
.end_draw: |
popad |
ret |
endp |
pop ebp |
ret 4 |
|
;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
;input: |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
521,7 → 571,7 |
;output: |
; edx = pointer to next node struct |
align 4 |
tl_iterat_next: |
tl_iterat_next: ;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
push bx |
mov bl,0x7f |
cmp byte[edx+3],1 |
559,15 → 609,12 |
pop bx |
ret |
|
;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (è íà çàêðûòûå òîæå) |
;input: |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
; edi = pointer to 'TreeList' struct |
;output: |
; edx = pointer to next visible node struct |
align 4 |
tl_iterat_next_all: |
tl_iterat_next_all: ;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (è íà çàêðûòûå òîæå) |
cmp tl_tim_undo,0 |
je .else |
|
591,13 → 638,12 |
.endif: |
ret |
|
;ïåðåõîä íà ïðåäûäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
;input: |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
; edi = pointer to 'TreeList' struct |
align 4 |
tl_iterat_perv: |
tl_iterat_perv: ;ïåðåõîä íà ïðåäûäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
push eax |
cmp tl_tim_undo,0 |
je .beg1 |
622,7 → 668,7 |
pop eax |
ret |
|
;íàõîäèò ðîäèòåëüñêèé çàêðûòûé óçåë ìàêñèìàëüíîãî óðîâíÿ |
|
;input: |
; edx = pointer to some node struct |
; edi = pointer to 'TreeList' struct |
629,7 → 675,8 |
;output: |
; edx = pointer closed parent node with maximum level |
align 4 |
proc tl_move_max_clo_par uses eax ebx |
tl_move_max_clo_par: ;íàõîäèò ðîäèòåëüñêèé çàêðûòûé óçåë ìàêñèìàëüíîãî óðîâíÿ |
push eax ebx |
mov eax,edx |
xor ebx,ebx |
.beg: |
644,8 → 691,8 |
jmp .beg |
.end_f: |
mov edx,eax |
pop ebx eax |
ret |
endp |
|
;input: |
; edx = pointer to some node struct |
671,7 → 718,6 |
add edx,tl_data_nodes |
ret |
|
;ïåðåäâèãàåìñÿ íà ðîäèòåëüñêèé óçåë, åñëè òàêîãî íåò, òî îñòàâëÿåì ñòàðîå çíà÷åíèå óêàçàòåëÿ |
;input: |
; ecx = |
; edx = pointer to some node struct |
679,7 → 725,7 |
;output: |
; edx = pointer to parent node struct |
align 4 |
tl_move_par: |
tl_move_par: ;ïåðåäâèãàåìñÿ íà ðîäèòåëüñêèé óçåë, åñëè òàêîãî íåò, òî îñòàâëÿåì ñòàðîå çíà÷åíèå óêàçàòåëÿ |
cmp byte[edx+2],0 |
je .end_f ;óçåë 0-ãî óðîâíÿ íå ìîæåò áûòü äî÷åðíèì |
push eax ebx esi |
702,7 → 748,6 |
.end_f: |
ret |
|
;ïðîâåðÿåò âèäèìûé ëè óêàçàííûé óçåë ñ ó÷åòîì: äîáàâëåíèé, óäàëåíèé, îòìåí äåéñòâèé |
;input: |
; edx = pointer to symbol struct |
; edi = pointer to 'TreeList' struct |
710,7 → 755,7 |
; al = 1 if sumbol not visible |
; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo) |
align 4 |
tl_node_not_vis: |
tl_node_not_vis: ;ïðîâåðÿåò âèäèìûé ëè óêàçàííûé óçåë ñ ó÷åòîì: äîáàâëåíèé, óäàëåíèé, îòìåí äåéñòâèé |
cmp dword[edx+16],0 |
je @f |
mov eax,dword[edx+16] ;eax=node[i].td |
731,12 → 776,13 |
xor al,al |
ret |
|
;ðèñóåì êóðñîð íà ýêðàíå |
|
;input: |
; edi = pointer to TreeInfo struct |
; esi = coord bottom border |
align 4 |
proc tl_draw_cursor uses eax ebx ecx edx esi |
tl_draw_cursor: ;ðèñóåì êóðñîð íà ýêðàíå |
push eax ebx ecx edx esi |
call tl_get_display_cur_pos ;eax = cursor pos in screen |
cmp eax,0 |
jl .end_f ;êóðñîð íàõîäèòñÿ âûøå îêíà, â îáëàñòè ïðîêðó÷åííîé ñêðîëëèíãîì |
765,7 → 811,8 |
.crop0: |
|
mov edx,tl_col_txt |
mcall 13 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê, ò.ê. íåò ñèñòåìíûõ èêîíîê |
mov eax,13 |
int 0x40 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê, ò.ê. íåò ñèñòåìíûõ èêîíîê |
jmp .end_f |
@@: |
mov ebx,tl_data_img_sys |
779,7 → 826,6 |
mov ecx,tl_el_focus ;ïðîâåðÿåì â ôîêóñå ýëåìåíò èëè íåò |
cmp dword[ecx],edi |
je .focus |
;åñëè íå â ôîêóñå ñäâèãàåì êîîðäèíàòû íà èêîíêó íå àêòèâíîãî êóðñîðà |
xor eax,eax |
xor ecx,ecx |
mov cx,tl_img_cx |
803,17 → 849,18 |
mov cx,si ;åñëè êóðñîð âèäåí ÷àñòè÷íî (ïîïàë íà íèæíþþ ãðàíèöó) |
.crop1: |
|
mcall 7 ;ðèñóåì èêîíêó êóðñîðà |
mov eax,7 |
int 0x40 ;ðèñóåì èêîíêó êóðñîðà |
.end_f: |
pop esi edx ecx ebx eax |
ret |
endp |
|
;ñòèðàåì êóðñîð íà ýêðàíå |
;input: |
; edi = pointer to TreeInfo struct |
; esi = coord bottom border |
align 4 |
proc tl_draw_null_cursor uses eax ebx ecx edx esi |
tl_draw_null_cursor: ;ñòèðàåì êóðñîð íà ýêðàíå |
push eax ebx ecx edx esi |
call tl_get_display_cur_pos ;eax = cursor pos in screen |
cmp eax,0 |
jl .end_f ;êóðñîð íàõîäèòñÿ âûøå îêíà, â îáëàñòè ïðîêðó÷åííîé ñêðîëëèíãîì |
840,31 → 887,30 |
@@: |
|
mov edx,tl_col_bkg |
mcall 13 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê ñ ôîíîâûì öâåòîì |
mov eax,13 |
int 0x40 ;ðèñóåì ïðîñòîé ïðÿìîóãîëüíèê ñ ôîíîâûì öâåòîì |
|
.end_f: |
pop esi edx ecx ebx eax |
ret |
endp |
|
;áåðåò ïîçèöèþ êóðñîðà, îòíîñèòåëüíî ýêðàíà |
;input: |
; edi = pointer to TreeInfo struct |
;output: |
; eax = index |
align 4 |
tl_get_display_cur_pos: |
tl_get_display_cur_pos: ;áåðåò ïîçèöèþ êóðñîðà, îòíîñèòåëüíî ýêðàíà |
mov eax,tl_cur_pos |
cmp tl_p_scrol,0 |
je @f |
push ebx |
mov ebx,tl_p_scrol |
mov ebx,dword[ebx+sb_offs_position] |
mov ebx,dword[ebx+24] |
sub eax,ebx ;îòíèìàåì ïîçèöèþ ñêðîëëèíãà |
pop ebx |
@@: |
ret |
|
;ðèñóåò óçåë ñ: êàðòèíêîé, ïîäïèñüþ, èêîíêîé îòêðûòèÿ/çàêðûòèÿ è ëèíèÿìè ê ðîäèò. óçëó |
;input: |
; eax = node position |
; edx = pointer to some node struct |
871,7 → 917,9 |
; edi = pointer to 'TreeList' struct |
; esi = coord of bottom border |
align 4 |
proc tl_draw_node uses eax ebx ecx edx esi |
tl_draw_node: ;ðèñóåò óçåë ñ: êàðòèíêîé, ïîäïèñüþ, èêîíêîé îòêðûòèÿ/çàêðûòèÿ è ëèíèÿìè ê ðîäèò. óçëó |
push eax ebx ecx edx esi |
|
mov ebx,1 ;1 - ìåñòî ïîä êóðñîð |
bt tl_style,2 ;tl_list_box_mode |
jc @f |
909,7 → 957,8 |
jne .draw_img_n |
push edx |
mov edx,tl_col_txt |
mcall 13 ;draw node rect |
mov eax,13 |
int 0x40 ;draw node rect |
pop edx |
jmp @f |
.draw_img_n: |
927,7 → 976,8 |
imul ebx,esi ;esi = icon index |
add ebx,tl_data_img |
|
mcall 7 ;draw node icon '-' |
mov eax,7 |
int 0x40 ;draw node icon '-' |
pop esi edx ebx |
@@: |
|
947,17 → 997,16 |
call tl_draw_node_icon_par_lin ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
call tl_draw_node_icon_par_lin_up ;ðèñîâàíèå âåðòèêàëüíîé ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
.end_draw: |
pop esi edx ecx ebx eax |
ret |
endp |
|
;ðèñóåò èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà (îáû÷íî + èëè -) |
;input: |
; al = óðîâåíü ýëåìåíòà |
; ecx = pointer to 1 node struct |
; edx = pointer to some node struct |
;... |
align 4 |
proc tl_draw_node_icon_opn_clo uses eax ebx ecx edx esi |
tl_draw_node_icon_opn_clo: ;ðèñóåò èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà (îáû÷íî + èëè -) |
push eax ebx ecx edx esi |
inc al |
call tl_iterat_next_all ;get next visible item |
cmp edx,ecx |
971,7 → 1020,8 |
cmp tl_data_img_sys,0 |
jne .draw_img_s |
mov edx,tl_col_txt |
mcall 13 ;draw minus rect, if not system icons |
mov eax,13 |
int 0x40 ;draw minus rect, if not system icons |
jmp @f |
.draw_img_s: |
mov ecx,esi ;load ecx |
987,12 → 1037,12 |
and eax,0xff |
imul ebx,eax ;eax = icon index |
add ebx,tl_data_img_sys |
mcall 7 ;draw minus icon '-' |
mov eax,7 |
int 0x40 ;draw minus icon '-' |
@@: |
pop esi edx ecx ebx eax |
ret |
endp |
|
;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
;input: |
; al = óðîâåíü ýëåìåíòà |
; ecx = pointer to 1 node struct |
999,7 → 1049,7 |
; edx = pointer to some node struct |
;... |
align 4 |
tl_draw_node_icon_par_lin: |
tl_draw_node_icon_par_lin: ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
cmp byte[edx+3],1 |
je .close |
push eax ebx ecx edx esi |
1026,7 → 1076,8 |
cmp tl_data_img_sys,0 |
jne .draw_img_s |
mov edx,tl_col_txt |
mcall 13 ;draw minus rect, if not system icons |
mov eax,13 |
int 0x40 ;draw minus rect, if not system icons |
jmp @f |
.draw_img_s: |
; mov ecx,esi ;load ecx |
1043,7 → 1094,8 |
; and eax,0xff |
imul ebx,eax ;eax = icon index |
add ebx,tl_data_img_sys |
mcall 7 ;draw line icon |
mov eax,7 |
int 0x40 ;draw line icon |
@@: |
pop esi edx ecx ebx eax |
.close: |
1152,7 → 1204,7 |
imul esi,eax |
pop eax |
add si,tl_info_capt_offs |
add esi,tl_data_info |
add esi,dword[edi] |
mov edx,esi |
|
shr ebx,16 |
1169,7 → 1221,8 |
mov ecx,tl_col_txt |
and ecx,0xffffff |
; or ecx,0x80000000 ;text is ASCIIZ |
mcall 4 |
mov eax,4 |
int 0x40 |
@@: |
pop esi edx ecx ebx |
ret |
1219,14 → 1272,16 |
sub eax,esi |
ret |
|
;äîáàâèòü óçåë |
;input: |
; tlist - óêàçàòåëü íà ñòðóêòóðó ëèñòà |
; n_opt - îïöèè äîáàâëåíèÿ |
; n_info - óêàçàòåëü íà äîáàâëÿåìûå äàííûå |
;dword[ebp+ 8] - pointer to node info |
;dword[ebp+12] - options |
;dword[ebp+16] - pointer to 'TreeList' struct |
align 4 |
proc tl_node_add uses eax ebx ecx edx edi, n_info:dword, n_opt:dword, tlist:dword |
mov edi,dword[tlist] |
tl_node_add: ;äîáàâèòü óçåë |
push ebp |
mov ebp,esp |
push eax ebx ecx edx edi |
mov edi,dword[ebp+16] |
|
call tl_info_set_undo |
|
1251,16 → 1306,14 |
jne .u0 |
|
inc tl_ch_tim |
mov ecx,dword[n_opt] |
ror ecx,16 ;cx = type |
mov cx,word[ebp+14] ;get type |
mov word[edx],cx |
;;;mov cl,byte[ebp+13] |
rol ecx,8 ;cl = close|open |
mov cl,byte[ebp+13] |
mov byte[edx+3],cl ;node[i].clo |
mov byte[edx+2], 0 ;node[i].lev=0 |
bt tl_style,2 ;tl_list_box_mode |
jc .l_box_m |
mov cl,byte[n_opt] |
mov cl,byte[ebp+12] |
mov byte[edx+2],cl ;node[i].lev |
.l_box_m: |
push tl_ch_tim ;node[i].tc=ch_tim; |
1276,13 → 1329,13 |
call tl_get_node_index ;eax = node index |
imul esi,eax |
pop eax |
add esi,tl_data_info |
mov edi,dword[n_info] ;pointer to node data |
add esi,dword[edi] |
mov edi,dword[ebp+8] ;pointer to node data |
xchg edi,esi |
rep movsb |
|
mov esi,edi |
mov edi,dword[tlist] ;restore edi |
mov edi,dword[ebp+16] ;restore edi |
mov cx,tl_info_capt_offs |
cmp cx,tl_info_size |
jge .no_text_data |
1323,13 → 1376,15 |
cmp edx,ebx ;enf of node memory ? |
jle @b |
@@: |
ret |
endp |
pop edi edx ecx ebx eax |
pop ebp |
ret 12 |
|
;input: |
; edi = pointer to TreeInfo struct |
align 4 |
proc tb_scrol_resize uses eax ecx edx |
tb_scrol_resize: |
push eax ecx edx |
cmp tl_p_scrol,0 ;îáðàáîòêà ñêðîëëèíãà |
je @f |
call tl_get_node_count ;eax = node count |
1343,16 → 1398,21 |
mov edx,tl_p_scrol |
mov dword[edx+sb_offs_cur_area],eax |
mov dword[edx+sb_offs_max_area],ecx |
stdcall scroll_bar_vertical.draw,edx |
push dword edx ;pointer to scroll struct |
call scroll_bar_vertical.draw |
@@: |
pop edx ecx eax |
ret |
endp |
|
;input: |
;n_info - pointer to node info |
;dword[ebp+ 8] - pointer to node info |
;dword[ebp+12] - pointer to 'TreeList' struct |
align 4 |
proc tl_node_set_data uses eax ecx edx edi esi, n_info:dword, tlist:dword |
mov edi,dword[tlist] |
tl_node_set_data: |
push ebp |
mov ebp,esp |
push eax ecx edx edi esi |
mov edi,dword[ebp+12] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
1359,13 → 1419,13 |
xor ecx,ecx |
mov cx,tl_info_size |
imul eax,ecx |
add eax,tl_data_info |
add eax,dword[edi] |
mov edi,eax |
mov esi,dword[n_info] ;pointer to node data |
mov esi,dword[ebp+8] ;pointer to node data |
rep movsb |
|
mov esi,edi |
mov edi,dword[tlist] ;restore edi |
mov edi,dword[ebp+12] ;restore edi |
mov cx,tl_info_capt_offs |
cmp cx,tl_info_size |
jge .no_text_data |
1386,8 → 1446,9 |
.no_text_data: |
|
@@: |
ret |
endp |
pop esi edi edx ecx eax |
pop ebp |
ret 8 |
|
;input: |
;dword[ebp+ 8] - pointer to 'TreeList' struct |
1404,7 → 1465,7 |
xor ecx,ecx |
mov cx,tl_info_size |
imul eax,ecx |
add eax,tl_data_info |
add eax,dword[edi] |
mov dword[ebp+8],eax ;return node data pointer |
@@: |
pop edi ecx eax |
1492,13 → 1553,13 |
pop ebp |
ret 4 |
|
;áåðåò ïîçèöèþ ïîä êóðñîðîì |
;input: |
; edi = pointer 'tl' struct |
;output: |
; eax = index of current node |
align 4 |
proc tl_get_cur_node_index uses ecx edx |
tl_get_cur_node_index: ;áåðåò ïîçèöèþ ïîä êóðñîðîì |
push ecx edx |
;cycle to nodes |
xor eax,eax |
mov edx,tl_data_nodes |
1518,10 → 1579,9 |
xor edx,edx |
mov ecx,sizeof.TreeList |
div ecx |
pop edx ecx |
ret |
endp |
|
;áåðåò ïîçèöèþ óêàçàííîãî ñèìâîëà |
;input: |
; edx = pointer node memory |
; edi = pointer 'tl' struct |
1528,7 → 1588,7 |
;output: |
; eax = struct index of current node |
align 4 |
tl_get_node_index: |
tl_get_node_index: ;áåðåò ïîçèöèþ óêàçàííîãî ñèìâîëà |
push ecx edx |
mov eax,edx |
sub eax,tl_data_nodes |
1538,10 → 1598,12 |
pop edx ecx |
ret |
|
;óäàëèòü óçåë |
align 4 |
proc tl_node_delete uses eax edx edi, tlist:dword |
mov edi,dword[tlist] |
tl_node_delete: ;óäàëèòü óçåë |
push ebp |
mov ebp,esp |
push eax edx edi |
mov edi,dword[ebp+8] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
1553,27 → 1615,36 |
mov dword[edx+16],eax |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
@@: |
ret |
endp |
pop edi edx eax |
pop ebp |
ret 4 |
|
;ïîñòàâèòü êóðñîð íà ïåðâûé óçåë |
align 4 |
proc tl_cur_beg uses edi, tlist:dword |
mov edi,dword[tlist] |
tl_cur_beg: ;ïîñòàâèòü êóðñîð íà ïåðâûé óçåë |
push ebp |
mov ebp,esp |
push edi |
mov edi,dword[ebp+8] |
mov tl_cur_pos,0 |
cmp tl_p_scrol,0 |
je @f |
mov edi,tl_p_scrol |
mov dword[edi+sb_offs_position],0 |
stdcall scroll_bar_vertical.draw, edi |
mov dword[edi+24],0 |
push dword edi |
mov edi,dword[ebp+8] |
call scroll_bar_vertical.draw |
@@: |
ret |
endp |
pop edi |
|
;ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ íèæå |
pop ebp |
ret 4 |
|
align 4 |
proc tl_cur_next uses eax ebx edi esi, tlist:dword |
mov edi,dword[tlist] |
tl_cur_next: ;ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ íèæå |
push ebp |
mov ebp,esp |
push eax ebx edi esi |
mov edi,dword[ebp+8] |
call tl_get_node_count ;eax = node count |
;inc eax |
cmp tl_cur_pos,eax |
1591,25 → 1662,29 |
cmp tl_cur_pos,eax |
jl @f |
inc dword[ebx+sb_offs_position] |
stdcall scroll_bar_vertical.draw,ebx |
push dword ebx |
call scroll_bar_vertical.draw |
|
stdcall tl_draw,dword[tlist] ;ïîëíàÿ ïåðåðèñîâêà îêíà |
mov edi,dword[ebp+8] ;restore edi |
push dword edi |
call tl_draw ;ïîëíàÿ ïåðåðèñîâêà îêíà |
jmp .no_redraw |
@@: |
mov edi,dword[tlist] ;restore edi |
mov edi,dword[ebp+8] ;restore edi |
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
call tl_draw_caption_cur_pos |
.no_redraw: |
ret |
endp |
pop esi edi ebx eax |
pop ebp |
ret 4 |
|
;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (íå ñ÷èòàÿ çàêðûòûõ äî÷åðíèõ) |
|
;input: |
; edi = pointer 'tl' struct |
;output: |
; eax = struct index of current node |
align 4 |
tl_get_node_count: |
tl_get_node_count: ;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (íå ñ÷èòàÿ çàêðûòûõ äî÷åðíèõ) |
push ecx edx |
;cycle to nodes |
xor eax,eax |
1626,13 → 1701,12 |
pop edx ecx |
ret |
|
;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (ñ÷èòàÿ çàêðûòûå äî÷åðíèå) |
;input: |
; edi = pointer 'tl' struct |
;output: |
; eax = struct index of current node |
align 4 |
tl_get_node_count_all: |
tl_get_node_count_all: ;áåðåò ÷èñëî âñåõ âèäèìûõ óçëîâ (ñ÷èòàÿ çàêðûòûå äî÷åðíèå) |
push ecx edx |
;cycle to nodes |
xor eax,eax |
1649,10 → 1723,12 |
pop edx ecx |
ret |
|
;ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ âûøå |
align 4 |
proc tl_cur_perv uses eax edi esi, tlist:dword |
mov edi,dword[tlist] |
tl_cur_perv: ;ïåðåíåñòè êóðñîð íà 1 ïîçèöèþ âûøå |
push ebp |
mov ebp,esp |
push eax edi esi |
mov edi,dword[ebp+8] |
cmp tl_cur_pos,0 |
je .no_redraw |
mov esi,tl_box_top |
1663,29 → 1739,36 |
cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
je @f |
mov eax,tl_p_scrol |
cmp dword[eax+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
cmp dword[eax+24],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
je @f |
mov edi,tl_cur_pos |
cmp edi,dword[eax+sb_offs_position] ;åñëè êóðñîð óøåë âûøå ñêðîëëèíãà, òîãäà îïóñêàåì ñêðîëëèíã |
cmp edi,dword[eax+24] ;åñëè êóðñîð óøåë âûøå ñêðîëëèíãà, òîãäà îïóñêàåì ñêðîëëèíã |
jge @f |
dec dword[eax+sb_offs_position] |
stdcall scroll_bar_vertical.draw, eax |
stdcall tl_draw, dword[tlist] ;ïîëíàÿ ïåðåðèñîâêà îêíà |
dec dword[eax+24] |
push dword eax |
mov edi,dword[ebp+8] |
call scroll_bar_vertical.draw |
mov edi,dword[ebp+8] ;restore edi |
push dword edi |
call tl_draw ;ïîëíàÿ ïåðåðèñîâêà îêíà |
jmp .no_redraw |
@@: |
mov edi,dword[tlist] ;restore edi |
mov edi,dword[ebp+8] ;restore edi |
;mov esi,tl_box_top |
;add esi,tl_box_height ;esi = coord bottom border |
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
call tl_draw_caption_cur_pos |
.no_redraw: |
ret |
endp |
pop esi edi eax |
pop ebp |
ret 4 |
|
;ïåðåíåñòè êóðñîð íà 1 ñòðàíèöó âûøå |
align 4 |
proc tl_cur_page_up uses eax edi esi, tlist:dword |
mov edi,dword[tlist] |
tl_cur_page_up: ;ïåðåíåñòè êóðñîð íà 1 ñòðàíèöó âûøå |
push ebp |
mov ebp,esp |
push eax edi esi |
mov edi,dword[ebp+8] |
|
cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
je .no_redraw |
1695,7 → 1778,7 |
|
cmp tl_cur_pos,0 |
jne @f |
cmp dword[esi+sb_offs_position],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
cmp dword[esi+24],0 ;åñëè ñêðîëëèíã íà âåðõó, âûõîäèì |
jne @f |
jmp .no_redraw |
@@: |
1706,27 → 1789,32 |
@@: |
mov tl_cur_pos,0 |
.cursor: |
cmp dword[esi+sb_offs_position],eax |
cmp dword[esi+24],eax |
jl @f |
sub dword[esi+sb_offs_position],eax |
sub dword[esi+24],eax |
jmp .scroll |
@@: |
mov dword[esi+sb_offs_position],0 |
mov dword[esi+24],0 |
.scroll: |
;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
stdcall tl_draw, edi ;draw window |
stdcall scroll_bar_vertical.draw, esi |
push dword edi |
call tl_draw ;draw window |
push dword esi |
call scroll_bar_vertical.draw |
.no_redraw: |
ret |
endp |
pop esi edi eax |
pop ebp |
ret 4 |
|
;ïåðåíåñòè êóðñîð íà 1 ñòðàíèöó íèæå |
align 4 |
proc tl_cur_page_down uses eax ebx ecx edi esi, tlist:dword |
tl_cur_page_down: ;ïåðåíåñòè êóðñîð íà 1 ñòðàíèöó íèæå |
push ebp |
mov ebp,esp |
push eax ebx ecx edi esi |
;eax - êîë-âî ñòðîê íà ñòðàíèöå |
;ebx - ìàêñ. ïîçèöèÿ êóðñîðà |
;ecx - ìàêñ. ïîçèöèÿ ñêðîëëèíãà |
mov edi,dword[tlist] |
mov edi,dword[ebp+8] |
|
cmp tl_p_scrol,0 ;åñëè åñòü óêàçàòåëü íà ñêðîëëèíã |
je .no_redraw |
1748,7 → 1836,7 |
|
cmp tl_cur_pos,ebx ;êóðñîð âíèçó ? |
jl @f |
cmp dword[esi+sb_offs_position],ecx ;ñêðîëëèíã âíèçó ? |
cmp dword[esi+24],ecx ;ñêðîëëèíã âíèçó ? |
jl @f |
jmp .no_redraw |
@@: |
1759,23 → 1847,28 |
mov tl_cur_pos,ebx |
@@: |
|
add dword[esi+sb_offs_position],eax ;ïåðåìåùàåì ñêðîëëèíã |
cmp dword[esi+sb_offs_position],ecx |
add dword[esi+24],eax ;ïåðåìåùàåì ñêðîëëèíã |
cmp dword[esi+24],ecx |
jl @f |
mov dword[esi+sb_offs_position],ecx |
mov dword[esi+24],ecx |
@@: |
|
;ïåðåðèñîâêè îêíà è ñêðîëëèíãà |
stdcall tl_draw, edi ;draw window |
stdcall scroll_bar_vertical.draw, esi |
push dword edi |
call tl_draw ;draw window |
push dword esi |
call scroll_bar_vertical.draw |
.no_redraw: |
ret |
endp |
pop esi edi ecx ebx eax |
pop ebp |
ret 4 |
|
;îòêðûòü/çàêðûòü óçåë (ðàáîòàåò ñ óçëàìè êîòîðûå èìåþò äî÷åðíèå óçëû) |
align 4 |
proc tl_node_close_open uses eax edx edi, tlist:dword |
mov edi,dword[tlist] |
tl_node_close_open: ;îòêðûòü/çàêðûòü óçåë (ðàáîòàåò ñ óçëàìè êîòîðûå èìåþò äî÷åðíèå óçëû) |
push ebp |
mov ebp,esp |
push eax edx edi |
mov edi,dword[ebp+8] |
call tl_get_cur_node_index ;eax = ïîçèöèÿ óçëà íà êîòîðîì ñòîèò êóðñîð |
cmp eax,2 ;êóðñîð ñòîèò íà óçëå ? |
jl @f |
1794,15 → 1887,19 |
xor byte[eax+3],1 ;+3 = .clo *** îòêðûòèå/çàêðûòèå óçëà *** |
call tb_scrol_resize ;îáðàáîòêà ñêðîëëèíãà |
|
stdcall tl_draw, edi ;îáíîâëåíèå îêíà |
push dword edi |
call tl_draw ;îáíîâëåíèå îêíà |
@@: |
ret |
endp |
pop edi edx eax |
pop ebp |
ret 4 |
|
;óâåëè÷èòü óðîâåíü |
align 4 |
proc tl_node_lev_inc uses eax ecx edx edi, tlist:dword |
mov edi,dword[tlist] |
tl_node_lev_inc: ;óâåëè÷èòü óðîâåíü |
push ebp |
mov ebp,esp |
push eax ecx edx edi |
mov edi,dword[ebp+8] |
bt tl_style,2 ;tl_list_box_mode |
jc @f |
call tl_get_cur_node_index ;eax=po_t |
1823,13 → 1920,16 |
jge @f |
inc byte[eax+2] ;óâåëè÷èâàåì çíà÷åíèå óçëà |
@@: |
ret |
endp |
pop edi edx ecx eax |
pop ebp |
ret 4 |
|
;óìåíüøèòü óðîâåíü |
align 4 |
proc tl_node_lev_dec uses eax edi, tlist:dword |
mov edi,dword[tlist] |
tl_node_lev_dec: ;óìåíüøèòü óðîâåíü |
push ebp |
mov ebp,esp |
push eax edi |
mov edi,dword[ebp+8] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
1839,13 → 1939,16 |
je @f |
dec byte[eax+2] |
@@: |
ret |
endp |
pop edi eax |
pop ebp |
ret 4 |
|
;ïåðåìåùàåì óçåë ââåðõ |
align 4 |
proc tl_node_move_up uses eax ebx ecx edx edi esi, tlist:dword |
mov edi,dword[tlist] |
tl_node_move_up: ;ïåðåìåùàåì óçåë ââåðõ |
push ebp |
mov ebp,esp |
push eax ebx ecx edx edi esi |
mov edi,dword[ebp+8] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
1873,13 → 1976,16 |
push dword edi |
call tl_draw |
@@: |
ret |
endp |
pop esi edi edx ecx ebx eax |
pop ebp |
ret 4 |
|
;ïåðåìåùàåì óçåë âíèç |
align 4 |
proc tl_node_move_down uses eax ebx ecx edx edi esi, tlist:dword |
mov edi,dword[tlist] |
tl_node_move_down: ;ïåðåìåùàåì óçåë âíèç |
push ebp |
mov ebp,esp |
push eax ebx ecx edx edi esi |
mov edi,dword[ebp+8] |
call tl_get_cur_node_index ;eax=po_t |
cmp eax,2 |
jl @f |
1904,11 → 2010,14 |
.po8: ;à òóò ïîðÿäîê ñëåäîâàíèÿ óçëîâ íå ìåíÿåì |
call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê |
.cur_mov: |
stdcall tl_cur_next, edi |
stdcall tl_draw, edi |
push dword edi |
call tl_cur_next |
push dword edi |
call tl_draw |
@@: |
ret |
endp |
pop esi edi edx ecx ebx eax |
pop ebp |
ret 4 |
|
align 4 |
tl_node_move_po6: |
2082,7 → 2191,9 |
mov dword[esi],eax |
add esi,4 |
|
stdcall tl_node_poi_get_data, edx,edi |
push dword edi |
push dword edx |
call tl_node_poi_get_data |
pop dword eax |
|
;call tl_node_copy_data |
2149,7 → 2260,8 |
jne .no_tree |
bt word[ebp+18],1 ;load in add mode |
jc @f |
stdcall tl_info_clear, dword edi |
push dword edi |
call tl_info_clear |
@@: |
|
xor ebx,ebx |
2164,13 → 2276,18 |
mov edx,esi ;save header pointer |
add esi,tl_save_load_heder_size |
|
cld |
@@: ;load node params |
@@: |
;load node params |
push dword edi |
mov eax,dword[esi+4] |
ror eax,16 ;eax - options (type; lev; clo) |
ror eax,16 |
push dword eax ;options (type; lev; clo) |
add esi,8 |
stdcall tl_node_add, esi,eax,edi |
stdcall tl_cur_next, edi |
push dword esi |
call tl_node_add |
|
push dword edi |
call tl_cur_next |
;... |
add esi,ebx |
loop @b |
2184,7 → 2301,9 |
cmp ebx,0 |
je .end_f |
mov dword[ebx+sb_offs_position],eax |
stdcall scroll_bar_vertical.draw, ebx |
push dword ebx ;pointer to scroll struct |
call scroll_bar_vertical.draw |
|
jmp .end_f |
.no_tree: |
mov dword[ebp+20],tl_err_load_caption |
2269,5 → 2388,5 |
;das ;ïîñëå äàííîé êîìàíäû êàê áû ïðîèñõîäèò óìåíüøåíèå al íà 66h (â êíèãå íàïèñàíî äðóãîå) |
or al,0x30 ;äàííàÿ êîìàíäà êîðî÷å ÷åì äâå âûøå |
stosb ;çàïèñàòü ýëåìåíò èç ðåãèñòðà al â ÿ÷åêó ïàìÿòè es:edi |
ret ;âåðíóòüñÿ î÷åíü èíòåðåñíûé õîä ò.ê. ïîêà â ñòåêå õðàíèòüñÿ êîë-âî âûçîâîâ òî ñòîëüêî ðàç ìû è áóäåì âûçûâàòüñÿ |
ret ;âåðíóòüñÿ ÷åíü èíòåðåñíûé õîä ò.ê. ïîêà â ñòåêå õðàíèòüñÿ êîë-âî âûçîâîâ òî ñòîëüêî ðàç ìû è áóäåì âûçûâàòüñÿ |
} |