Subversion Repositories Kolibri OS

Rev

Rev 9932 | Show entire file | Regard 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