Subversion Repositories Kolibri OS

Rev

Rev 6219 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2619 mario79 1
;------------------------------------------------------------------------------
2
; ***************************************************
3
; ********* WINDOW DEFINITIONS AND DRAW *************
4
; ***************************************************
5
align 4
6
draw_window:
9971 Doczom 7
        pusha
8
        mov     [running_applications],-1
9
        mcall   12,1
2619 mario79 10
 
9971 Doczom 11
        mcall   48,3,system_colours, sizeof.system_colors
2619 mario79 12
 
9971 Doczom 13
        mov     eax, [system_colours.work_button]
14
        mov     edx,[system_colours.work_button]
15
        mov     eax,COLOR_CHANGE_MAGNITUDE
16
        call    subtract_color_change_magnitude
17
        mov     [wcolor], edx
2634 mario79 18
 
9971 Doczom 19
        mcall   14      ; get screen max x & max y
2619 mario79 20
 
9971 Doczom 21
        cmp     [width],dword 0
22
        je      no_def_width
2619 mario79 23
 
9971 Doczom 24
        and     eax,0xffff
25
        mov     ebx,[width]
26
        shl     ebx,16
27
        add     eax,ebx
2619 mario79 28
;--------------------------------------
29
align 4
30
no_def_width:
9971 Doczom 31
        mov     ebx,eax
32
        mov     [screenxy],ebx
33
        shr     ebx,16
34
        mov     ecx,eax
2619 mario79 35
 
9971 Doczom 36
        cmp     [place_attachment],1
37
        je      @f
38
 
39
        xor     ecx,ecx
40
        mov     cx,[height]
41
        dec     cx
42
        jmp     .attachment_selected
2619 mario79 43
;--------------------------------------
44
align 4
45
@@:
9971 Doczom 46
        sub     ecx,[height]
47
        inc     ecx
48
        shl     ecx,16
49
        mov     cx,[height]
50
        dec     cx
2619 mario79 51
;--------------------------------------
52
align 4
53
.attachment_selected:
9971 Doczom 54
        xor     eax,eax                     ; DEFINE AND DRAW WINDOW
55
        mov     edx, [wcolor]
56
        or      edx, 0x01000000 ; do not draw the window
57
        mov     esi, [wcolor]
58
        or      esi, 0x01000000 ; unmovable window
59
        mov     edi, [wcolor]
60
        mov     [panel_x_pos], ebx
61
        mov     [panel_y_pos], ecx       ; Пока что так.
62
        mcall
2619 mario79 63
 
9971 Doczom 64
        movzx   eax,word [screenxy+2]
65
        mov     [max_x],eax
66
 
67
        call    fill_window
68
        call    minimize_left_button
69
        call    minimize_right_button
70
        call    draw_menu_and_clean_desktop
71
        mov     [ptime],0
72
        call    draw_tray
73
        call    draw_application_buttons
2619 mario79 74
 
9971 Doczom 75
        mov     [redraw_window_flag],0
76
        mcall   12,2
77
        popa
78
        ret
2619 mario79 79
;------------------------------------------------------------------------------
80
align 4
9971 Doczom 81
fill_window:
82
        movzx   ebx,word [screenxy+2]
83
        xor     ecx,ecx
84
        mov     edx,[wcolor]
85
        mov     eax,COLOR_CHANGE_MAGNITUDE_0
86
        imul    eax,dword [soften_height]
87
        call    subtract_color_change_magnitude
88
        cmp     [soften_up],dword 0
89
        je      no_su
2619 mario79 90
;--------------------------------------
91
align 4
5872 pathoswith 92
@@:
9971 Doczom 93
        mov     eax,COLOR_CHANGE_MAGNITUDE_0
94
        call    add_color_change_magnitude
2619 mario79 95
; draw soften_up - the width of 5 pixels
9971 Doczom 96
        and     edx,0x00FFFFFF
97
        mcall   38
2619 mario79 98
 
9971 Doczom 99
        add     ecx,1*65536+1
100
        cmp     cx,[soften_height]      ;5
101
        jb      @r
2619 mario79 102
;--------------------------------------
103
align 4
104
no_su:
9971 Doczom 105
        cmp     [soften_down],dword 0
106
        je      no_sd
2619 mario79 107
; draw soften_down - the width of 5 pixels
9971 Doczom 108
        pusha
