Subversion Repositories Kolibri OS

Rev

Rev 31 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 31 Rev 51
Line 1... Line 1...
1
;
1
;
2
;    UNIFORM WINDOW COLOURS
2
;    UNIFORM WINDOW COLOURS & SKIN
3
;
3
;
4
;    Compile with FASM for Menuet
4
;    Compile with FASM for Menuet
5
;
5
;
6
;    < russian edition by Ivan Poddubny >
6
;    < russian edition by Ivan Poddubny >
-
 
7
;    < skin selection by Mike Semenyako >
7
;
8
;
Line 8... Line 9...
8
 
9
 
9
;******************************************************************************
10
;******************************************************************************
10
   use32
11
   use32
11
   org     0
12
   org     0
12
   db      'MENUET01'  ; identifier
13
   db      'MENUET01'  ; identifier
13
   dd      1           ; header version
14
   dd      1           ; header version
14
   dd      START       ; start address
15
   dd      START       ; start address
15
   dd      I_END       ; file size
16
   dd      I_END       ; file size
16
   dd      20000h      ; memory
17
   dd      28000h      ; memory
17
   dd      10000h      ; stack pointer (0x10000+ - work area for os)
18
   dd      10000h      ; stack pointer (0x10000+ - work area for os)
Line 18... Line 19...
18
   dd      0;,0        ; parameters, reserved
19
   dd      0;,0        ; parameters, reserved
19
 
20
 
20
  include 'lang.inc' 
21
  include 'lang.inc'
Line -... Line 22...
-
 
22
  include 'macros.inc'
-
 
23
;******************************************************************************
-
 
24
 
-
 
25
 
-
 
26
struct SKIN_HEADER
-
 
27
  .ident   dd ?
-
 
28
  .version dd ?
-
 
29
  .params  dd ?
-
 
30
  .buttons dd ?
-
 
31
  .bitmaps dd ?
-
 
32
ends
-
 
33
 
-
 
34
struct SKIN_PARAMS
-
 
35
  .skin_height    dd ?
-
 
36
  .margin.right   dw ?
-
 
37
  .margin.left    dw ?
-
 
38
  .margin.bottom  dw ?
-
 
39
  .margin.top     dw ?
-
 
40
  .colors.inner   dd ?
-
 
41
  .colors.outer   dd ?
-
 
42
  .colors.frame   dd ?
-
 
43
  .colors_1.inner dd ?
-
 
44
  .colors_1.outer dd ?
-
 
45
  .colors_1.frame dd ?
-
 
46
  .dtp.size       dd ?
-
 
47
  .dtp.data       db 40 dup (?)
-
 
48
ends
-
 
49
 
-
 
50
struct SKIN_BUTTONS
-
 
51
  .type     dd ?
-
 
52
  .pos:
-
 
53
    .left   dw ?
-
 
54
    .top    dw ?
-
 
55
  .size:
-
 
56
    .width  dw ?
-
 
57
    .height dw ?
-
 
58
ends
-
 
59
 
-
 
60
struct SKIN_BITMAPS
-
 
61
  .kind  dw ?
Line 21... Line 62...
21
  include 'macros.inc'
62
  .type  dw ?
Line 22... Line 63...
22
;******************************************************************************
63
  .data  dd ?
23
 
64
ends
24
 
65
 
25
 
66
 
26
START:                          ; start of execution
67
START:                          ; start of execution
Line 27... Line 68...
27
 
68
 
28
    mov  eax,48                 ; get current colors
69
    mov  eax,48                 ; get current colors
29
    mov  ebx,3
70
    mov  ebx,3
30
    mov  ecx,color_table
71
    mov  ecx,color_table
31
    mov  edx,4*10
72
    mov  edx,4*10
-
 
73
    int  0x40
-
 
74
 
-
 
75
    cld
Line 32... Line -...
32
    int  0x40
-
 
33
 
-
 
34
    cld
-
 
Line 35... Line 76...
35
    mov  esi, default_file
76
    mov  esi,default_skn
36
    mov  edi, fname
77
    mov  edi,fname
Line 37... Line 78...
37
    mov  ecx, default_file.size
78
    mov  ecx,default_skn.size
Line 69... Line 110...
69
 
110
 
70
  button:                       ; button
111
  button:                       ; button
71
    mov  eax,17                 ; get id
112
    mov  eax,17                 ; get id
Line -... Line 113...
-
 
113
    int  0x40
-
 
114
 
-
 
115
    cmp  ah,11                  ; read string
-
 
116
    jne  no_string
-
 
117
    call read_string
-
 
118
    jmp  still
-
 
119
  no_string:
-
 
120
 
-
 
121
    cmp  ah,12                  ; load file
-
 
122
    jne  no_load
-
 
123
    call load_file
-
 
124
    call draw_window
-
 
125
    jmp  still
-
 
126
  no_load:
-
 
127
 
-
 
