Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1400 → Rev 1401

/programs/develop/libraries/box_lib/trunk/tree_list.mac
1,6 → 1,6
; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj
; ýëåìåíò TreeList äëÿ Kolibri OS
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 05.02.2010 IgorA
; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 09.02.2010 IgorA
; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ
 
 
16,8 → 16,10
;ends
 
tl_info_size equ word[edi +4] ;ðàçìåð äàííûõ âûäåëÿåìûõ äëÿ êàæäîãî óçëà (ïîëüçîâàòåëüñüêèå äàííûå + òåêñò äëÿ ïîäïèñè)
tl_info_max_count equ dword[edi+6] ;ìàêñèìàëüíîå êîëè÷åñòâî óçëîâ, êîòîðûå ìîæíî äîáàâèòü â ýëåìåíò
tl_style equ dword[edi+10] ;ñòèëè ýëåìåíòà
tl_data_nodes equ dword[edi+14] ;óêàçàòåëü íà ñòðóêòóðû óçëîâ
tl_data_img equ dword[edi+18] ;óêàçàòåëü íà èçîáðàæåíèÿ ñ èêîíêàìè óçëîâ
tl_img_cx equ word[edi+22] ;øèðèíà èêîíîê
tl_img_cy equ word[edi+24] ;âûñîòà èêîíîê
tl_data_img_sys equ dword[edi+26] ;óêàçàòåëü íà ñèñòåìíûå èçîáðàæåíèÿ (ñòðåëêè, ïëþñèêè)
51,8 → 53,6
tl_save_load_heder_size equ 26 ;ðàçìåð çàãîëîâêà äëÿ çàïèñè/÷òåíèÿ ýëåìåíòîâ
 
;data_info dd ? ;+ 0 óêàçàòåëü íà îñíîâíûå äàíûå
;info_max_count dd ? ;+ 6 ìàêñèìàëüíîå êîëëè÷åñòâî ñòðóêòóð
;data_img dd ? ;+18 óêàçàòåëü íà èçîáðàæåíèÿ
;ls_tim dd ? ;+34 âðåìÿ ïîñëåäíåãî ñîõðàíåíèÿ
;on_activate dd ? ;+92 óêàçàòåëü íà ôóíêöèþ ïðè àêòèâèðîâàíèè óçëà
 
133,7 → 133,7
imul ecx,dword[edi+6]
call mem_Alloc
mov dword[edi],eax ;êîïèðóåì óêàçàòåëü íà ïîëó÷åíóþ ïàìÿòü â ñòðóêòóðó
mov dword[edi+18],0 ;îáíóëÿåì óêàçàòåëü 'data_img'
mov tl_data_img,0 ;îáíóëÿåì óêàçàòåëü 'data_img'
mov tl_data_img_sys,0 ;îáíóëÿåì óêàçàòåëü 'data_img_sys'
 
mov ecx,sizeof.TreeList
174,7 → 174,7
mov ebp,esp
push ecx edi
mov edi,dword[ebp+8]
cmp dword[edi+18],0 ;data_img
cmp tl_data_img,0
je @f
mov ecx,dword[edi+18]
call mem_Free ;÷èñòêà ñèñòåìíûõ èêîíîê
327,7 → 327,7
mov ebx,tl_box_left
shl ebx,16
cmp eax,ebx ;ëåâàÿ ãðàíèöà îêíà
jl .test_scroll
jl .no_in_wnd ;.test_scroll
 
mov ebx,tl_box_left
add ebx,tl_box_width
573,7 → 573,7
tl_draw: ;âûâîä ñïèñêà íà ýêðàí
push ebp
mov ebp,esp
push eax ebx ecx edx edi esi
pushad
;draw dir_list main rect
mov edi,dword[ebp+8]
mov ebx,tl_box_left
670,7 → 670,7
call scroll_bar_vertical.draw
 
.end_draw:
pop esi edi edx ecx ebx eax
popad
pop ebp
ret 4
 
755,13 → 755,9
align 4
tl_iterat_perv:
push eax
 
; mov bl,byte[edx+2]
 
cmp tl_tim_undo,0
je .beg1
 
push eax
.beg0:
call tl_move_perv
cmp edx,ecx
1028,7 → 1024,7
;input:
; eax = node position
; edx = pointer to some node struct
; edi = pointer to TreeInfo struct
; edi = pointer to 'TreeList' struct
; esi = coord of bottom border
align 4
tl_draw_node:
1067,7 → 1063,7
.crop:
mov esi,ecx ;save ecx
 
cmp dword[edi+18],0 ;data_img
cmp tl_data_img,0
jne .draw_img_n
push edx
mov edx,tl_col_txt
1088,7 → 1084,7
imul bx,tl_img_cx
imul bx,tl_img_cy
imul ebx,esi ;esi = icon index
add ebx,dword[edi+18] ;data_img
add ebx,tl_data_img
 
mov eax,7
int 0x40 ;draw node icon '-'
1116,6 → 1112,7
 