109
        mov     esi,[soften_height]
110
        mov     ecx,[height]
111
        dec     ecx
112
        shl     ecx,16
113
        add     ecx,[height]
114
        dec     ecx
115
        mov     edx,[wcolor]
116
        mov     eax,COLOR_CHANGE_MAGNITUDE_0
117
        imul    eax,dword [soften_height]
118
        call    subtract_color_change_magnitude
2630 mario79 119
;--------------------------------------
120
align 4
2619 mario79 121
@@:
9971 Doczom 122
        mov     eax,COLOR_CHANGE_MAGNITUDE_0
123
        call    add_color_change_magnitude
124
        and     edx,0x00FFFFFF
125
        mcall   38
126
        sub     ecx,1*65536+1
127
        dec     esi
128
        jnz     @r
129
        popa
2619 mario79 130
;--------------------------------------
131
align 4
132
no_sd:
9971 Doczom 133
        movzx   ebx,word [screenxy+2]
134
        xor     ecx,ecx
135
        cmp     [soften_up],dword 0
136
        je      @f
2619 mario79 137
 
9971 Doczom 138
        add     ecx,[soften_height]
139
        rol     ecx,16
140
        add     ecx,[soften_height]
2619 mario79 141
;--------------------------------------
142
align 4
143
@@:
9971 Doczom 144
        mov     edx,[wcolor]
2619 mario79 145
;--------------------------------------
146
align 4
147
newline3:
9971 Doczom 148
        and     edx,0x00FFFFFF
149
        mov     eax,[height]
150
        cmp     [soften_up],dword 0
151
        je      @f
2619 mario79 152
 
9971 Doczom 153
        sub     eax,[soften_height]
2619 mario79 154
;--------------------------------------
155
align 4
156
@@:
9971 Doczom 157
        cmp     [soften_down],dword 0
158
        je      @f
2619 mario79 159
 
9971 Doczom 160
        sub     eax,[soften_height]
2619 mario79 161
;--------------------------------------
162
align 4
163
@@:
9971 Doczom 164
        mov     cx,ax
165
        inc     ebx
166
        mcall   13
167
        ret
2619 mario79 168
;------------------------------------------------------------------------------
169
align 4
170
minimize_left_button:
9971 Doczom 171
        cmp     [minimize_left],dword 0
172
        je      .exit
2619 mario79 173
 
9971 Doczom 174
        mov     ecx,1 *65536
175
        add     ecx,[height]
176
        dec     ecx
177
        mov     edx,101
178
        or      edx,0x40000000
179
        mcall   8,<0,9>,,,[wcolor]      ; ABS LEFT
2619 mario79 180
 
9971 Doczom 181
        mov     ebx,2*65536     ;+6
182
        mov     bx,[height]
183
        shr     bx,1
184
        sub     bx,3
185
        mov     edx,[wcolor]
186
        mov     eax,COLOR_CHANGE_MAGNITUDE_2
187
        call    add_color_change_magnitude
188
        mov     ecx,edx
189
        mcall   4,,,hidetext,1  ; HIDE TEXT
2619 mario79 190
;--------------------------------------
191
align 4
192
.exit:
9971 Doczom 193
        ret
2619 mario79 194
;------------------------------------------------------------------------------
9971 Doczom 195
align 4
2619 mario79 196
minimize_right_button:
9971 Doczom 197
        cmp     [minimize_right],dword 0
198
        je      .exit
199
        mov     eax,[max_x]
200
        sub     eax,77
201
        shl     eax,16
202
        mov     ebx,eax
203
        add     ebx,67
2619 mario79 204
 
9971 Doczom 205
        mov     ecx,1 *65536
206
        add     ecx,[height]
207
        dec     ecx
208
        add     ebx,68*65536
209
        mov     bx,10   ;9
210
        mov     edx,102
211
        or      edx,0x40000000
212
        mcall   8,,,,[wcolor]   ; ABS RIGHT
2619 mario79 213
 
9971 Doczom 214
        mov     ebx,[max_x]
215
        sub     ebx,6
216
        shl     ebx,16
217
        mov     bx,[height]
218
        shr     bx,1
219
        sub     bx,3
220
        mov     edx,[wcolor]
221
        mov     eax,COLOR_CHANGE_MAGNITUDE_2
