Rev 996 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 996 | Rev 2971 | ||
---|---|---|---|
Line 3... | Line 3... | ||
3 | ;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;; |
3 | ;; Copyright (C) KolibriOS team 2004-2008. All rights reserved. ;; |
4 | ;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;; |
4 | ;; Copyright (C) MenuetOS 2000-2004 Ville Mikael Turjanmaa ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
5 | ;; Distributed under terms of the GNU General Public License ;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 7... | Line 7... | ||
7 | 7 | ||
Line 8... | Line 8... | ||
8 | $Revision: 996 $ |
8 | $Revision: 2971 $ |
9 | 9 | ||
10 | 10 | ||
Line 20... | Line 20... | ||
20 | 20 | ||
21 | get_rolledup_height: ; edi = window draw_data pointer |
21 | get_rolledup_height: ; edi = window draw_data pointer |
22 | mov al,[edi+WDATA.fl_wstyle] |
22 | mov al,[edi+WDATA.fl_wstyle] |
23 | and al,0x0F |
23 | and al,0x0F |
24 | cmp al,0x03 |
24 | cmp al,0x03 |
25 | jne @f |
25 | jb @f |
26 | mov eax,[_skinh] |
26 | mov eax,[_skinh] |
27 | add eax,3 |
27 | add eax,3 |
28 | ret |
28 | ret |
29 | @@: or al,al |
29 | @@: or al,al |
Line 555... | Line 555... | ||
555 | times 128 db 0x0 |
555 | times 128 db 0x0 |
556 | endg |
556 | endg |
Line 557... | Line -... | ||
557 | - | ||
558 | 557 | ||
Line 559... | Line 558... | ||
559 | 558 | ||
Line 560... | Line 559... | ||
560 | 559 | ||
Line 860... | Line 859... | ||
860 | mov edi,[esi+WDATA.cl_workarea] |
859 | mov edi,[esi+WDATA.cl_workarea] |
861 | test edi,0x40000000 |
860 | test edi,0x40000000 |
862 | jnz noinside2 |
861 | jnz noinside2 |
863 | call [drawbar] |
862 | call [drawbar] |
864 | noinside2: |
863 | noinside2: |
865 | - | ||
866 | popad |
864 | popad |
Line 867... | Line 865... | ||
867 | 865 | ||
Line 1128... | Line 1126... | ||
1128 | .skip_redrawings: |
1126 | .skip_redrawings: |
1129 | popfd |
1127 | popfd |
1130 | ret |
1128 | ret |
Line 1131... | Line 1129... | ||
1131 | 1129 | ||
1132 | 1130 | ||
1133 | iglobal |
1131 | ;iglobal |
1134 | window_moving db 'K : Window - move/resize',13,10,0 |
1132 | ; window_moving db 'K : Window - move/resize',13,10,0 |
1135 | window_moved db 'K : Window - done',13,10,0 |
- | |
1136 | endg |
- | |
Line 1137... | Line 1133... | ||
1137 | 1133 | ; window_moved db 'K : Window - done',13,10,0 |
|
1138 | bPressedMouseXY_W db 0x0 |
1134 | ;endg |
1139 | 1135 | ||
1140 | ; check window touch |
1136 | ; check window touch |
Line 1162... | Line 1158... | ||
1162 | mov [bPressedMouseXY_W],0 |
1158 | mov [bPressedMouseXY_W],0 |
1163 | ;..................................... end 1/4 : modified by vhanla ................... |
1159 | ;..................................... end 1/4 : modified by vhanla ................... |
1164 | popad |
1160 | popad |
1165 | ret |
1161 | ret |
1166 | .mouse_buttons_pressed: |
1162 | .mouse_buttons_pressed: |
- | 1163 | ;..................................... start 2/4 : modified by vhanla ................. |
|
- | 1164 | uglobal |
|
- | 1165 | bPressedMouseXY_W db 0x0 |
|
- | 1166 | endg |
|
- | 1167 | ;..................................... end 2/4 : modified by vhanla ................... |
|
1167 | mov esi,[TASK_COUNT] |
1168 | mov esi,[TASK_COUNT] |
1168 | inc esi |
1169 | inc esi |
Line 1169... | Line 1170... | ||
1169 | 1170 | ||
1170 | ;..................................... start 3/4 : modified by vhanla ................. |
1171 | ;..................................... start 3/4 : modified by vhanla ................. |
1171 | cmp [bPressedMouseXY_W],0 |
1172 | cmp [bPressedMouseXY_W],1 |
1172 | jnz @f |
1173 | ja @f |
- | 1174 | inc [bPressedMouseXY_W] |
|
- | 1175 | jnc @f |
|
- | 1176 | ;mov ax,[MOUSE_X] |
|
- | 1177 | ;mov [mx],ax |
|
- | 1178 | ;mov ax,[MOUSE_Y] |
|
- | 1179 | ;mov [my],ax |
|
- | 1180 | mov eax,dword[MOUSE_X] |
|
1173 | mov [bPressedMouseXY_W],1 |
1181 | mov dword[mx],eax |
1174 | @@: |
1182 | @@: |
Line 1175... | Line -... | ||
1175 | ;..................................... end 3/4 : modified by vhanla ................... |
- | |
1176 | - | ||
1177 | movzx eax,word [MOUSE_Y] |
- | |
1178 | movzx ebx,word [MOUSE_X] |
- | |
1179 | mov ecx, [Screen_Max_X] |
- | |
1180 | add ebx, [_display_data] |
- | |
1181 | inc ecx |
- | |
1182 | mul ecx |
- | |
1183 | movzx edi, byte [ebx+eax] |
1183 | ;..................................... end 3/4 : modified by vhanla ................... |
- | 1184 | ||
- | 1185 | cwloop: |
|
Line -... | Line 1186... | ||
- | 1186 | cmp esi,2 |
|
1184 | 1187 | jb .exit |
|
1185 | cwloop: |
- | |
1186 | 1188 | ||
1187 | movzx esi, word [WIN_STACK + edi * 2] |
1189 | dec esi |
- | 1190 | movzx edi, word [WIN_POS + esi * 2] ; ebx |
|
- | 1191 | shl edi, 5 |
|
- | 1192 | add edi, window_data |
|
Line -... | Line 1193... | ||
- | 1193 | ; mov edi, ebx |
|
- | 1194 | mov ecx, [edi + WDATA.box.left] |
|
- | 1195 | mov edx, [edi + WDATA.box.top] |
|
- | 1196 | ||
- | 1197 | mov eax,ecx |
|
- | 1198 | mov ebx,edx |
|
1188 | 1199 | test [edi+WDATA.fl_wstate],WSTATE_MINIMIZED |
|
1189 | shl edi, 5 |
1200 | jnz cwloop |
- | 1201 | ||
- | 1202 | ;..................................... start 4/4 : modified by vhanla ................. |
|
- | 1203 | movzx eax, word [mx]; movzx eax,word[MOUSE_X] |
|
- | 1204 | movzx ebx, word [my]; movzx ebx,word[MOUSE_Y] |
|
- | 1205 | ;..................................... endt 4/4 : modified by vhanla .................. |
|
- | 1206 | cmp ecx, eax |
|
- | 1207 | jae cwloop |
|
- | 1208 | cmp edx, ebx |
|
- | 1209 | jae cwloop |
|
- | 1210 | add ecx, [edi + WDATA.box.width] |
|
- | 1211 | add edx, [edi + WDATA.box.height] |
|
Line 1190... | Line 1212... | ||
1190 | add edi, window_data |
1212 | cmp eax, ecx |
1191 | 1213 | jae cwloop |
|
1192 | movzx eax,word [MOUSE_X] |
1214 | cmp ebx, edx |
1193 | movzx ebx,word [MOUSE_Y] |
1215 | jae cwloop |
1194 | 1216 | ||
Line -... | Line 1217... | ||
- | 1217 | pushad |
|
- | 1218 | mov eax, esi |
|
- | 1219 | mov ebx, [TASK_COUNT] |
|
1195 | pushad |
1220 | cmp eax, ebx ; is this window active? |
1196 | mov eax, esi |
1221 | jz .move_resize_window |
1197 | mov ebx, [TASK_COUNT] |
1222 | |
1198 | cmp eax, ebx ; is this window active? |
1223 | cmp [bPressedMouseXY_W], 1 |
- | 1224 | ja .exit_popa |
|
1199 | jz .move_resize_window |
1225 | |
Line 1200... | Line 1226... | ||
1200 | 1226 | ; eax = position in windowing stack |
|
1201 | ; eax = position in windowing stack |
1227 | ; redraw must ? |
1202 | ; redraw must ? |
1228 | lea esi, [WIN_POS + esi * 2] |
Line 1250... | Line 1276... | ||
1250 | pop eax |
1276 | pop eax |
1251 | jae .exit |
1277 | jae .exit |
Line 1252... | Line 1278... | ||
1252 | 1278 | ||
Line 1253... | Line 1279... | ||
1253 | .continue: |
1279 | .continue: |
1254 | 1280 | ||
1255 | push esi |
1281 | ; push esi |
1256 | mov esi, window_moving |
1282 | ; mov esi, window_moving |
Line 1257... | Line 1283... | ||
1257 | call sys_msg_board_str |
1283 | ; call sys_msg_board_str |
1258 | pop esi |
1284 | ; pop esi |
1259 | 1285 | ||
1260 | mov ecx, [timer_ticks] ; double-click ? |
1286 | mov ecx, [timer_ticks] ; double-click ? |
Line 1309... | Line 1335... | ||
1309 | pop eax |
1335 | pop eax |
Line 1310... | Line 1336... | ||
1310 | 1336 | ||
Line 1311... | Line 1337... | ||
1311 | call drawwindowframes |
1337 | call drawwindowframes |
- | 1338 | ||
Line 1312... | Line 1339... | ||
1312 | 1339 | mov [reposition],0 |
|
Line 1313... | Line 1340... | ||
1313 | mov [reposition],0 |
1340 | mov [MOUSE_DOWN],byte 1 ; no reaction to mouse up/down |
Line 1314... | Line 1341... | ||
1314 | 1341 | ||
Line 1315... | Line 1342... | ||
1315 | ; move window |
1342 | ; move window |
Line -... | Line 1343... | ||
- | 1343 | ||
Line 1316... | Line 1344... | ||
1316 | 1344 | newchm: |
|
Line 1317... | Line 1345... | ||
1317 | newchm: |
1345 | |
1318 | 1346 | call checkidle |
|
1319 | call checkidle |
1347 | |
Line 1320... | Line 1348... | ||
1320 | 1348 | call checkVga_N13 |
|
1321 | call checkVga_N13 |
1349 | |
1322 | 1350 | mov [MOUSE_BACKGROUND],byte 0 |
|
Line 1323... | Line 1351... | ||
1323 | 1351 | ||
1324 | call [draw_pointer] |
1352 | call [draw_pointer] |
1325 | 1353 | ||
Line 1606... | Line 1634... | ||
1606 | jz retwm |
1634 | jz retwm |
1607 | loop waitre2 |
1635 | loop waitre2 |
Line 1608... | Line 1636... | ||
1608 | 1636 | ||
Line 1609... | Line 1637... | ||
1609 | retwm: |
1637 | retwm: |
1610 | 1638 | ||
Line 1611... | Line 1639... | ||
1611 | mov esi,window_moved |
1639 | ; mov esi,window_moved |
Line 1612... | Line 1640... | ||
1612 | call sys_msg_board_str |
1640 | ; call sys_msg_board_str |
Line 1743... | Line 1771... | ||
1743 | rsw_no_scale: |
1771 | rsw_no_scale: |
Line 1744... | Line 1772... | ||
1744 | 1772 | ||
Line -... | Line 1773... | ||
- | 1773 | ret |
|
- | 1774 | ||
- | 1775 | ||
- | 1776 | ;ebx x |
|
- | 1777 | ;eax y |
|
- | 1778 | ;ecx width |
|
- | 1779 | ;edx height |
|
- | 1780 | ;esi slot |
|
- | 1781 | ||
- | 1782 | align 4 |
|
- | 1783 | _set_screen: |
|
- | 1784 | push edx |
|
- | 1785 | add ebx, [_display_data] |
|
- | 1786 | mul [_screen_width] |
|
- | 1787 | lea ebx, [eax+ebx] |
|
- | 1788 | ||
- | 1789 | mov eax, esi |
|
- | 1790 | mov ah, al |
|
- | 1791 | mov esi, eax |
|
- | 1792 | shl eax, 16 |
|
- | 1793 | or eax, esi |
|
- | 1794 | ||
- | 1795 | pop edx |
|
- | 1796 | mov esi, ecx |
|
- | 1797 | .row: |
|
- | 1798 | ||
- | 1799 | mov edi, ebx |
|
- | 1800 | add ebx, [_screen_width] |
|
- | 1801 | ||
- | 1802 | mov ecx, esi |
|
- | 1803 | ||
- | 1804 | dec edx |
|
- | 1805 | js .done |
|
- | 1806 | .16: |
|
- | 1807 | cmp ecx, 16 |
|
- | 1808 | jb .8 |
|
- | 1809 | ||
- | 1810 | mov [edi], eax |
|
- | 1811 | mov [edi+4], eax |
|
- | 1812 | mov [edi+8], eax |
|
- | 1813 | mov [edi+12], eax |
|
- | 1814 | add edi, 16 |
|
- | 1815 | sub ecx, 16 |
|
- | 1816 | jmp .16 |
|
- | 1817 | .8: |
|
- | 1818 | shr ecx, 2 |
|
- | 1819 | rep stosd |
|
- | 1820 | mov ecx, esi |
|
- | 1821 | and ecx, 3 |
|
- | 1822 | rep stosb |
|
- | 1823 | jmp .row |
|
- | 1824 | .done: |
|
- | 1825 | ret |
|
- | 1826 | ||
- | 1827 | ;[esp+4] ebp |
|
- | 1828 | ;[esp+8] x |
|
- | 1829 | ;[esp+12] y |
|
- | 1830 | ;[esp+16] w |
|
- | 1831 | ;[esp+20] h |
|
- | 1832 | ;[esp+24] color |
|
- | 1833 | ||
- | 1834 | ;ebx disp data |
|
- | 1835 | ;edx dest |
|
- | 1836 | ||
- | 1837 | public _int_draw_bar |
|
- | 1838 | align 4 |
|
- | 1839 | _int_draw_bar: |
|
- | 1840 | ||
- | 1841 | lea ecx, [esp+4] |
|
- | 1842 | call lock_cursor |
|
- | 1843 | ||
- | 1844 | sub esp, 4 |
|
- | 1845 | mov [esp], ebp |
|
- | 1846 | ||
- | 1847 | mov ebx, [esp+8] |
|
- | 1848 | mov eax, [esp+12] |
|
- | 1849 | mul [_screen_width] |
|
- | 1850 | add ebx, [_display_data] |
|
- | 1851 | lea ebx, [eax+ebx] |
|
- | 1852 | ||
- | 1853 | mov edi, [esp+8] |
|
- | 1854 | mov eax, [esp+12] |
|
- | 1855 | mul [BytesPerScanLine] |
|
- | 1856 | ||
- | 1857 | cmp byte [ScreenBPP], 24 |
|
- | 1858 | je .24 |
|
- | 1859 | ||
- | 1860 | lea ecx, [LFB_BASE+eax+edi*4] |
|
- | 1861 | ||
- | 1862 | mov eax, [esp+24] |
|
- | 1863 | mov edx, [CURRENT_TASK] |
|
- | 1864 | .row32: |
|
- | 1865 | mov edi, ecx |
|
- | 1866 | mov esi, ebx |
|
- | 1867 | ||
- | 1868 | add ecx, [BytesPerScanLine] |
|
- | 1869 | add ebx, [_screen_width] |
|
- | 1870 | ||
- | 1871 | dec dword [esp+20] |
|
- | 1872 | js .done |
|
- | 1873 | ||
- | 1874 | mov ebp, [esp+16] |
|
- | 1875 | ||
- | 1876 | align 16 |
|
- | 1877 | .draw32: |
|
- | 1878 | cmp dl, byte [esi] |
|
- | 1879 | jne @f |
|
- | 1880 | ||
- | 1881 | stosd |
|
- | 1882 | @@: |
|
- | 1883 | inc esi |
|
- | 1884 | dec ebp |
|
- | 1885 | jnz .draw32 |
|
- | 1886 | jmp .row32 |
|
- | 1887 | .done: |
|
- | 1888 | call unlock_cursor |
|
- | 1889 | ||
- | 1890 | mov ebp, [esp] |
|
- | 1891 | add esp, 4 |
|
- | 1892 | ret |
|
- | 1893 | ||
- | 1894 | .24: |
|
- | 1895 | lea ecx, [LFB_BASE+edi*3] |
|
- | 1896 | add ecx, eax |
|
- | 1897 | ||
- | 1898 | mov eax, [esp+24] |
|
- | 1899 | mov edx, eax |
|
- | 1900 | shr edx, 8 |
|
- | 1901 | mov dl, [CURRENT_TASK] |
|
- | 1902 | .row24: |
|
- | 1903 | mov edi, ecx |
|
- | 1904 | mov esi, ebx |
|
- | 1905 | ||
- | 1906 | add ecx, [BytesPerScanLine] |
|
- | 1907 | add ebx, [_screen_width] |
|
- | 1908 | ||
- | 1909 | dec dword [esp+20] |
|
- | 1910 | js .done |
|
- | 1911 | ||
- | 1912 | mov ebp, [esp+16] |
|
- | 1913 | ||
- | 1914 | align 16 |
|
- | 1915 | .draw24: |
|
- | 1916 | cmp dl, byte [esi] |
|
- | 1917 | jne @f |
|
- | 1918 | ||
- | 1919 | mov [edi], ax |
|
- | 1920 | mov [edi+2], dh |
|
- | 1921 | @@: |
|
- | 1922 | add edi, 3 |
|
- | 1923 | inc esi |
|
- | 1924 | dec ebp |
|
- | 1925 | jnz .draw24 |
|
- | 1926 | jmp .row24 |
|
- | 1927 | ||
- | 1928 | ||
- | 1929 | ||
- | 1930 | ;[esp+4] x |
|
- | 1931 | ;[esp+8] y |
|
- | 1932 | ;[esp+12] w |
|
- | 1933 | ;[esp+16] color |
|
- | 1934 | ||
- | 1935 | ;esi disp data |
|
- | 1936 | ;edi dest |
|
- | 1937 | ||
- | 1938 | ||
- | 1939 | public _int_hline |
|
- | 1940 | align 4 |
|
- | 1941 | _int_hline: |
|
- | 1942 | ||
- | 1943 | mov esi, [esp+4] |
|
- | 1944 | mov eax, [esp+8] |
|
- | 1945 | mov ecx, [esp+12] |
|
- | 1946 | ||
- | 1947 | mul [_screen_width] |
|
- | 1948 | add esi, [_display_data] |
|
- | 1949 | add esi, eax |
|
- | 1950 | ||
- | 1951 | mov edi, [esp+4] |
|
- | 1952 | mov eax, [esp+8] |
|
- | 1953 | mul [BytesPerScanLine] |
|
- | 1954 | ||
- | 1955 | cmp byte [ScreenBPP], 24 |
|
- | 1956 | je .24 |
|
- | 1957 | ||
- | 1958 | lea edi, [LFB_BASE+eax+edi*4] |
|
- | 1959 | ||
- | 1960 | mov eax, [esp+16] |
|
- | 1961 | ||
- | 1962 | .32_kernel: |
|
- | 1963 | mov edx, [CURRENT_TASK] |
|
- | 1964 | ||
- | 1965 | align 16 |
|
- | 1966 | .draw32: |
|
- | 1967 | cmp dl, byte [esi] |
|
- | 1968 | jne @f |
|
- | 1969 | ||
- | 1970 | stosd |
|
- | 1971 | @@: |
|
- | 1972 | inc esi |
|
- | 1973 | dec ecx |
|
- | 1974 | jnz .draw32 |
|
- | 1975 | ||
- | 1976 | ret |
|
- | 1977 | .24: |
|
- | 1978 | lea edi, [LFB_BASE+edi*3] |
|
- | 1979 | add edi, eax |
|
- | 1980 | ||
- | 1981 | mov eax, [esp+16] |
|
- | 1982 | ||
- | 1983 | .24_kernel: |
|
- | 1984 | mov edx, eax |
|
- | 1985 | shr edx, 8 |
|
- | 1986 | mov dl, [CURRENT_TASK] |
|
- | 1987 | ||
- | 1988 | align 16 |
|
- | 1989 | .draw24: |
|
- | 1990 | cmp dl, byte [esi] |
|
- | 1991 | jne @f |
|
- | 1992 | ||
- | 1993 | mov [edi], ax |
|
- | 1994 | mov [edi+2], dh |
|
- | 1995 | @@: |
|
- | 1996 | add edi, 3 |
|
- | 1997 | inc esi |
|
- | 1998 | dec ecx |
|
- | 1999 | jnz .draw24 |
|
- | 2000 | ||
- | 2001 | ret |
|
- | 2002 | ||
- | 2003 | ||
- | 2004 | ;[esp+4] x |
|
- | 2005 | ;[esp+8] y |
|
- | 2006 | ;[esp+12] h |
|
- | 2007 | ;[esp+16] color |
|
- | 2008 | ||
- | 2009 | ;esi disp data |
|
- | 2010 | ;edi dest |
|
- | 2011 | ||
- | 2012 | public _int_vline |
|
- | 2013 | align 4 |
|
- | 2014 | _int_vline: |
|
- | 2015 | ||
- | 2016 | mov esi, [esp+4] |
|
- | 2017 | mov eax, [esp+8] |
|
- | 2018 | mov ecx, [esp+12] |
|
- | 2019 | ||
- | 2020 | mul [_screen_width] |
|
- | 2021 | add esi, [_display_data] |
|
- | 2022 | add esi, eax |
|
- | 2023 | ||
- | 2024 | mov edi, [esp+4] |
|
- | 2025 | mov eax, [esp+8] |
|
- | 2026 | mul [BytesPerScanLine] |
|
- | 2027 | ||
- | 2028 | cmp byte [ScreenBPP], 24 |
|
- | 2029 | je .24 |
|
- | 2030 | ||
- | 2031 | lea edi, [LFB_BASE+eax+edi*4] |
|
- | 2032 | ||
- | 2033 | mov eax, [esp+16] |
|
- | 2034 | ||
- | 2035 | .32_kernel: |
|
- | 2036 | mov edx, [CURRENT_TASK] |
|
- | 2037 | ||
- | 2038 | align 16 |
|
- | 2039 | .draw32: |
|
- | 2040 | cmp dl, byte [esi] |
|
- | 2041 | jne @f |
|
- | 2042 | ||
- | 2043 | mov [edi], eax |
|
- | 2044 | @@: |
|
- | 2045 | add esi, [_screen_width] |
|
- | 2046 | add edi, [BytesPerScanLine] |
|
- | 2047 | dec ecx |
|
- | 2048 | jnz .draw32 |
|
- | 2049 | ||
- | 2050 | ret |
|
- | 2051 | .24: |
|
- | 2052 | lea edi, [LFB_BASE+edi*3] |
|
- | 2053 | add edi, eax |
|
- | 2054 | ||
- | 2055 | mov eax, [esp+16] |
|
- | 2056 | ||
- | 2057 | .24_kernel: |
|
- | 2058 | mov edx, eax |
|
- | 2059 | shr edx, 8 |
|
- | 2060 | mov dl, [CURRENT_TASK] |
|
- | 2061 | ||
- | 2062 | align 16 |
|
- | 2063 | .draw24: |
|
- | 2064 | cmp dl, byte [esi] |
|
- | 2065 | jne @f |
|
- | 2066 | ||
- | 2067 | mov [edi], ax |
|
- | 2068 | mov [edi+2], dh |
|
- | 2069 | @@: |
|
- | 2070 | add esi, [_screen_width] |
|
- | 2071 | add edi, [BytesPerScanLine] |
|
- | 2072 | dec ecx |
|
- | 2073 | jnz .draw24 |
|
- | 2074 | ||
- | 2075 | ret |
|
- | 2076 | ||
- | 2077 | ;[esp] dst |
|
- | 2078 | ;[esp+4] mask |
|
- | 2079 | ||
- | 2080 | ;[esp+12] x |
|
- | 2081 | ;[esp+16] y |
|
- | 2082 | ;[esp+20] w |
|
- | 2083 | ;[esp+24] h |
|
- | 2084 | ;[esp+32] color |
|
- | 2085 | ||
- | 2086 | public _int_rectangle |
|
- | 2087 | align 4 |
|
- | 2088 | _int_rectangle: |
|
- | 2089 | ||
- | 2090 | .dst equ (esp) |
|
- | 2091 | .mask equ (esp+4) |
|
- | 2092 | ||
- | 2093 | .x equ (esp+12) |
|
- | 2094 | .y equ (esp+16) |
|
- | 2095 | .w equ (esp+20) |
|
- | 2096 | .h equ (esp+24) |
|
- | 2097 | .color equ (esp+28) |
|
- | 2098 | ||
- | 2099 | sub esp, 8 |
|
- | 2100 | ||
- | 2101 | mov esi, [.x] |
|
- | 2102 | mov eax, [.y] |
|
- | 2103 | mul [_screen_width] |
|
- | 2104 | add esi, [_display_data] |
|
- | 2105 | add esi, eax |
|
- | 2106 | mov [.mask], esi |
|
- | 2107 | ||
- | 2108 | mov edi, [.x] |
|
- | 2109 | mov eax, [.y] |
|
- | 2110 | mul [BytesPerScanLine] |
|
- | 2111 | ||
- | 2112 | cmp byte [ScreenBPP], 24 |
|
- | 2113 | je .24 |
|
- | 2114 | ||
- | 2115 | lea edi, [LFB_BASE+eax+edi*4] |
|
- | 2116 | ||
- | 2117 | mov [.dst], edi |
|
- | 2118 | ||
- | 2119 | mov ecx, [.w] |
|
- | 2120 | mov eax, [.color] |
|
- | 2121 | call _int_hline.32_kernel |
|
- | 2122 | ||
- | 2123 | sub edi, 4 |
|
- | 2124 | dec esi |
|
- | 2125 | ||
- | 2126 | mov ecx, [.h] |
|
- | 2127 | call _int_vline.32_kernel |
|
- | 2128 | ||
- | 2129 | mov edi, [.dst] |
|
- | 2130 | mov esi, [.mask] |
|
- | 2131 | mov ecx, [.h] |
|
- | 2132 | call _int_vline.32_kernel |
|
- | 2133 | ||
- | 2134 | mov ecx, [.w] |
|
- | 2135 | sub esi, [_screen_width] |
|
- | 2136 | sub edi, [BytesPerScanLine] |
|
- | 2137 | call _int_hline.32_kernel |
|
- | 2138 | ||
- | 2139 | add esp, 8 |
|
- | 2140 | ret |
|
- | 2141 | .24: |
|
- | 2142 | lea edi, [LFB_BASE+edi*3] |
|
- | 2143 | add edi, eax |
|
- | 2144 | ||
- | 2145 | mov [.dst], edi |
|
- | 2146 | ||
- | 2147 | mov ecx, [.w] |
|
- | 2148 | mov eax, [.color] |
|
- | 2149 | call _int_hline.24_kernel |
|
- | 2150 | ||
- | 2151 | sub edi, 3 |
|
- | 2152 | dec esi |
|
- | 2153 | ||
- | 2154 | mov ecx, [.h] |
|
- | 2155 | call _int_vline.24_kernel |
|
- | 2156 | ||
- | 2157 | mov edi, [.dst] |
|
- | 2158 | mov esi, [.mask] |
|
- | 2159 | mov ecx, [.h] |
|
- | 2160 | call _int_vline.24_kernel |
|
- | 2161 | ||
- | 2162 | mov ecx, [.w] |
|
- | 2163 | sub esi, [_screen_width] |
|
- | 2164 | sub edi, [BytesPerScanLine] |
|
- | 2165 | call _int_hline.24_kernel |
|
- | 2166 | ||
- | 2167 | restore .dst |
|
- | 2168 | restore .mask |
|
- | 2169 | ||
- | 2170 | restore .x |
|
- | 2171 | restore .y |
|
- | 2172 | restore .w |
|
- | 2173 | restore .h |
|
- | 2174 | restore .color |