128
    cmp  ah,13                  ; save file
-
 
129
    jne  no_save
-
 
130
    call save_file
-
 
131
    jmp  still
72
    int  0x40
132
  no_save:
73
 
133
 
74
    cmp  ah,14                  ; set 3d buttons
134
    cmp  ah,14                  ; set 3d buttons
75
    jne  no_3d
135
    jne  no_3d
76
    mov  eax,48
136
    mov  eax,48
Line 89... Line 149...
89
    mcall 48, 1, 0
149
    mcall 48, 1, 0
90
    mcall 48, 0, 0
150
    mcall 48, 0, 0
91
    jmp  still
151
    jmp  still
92
  no_flat:
152
  no_flat:
Line 93... Line 153...
93
 
153
 
94
    cmp  ah,51      ; apply
154
    cmp  ah,16                  ; apply
-
 
155
    jne  no_apply
95
    jne  no_apply
156
  apply_direct:
96
    mov  eax,48
157
    mov  eax,48
97
    mov  ebx,2
158
    mov  ebx,2
98
    mov  ecx,color_table
159
    mov  ecx,color_table
99
    mov  edx,10*4
160
    mov  edx,10*4
Line 102... Line 163...
102
    mov  ebx,0
163
    mov  ebx,0
103
    mov  ecx,0
164
    mov  ecx,0
104
    int  0x40
165
    int  0x40
105
  no_apply:
166
  no_apply:
Line -... Line 167...
-
 
167
 
-
 
168
    cmp  ah,17                  ; load skin file
-
 
169
    jne  no_load_skin
-
 
170
    call load_skin_file
-
 
171
    call draw_window
-
 
172
    jmp  still
-
 
173
  no_load_skin:
-
 
174
 
-
 
175
    cmp   ah,18                 ; apply skin
-
 
176
    jne   no_apply_skin
-
 
177
    cmp   [skin_info.fname],0
-
 
178
    je    no_apply_skin
-
 
179
    mcall 48,8,skin_info
-
 
180
    call  draw_window
-
 
181
    jmp   still
-
 
182
  no_apply_skin:
106
 
183
 
107
    cmp  ah,31
184
    cmp  ah,31
108
    jb   no_new_colour
185
    jb   no_new_colour
109
    cmp  ah,41
186
    cmp  ah,41
110
    jg   no_new_colour
187
    jg   no_new_colour
Line 122... Line 199...
122
     jnz  noid1
199
     jnz  noid1
123
    mov  eax,-1
200
    mov  eax,-1
124
    int  0x40
201
    int  0x40
125
  noid1:
202
  noid1:
Line 126... Line -...
126
 
-
 
127
    cmp  ah,11                  ; read string
-
 
128
    jne  no_string
-
 
129
    call read_string
-
 
130
    jmp  still
-
 
131
  no_string:
-
 
132
 
-
 
133
    cmp  ah,12                  ; load file
-
 
134
    jne  no_load
-
 
135
    call load_file
-
 
136
    call draw_window
-
 
137
    jmp  still
-
 
138
  no_load:
-
 
139
 
-
 
140
    cmp  ah,13                  ; save file
-
 
141
    jne  no_save
-
 
142
    call save_file
-
 
143
    jmp  still
-
 
144
  no_save:
-
 
145
 
203
 
Line 146... Line 204...
146
    jmp  still
204
    jmp  still
Line 172... Line 230...
172
    cmp  ecx,32
230
    cmp  ecx,32
173
    jbe  no_color
231
    jbe  no_color
174
    cmp  ebx,32
232
    cmp  ebx,32
175
    jbe  no_color
233
    jbe  no_color
Line 176... Line 234...
176
 
234
 
177
    cmp  ebx,280           ; CHANGE COLOR
235
    cmp  ebx,266           ; CHANGE COLOR
178
    jb   no_color
236
    jb   no_color
179
    cmp  ebx,280+20*3
237
    cmp  ebx,266+20*3
Line 180... Line 238...
180
    jg   no_color
238
    jg   no_color
181
 
239
 
182
    cmp  ecx,30+128
240
    cmp  ecx,30+128
183
    jge  no_color
241
    jge  no_color
Line 184... Line 242...
184
    cmp  ecx,30
242
    cmp  ecx,30
185
    jb   no_color
243
    jb   no_color
186
 
244
 
187
    sub  ebx,280
245
    sub  ebx,266
188
    mov  eax,ebx
246
    mov  eax,ebx
189
    cdq
247
    cdq
Line 210... Line 268...
210
 
268
 
211
load_file:
269
load_file:
Line 212... Line 270...
212
    pushad
270
    pushad
-
 
271
 
213
 
272
    mov   [read_info.mode]       ,0
-
 
273
    mov   [read_info.start_block],0
-
 
274
    mov   [read_info.blocks]     ,1
214
    mov   [read_info.mode],   0
275
    mov   [read_info.address]    ,color_table
