1,6 → 1,6 |
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
; ýëåìåíò TreeList äëÿ Kolibri OS |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 09.02.2010 IgorA |
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 10.02.2010 IgorA |
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
|
|
681,7 → 681,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 |
724,7 → 724,7 |
; edx = pointer to some node struct |
; edi = pointer to 'TreeList' struct |
align 4 |
tl_iterat_next_all: |
tl_iterat_next_all: ;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (è íà çàêðûòûå òîæå) |
cmp tl_tim_undo,0 |
je .else |
|
753,7 → 753,7 |
; 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 |
865,7 → 865,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 |
1027,7 → 1027,7 |
; edi = pointer to 'TreeList' struct |
; esi = coord of bottom border |
align 4 |
tl_draw_node: |
tl_draw_node: ;ðèñóåò óçåë ñ: êàðòèíêîé, ïîäïèñüþ, èêîíêîé îòêðûòèÿ/çàêðûòèÿ è ëèíèÿìè ê ðîäèò. óçëó |
push eax ebx ecx edx esi |
|
mov ebx,1 ;1 - ìåñòî ïîä êóðñîð è ïîä çíàê +,- |
1101,11 → 1101,11 |
dec ah |
.close: |
|
call tl_draw_node_icon_opn_clo |
call tl_draw_node_icon_opn_clo ;ðèñîâàíèå èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà |
bt tl_style,1 |
jae .end_draw |
call tl_draw_node_icon_par_lin |
call tl_draw_node_icon_par_lin_up |
call tl_draw_node_icon_par_lin ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
call tl_draw_node_icon_par_lin_up ;ðèñîâàíèå âåðòèêàëüíîé ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
.end_draw: |
pop esi edx ecx ebx eax |
ret |
1159,7 → 1159,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 |
2023,9 → 2023,12 |
mov edx,eax |
call tl_iterat_perv ;ïðîâåðÿåì åñòü ëè âåðõíèé óçåë |
cmp edx,ecx |
jle @f ;åñëè âåðõíåãî óçëà íå òî òåêóùèé óçåë íå äâèãàåì |
|
inc word[eax+2] |
jle @f ;åñëè âåðõíåãî óçëà íåò òî òåêóùèé óçåë íå äâèãàåì |
mov cl,byte[edx+2] ;áåðåì óðîâåíü ðîäèòåëüñêîãî óçëà |
inc cl ;äîáàâëÿåì 1 è ïîëó÷àåì ìàêñèìàëüíîå çíà÷åíèå |
cmp byte[eax+2],cl |
jge @f |
inc byte[eax+2] ;óâåëè÷èâàåì çíà÷åíèå óçëà |
@@: |
pop edi edx ecx eax |
pop ebp |
2042,9 → 2045,9 |
jl @f |
imul eax,sizeof.TreeList |
add eax,tl_data_nodes |
cmp word[eax+2],0 |
cmp byte[eax+2],0 |
je @f |
dec word[eax+2] |
dec byte[eax+2] |
@@: |
pop edi eax |
pop ebp |
2258,7 → 2261,7 |
jg .err_mem_size |
|
;save tree params (in header) |
mov dword[esi],0x65657274 ;0x65657274 = 'tree' |
mov dword[esi],'tree' |
mov word[esi+4],bx |
mov dword[esi+6],eax ;element count |
|