;input:
; ecx = pointer to 1 node struct
; edx = pointer to some node struct
;...
align 4
tl_draw_node_icon_opn_clo: ;ðèñóåò èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà (îáû÷íî + èëè -)
1158,6 → 1155,8
 
;input:
; al = óðîâåíü ýëåìåíòà
; ecx = pointer to 1 node struct
; edx = pointer to some node struct
;...
align 4
tl_draw_node_icon_par_lin:
1213,20 → 1212,22
ret
 
 
 
;icon:
;input:
; al = óðîâåíü ýëåìåíòà
;...
; ecx = pointer to 1 node struct
; edx = pointer to some node struct
; edi = pointer to 'TreeList' struct
align 4
tl_draw_node_icon_par_lin_up:
push eax ebx ecx edx esi
push eax ebx ecx edx
push esi
cmp tl_data_img_sys,0 ;if not image
je @f
cmp al,0
je @f
 
;---------
xor esi,esi ;â si áóäåì íàñ÷èòûâàòü êîë-âî èêîíîê, íóæíûõ äëÿ ïðîðèñîâêè ëèíèè
;--- öèêë äëÿ âû÷èñëåíèÿ êîëëè÷åñòâà âåðòèêàëüíûõ ëèíèé ---
.cycle0:
call tl_iterat_perv ;get perv visible item
cmp edx,ecx
1233,10 → 1234,10
jle .cycle1 ;if begin of list
 
cmp byte[edx+2],al
jle .cycle1 ;óðîâåíü âåðõíåãî ýëåìåíòà íå òðåáóåò ïðîðèñîâêè
jle .cycle0end ;óðîâåíü âåðõíåãî ýëåìåíòà íå òðåáóåò ïðîðèñîâêè
inc si
jmp .cycle0
.cycle1:
.cycle0end:
cmp si,0 ;si = êîë-âî èêîíîê ëèíèè êîòîðûå íóæíî íàðèñîâàòü ñâåðõó
je @f
shl esi,16
1257,25 → 1258,24
mov ebx,3 ;rgb = 3 bytes
imul bx,tl_img_cx
imul bx,tl_img_cy
;imul ebx,1
add ebx,tl_data_img_sys
 
add esi,tl_box_top
add si,tl_capt_cy ;si = âåðõíÿÿ ãðàíèöà îêíà
mov eax,7
;---------
.cycle2:
;--- öèêë äëÿ ðèñîâàíèÿ âåðòèêàëüíîé ëèíèè ---
.cycle1:
sub dx,tl_img_cy ;ïîäíèìàåì êîîðäèíàòó y ââåðõ
cmp dx,si
jl @f
; int 0x40 ;draw line icon
cmp esi,0x10000
jl @f
int 0x40 ;draw line icon
sub esi,0x10000 ;óìåíüøàåì ñ÷åò÷èê èêîíîê
jmp .cycle2
jmp .cycle1
@@:
pop esi edx ecx ebx eax
pop esi
pop edx ecx ebx eax
ret
 
;input:
1470,7 → 1470,7
pop dword [edx+8]
 
call tl_get_node_index ;*** eax = i ***
cmp eax,dword[edi+6] ;info_max_count
cmp eax,tl_info_max_count
jge .u0
 
mov [ecx],eax ;node[po_t].next=i; // ññûëêè ïåðåíàïðàâëÿåì
2008,7 → 2008,7
tl_node_lev_inc: ;óâåëè÷èòü óðîâåíü
push ebp
mov ebp,esp
push eax edx edi
push eax ecx edx edi
mov edi,dword[ebp+8]
bt tl_style,2 ;tl_list_box_mode
jc @f
2015,12 → 2015,19
call tl_get_cur_node_index ;eax=po_t
cmp eax,2
jl @f
mov ecx,tl_data_nodes
imul eax,sizeof.TreeList
add eax,tl_data_nodes
add eax,ecx ;eax = pointer to some node struct
add ecx,sizeof.TreeList ;ecx = pointer to 1 node struct
 
mov edx,eax
inc word[edx+2]
call tl_iterat_perv ;ïðîâåðÿåì åñòü ëè âåðõíèé óçåë
cmp edx,ecx
jle @f ;åñëè âåðõíåãî óçëà íå òî òåêóùèé óçåë íå äâèãàåì
 
inc word[eax+2]
@@:
pop edi edx eax
pop edi edx ecx eax
pop ebp
ret 4
 
2028,7 → 2035,7
tl_node_lev_dec: ;óìåíüøèòü óðîâåíü
push ebp
mov ebp,esp
push eax edx edi
push eax edi
mov edi,dword[ebp+8]
call tl_get_cur_node_index ;eax=po_t
cmp eax,2
2035,12 → 2042,11
jl @f
imul eax,sizeof.TreeList
add eax,tl_data_nodes
mov edx,eax
cmp word[edx+2],0
cmp word[eax+2],0
je @f
dec word[edx+2]
dec word[eax+2]
@@:
pop edi edx eax
pop edi eax
pop ebp
ret 4
 
2464,8 → 2470,6
;input:
; eax = value
; edi = string buffer
;output:
; edi =
align 4
tl_convert_to_str:
pushad