Line -... Line 276...
-
 
276
    mov   [read_info.workarea]   ,0x10000
-
 
277
    mcall 58, read_info
-
 
278
 
-
 
279
    popad
-
 
280
ret
-
 
281
 
-
 
282
load_skin_file:
-
 
283
    pushad
-
 
284
 
-
 
285
    mov   [read_info.mode]       ,0
-
 
286
    mov   [read_info.start_block],0
215
    mov   [read_info.blocks], 1
287
    mov   [read_info.blocks]     ,64
-
 
288
    mov   [read_info.address]    ,0x20000
-
 
289
    mov   [read_info.workarea]   ,0x10000
-
 
290
    mcall 58, read_info
-
 
291
 
-
 
292
    cmp   dword[0x20000+SKIN_HEADER.ident],'SKIN'
-
 
293
    jne   @f
-
 
294
 
-
 
295
    mov   esi,fname
-
 
296
    mov   edi,skin_info.fname
-
 
297
    mov   ecx,257
-
 
298
    rep   movsb
-
 
299
 
-
 
300
    mov   esi,0x20000
-
 
301
    mov   edi,0x18000
-
 
302
    mov   ecx,0x8000/4
-
 
303
    rep   movsd
-
 
304
 
-
 
305
    mov   ebp,0x18000
-
 
306
    mov   esi,[ebp+SKIN_HEADER.params]
-
 
307
    add   esi,ebp
-
 
308
    lea   esi,[esi+SKIN_PARAMS.dtp.data]
-
 
309
    mov   edi,color_table
Line 216... Line 310...
216
    mcall 58, read_info
310
    mov   ecx,10
217
 
311
    rep   movsd
Line 218... Line 312...
218
    call  draw_colours
312
  @@:
219
 
313
 
Line 220... Line 314...
220
    popad
314
    popad
221
ret
315
ret
-
 
316
 
-
 
317
 
222
 
318
save_file:
Line 223... Line 319...
223
 
319
    pushad
224
save_file:
320
 
Line 236... Line 332...
236
 
332
 
Line 237... Line 333...
237
    pusha
333
    pusha
238
 
334
 
239
    mov  edi,fname
335
    mov  edi,fname
240
    mov  al,'_'
336
    mov  al,'_'
241
    mov  ecx,54
337
    mov  ecx,87
Line 242... Line 338...
242
    cld
338
    cld
Line 268... Line 364...
268
    mov  [edi],al
364
    mov  [edi],al
Line 269... Line 365...
269
 
365
 
Line 270... Line 366...
270
    call print_text
366
    call print_text
271
 
367
 
272
    inc  edi
368
    inc  edi
Line 273... Line 369...
273
    cmp  edi, fname+54
369
    cmp  edi, fname+87
Line 274... Line 370...
274
    jne  f11
370
    jne  f11
275
 
371
 
276
  read_done:
372
  read_done:
277
 
373
 
278
    mov  ecx, fname
374
    mov  ecx, fname
279
    add  ecx, 55
375
    add  ecx, 88
Line 290... Line 386...
290
 
386
 
291
 
387
 
Line 292... Line 388...
292
print_text:
388
print_text:
293
    pushad
389
    pushad
294
 
390
 
Line 295... Line 391...
295
    mpack ebx, 16, 6*54+4
391
    mpack ebx,15,6*87+4
296
    mpack ecx, 234, 10
392
    mpack ecx,(30+18*10+2),11
Line 297... Line 393...
297
    mcall 13, , , [w_work]
393
    mcall 13,,,[w_work]
298
 
394
 
Line 299... Line 395...
299
    mpack ebx, 17, 235
395
    mpack ebx,17,(30+18*10+4)
Line 300... Line 396...
300
    mcall 4, , [w_work_text], fname, 54
396
    mcall 4,,[w_work_text],fname,87
Line 301... Line 397...
301
 
397
 
302
    popad
398
    popad
303
ret
399
ret
304
 
400
 
305
 
401
 
Line 306... Line 402...
306
draw_color:
402
draw_color:
307
 
403
 
308
    pusha
404
    pusha
309
 
405
 
310
    mov  eax,13
406
    mov  eax,13
Line 311... Line 407...
311
    mov  ebx,280*65536+60
407
    mov  ebx,266*65536+60
312
    mov  ecx,170*65536+30
408
    mov  ecx,170*65536+30
313
    mov  edx,[color]
409
    mov  edx,[color]
314
    int  0x40
410
    int  0x40
315
 
411
 
316
;   mov  eax,13
412
;   mov  eax,13
Line 317... Line 413...
317
    mov  ebx,280*65536+60
413
    mov  ebx,266*65536+60
Line 336... Line 432...
336
    pusha
432
    pusha
Line 337... Line 433...
337
 
433
 
Line 338... Line 434...
338
    mov  esi,color_table
434
    mov  esi,color_table
339
 
435
 
340
    mov  ebx,225*65536+32
