Rev 1401 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1401 | Rev 1402 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 09.02.2010 IgorA |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 10.02.2010 IgorA |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | 6 | ||
Line 679... | Line 679... | ||
679 | ; edx = pointer to some node struct |
679 | ; edx = pointer to some node struct |
680 | ; edi = pointer to 'TreeList' struct |
680 | ; edi = pointer to 'TreeList' struct |
681 | ;output: |
681 | ;output: |
682 | ; edx = pointer to next node struct |
682 | ; edx = pointer to next node struct |
683 | align 4 |
683 | align 4 |
684 | tl_iterat_next: |
684 | tl_iterat_next: ;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
685 | push bx |
685 | push bx |
686 | mov bl,0x7f |
686 | mov bl,0x7f |
687 | cmp byte[edx+3],1 |
687 | cmp byte[edx+3],1 |
688 | jne @f |
688 | jne @f |
689 | mov bl,byte[edx+2] |
689 | mov bl,byte[edx+2] |
Line 722... | Line 722... | ||
722 | ;input: |
722 | ;input: |
723 | ; ecx = pointer to 1 node struct |
723 | ; ecx = pointer to 1 node struct |
724 | ; edx = pointer to some node struct |
724 | ; edx = pointer to some node struct |
725 | ; edi = pointer to 'TreeList' struct |
725 | ; edi = pointer to 'TreeList' struct |
726 | align 4 |
726 | align 4 |
727 | tl_iterat_next_all: |
727 | tl_iterat_next_all: ;ïåðåõîä íà ñëåäóùèé âèäèìûé óçåë (è íà çàêðûòûå òîæå) |
728 | cmp tl_tim_undo,0 |
728 | cmp tl_tim_undo,0 |
729 | je .else |
729 | je .else |
Line 730... | Line 730... | ||
730 | 730 | ||
731 | push eax |
731 | push eax |
Line 751... | Line 751... | ||
751 | ;input: |
751 | ;input: |
752 | ; ecx = pointer to 1 node struct |
752 | ; ecx = pointer to 1 node struct |
753 | ; edx = pointer to some node struct |
753 | ; edx = pointer to some node struct |
754 | ; edi = pointer to 'TreeList' struct |
754 | ; edi = pointer to 'TreeList' struct |
755 | align 4 |
755 | align 4 |
756 | tl_iterat_perv: |
756 | tl_iterat_perv: ;ïåðåõîä íà ïðåäûäóùèé âèäèìûé óçåë (ïðîïóñêàÿ çàêðûòûå) |
757 | push eax |
757 | push eax |
758 | cmp tl_tim_undo,0 |
758 | cmp tl_tim_undo,0 |
759 | je .beg1 |
759 | je .beg1 |
Line 760... | Line 760... | ||
760 | 760 | ||
Line 863... | Line 863... | ||
863 | ; edi = pointer to 'TreeList' struct |
863 | ; edi = pointer to 'TreeList' struct |
864 | ;output: |
864 | ;output: |
865 | ; al = 1 if sumbol not visible |
865 | ; al = 1 if sumbol not visible |
866 | ; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo) |
866 | ; (node[i].td+tim_Undo<=ch_tim && node[i].td) || (node[i].tc>ch_tim-tim_Undo) |
867 | align 4 |
867 | align 4 |
868 | tl_node_not_vis: |
- | |
- | 868 | tl_node_not_vis: ;ïðîâåðÿåò âèäèìûé ëè óêàçàííûé óçåë ñ ó÷åòîì: äîáàâëåíèé, óäàëåíèé, îòìåí äåéñòâèé |
|
869 | cmp dword[edx+16],0 |
869 | cmp dword[edx+16],0 |
870 | je @f |
870 | je @f |
871 | mov eax,dword[edx+16] ;eax=node[i].td |
871 | mov eax,dword[edx+16] ;eax=node[i].td |
872 | add eax,tl_tim_undo |
872 | add eax,tl_tim_undo |
873 | cmp eax,tl_ch_tim |
873 | cmp eax,tl_ch_tim |
Line 1025... | Line 1025... | ||
1025 | ; eax = node position |
1025 | ; eax = node position |
1026 | ; edx = pointer to some node struct |
1026 | ; edx = pointer to some node struct |
1027 | ; edi = pointer to 'TreeList' struct |
1027 | ; edi = pointer to 'TreeList' struct |
1028 | ; esi = coord of bottom border |
1028 | ; esi = coord of bottom border |
1029 | align 4 |
1029 | align 4 |
1030 | tl_draw_node: |
- | |
- | 1030 | tl_draw_node: ;ðèñóåò óçåë ñ: êàðòèíêîé, ïîäïèñüþ, èêîíêîé îòêðûòèÿ/çàêðûòèÿ è ëèíèÿìè ê ðîäèò. óçëó |
|
1031 | push eax ebx ecx edx esi |
1031 | push eax ebx ecx edx esi |
Line 1032... | Line 1032... | ||
1032 | 1032 | ||
1033 | mov ebx,1 ;1 - ìåñòî ïîä êóðñîð è ïîä çíàê +,- |
1033 | mov ebx,1 ;1 - ìåñòî ïîä êóðñîð è ïîä çíàê +,- |
1034 | bt tl_style,2 ;tl_list_box_mode |
1034 | bt tl_style,2 ;tl_list_box_mode |
Line 1099... | Line 1099... | ||
1099 | cmp byte[edx+3],1 |
1099 | cmp byte[edx+3],1 |
1100 | jne .close |
1100 | jne .close |
1101 | dec ah |
1101 | dec ah |
1102 | .close: |
1102 | .close: |
Line 1103... | Line 1103... | ||
1103 | 1103 | ||
1104 | call tl_draw_node_icon_opn_clo |
1104 | call tl_draw_node_icon_opn_clo ;ðèñîâàíèå èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà |
1105 | bt tl_style,1 |
1105 | bt tl_style,1 |
1106 | jae .end_draw |
1106 | jae .end_draw |
1107 | call tl_draw_node_icon_par_lin |
1107 | call tl_draw_node_icon_par_lin ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
1108 | call tl_draw_node_icon_par_lin_up |
1108 | call tl_draw_node_icon_par_lin_up ;ðèñîâàíèå âåðòèêàëüíîé ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
1109 | .end_draw: |
1109 | .end_draw: |
1110 | pop esi edx ecx ebx eax |
1110 | pop esi edx ecx ebx eax |
Line 1111... | Line 1111... | ||
1111 | ret |
1111 | ret |
Line 1157... | Line 1157... | ||
1157 | ; al = óðîâåíü ýëåìåíòà |
1157 | ; al = óðîâåíü ýëåìåíòà |
1158 | ; ecx = pointer to 1 node struct |
1158 | ; ecx = pointer to 1 node struct |
1159 | ; edx = pointer to some node struct |
1159 | ; edx = pointer to some node struct |
1160 | ;... |
1160 | ;... |
1161 | align 4 |
1161 | align 4 |
1162 | tl_draw_node_icon_par_lin: |
1162 | tl_draw_node_icon_par_lin: ;ðèñîâàíèå ëèíèè ê ðîäèòåëüñêîìó ýëåìåíòó |
1163 | cmp byte[edx+3],1 |
1163 | cmp byte[edx+3],1 |
1164 | je .close |
1164 | je .close |
1165 | push eax ebx ecx edx esi |
1165 | push eax ebx ecx edx esi |
1166 | cmp al,0 |
1166 | cmp al,0 |
1167 | je @f |
1167 | je @f |
Line 2021... | Line 2021... | ||
2021 | add ecx,sizeof.TreeList ;ecx = pointer to 1 node struct |
2021 | add ecx,sizeof.TreeList ;ecx = pointer to 1 node struct |
Line 2022... | Line 2022... | ||
2022 | 2022 | ||
2023 | mov edx,eax |
2023 | mov edx,eax |
2024 | call tl_iterat_perv ;ïðîâåðÿåì åñòü ëè âåðõíèé óçåë |
2024 | call tl_iterat_perv ;ïðîâåðÿåì åñòü ëè âåðõíèé óçåë |
2025 | cmp edx,ecx |
2025 | cmp edx,ecx |
2026 | jle @f ;åñëè âåðõíåãî óçëà íå òî òåêóùèé óçåë íå äâèãàåì |
- | |
- | 2026 | jle @f ;åñëè âåðõíåãî óçëà íåò òî òåêóùèé óçåë íå äâèãàåì |
|
- | 2027 | mov cl,byte[edx+2] ;áåðåì óðîâåíü ðîäèòåëüñêîãî óçëà |
|
2027 | 2028 | inc cl ;äîáàâëÿåì 1 è ïîëó÷àåì ìàêñèìàëüíîå çíà÷åíèå |
|
- | 2029 | cmp byte[eax+2],cl |
|
- | 2030 | jge @f |
|
2028 | inc word[eax+2] |
2031 | inc byte[eax+2] ;óâåëè÷èâàåì çíà÷åíèå óçëà |
2029 | @@: |
2032 | @@: |
2030 | pop edi edx ecx eax |
2033 | pop edi edx ecx eax |
2031 | pop ebp |
2034 | pop ebp |
Line 2040... | Line 2043... | ||
2040 | call tl_get_cur_node_index ;eax=po_t |
2043 | call tl_get_cur_node_index ;eax=po_t |
2041 | cmp eax,2 |
2044 | cmp eax,2 |
2042 | jl @f |
2045 | jl @f |
2043 | imul eax,sizeof.TreeList |
2046 | imul eax,sizeof.TreeList |
2044 | add eax,tl_data_nodes |
2047 | add eax,tl_data_nodes |
2045 | cmp word[eax+2],0 |
2048 | cmp byte[eax+2],0 |
2046 | je @f |
2049 | je @f |
2047 | dec word[eax+2] |
2050 | dec byte[eax+2] |
2048 | @@: |
2051 | @@: |
2049 | pop edi eax |
2052 | pop edi eax |
2050 | pop ebp |
2053 | pop ebp |
2051 | ret 4 |
2054 | ret 4 |
Line 2256... | Line 2259... | ||
2256 | sub ecx,dword[ebp+12] ;îòíèìàåì óêàçàòåëü íà íà÷àëî ïàìÿòè (áåç ðàíåå çàïèñàííûõ ñòðóêòóð) |
2259 | sub ecx,dword[ebp+12] ;îòíèìàåì óêàçàòåëü íà íà÷àëî ïàìÿòè (áåç ðàíåå çàïèñàííûõ ñòðóêòóð) |
2257 | cmp ecx,dword[ebp+8] ;ecx = element memory size |
2260 | cmp ecx,dword[ebp+8] ;ecx = element memory size |
2258 | jg .err_mem_size |
2261 | jg .err_mem_size |
Line 2259... | Line 2262... | ||
2259 | 2262 | ||
2260 | ;save tree params (in header) |
2263 | ;save tree params (in header) |
2261 | mov dword[esi],0x65657274 ;0x65657274 = 'tree' |
2264 | mov dword[esi],'tree' |
2262 | mov word[esi+4],bx |
2265 | mov word[esi+4],bx |
Line 2263... | Line 2266... | ||
2263 | mov dword[esi+6],eax ;element count |
2266 | mov dword[esi+6],eax ;element count |
2264 | 2267 |