Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1284 → Rev 1285

/programs/develop/libraries/box_lib/trunk/tree_list.mac
1,6 → 1,6
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
; ýëåìåíò TreeList äëÿ Kolibri OS
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.11.2009 IgorA
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 24.11.2009 IgorA
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
 
 
382,6 → 382,7
mov esi,tl_box_top
add esi,tl_box_height ;esi = coord bottom border
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà
call tl_draw_caption_cur_pos
jmp .no_draw
.no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå)
mov ebx,tl_el_focus
611,6 → 612,8
; ecx = pointer to 1 node struct
; edx = pointer to some node struct
; edi = pointer to 'TreeList' struct
;output:
; edx = pointer to next node struct
align 4
tl_iterat_next:
push bx
989,7 → 992,7
; ecx = pointer to 1 node struct
;...
align 4
tl_draw_node_icon_opn_clo:
tl_draw_node_icon_opn_clo: ;ðèñóåò èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà (îáû÷íî + èëè -)
push eax ebx ecx edx esi
inc al
call tl_iterat_next_all ;get next visible item
1567,6 → 1570,7
@@:
mov edi,dword[ebp+8] ;restore edi
call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà
call tl_draw_caption_cur_pos
.no_redraw:
pop esi edi ebx eax
pop ebp
1630,6 → 1634,7
;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
1706,6 → 1711,169
pop ebp
ret 4
 
align 4
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
mov ebx,eax ;copy index of node struct
mov edx,tl_data_nodes
mov ecx,edx
add ecx,sizeof.TreeList
imul eax,sizeof.TreeList
add eax,edx ;eax = pointer to 2 node struct
mov edx,eax ;edx = pointer to 2 node struct
mov esi,eax ;esi = pointer to 2 node struct
call tl_iterat_perv ;edx = pointer to 1 node struct
call tl_get_node_index ;eax = index of 1 node struct
cmp edx,ecx
jle @f
cmp dword[edx+8],ebx ;+8 next
jne .po8
call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê
jmp .cur_mov
.po8:
call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê
.cur_mov:
push dword edi
call tl_cur_perv
push dword edi
call tl_draw
@@:
pop esi edi edx ecx ebx eax
pop ebp
ret 4
 
align 4
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
mov ebx,eax ;copy index of node struct
mov edx,tl_data_nodes
mov ecx,edx
add ecx,sizeof.TreeList
imul eax,sizeof.TreeList
add eax,edx ;eax = pointer to 1 node struct
mov edx,eax ;edx = pointer to 1 node struct
mov esi,eax ;esi = pointer to 1 node struct
call tl_iterat_next ;edx = pointer to 2 node struct
call tl_get_node_index ;eax = index of 2 node struct
cmp edx,ecx
jle @f
cmp dword[esi+8],eax ;+8 next
jne .po8
xchg eax,ebx ;ìåíÿå ïîðÿäîê ñëåäîâàíèÿ çàìåíÿåìûõ óçëîâ
xchg edx,esi
call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê
jmp .cur_mov
.po8: ;à òóò ïîðÿäîê ñëåäîâàíèÿ óçëîâ íå ìåíÿåì
call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê
.cur_mov:
push dword edi
call tl_cur_next
push dword edi
call tl_draw
@@:
pop esi edi edx ecx ebx eax
pop ebp
ret 4
 
align 4
tl_node_move_po6:
mov ecx,edx ;save node pointer
call tl_move_perv
mov dword[edx+8],ebx
 
mov edx,esi
call tl_move_next
mov dword[edx+4],eax
mov edx,ecx ;restore node pointer
 
;+4 perv
mov ecx,dword[edx+4]
mov dword[esi+4],ecx
;+8 next
mov ecx,dword[esi+8]
mov dword[edx+8],ecx
 
mov dword[edx+4],ebx
mov dword[esi+8],eax
ret
 
;input
;eax = index 1 node struct
;ebx = index 2 node struct
;edx = pointer 1 node struct
;esi = pointer 2 node struct
;edi = pointer to 'TreeList' struct
;output:
;eax = ?
;ebx = ?
;ecx = ?
align 4
tl_node_move_po8:
; push ecx
mov ecx,edx ;save node pointer
call tl_move_perv
mov dword[edx+8],ebx
mov edx,ecx
call tl_move_next
mov dword[edx+4],ebx
mov edx,esi
call tl_move_perv
mov dword[edx+8],eax
mov edx,esi
call tl_move_next
mov dword[edx+4],eax
mov edx,ecx ;restore node pointer
; pop ecx
 
;+4 perv
mov eax,dword[edx+4]
mov ebx,dword[esi+4]
xchg eax,ebx
mov dword[edx+4],eax
mov dword[esi+4],ebx
;+8 next
mov eax,dword[edx+8]
mov ebx,dword[esi+8]
xchg eax,ebx
mov dword[edx+8],eax
mov dword[esi+8],ebx
ret
 
;input:
; edi = pointer to 'TreeList' struct
align 4
tl_draw_caption_cur_pos:
cmp tl_capt_cy,9 ;9 - minimum caption height
jl @f
push eax ebx ecx edx edi esi
mov eax,47 ;draw
mov ebx,0x40000
mov ecx,tl_cur_pos
inc ecx
mov edx,tl_box_left
shl edx,16
add edx,50*65536+3
add edx,tl_box_top
mov esi,tl_col_txt
or esi,0x40000000 ;çàêðàøèâàòü ôîí öâåòîì edi
mov edi,tl_col_zag
int 0x40
pop esi edi edx ecx ebx eax
@@:
ret
 
txt_capt_cur db '‘âப ',0
txt_capt_otm db 'Žâ¬¥­ë',0
}