436
    mov  ebx,225*65536+32
341
    mov  ecx,37*65536+12
437
    mov  ecx,32*65536+12
342
  newcol:
438
  newcol:
343
    mov  eax,13
439
    mov  eax,13
344
    mov  edx,[esi]
440
    mov  edx,[esi]
345
    int  0x40
441
    int  0x40
346
    add  ecx,20*65536
442
    add  ecx,18*65536
347
    add  esi,4
443
    add  esi,4
Line 348... Line 444...
348
    cmp  esi,color_table+4*9
444
    cmp  esi,color_table+4*9
Line 349... Line 445...
349
    jbe  newcol
445
    jbe  newcol
Line -... Line 446...
-
 
446
 
-
 
447
    popa
-
 
448
 
-
 
449
    ret
-
 
450
 
-
 
451
 
-
 
452
draw_framerect: ; ebx,ecx
-
 
453
        push    ebx ecx
-
 
454
        add     bx,[esp+6]
-
 
455
        mov     cx,[esp+2]
-
 
456
        dec     ebx
-
 
457
        mcall   38
-
 
458
        add     cx,[esp]
-
 
459
        rol     ecx,16
-
 
460
        add     cx,[esp]
-
 
461
        sub     ecx,0x00010001
-
 
462
        mcall
-
 
463
        mov     ebx,[esp+4]
-
 
464
        mov     ecx,[esp]
-
 
465
        mov     bx,[esp+6]
-
 
466
        add     cx,[esp+2]
-
 
467
        dec     ecx
-
 
468
        mcall
-
 
469
        add     bx,[esp+4]
-
 
470
        rol     ebx,16
-
 
471
        add     bx,[esp+4]
-
 
472
        sub     ebx,0x00010001
-
 
473
        mcall
-
 
474
        add     esp,8
-
 
475
        ret
-
 
476
 
-
 
477
find_bitmap:
-
 
478
        mov     edi,[ebp+SKIN_HEADER.bitmaps]
-
 
479
        add     edi,ebp
-
 
480
        xor     ebx,ebx
-
 
481
  .lp1: cmp     dword[edi],0
-
 
482
        je      .lp2
-
 
483
        cmp     dword[edi+0],eax
-
 
484
        jne     @f
-
 
485
        mov     ebx,[edi+SKIN_BITMAPS.data]
-
 
486
        add     ebx,ebp
-
 
487
        mov     ecx,[ebx-2]
-
 
488
        mov     cx,[ebx+4]
-
 
489
        add     ebx,8
-
 
490
  .lp2: ret
-
 
491
    @@: add     edi,8
-
 
492
        jmp     .lp1
-
 
493
 
-
 
494
draw_skin:
-
 
495
        mcall   13,<345,206>,<20,191>,0x00FFFFFF
-
 
496
        mov     ebp,0x18000
-
 
497
        mov     edi,[ebp+SKIN_HEADER.params]
-
 
498
        add     edi,ebp
-
 
499
        mpack   ebx,345+45,150
-
 
500
        mpack   ecx,20+10,140
-
 
501
        mov     edx,[edi+SKIN_PARAMS.colors_1.outer]
-
 
502
        call    draw_framerect
-
 
503
        mpack   ebx,345+45+4,150-8
-
 
504
        mpack   ecx,20+10+4,140-8
-
 
505
        mov     edx,[edi+SKIN_PARAMS.colors_1.inner]
-
 
506
        call    draw_framerect
-
 
507
        mcall   13,<345+45+1,148>,<20+10+1,3>,[edi+SKIN_PARAMS.colors_1.frame]
-
 
508
        add     ecx,135*65536
-
 
509
        mcall
-
 
510
        mcall   ,<345+45+1,3>,<20+10+1,138>
-
 
511
        add     ebx,145*65536
-
 
512
        mcall
-
 
513
        mcall   ,<345+45+5,140>,<20+10+5,130>,dword[edi+SKIN_PARAMS.dtp.data+system_colors.work]
-
 
514
 
-
 
515
        mov     eax,0x00000001 ; left, inactive
-
 
516
        call    find_bitmap
-
 
517
        mcall   7,,,<345+45,20+10>
-
 
518
 
-
 
519
        pushd   [ebx-8]
-
 
520
        mov     eax,0x00000003 ; base, inactive
-
 
521
        call    find_bitmap
-
 
522
        pop     edx
-
 
523
        mov     esi,345+45+150-1
-
 
524
        sub     esi,edx
-
 
525
        shl     edx,16
-
 
526
        add     edx,(345+45)*65536+20+10
-
 
527
        mcall   7
-
 
528
    @@: rol     edx,16
-
 
529
        add     dx,[ebx-8]
-
 
530
        cmp     dx,si
-
 
531
        ja      @f
-
 
532
        rol     edx,16
-
 
533
        mcall   7
-
 
534
        jmp     @b
-
 
535
    @@:
-
 
536
 
-
 
537
        mov     eax,0x00000002 ; oper, inactive
-
 
538
        call    find_bitmap
-
 
539
        mov     edx,ecx
-
 
540
        shr     edx,16
-
 
541
        neg     edx
-
 
542
        shl     edx,16
-
 
543
        add     edx,(345+45+150)*65536+20+10
-
 
544
        mcall   7
-
 
545
 
-
 
546
        mov     ebp,0x18000
-
 
547
        mov     edi,[ebp+SKIN_HEADER.params]
-
 
548
        add     edi,ebp
-
 
549
        mov     eax,dword[edi+SKIN_PARAMS.margin.left-2]
-
 
550
        mov     ax,word[edi+SKIN_PARAMS.skin_height]
-
 
551
        sub     ax,[edi+SKIN_PARAMS.margin.bottom]
-
 
552
        shr     ax,1
-
 
553
        add     ax,[edi+SKIN_PARAMS.margin.top]
-
 
554
        add     ax,-4
-
 
555
        push    eax
-
 
556
        lea     ebx,[eax+(345+45)*65536+20+10]
-
 
557
        mcall   4,,dword[edi+SKIN_PARAMS.dtp.data+system_colors.grab_text],test_text,test_text.size
-
 
558
 
-
 
559
;---------------------------------------------------------
-
 
560
 
-
 
561
        mov     edi,[ebp+SKIN_HEADER.params]
-
 
562
        add     edi,ebp
-
 
563
        mpack   ebx,345+10,150
-
 
564
        mpack   ecx,20+40,140
-
 
565
        mov     edx,[edi+SKIN_PARAMS.colors.outer]
-
 
566
        call    draw_framerect
-
 
567
        mpack   ebx,345+10+4,150-8
-
 
568
        mpack   ecx,20+40+4,140-8
-
 
569
        mov     edx,[edi+SKIN_PARAMS.colors.inner]
-
 
570
        call    draw_framerect
-
 
571
        mcall   13,<345+10+1,148>,<20+40+1,3>,[edi+SKIN_PARAMS.colors.frame]
-
 
572
        add     ecx,135*65536
-
 
573
        mcall
-
 
574
        mcall   ,<345+10+1,3>,<20+40+1,138>
-
 
575
        add     ebx,145*65536
-
 
576
        mcall
-
 
577
        mcall   ,<345+10+5,140>,<20+40+5,130>,dword[edi+SKIN_PARAMS.dtp.data+system_colors.work]
-
 
578
 
-
 
579
        mov     eax,0x00010001 ; left, inactive
-
 
580
        call    find_bitmap
-
 
581
        mcall   7,,,<345+10,20+40>
-
 
582
 
-
 
583
        pushd   [ebx-8]
-
 
584
        mov     eax,0x00010003 ; base, inactive
-
 
585
        call    find_bitmap
-
 
586
        pop     edx
-
 
587
        mov     esi,345+10+150-1
-
 
588
        sub     esi,edx
-
 
589
        shl     edx,16
-
 
590
        add     edx,(345+10)*65536+20+40
-
 
591
        mcall   7
-
 
592
    @@: rol     edx,16
-
 
593
        add     dx,[ebx-8]
-
 
594
        cmp     dx,si
-
 
595
        ja      @f
-
 
596
        rol     edx,16
-
 
597
        mcall   7
-
 
598
        jmp     @b
-
 
599
    @@:
-
 
600
 
-
 
601
        mov     eax,0x00010002 ; oper, inactive
-
 
602
        call    find_bitmap
-
 
603
        mov     edx,ecx
-
 
604
        shr     edx,16
-
 
605
        neg     edx
-
 
606
        shl     edx,16
-
 
607
        add     edx,(345+10+150)*65536+20+40
-
 
608
        mcall   7
-
 
609
 
-
 
610
        mov     ebp,0x18000
-
 
611
        mov     edi,[ebp+SKIN_HEADER.params]
-
 
612
        add     edi,ebp
-
 
613
        pop     eax
-
 
614
        lea     ebx,[eax+(345+10)*65536+20+40]
-
 
615
        mcall   4,,dword[edi+SKIN_PARAMS.dtp.data+system_colors.grab_text],test_text,test_text.size
-
 
616
 
-
 
617
;----------------------------------------------------------------------
-
 
618
 
-
 
619
        mov     edi,[ebp+SKIN_HEADER.buttons]
-
 
620
        add     edi,ebp
-
 
621
  .lp1: cmp     dword[edi],0
-
 
622
        je      .lp2
-
 
623
        mov     ebx,dword[edi+SKIN_BUTTONS.left-2]
-
 
624
        mov     bx,[edi+SKIN_BUTTONS.width]
-
 
625
        mov     ecx,dword[edi+SKIN_BUTTONS.top-2]
-
 
626
        mov     cx,[edi+SKIN_BUTTONS.height]
-
 