222
        call    add_color_change_magnitude
223
        mov     ecx,edx
224
        mov     esi,1
225
        mcall   4,,,hidetext+1
2619 mario79 226
;--------------------------------------
227
align 4
228
.exit:
9971 Doczom 229
        ret
2619 mario79 230
;------------------------------------------------------------------------------
231
align 4
232
draw_menu_and_clean_desktop:
9971 Doczom 233
        pusha
2619 mario79 234
; check draw for menu
9971 Doczom 235
        cmp     [menu_enable],dword  0
236
        je      no_menu
2619 mario79 237
; calculate and draw menu
9971 Doczom 238
        mov     ebx, (0 shl 16) + MENU_SIZE-3
2619 mario79 239
; check for left minimize button enabled
9971 Doczom 240
        cmp     [minimize_left],dword 0
241
        je      @f
2619 mario79 242
 
9971 Doczom 243
        add     ebx, ML_SIZE shl 16
2619 mario79 244
;--------------------------------------
245
align 4
246
@@:
4031 heavyiron 247
        mov     ecx, [height]
9971 Doczom 248
        mov     edx, 0x60d1ff01
249
        mcall   8,,,,[wcolor]   ; MENU BUTTON
250
 
251
        mov     eax,ebx
252
        shr     eax,16
253
        mov     [menu_button_x.start],eax
254
 
255
        mov     eax,ebx
256
        and     eax,0xffff
257
        mov     [menu_button_x.size],eax
258
 
259
        mov     eax,ecx
260
        shr     eax,16
261
        mov     [menu_button_y.start],eax
262
 
263
        mov     eax,ecx
264
        and     eax,0xffff
265
        mov     [menu_button_y.size],eax
2619 mario79 266
 
9971 Doczom 267
        call    calculate_button_y_coordinate_and_size
268
        mov     edx,[MenuButton_color]  ;0x44aa44
269
        mov     esi,[wcolor]
4031 heavyiron 270
        add     ebx,3 shl 16 - 5
9971 Doczom 271
        call    draw_appl_button
2619 mario79 272
 
9971 Doczom 273
        add     ebx, 4*65536
274
        mov     bx,[height]
275
        shr     bx,1
276
        sub     bx,7
277
        mov     ecx,[PanelText_color]
278
        or      ecx,0x10000000
279
        if lang eq et
280
        mcall   4,,,m_text,5
281
        else
282
        mcall   4,,,m_text,4
283
        end if
2619 mario79 284
;--------------------------------------
285
align 4
286
no_menu:
287
; check draw for clean desktop button
9971 Doczom 288
        cmp     [clean_desktop_enable],dword 0
289
        je      .exit
2619 mario79 290
; calculate and draw clean desktop button
9971 Doczom 291
        mov     ebx, (0 shl 16) + CLD_SIZE-5
292
; check for left minimize button enabled
293
        cmp     [minimize_left],dword 0
294
        je      @f
2619 mario79 295
 
9971 Doczom 296
        add     ebx, ML_SIZE shl 16
2619 mario79 297
;--------------------------------------
298
align 4
299
@@:
300
; check for menu button enabled
9971 Doczom 301
        cmp     [menu_enable],dword 0
302
        je      @f
303
 
304
        add     ebx, MENU_SIZE shl 16
2619 mario79 305
;--------------------------------------
306
align 4
307
@@:
308
; Inserted code for drawing buttons 103, 104, 105 (Clean, Restore, Exchange windows)
9971 Doczom 309
        mov     esi, dword [system_colours.work_button]    ; drawing buttons
310
        and     esi, 0x00ffffff
311
        mov     edx, 0x60000000 + 103
4031 heavyiron 312
        mov     ecx, [height]
9971 Doczom 313
        mcall   8       ;,,<3,13>
314
 
315
        call    calculate_button_y_coordinate_and_size
316
        mov     edx,[CleanDesktopButton_color]  ;time_bgr_color
317
        mov     esi,[wcolor]
318
        call    draw_appl_button
5872 pathoswith 319
 
9971 Doczom 320
        mov     ecx,[PanelText_color]
321
        add     ebx,5 shl 16
322
        mov     bx,[height]
323
        shr     bx,1
324
        sub     bx,2
325
        mcall   4,,,page_clean_but,1
326
        sub     bx,2
