Rev 9932 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9932 | Rev 9941 | ||
---|---|---|---|
Line 4... | Line 4... | ||
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 | ;; ;; |
7 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
7 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 8... | Line 8... | ||
8 | 8 | ||
Line 9... | Line 9... | ||
9 | $Revision: 9932 $ |
9 | $Revision: 9941 $ |
10 | 10 | ||
11 | ;============================================================================== |
11 | ;============================================================================== |
Line 184... | Line 184... | ||
184 | 184 | ||
185 | 185 | ||
186 | align 4 |
186 | align 4 |
187 | ; system function 48 |
187 | ; system function 48 |
188 | syscall_display_settings: |
188 | syscall_display_settings: |
189 | cmp ebx, 13 |
189 | cmp ebx, .ftable.size-1 |
Line 190... | Line 190... | ||
190 | ja .ret |
190 | ja .ret |
191 | jmp dword[.ftable + ebx*4] |
191 | jmp dword[.ftable + ebx*4] |
Line 204... | Line 204... | ||
204 | dd .getFontSmoothing |
204 | dd .getFontSmoothing |
205 | dd .setFontSmoothing |
205 | dd .setFontSmoothing |
206 | dd .getFontSize |
206 | dd .getFontSize |
207 | dd .setFontSize |
207 | dd .setFontSize |
208 | dd .setSkinUnicode |
208 | dd .setSkinUnicode |
- | 209 | .ftable.size = ($ - .ftable)/4 |
|
Line 209... | Line 210... | ||
209 | 210 | ||
210 | .redrawWholeScreen: |
211 | .redrawWholeScreen: |
211 | xor eax, eax |
212 | xor eax, eax |
212 | inc ebx |
213 | inc ebx |
Line 221... | Line 222... | ||
221 | dec eax |
222 | dec eax |
222 | mov [draw_limits.right], eax |
223 | mov [draw_limits.right], eax |
223 | mov eax, [_display.height] |
224 | mov eax, [_display.height] |
224 | dec eax |
225 | dec eax |
225 | mov [draw_limits.bottom], eax |
226 | mov [draw_limits.bottom], eax |
226 | mov eax, window_data |
227 | mov eax, window_data ; TODO: check pointer |
227 | jmp redrawscreen |
228 | jmp redrawscreen |
Line 228... | Line 229... | ||
228 | 229 | ||
229 | .setButtonStyle: |
230 | .setButtonStyle: |
230 | ; in: ecx: 0 = flat, 1 = with gradient |
231 | ; in: ecx: 0 = flat, 1 = with gradient |
Line 404... | Line 405... | ||
404 | ; -------------------------- |
405 | ; -------------------------- |
405 | ;; Set window shape scale: |
406 | ;; Set window shape scale: |
406 | ;> ebx = 1 |
407 | ;> ebx = 1 |
407 | ;> ecx = scale power (resulting scale is 2^ebx) |
408 | ;> ecx = scale power (resulting scale is 2^ebx) |
408 | syscall_set_window_shape: |
409 | syscall_set_window_shape: |
409 | mov edi, [current_slot_idx] |
410 | mov edi, [current_slot] |
410 | shl edi, BSF sizeof.WDATA |
411 | mov edi, [edi + APPDATA.window] |
Line 411... | Line 412... | ||
411 | 412 | ||
412 | test ebx, ebx |
413 | test ebx, ebx |
413 | jne .shape_scale |
414 | jne .shape_scale |
414 | mov [window_data + edi + WDATA.shape], ecx |
415 | mov [edi + WDATA.shape], ecx |
415 | ;-------------------------------------- |
416 | ;-------------------------------------- |
416 | align 4 |
417 | align 4 |
417 | .shape_scale: |
418 | .shape_scale: |
418 | dec ebx |
419 | dec ebx |
419 | jnz .exit |
420 | jnz .exit |
420 | mov [window_data + edi + WDATA.shape_scale], ecx |
421 | mov [edi + WDATA.shape_scale], ecx |
421 | ;-------------------------------------- |
422 | ;-------------------------------------- |
422 | align 4 |
423 | align 4 |
423 | .exit: |
424 | .exit: |
424 | ret |
425 | ret |
Line 425... | Line 426... | ||
425 | ;------------------------------------------------------------------------------ |
426 | ;------------------------------------------------------------------------------ |
426 | 427 | ||
427 | align 4 |
428 | align 4 |
428 | ; system function 67 |
429 | ; system function 67 |
429 | syscall_move_window: |
430 | syscall_move_window: |
430 | mov edi, [current_slot_idx] |
- | |
Line 431... | Line 431... | ||
431 | shl edi, BSF sizeof.WDATA |
431 | mov edi, [current_slot] |
432 | add edi, window_data |
432 | mov edi, [edi + APPDATA.window] |
Line 433... | Line 433... | ||
433 | 433 | ||
Line 554... | Line 554... | ||
554 | ;-------------------------------------- |
554 | ;-------------------------------------- |
555 | align 4 |
555 | align 4 |
556 | .next_window: |
556 | .next_window: |
557 | movzx edi, word[WIN_POS + esi * 2] |
557 | movzx edi, word[WIN_POS + esi * 2] |
558 | shl edi, BSF sizeof.WDATA |
558 | shl edi, BSF sizeof.WDATA |
- | 559 | add edi, window_data |
|
Line 559... | Line 560... | ||
559 | 560 | ||
560 | test byte [window_data + edi + WDATA.fl_wstate], WSTATE_USED |
561 | test byte [edi + WDATA.fl_wstate], WSTATE_USED |
Line 561... | Line -... | ||
561 | jz .skip_window |
- | |
562 | 562 | jz .skip_window |
|
563 | add edi, window_data |
563 | |
Line 564... | Line 564... | ||
564 | test [edi + WDATA.fl_wstate], WSTATE_MINIMIZED |
564 | test [edi + WDATA.fl_wstate], WSTATE_MINIMIZED |
565 | jnz .skip_window |
565 | jnz .skip_window |
Line 1243... | Line 1243... | ||
1243 | mov bl, 0 |
1243 | mov bl, 0 |
1244 | xchg [window_minimize], bl |
1244 | xchg [window_minimize], bl |
1245 | dec bl |
1245 | dec bl |
1246 | jnz @f |
1246 | jnz @f |
1247 | call minimize_window |
1247 | call minimize_window |
1248 | jmp .exit |
1248 | ret |
1249 | ;-------------------------------------- |
1249 | ;-------------------------------------- |
1250 | align 4 |
1250 | align 4 |
1251 | @@: |
1251 | @@: |
1252 | call restore_minimized_window |
1252 | call restore_minimized_window |
1253 | ;-------------------------------------- |
1253 | ;-------------------------------------- |
Line 1612... | Line 1612... | ||
1612 | 1612 | ||
1613 | 1613 | ||
1614 | align 4 |
1614 | align 4 |
1615 | ;< edx = pointer to WDATA struct |
1615 | ;< edx = pointer to WDATA struct |
1616 | window._.sys_set_window: |
1616 | window._.sys_set_window: |
1617 | mov eax, [current_slot_idx] |
- | |
1618 | shl eax, BSF sizeof.WDATA |
1617 | mov eax, [current_slot] |
1619 | add eax, window_data |
1618 | mov eax, [eax + APPDATA.window] |
1620 | ; save window colors |
1619 | ; save window colors |
1621 | mov [eax + WDATA.cl_workarea], edx |
1620 | mov [eax + WDATA.cl_workarea], edx |
1622 | mov [eax + WDATA.cl_titlebar], esi |
1621 | mov [eax + WDATA.cl_titlebar], esi |
Line 1845... | Line 1844... | ||
1845 | 1844 | ||
Line 1846... | Line 1845... | ||
1846 | pushad |
1845 | pushad |
1847 | 1846 | ||
- | 1847 | mov edi, esi |
|
Line 1848... | Line 1848... | ||
1848 | mov edi, esi |
1848 | shl edi, BSF sizeof.WDATA |
1849 | shl edi, BSF sizeof.WDATA |
1849 | add edi, window_data |
Line 1850... | Line 1850... | ||
1850 | 1850 | ||
1851 | cmp esi, 1 |
1851 | cmp esi, 1 |
- | 1852 | jz .check_for_shaped_window |
|
1852 | jz .check_for_shaped_window |
1853 | |
1853 | 1854 | cmp [edi + WDATA.box.width], 0 |
|
1854 | cmp [window_data + edi + WDATA.box.width], 0 |
1855 | jnz .check_for_shaped_window |
1855 | jnz .check_for_shaped_window |
1856 | |
1856 | cmp [window_data + edi + WDATA.box.height], 0 |
1857 | cmp [edi + WDATA.box.height], 0 |
1857 | jz .exit |
1858 | jz .exit |
1858 | ;-------------------------------------- |
1859 | ;-------------------------------------- |
Line 1859... | Line 1860... | ||
1859 | align 4 |
1860 | align 4 |
1860 | .check_for_shaped_window: |
1861 | .check_for_shaped_window: |
1861 | cmp [window_data + edi + WDATA.shape], 0 |
1862 | cmp [edi + WDATA.shape], 0 |
Line 1906... | Line 1907... | ||
1906 | sub ecx, eax |
1907 | sub ecx, eax |
1907 | sub edx, ebx |
1908 | sub edx, ebx |
1908 | inc ecx |
1909 | inc ecx |
1909 | inc edx |
1910 | inc edx |
Line 1910... | Line 1911... | ||
1910 | 1911 | ||
Line 1911... | Line 1912... | ||
1911 | push [window_data + edi + WDATA.shape_scale] ; push scale first -> for loop |
1912 | push [edi + WDATA.shape_scale] ; push scale first -> for loop |
1912 | 1913 | ||
1913 | ; get WinMap start -> ebp |
1914 | ; get WinMap start -> ebp |
Line 1914... | Line 1915... | ||
1914 | push eax |
1915 | push eax |
1915 | mov eax, [d_width_calc_area + ebx*4] |
1916 | mov eax, [d_width_calc_area + ebx*4] |
1916 | 1917 | ||
Line 1917... | Line 1918... | ||
1917 | add eax, [esp] |
1918 | add eax, [esp] |
1918 | add eax, [_display.win_map] |
1919 | add eax, [_display.win_map] |
Line 1919... | Line 1920... | ||
1919 | mov ebp, eax |
1920 | mov ebp, eax |
1920 | 1921 | ||
1921 | mov edi, [window_data + edi + WDATA.shape] |
1922 | mov edi, [edi + WDATA.shape] |
Line 2225... | Line 2226... | ||
2225 | jne @f |
2226 | jne @f |
2226 | inc eax |
2227 | inc eax |
2227 | ;-------------------------------------- |
2228 | ;-------------------------------------- |
2228 | align 4 |
2229 | align 4 |
2229 | @@: |
2230 | @@: |
2230 | mov edx, [current_slot_idx] |
2231 | mov edx, [current_slot] |
2231 | shl edx, BSF sizeof.WDATA |
2232 | mov edx, [edx + APPDATA.window] |
2232 | add edx, window_data |
- | |
2233 | movzx ebx, [edx + WDATA.fl_wstyle] |
2233 | movzx ebx, [edx + WDATA.fl_wstyle] |
2234 | and bl, 0x0F |
2234 | and bl, 0x0F |
2235 | cmp bl, 3 |
2235 | cmp bl, 3 |
2236 | je .draw_caption_style_3 |
2236 | je .draw_caption_style_3 |
2237 | cmp bl, 4 |
2237 | cmp bl, 4 |
Line 2261... | Line 2261... | ||
2261 | 2261 | ||
2262 | call drawwindow_I_caption |
2262 | call drawwindow_I_caption |
2263 | ;-------------------------------------- |
2263 | ;-------------------------------------- |
2264 | align 4 |
2264 | align 4 |
2265 | .2: |
2265 | .2: |
2266 | mov edi, [current_slot_idx] |
2266 | mov edi, [current_slot] |
2267 | shl edi, BSF sizeof.WDATA |
2267 | mov edi, [edi + APPDATA.window] |
2268 | test [window_data + edi + WDATA.fl_wstyle], WSTYLE_HASCAPTION |
2268 | test [edi + WDATA.fl_wstyle], WSTYLE_HASCAPTION |
2269 | jz .exit |
2269 | jz .exit |
2270 | mov edx, [window_data + edi + WDATA.caption] |
2270 | mov edx, [edi + WDATA.caption] |
2271 | or edx, edx |
2271 | or edx, edx |
Line 2272... | Line 2272... | ||
2272 | jz .exit |
2272 | jz .exit |
2273 | 2273 | ||
2274 | mov ebp, [edi + window_data + WDATA.box.left - 2] |
2274 | mov ebp, [edi + WDATA.box.left - 2] |
2275 | mov bp, word[edi + window_data + WDATA.box.top] |
2275 | mov bp, word[edi + WDATA.box.top] |
2276 | movzx eax, [edi + window_data + WDATA.fl_wstyle] |
2276 | movzx eax, [edi + WDATA.fl_wstyle] |
2277 | and al, 0x0F |
2277 | and al, 0x0F |
2278 | cmp al, 3 |
2278 | cmp al, 3 |
2279 | je .skinned |
2279 | je .skinned |
Line 2280... | Line 2280... | ||
2280 | cmp al, 4 |
2280 | cmp al, 4 |
2281 | je .skinned |
2281 | je .skinned |
2282 | 2282 | ||
2283 | jmp .not_skinned |
2283 | jmp .not_skinned |
2284 | ;-------------------------------------- |
2284 | ;-------------------------------------- |
2285 | align 4 |
2285 | align 4 |
2286 | .skinned: |
2286 | .skinned: |
2287 | movzx eax, word[edi + window_data + WDATA.box.width] |
2287 | movzx eax, word[edi + WDATA.box.width] |
2288 | sub ax, [_skinmargins.left] |
2288 | sub ax, [_skinmargins.left] |
2289 | sub ax, [_skinmargins.right] |
2289 | sub ax, [_skinmargins.right] |
Line 2299... | Line 2299... | ||
2299 | ;-------------------------------------- |
2299 | ;-------------------------------------- |
2300 | align 4 |
2300 | align 4 |
2301 | .not_skinned: |
2301 | .not_skinned: |
2302 | cmp al, 1 |
2302 | cmp al, 1 |
2303 | je .exit |
2303 | je .exit |
2304 | movzx eax, word[edi + window_data + WDATA.box.width] |
2304 | movzx eax, word[edi + WDATA.box.width] |
2305 | sub eax, 16 |
2305 | sub eax, 16 |
2306 | js .exit |
2306 | js .exit |
2307 | mov ebx, 80002h |
2307 | mov ebx, 80002h |
2308 | .dodraw: |
2308 | .dodraw: |
2309 | shr eax, 3 |
2309 | shr eax, 3 |
2310 | mov esi, eax |
2310 | mov esi, eax |
2311 | add ebx, ebp |
2311 | add ebx, ebp |
2312 | mov ecx, [common_colours + 16] |
2312 | mov ecx, [common_colours + 16] |
2313 | mov al, [window_data + edi + WDATA.captionEncoding] |
2313 | mov al, [edi + WDATA.captionEncoding] |
2314 | test al, al |
2314 | test al, al |
2315 | jnz @f |
2315 | jnz @f |
2316 | mov al, 1 |
2316 | mov al, 1 |
2317 | cmp byte [edx], 4 |
2317 | cmp byte [edx], 4 |
2318 | jnc @f |
2318 | jnc @f |
Line 2366... | Line 2366... | ||
2366 | 2366 | ||
2367 | align 4 |
2367 | align 4 |
2368 | ; void __fastcall get_window_rect(struct RECT* rc); |
2368 | ; void __fastcall get_window_rect(struct RECT* rc); |
2369 | ; ecx = pointer to RECT |
2369 | ; ecx = pointer to RECT |
2370 | window._.get_rect: |
2370 | window._.get_rect: |
2371 | mov eax, [current_slot_idx] |
2371 | mov eax, [current_slot] |
Line 2372... | Line 2372... | ||
2372 | shl eax, BSF sizeof.WDATA |
2372 | mov eax, [eax + APPDATA.window] |
2373 | 2373 | ||
Line 2374... | Line 2374... | ||
2374 | mov edx, [eax + window_data + WDATA.box.left] |
2374 | mov edx, [eax + WDATA.box.left] |
2375 | mov [ecx+RECT.left], edx |
2375 | mov [ecx+RECT.left], edx |
Line 2376... | Line 2376... | ||
2376 | 2376 | ||
2377 | add edx, [eax + window_data + WDATA.box.width] |
2377 | add edx, [eax + WDATA.box.width] |
Line 2378... | Line 2378... | ||
2378 | mov [ecx+RECT.right], edx |
2378 | mov [ecx+RECT.right], edx |
2379 | 2379 | ||
2380 | mov edx, [eax +window_data + WDATA.box.top] |
2380 | mov edx, [eax + WDATA.box.top] |
2381 | mov [ecx+RECT.top], edx |
2381 | mov [ecx+RECT.top], edx |