627
        add     ebx,(345+10+150)*65536
-
 
628
        add     ecx,(20+40)*65536
Line 350... Line 629...
350
 
629
        dec     ebx
351
    popa
630
        dec     ecx
352
 
631
        mcall   8,,,0x40000000
Line 378... Line 657...
378
    mov  ebx,eax
657
    mov  ebx,eax
379
    mov  bx,40
658
    mov  bx,40
Line 380... Line 659...
380
 
659
 
381
                                   ; DRAW WINDOW
660
                                   ; DRAW WINDOW
382
    mov  eax,0                     ; function 0 : define and draw window
661
    mov  eax,0                     ; function 0 : define and draw window
383
    mov  ebx,110*65536+360         ; [x start] *65536 + [x size]
662
    mov  ebx,110*65536+555         ; [x start] *65536 + [x size]
384
    mov  ecx,50*65536+300          ; [y start] *65536 + [y size]
663
    mov  ecx,50*65536+255          ; [y start] *65536 + [y size]
385
    mov  edx,[w_work]              ; color of work area RRGGBB,8->color
664
    mov  edx,[w_work]              ; color of work area RRGGBB,8->color
386
    or   edx,0x02000000
665
    or   edx,0x02000000
387
    mov  esi,[w_grab]              ; color of grab bar  RRGGBB,8->color gl
666
    mov  esi,[w_grab]              ; color of grab bar  RRGGBB,8->color gl
388
    or   esi,0x80000000
667
    or   esi,0x80000000
Line 399... Line 678...
399
    mov  edx,labelt                ; pointer to text beginning
678
    mov  edx,labelt                ; pointer to text beginning
400
    mov  esi,labelt.size           ; text length
679
    mov  esi,labelt.size           ; text length
401
    int  0x40
680
    int  0x40
402
                                   ; CLOSE BUTTON
681
                                   ; CLOSE BUTTON
403
    mov  eax,8                     ; function 8 : define and draw button
682
    mov  eax,8                     ; function 8 : define and draw button
404
    mov  ebx,(360-19)*65536+12     ; [x start] *65536 + [x size]
683
    mov  ebx,(555-19)*65536+12     ; [x start] *65536 + [x size]
405
    mov  ecx,4*65536+12            ; [y start] *65536 + [y size]
684
    mov  ecx,4*65536+12            ; [y start] *65536 + [y size]
406
    mov  edx,1                     ; button id
685
    mov  edx,1                     ; button id
407
    mov  esi,[w_grab_button]       ; button color RRGGBB
686
    mov  esi,[w_grab_button]       ; button color RRGGBB
408
    int  0x40
687
    int  0x40
Line -... Line 688...
-
 
688
 
-
 
689
if lang eq ru
-
 
690
  load_w  = (5*2+6*9)
-
 
691
  save_w  = (5*2+6*9)
-
 
692
  flat_w  = (5*2+6*7)
-
 
693
  apply_w = (5*2+6*9)
-
 
694
else
-
 
695
  load_w  = (5*2+6*6)
-
 
696
  save_w  = (5*2+6*6)
-
 
697
  flat_w  = (5*2+6*4)
-
 
698
  apply_w = (5*2+6*7)
-
 
699
end if
409
 
700
 
410
;   mov  eax,8                    ; FILENAME BUTTON
701
;   mov  eax,8                    ; FILENAME BUTTON
411
    mov  ebx,280*65536+60
702
    mov  ebx,5*65536+545
412
    mov  ecx,250*65536+14
703
    mov  ecx,212*65536+10
413
    mov  edx,11
-
 
414
    mov  esi,[w_work_button]
704
    mov  edx,0x4000000B
Line 415... Line 705...
415
    int  0x40
705
    int  0x40
416
 
706
 
417
;   mov  eax,8                    ; SAVE BUTTON
707
;   mov  eax,8                    ; LOAD BUTTON
418
    mov  ebx,280*65536+29
708
    mov  ebx,15*65536+load_w
-
 
709
    mov  ecx,(30+18*11)*65536+14
419
    mov  ecx,270*65536+14
710
    mov  edx,12
Line 420... Line 711...
420
    mov  edx,12
711
    mov  esi,[w_work_button]
421
    int  0x40
712
    int  0x40
422
 
713
 
423
;   mov  eax,8                    ; LOAD BUTTON
714
;   mov  eax,8                    ; SAVE BUTTON
Line 424... Line 715...
424
    add  ebx,30*65536
715
    add  ebx,(load_w+2)*65536-load_w+save_w
425
    inc  edx
716
    inc  edx
426
    int  0x40
-
 
427
 
717
    int  0x40
428
;   mov  eax,8                    ; 3D
718
 
429
    mov  ebx,15*65536+35
719
;   mov  eax,8                    ; 3D
430
    mov  ecx,275*65536+14
-
 
431
    inc  edx
720
    mov  ebx,(340-t1.size*6-13)*65536+(5*2+6*4)