327
        mcall   ,,,page_clean_but+1
2619 mario79 328
;--------------------------------------
329
align 4
330
.exit:
9971 Doczom 331
        popa
332
        ret
2619 mario79 333
;------------------------------------------------------------------------------
334
align 4
335
draw_application_buttons:
9971 Doczom 336
        pusha
2619 mario79 337
 
9971 Doczom 338
        cmp     [run_appl],dword 0      ; do not draw application buttons
339
        je      .exit
2619 mario79 340
 
9971 Doczom 341
        call    calculate_offset_X
2619 mario79 342
 
9971 Doczom 343
        mov     eax,[screenxy]
344
        shr     eax,16
2619 mario79 345
 
9971 Doczom 346
        sub     eax,[offset_X]
2619 mario79 347
; check for left minimize button enabled
9971 Doczom 348
        cmp     [minimize_right],dword 0
349
        je      @f
2619 mario79 350
 
9971 Doczom 351
        sub     eax, MR_SIZE
2619 mario79 352
;--------------------------------------
353
align 4
354
@@:
9971 Doczom 355
        cmp     [clock_enable],dword 0
356
        je      @f
357
 
358
        sub     eax,CLOCK_SIZE
2619 mario79 359
;--------------------------------------
9971 Doczom 360
align 4
2619 mario79 361
@@:
9971 Doczom 362
        cmp     [cpu_usage_enable],dword 0
363
        je      @f
364
 
365
        sub     eax,CPU_USAGE_SIZE
2619 mario79 366
;--------------------------------------
9971 Doczom 367
align 4
2619 mario79 368
@@:
9971 Doczom 369
        cmp     [chlang_enable],dword 0
370
        je      @f
371
 
372
        sub     eax,CHLANG_SIZE
2619 mario79 373
;--------------------------------------
9971 Doczom 374
align 4
2619 mario79 375
@@:
9971 Doczom 376
        cmp     [page_list_enable],dword 0
377
        je      @f
378
 
379
        sub     eax,PAGE_LIST_SIZE
2619 mario79 380
;--------------------------------------
9971 Doczom 381
align 4
2619 mario79 382
@@:
9971 Doczom 383
        mov     ebx, TAB_SIZE
384
        xor     edx,edx
385
        div     ebx
386
        mov     [max_applications], eax
387
        xor     edi,edi
2619 mario79 388
;--------------------------------------
389
align 4
390
.nb:
9971 Doczom 391
        mov     ebx,edi
392
        imul    ebx,TAB_SIZE
393
        add     ebx,[offset_X]
394
        shl     ebx,16
395
        mov     bx, TAB_SIZE-1
396
        mov     edx,edi
397
        add     edx,52
398
        or      edx,0x60000000
399
        mov     ecx, [height]
400
        mcall   8,,,,[wcolor]
2619 mario79 401
 
9971 Doczom 402
        inc     edi
403
        cmp     edi,[max_applications]
404
        jb      .nb
2619 mario79 405
;--------------------------------------
406
align 4
407
.exit:
9971 Doczom 408
        popa
409
        ret
2619 mario79 410
;------------------------------------------------------------------------------
411
align 4
412
calculate_offset_X:
9971 Doczom 413
        push    eax
414
        xor     eax,eax
2619 mario79 415
; check for left minimize button enabled
9971 Doczom 416
        cmp     [minimize_left],dword 0
417
        je      @f
2619 mario79 418
 
9971 Doczom 419
        add     eax, ML_SIZE
2619 mario79 420
;--------------------------------------
421
align 4
9971 Doczom 422
@@:
2619 mario79 423
; check for menu button enabled
9971 Doczom 424
        cmp     [menu_enable],dword 0
425
        je      @f
426
 
427
        add     eax, MENU_SIZE
2619 mario79 428
;--------------------------------------
429
align 4
430
@@:
431
; check for clean desktop button enabled
9971 Doczom 432
        cmp     [clean_desktop_enable],dword 0
433
        je      @f
2619 mario79 434
 
9971 Doczom 435
        add     eax, CLD_SIZE
2619 mario79 436
;--------------------------------------
437
align 4
438
@@:
9971 Doczom 439
        mov     [offset_X],eax
440
        pop     eax
441
        ret
2619 mario79 442
;------------------------------------------------------------------------------