Rev 1283 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1283 | Rev 1285 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
1 | ; ìàêðîñ äëÿ ñèñòåìíîé áèáëèîòåêè box_lib.obj |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
2 | ; ýëåìåíò TreeList äëÿ Kolibri OS |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 23.11.2009 IgorA |
3 | ; ôàéë ïîñëåäíèé ðàç èçìåíÿëñÿ 24.11.2009 IgorA |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
4 | ; íà êîä ïðèìåíåíà GPL2 ëèöåíçèÿ |
Line 5... | Line 5... | ||
5 | 5 | ||
6 | 6 | ||
Line 380... | Line 380... | ||
380 | .no_open_close: |
380 | .no_open_close: |
Line 381... | Line 381... | ||
381 | 381 | ||
382 | mov esi,tl_box_top |
382 | mov esi,tl_box_top |
383 | add esi,tl_box_height ;esi = coord bottom border |
383 | add esi,tl_box_height ;esi = coord bottom border |
- | 384 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
|
384 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
385 | call tl_draw_caption_cur_pos |
385 | jmp .no_draw |
386 | jmp .no_draw |
386 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
387 | .no_in_wnd: ;íå ïîïàëè â îêíî - ïîòåðÿ ôîêóñà (ïðè óñëîâèè ÷òî ôîêóñ áûë íà äàííîì ýåëåìåíòå) |
387 | mov ebx,tl_el_focus |
388 | mov ebx,tl_el_focus |
388 | cmp dword[ebx],edi |
389 | cmp dword[ebx],edi |
Line 609... | Line 610... | ||
609 | 610 | ||
610 | ;input: |
611 | ;input: |
611 | ; ecx = pointer to 1 node struct |
612 | ; ecx = pointer to 1 node struct |
612 | ; edx = pointer to some node struct |
613 | ; edx = pointer to some node struct |
- | 614 | ; edi = pointer to 'TreeList' struct |
|
- | 615 | ;output: |
|
613 | ; edi = pointer to 'TreeList' struct |
616 | ; edx = pointer to next node struct |
614 | align 4 |
617 | align 4 |
615 | tl_iterat_next: |
618 | tl_iterat_next: |
616 | push bx |
619 | push bx |
617 | mov bl,0x7f |
620 | mov bl,0x7f |
Line 987... | Line 990... | ||
987 | 990 | ||
988 | ;input: |
991 | ;input: |
989 | ; ecx = pointer to 1 node struct |
992 | ; ecx = pointer to 1 node struct |
990 | ;... |
993 | ;... |
991 | align 4 |
994 | align 4 |
992 | tl_draw_node_icon_opn_clo: |
995 | tl_draw_node_icon_opn_clo: ;ðèñóåò èêîíêè îòêðûòîãî èëè çàêðûòîãî óçëà (îáû÷íî + èëè -) |
993 | push eax ebx ecx edx esi |
996 | push eax ebx ecx edx esi |
994 | inc al |
997 | inc al |
995 | call tl_iterat_next_all ;get next visible item |
998 | call tl_iterat_next_all ;get next visible item |
996 | cmp edx,ecx |
999 | cmp edx,ecx |
Line 1565... | Line 1568... | ||
1565 | call tl_draw ;ïîëíàÿ ïåðåðèñîâêà îêíà |
1568 | call tl_draw ;ïîëíàÿ ïåðåðèñîâêà îêíà |
1566 | jmp .no_redraw |
1569 | jmp .no_redraw |
1567 | @@: |
1570 | @@: |
1568 | mov edi,dword[ebp+8] ;restore edi |
1571 | mov edi,dword[ebp+8] ;restore edi |
1569 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
1572 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
- | 1573 | call tl_draw_caption_cur_pos |
|
1570 | .no_redraw: |
1574 | .no_redraw: |
1571 | pop esi edi ebx eax |
1575 | pop esi edi ebx eax |
1572 | pop ebp |
1576 | pop ebp |
1573 | ret 4 |
1577 | ret 4 |
Line 1628... | Line 1632... | ||
1628 | @@: |
1632 | @@: |
1629 | mov edi,dword[ebp+8] ;restore edi |
1633 | mov edi,dword[ebp+8] ;restore edi |
1630 | ;mov esi,tl_box_top |
1634 | ;mov esi,tl_box_top |
1631 | ;add esi,tl_box_height ;esi = coord bottom border |
1635 | ;add esi,tl_box_height ;esi = coord bottom border |
1632 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
1636 | call tl_draw_cursor ;ïåðåðèñîâêà êóðñîðà |
- | 1637 | call tl_draw_caption_cur_pos |
|
1633 | .no_redraw: |
1638 | .no_redraw: |
1634 | pop esi edi eax |
1639 | pop esi edi eax |
1635 | pop ebp |
1640 | pop ebp |
1636 | ret 4 |
1641 | ret 4 |
Line 1704... | Line 1709... | ||
1704 | @@: |
1709 | @@: |
1705 | pop edi edx eax |
1710 | pop edi edx eax |
1706 | pop ebp |
1711 | pop ebp |
1707 | ret 4 |
1712 | ret 4 |
Line -... | Line 1713... | ||
- | 1713 | ||
- | 1714 | align 4 |
|
- | 1715 | tl_node_move_up: ;ïåðåìåùàåì óçåë ââåðõ |
|
- | 1716 | push ebp |
|
- | 1717 | mov ebp,esp |
|
- | 1718 | push eax ebx ecx edx edi esi |
|
- | 1719 | mov edi,dword[ebp+8] |
|
- | 1720 | call tl_get_cur_node_index ;eax=po_t |
|
- | 1721 | cmp eax,2 |
|
- | 1722 | jl @f |
|
- | 1723 | mov ebx,eax ;copy index of node struct |
|
- | 1724 | mov edx,tl_data_nodes |
|
- | 1725 | mov ecx,edx |
|
- | 1726 | add ecx,sizeof.TreeList |
|
- | 1727 | imul eax,sizeof.TreeList |
|
- | 1728 | add eax,edx ;eax = pointer to 2 node struct |
|
- | 1729 | mov edx,eax ;edx = pointer to 2 node struct |
|
- | 1730 | mov esi,eax ;esi = pointer to 2 node struct |
|
- | 1731 | call tl_iterat_perv ;edx = pointer to 1 node struct |
|
- | 1732 | call tl_get_node_index ;eax = index of 1 node struct |
|
- | 1733 | cmp edx,ecx |
|
- | 1734 | jle @f |
|
- | 1735 | cmp dword[edx+8],ebx ;+8 next |
|
- | 1736 | jne .po8 |
|
- | 1737 | call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê |
|
- | 1738 | jmp .cur_mov |
|
- | 1739 | .po8: |
|
- | 1740 | call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê |
|
- | 1741 | .cur_mov: |
|
- | 1742 | push dword edi |
|
- | 1743 | call tl_cur_perv |
|
- | 1744 | push dword edi |
|
- | 1745 | call tl_draw |
|
- | 1746 | @@: |
|
- | 1747 | pop esi edi edx ecx ebx eax |
|
- | 1748 | pop ebp |
|
- | 1749 | ret 4 |
|
- | 1750 | ||
- | 1751 | align 4 |
|
- | 1752 | tl_node_move_down: ;ïåðåìåùàåì óçåë âíèç |
|
- | 1753 | push ebp |
|
- | 1754 | mov ebp,esp |
|
- | 1755 | push eax ebx ecx edx edi esi |
|
- | 1756 | mov edi,dword[ebp+8] |
|
- | 1757 | call tl_get_cur_node_index ;eax=po_t |
|
- | 1758 | cmp eax,2 |
|
- | 1759 | jl @f |
|
- | 1760 | mov ebx,eax ;copy index of node struct |
|
- | 1761 | mov edx,tl_data_nodes |
|
- | 1762 | mov ecx,edx |
|
- | 1763 | add ecx,sizeof.TreeList |
|
- | 1764 | imul eax,sizeof.TreeList |
|
- | 1765 | add eax,edx ;eax = pointer to 1 node struct |
|
- | 1766 | mov edx,eax ;edx = pointer to 1 node struct |
|
- | 1767 | mov esi,eax ;esi = pointer to 1 node struct |
|
- | 1768 | call tl_iterat_next ;edx = pointer to 2 node struct |
|
- | 1769 | call tl_get_node_index ;eax = index of 2 node struct |
|
- | 1770 | cmp edx,ecx |
|
- | 1771 | jle @f |
|
- | 1772 | cmp dword[esi+8],eax ;+8 next |
|
- | 1773 | jne .po8 |
|
- | 1774 | xchg eax,ebx ;ìåíÿå ïîðÿäîê ñëåäîâàíèÿ çàìåíÿåìûõ óçëîâ |
|
- | 1775 | xchg edx,esi |
|
- | 1776 | call tl_node_move_po6 ;óçëû èäóò ïîäðÿä ìåíÿåì 6 ññûëîê |
|
- | 1777 | jmp .cur_mov |
|
- | 1778 | .po8: ;à òóò ïîðÿäîê ñëåäîâàíèÿ óçëîâ íå ìåíÿåì |
|
- | 1779 | call tl_node_move_po8 ;óçëû èäóò íå ïîäðÿä ìåíÿåì 8 ññûëîê |
|
- | 1780 | .cur_mov: |
|
- | 1781 | push dword edi |
|
- | 1782 | call tl_cur_next |
|
- | 1783 | push dword edi |
|
- | 1784 | call tl_draw |
|
- | 1785 | @@: |
|
- | 1786 | pop esi edi edx ecx ebx eax |
|
- | 1787 | pop ebp |
|
- | 1788 | ret 4 |
|
- | 1789 | ||
- | 1790 | align 4 |
|
- | 1791 | tl_node_move_po6: |
|
- | 1792 | mov ecx,edx ;save node pointer |
|
- | 1793 | call tl_move_perv |
|
- | 1794 | mov dword[edx+8],ebx |
|
- | 1795 | ||
- | 1796 | mov edx,esi |
|
- | 1797 | call tl_move_next |
|
- | 1798 | mov dword[edx+4],eax |
|
- | 1799 | mov edx,ecx ;restore node pointer |
|
- | 1800 | ||
- | 1801 | ;+4 perv |
|
- | 1802 | mov ecx,dword[edx+4] |
|
- | 1803 | mov dword[esi+4],ecx |
|
- | 1804 | ;+8 next |
|
- | 1805 | mov ecx,dword[esi+8] |
|
- | 1806 | mov dword[edx+8],ecx |
|
- | 1807 | ||
- | 1808 | mov dword[edx+4],ebx |
|
- | 1809 | mov dword[esi+8],eax |
|
- | 1810 | ret |
|
- | 1811 | ||
- | 1812 | ;input |
|
- | 1813 | ;eax = index 1 node struct |
|
- | 1814 | ;ebx = index 2 node struct |
|
- | 1815 | ;edx = pointer 1 node struct |
|
- | 1816 | ;esi = pointer 2 node struct |
|
- | 1817 | ;edi = pointer to 'TreeList' struct |
|
- | 1818 | ;output: |
|
- | 1819 | ;eax = ? |
|
- | 1820 | ;ebx = ? |
|
- | 1821 | ;ecx = ? |
|
- | 1822 | align 4 |
|
- | 1823 | tl_node_move_po8: |
|
- | 1824 | ; push ecx |
|
- | 1825 | mov ecx,edx ;save node pointer |
|
- | 1826 | call tl_move_perv |
|
- | 1827 | mov dword[edx+8],ebx |
|
- | 1828 | mov edx,ecx |
|
- | 1829 | call tl_move_next |
|
- | 1830 | mov dword[edx+4],ebx |
|
- | 1831 | mov edx,esi |
|
- | 1832 | call tl_move_perv |
|
- | 1833 | mov dword[edx+8],eax |
|
- | 1834 | mov edx,esi |
|
- | 1835 | call tl_move_next |
|
- | 1836 | mov dword[edx+4],eax |
|
- | 1837 | mov edx,ecx ;restore node pointer |
|
- | 1838 | ; pop ecx |
|
- | 1839 | ||
- | 1840 | ;+4 perv |
|
- | 1841 | mov eax,dword[edx+4] |
|
- | 1842 | mov ebx,dword[esi+4] |
|
- | 1843 | xchg eax,ebx |
|
- | 1844 | mov dword[edx+4],eax |
|
- | 1845 | mov dword[esi+4],ebx |
|
- | 1846 | ;+8 next |
|
- | 1847 | mov eax,dword[edx+8] |
|
- | 1848 | mov ebx,dword[esi+8] |
|
- | 1849 | xchg eax,ebx |
|
- | 1850 | mov dword[edx+8],eax |
|
- | 1851 | mov dword[esi+8],ebx |
|
- | 1852 | ret |
|
- | 1853 | ||
- | 1854 | ;input: |
|
- | 1855 | ; edi = pointer to 'TreeList' struct |
|
- | 1856 | align 4 |
|
- | 1857 | tl_draw_caption_cur_pos: |
|
- | 1858 | cmp tl_capt_cy,9 ;9 - minimum caption height |
|
- | 1859 | jl @f |
|
- | 1860 | push eax ebx ecx edx edi esi |
|
- | 1861 | mov eax,47 ;draw |
|
- | 1862 | mov ebx,0x40000 |
|
- | 1863 | mov ecx,tl_cur_pos |
|
- | 1864 | inc ecx |
|
- | 1865 | mov edx,tl_box_left |
|
- | 1866 | shl edx,16 |
|
- | 1867 | add edx,50*65536+3 |
|
- | 1868 | add edx,tl_box_top |
|
- | 1869 | mov esi,tl_col_txt |
|
- | 1870 | or esi,0x40000000 ;çàêðàøèâàòü ôîí öâåòîì edi |
|
- | 1871 | mov edi,tl_col_zag |
|
- | 1872 | int 0x40 |
|
- | 1873 | pop esi edi edx ecx ebx eax |
|
- | 1874 | @@: |
|
- | 1875 | ret |
|
1708 | 1876 | ||
1709 | txt_capt_cur db 'âப ',0 |
1877 | txt_capt_cur db 'âப ',0 |
1710 | txt_capt_otm db '⬥ë',0 |
1878 | txt_capt_otm db '⬥ë',0 |
1711 | } |
1879 | } |