432
    int  0x40
-
 
433
;   mov  eax,8                    ; FLAT
-
 
434
if lang eq ru
-
 
435
    add  ebx,40*65536+7
721
    inc  edx
436
else
722
    int  0x40
Line -... Line 723...
-
 
723
;   mov  eax,8                    ; FLAT
-
 
724
    add  ebx,(5*2+6*4+2)*65536-(5*2+6*4)+flat_w
-
 
725
    inc  edx
-
 
726
    int  0x40
-
 
727
 
-
 
728
;   mov  eax,8                    ; APPLY BUTTON
-
 
729
    add  ebx,(flat_w+6+2)*65536-flat_w+apply_w
-
 
730
    inc  edx
-
 
731
    int  0x40
-
 
732
 
-
 
733
;   mov  eax,8                    ; LOAD SKIN BUTTON
-
 
734
    mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+load_w
-
 
735
    inc  edx
-
 
736
    int  0x40
Line 437... Line 737...
437
    add  ebx,40*65536
737
 
438
end if
738
;   mov  eax,8                    ; APPLY SKIN BUTTON
439
    inc  edx
739
    add  ebx,(load_w+6+2)*65536-load_w+apply_w
440
    int  0x40
740
    inc  edx
441
 
741
    int  0x40
442
 
742
 
Line 443... Line -...
443
    mov  eax, 4
-
 
444
    mov  ebx, 281*65536+254
743
    mov  eax, 4
445
    mov  ecx, [w_work_button_text]
744
    mov  ebx, (339-t1.size*6-12)*65536+(30+18*11+4)
446
    mov  edx, t1
745
    mov  ecx, [w_work_button_text]
447
    mov  esi, t1.size
746
    mov  edx, t1
Line -... Line 747...
-
 
747
    mov  esi, t1.size
448
    int  0x40
748
    int  0x40
449
 
749
 
450
;   mov  eax, 4
750
    mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+(30+18*11+4)
451
    mov  ebx, 277*65536+274
751
    mov  edx,t2
452
    mov  edx, t2
752
    mov  esi,t2.size
453
    mov  esi, t2.size
753
    int  0x40
454
    int  0x40
754
 
Line 474... Line 774...
474
 
774
 
Line 475... Line 775...
475
    call draw_color
775
    call draw_color
476
 
776
 
477
    mov  edx,31                    ; BUTTON ROW
777
    mov  edx,31                    ; BUTTON ROW
478
    mov  ebx,15*65536+200
778
    mov  ebx,15*65536+200
479
    mov  ecx,35*65536+14
779
    mov  ecx,30*65536+14
480
    mov  esi,[w_work_button]
780
    mov  esi,[w_work_button]
481
  newb:
781
  newb:
482
    mov  eax,8
782
    mov  eax,8
483
    int  0x40
783
    int  0x40
484
    add  ecx,20*65536
784
    add  ecx,18*65536
485
    inc  edx
785
    inc  edx
Line 486... Line -...
486
    cmp  edx,40
-
 
487
    jbe  newb
-
 
488
 
-
 
489
;    mov  eax,8                     ; APPLY BUTTON
-
 
490
    add  ecx,20*65536
-
 
491
    mov  edx,51
786
    cmp  edx,40
492
    int  0x40
787
    jbe  newb
493
 
788
 
494
    mov  ebx,20*65536+39           ; ROW OF TEXTS
789
    mov  ebx,15*65536+34           ; ROW OF TEXTS
495
    mov  ecx,[w_work_button_text]
790
    mov  ecx,[w_work_button_text]
496
    mov  edx,text
791
    mov  edx,text
497
    mov  esi,32
792
    mov  esi,32
498
  newline:
793
  newline:
499
    mov  eax,4
794
    mov  eax,4
500
    int  0x40
795
    int  0x40
501
    add  ebx,20
796
    add  ebx,18
Line 502... Line 797...
502
    add  edx,32
797
    add  edx,32
Line -... Line 798...
-
 
798
    cmp  [edx],byte 'x'
-
 
799
    jne  newline
-
 
800
 
-
 
801
    call draw_colours
-
 
802
 
-
 
803
    mcall 13,<5,546>,<212,11>,[w_work]
-
 
804
    mcall 13,<337,7>,<2,250>,[w_frame]
-
 
805
    shr   edx,1
-
 
806
    and   edx,0x007F7F7F
-
 
807
    mcall 38,<336,336>,<20,250>
-
 
808
    add   ebx,0x00080008
-
 
809
    mcall
-
 
810
    sub   ebx,0x00040004
503
    cmp  [edx],byte 'x'
811
    mcall ,,<0,255>
Line -... Line 812...
-
 
812
    mcall ,<5,550>,<211,211>
-
 
813
    add   ecx,0x000C000C
-
 
814
    mcall
-
 
815
 
-
 
816
    call print_text
