Subversion Repositories Kolibri OS

Rev

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
}