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