504
    jne  newline
817
 
505
 
818
    cmp  dword[0x18000+SKIN_HEADER.ident],'SKIN'
506
    call draw_colours
819
    jne  @f
Line 507... Line 820...
507
 
820
    call draw_skin
Line 526... Line 839...
526
    ru,  ' ŠŽŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ       ',\
839
    ru,  ' ŠŽŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ       ',\
527
    ru,  ' ’…Š‘’ € ŠŽŠ…                ',\
840
    ru,  ' ’…Š‘’ € ŠŽŠ…                ',\
528
    ru,  ' ’…Š‘’ ‚ €Ž—…‰ Ž‹€‘’ˆ        ',\
841
    ru,  ' ’…Š‘’ ‚ €Ž—…‰ Ž‹€‘’ˆ        ',\
529
    ru,  ' ƒ€”ˆŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ      ',\
842
    ru,  ' ƒ€”ˆŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ      ',\
530
    ru,  '                                ',\
843
    ru,  '                                ',\
531
    ru,  '           ˆŒ…ˆ’œ            ',\
844
    ru,  ' ‡€ƒ“‡ˆ’œ  ‘Ž•€ˆ’œ           ',\
532
    ru,  ' 3D    ‹Ž‘Š                    ',\
-
 
533
    ru,  'x',\
845
    ru,  'x',\
534
    en,  ' WINDOW FRAME                   ',\
846
    en,  ' WINDOW FRAME                   ',\
535
    en,  ' WINDOW GRAB BAR                ',\
847
    en,  ' WINDOW GRAB BAR                ',\
536
    en,  ' WINDOW GRAB BUTTON             ',\
848
    en,  ' WINDOW GRAB BUTTON             ',\
537
    en,  ' WINDOW GRAB BUTTON TEXT        ',\
849
    en,  ' WINDOW GRAB BUTTON TEXT        ',\
Line 540... Line 852...
540
    en,  ' WINDOW WORK AREA BUTTON        ',\
852
    en,  ' WINDOW WORK AREA BUTTON        ',\
541
    en,  ' WINDOW WORK AREA BUTTON TEXT   ',\
853
    en,  ' WINDOW WORK AREA BUTTON TEXT   ',\
542
    en,  ' WINDOW WORK AREA TEXT          ',\
854
    en,  ' WINDOW WORK AREA TEXT          ',\
543
    en,  ' WINDOW WORK AREA GRAPH         ',\
855
    en,  ' WINDOW WORK AREA GRAPH         ',\
544
    en,  '                                ',\
856
    en,  '                                ',\
545
    en,  '        APPLY CHANGES           ',\
-
 
546
    en,  ' 3D    FLAT                     ',\
857
    en,  '  LOAD    SAVE                  ',\
547
    en,  'x'
858
    en,  'x'
Line -... Line 859...
-
 
859
 
-
 
860
 
-
 
861
lsz t1,\
-
 
862
    ru, '  3D   ‹Ž‘Šˆ…   ˆŒ…ˆ’œ ',\
548
 
863
    en, '  3D   FLAT    APPLY  '
549
 
864
 
550
lsz t2,\
865
lsz t2,\
Line 551... Line 866...
551
    ru, ' ‡€ƒ ‘Ž• ',\
866
    ru,  ' ‡€ƒ“‡ˆ’œ   ˆŒ…ˆ’œ ',\
552
    en, ' LOAD SAVE '
867
    en,  '  LOAD     APPLY  ',\
553
 
868
 
Line 554... Line 869...
554
lsz t1,\
869
lsz test_text,\
555
    ru, '   ”€‰‹    ',\
870
    ru, '‡ £®«®¢®ª',\
556
    en, ' FILENAME  '
871
    en, 'Caption'
Line 557... Line -...
557
 
-
 
558
lsz labelt,\
872
 
Line 559... Line 873...
559
    ru, '€‘’Ž‰Š€ –‚…’Ž‚',\
873
lsz labelt,\
Line 560... Line 874...
560
    en, 'DESKTOP COLOURS - DEFINE COLOR AND CLICK ON TARGET'
874
    ru, '€‘’Ž‰Š€ –‚…’Ž‚',\
Line 581... Line 895...
581
  .bytes2write  dd ?
895
  .bytes2write  dd ?
582
  .address      dd ?
896
  .address      dd ?
583
  .workarea     dd ?
897
  .workarea     dd ?
584
end virtual
898
end virtual
Line -... Line 899...
-
 
899
 
-
 
900
skin_info:
-
 
901
  .mode         dd ?
-
 
902
  .start_block  dd ?
-
 
903
  .blocks       dd ?
-
 
904
  .address      dd ?
-
 
905
  .workarea     dd ?
-
 
906
  .fname rb 256+1
585
 
907
 
Line 586... Line 908...
586
app_colours:
908
app_colours:
587
 
909
 
588
w_frame              dd ?
910
w_frame              dd ?