Subversion Repositories Kolibri OS

Rev

Rev 485 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 485 Rev 524
1
;
1
;
2
;    UNIFORM WINDOW COLOURS & SKIN
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
;    < skin selection by Mike Semenyako >
8
;
8
;
9
 
9
 
10
;******************************************************************************
10
;******************************************************************************
11
   use32
11
   use32
12
   org     0
12
   org     0
13
   db      'MENUET01'  ; identifier
13
   db      'MENUET01'  ; identifier
14
   dd      1           ; header version
14
   dd      1           ; header version
15
   dd      START       ; start address
15
   dd      START       ; start address
16
   dd      I_END       ; file size
16
   dd      I_END       ; file size
17
   dd      28000h      ; memory
17
   dd      28000h      ; memory
18
   dd      10000h      ; stack pointer
18
   dd      10000h      ; stack pointer
19
   dd      0,0         ; parameters, reserved
19
   dd      0,0         ; parameters, reserved
20
 
20
 
21
   include 'lang.inc'
21
   include 'lang.inc'
22
   include '..\..\..\macros.inc'
22
   include '..\..\macros.inc'
23
   include 'kglobals.inc'
23
   include 'kglobals.inc'
24
   include 'unpacker.inc'
24
   include 'unpacker.inc'
25
;******************************************************************************
25
;******************************************************************************
26
 
26
 
27
 
27
 
28
struct SKIN_HEADER
28
struct SKIN_HEADER
29
  ident   dd ?
29
  ident   dd ?
30
  version dd ?
30
  version dd ?
31
  params  dd ?
31
  params  dd ?
32
  buttons dd ?
32
  buttons dd ?
33
  bitmaps dd ?
33
  bitmaps dd ?
34
ends
34
ends
35
 
35
 
36
struct SKIN_PARAMS
36
struct SKIN_PARAMS
37
  skin_height    dd ?
37
  skin_height    dd ?
38
  margin.right   dw ?
38
  margin.right   dw ?
39
  margin.left    dw ?
39
  margin.left    dw ?
40
  margin.bottom  dw ?
40
  margin.bottom  dw ?
41
  margin.top     dw ?
41
  margin.top     dw ?
42
  colors.inner   dd ?
42
  colors.inner   dd ?
43
  colors.outer   dd ?
43
  colors.outer   dd ?
44
  colors.frame   dd ?
44
  colors.frame   dd ?
45
  colors_1.inner dd ?
45
  colors_1.inner dd ?
46
  colors_1.outer dd ?
46
  colors_1.outer dd ?
47
  colors_1.frame dd ?
47
  colors_1.frame dd ?
48
  dtp.size       dd ?
48
  dtp.size       dd ?
49
  dtp.data       db 40 dup (?)
49
  dtp.data       db 40 dup (?)
50
ends
50
ends
51
 
51
 
52
struct SKIN_BUTTONS
52
struct SKIN_BUTTONS
53
  type     dd ?
53
  type     dd ?
54
  pos:
54
  pos:
55
    left   dw ?
55
    left   dw ?
56
    top    dw ?
56
    top    dw ?
57
  size:
57
  size:
58
    width  dw ?
58
    width  dw ?
59
    height dw ?
59
    height dw ?
60
ends
60
ends
61
 
61
 
62
struct SKIN_BITMAPS
62
struct SKIN_BITMAPS
63
  kind  dw ?
63
  kind  dw ?
64
  type  dw ?
64
  type  dw ?
65
  _data  dd ?
65
  _data  dd ?
66
ends
66
ends
67
 
67
 
68
 
68
 
69
START:                          ; start of execution
69
START:                          ; start of execution
70
 
70
 
71
    mov  eax,48                 ; get current colors
71
    mov  eax,48                 ; get current colors
72
    mov  ebx,3
72
    mov  ebx,3
73
    mov  ecx,color_table
73
    mov  ecx,color_table
74
    mov  edx,4*10
74
    mov  edx,4*10
75
    mcall
75
    mcall
76
 
76
 
77
    cld
77
    cld
78
    mov  esi,default_skn
78
    mov  esi,default_skn
79
    mov  edi,fname
79
    mov  edi,fname
80
    mov  ecx,default_skn.size
80
    mov  ecx,default_skn.size
81
    rep  movsb
81
    rep  movsb
82
    mov  [skin_info.fname],0
-
 
83
    mov  [skin_info.workarea],0x10000
-
 
84
    call load_skin_file
82
    call load_skin_file
85
 
83
 
86
;    mov  esi, default_dtp
84
;    mov  esi, default_dtp
87
;    mov  edi, fname
85
;    mov  edi, fname
88
;    mov  ecx, default_dtp.size
86
;    mov  ecx, default_dtp.size
89
;    rep  movsb
87
;    rep  movsb
90
 
88
 
91
red:
89
red:
92
    call draw_window            ; at first, draw the window
90
    call draw_window            ; at first, draw the window
93
 
91
 
94
still:
92
still:
95
 
93
 
96
    mov  eax,23                 ; wait here for event
94
    mov  eax,23                 ; wait here for event
97
    mov  ebx,5
95
    mov  ebx,5
98
    mcall
96
    mcall
99
 
97
 
100
    dec  eax                    ; redraw request ?
98
    dec  eax                    ; redraw request ?
101
    jz   red
99
    jz   red
102
    dec  eax                    ; key in buffer ?
100
    dec  eax                    ; key in buffer ?
103
    jz   key
101
    jz   key
104
    dec  eax                    ; button in buffer ?
102
    dec  eax                    ; button in buffer ?
105
    jz   button
103
    jz   button
106
 
104
 
107
    call draw_cursor
105
    call draw_cursor
108
 
106
 
109
    jmp  still
107
    jmp  still
110
 
108
 
111
 
109
 
112
  key:                          ; key
110
  key:                          ; key
113
    mov  al,2                   ; just read it and ignore
111
    mov  al,2                   ; just read it and ignore
114
    mcall
112
    mcall
115
    jmp  still
113
    jmp  still
116
 
114
 
117
  button:                       ; button
115
  button:                       ; button
118
    mov  al,17                  ; get id
116
    mov  al,17                  ; get id
119
    mcall
117
    mcall
120
 
118
 
121
    cmp  ah,11                  ; read string
119
    cmp  ah,11                  ; read string
122
    jne  no_string
120
    jne  no_string
123
    call read_string
121
    call read_string
124
    jmp  still
122
    jmp  still
125
  no_string:
123
  no_string:
126
 
124
 
127
    cmp  ah,12                  ; load file
125
    cmp  ah,12                  ; load file
128
    jne  no_load
126
    jne  no_load
129
    call load_file
127
    call load_file
130
    call draw_window
128
    call draw_window
131
    jmp  still
129
    jmp  still
132
  no_load:
130
  no_load:
133
 
131
 
134
    cmp  ah,13                  ; save file
132
    cmp  ah,13                  ; save file
135
    jne  no_save
133
    jne  no_save
136
    call save_file
134
    call save_file
137
    jmp  still
135
    jmp  still
138
  no_save:
136
  no_save:
139
 
137
 
140
    cmp  ah,14                  ; set 3d buttons
138
    cmp  ah,14                  ; set 3d buttons
141
    jne  no_3d
139
    jne  no_3d
142
    mov  eax,48
140
    mov  eax,48
143
    mov  ebx,1
141
    mov  ebx,1
144
    mov  ecx,1
142
    mov  ecx,1
145
    mcall
143
    mcall
146
    jmp  doapply
144
    jmp  doapply
147
   no_3d:
145
   no_3d:
148
 
146
 
149
    cmp  ah,15                  ; set flat buttons
147
    cmp  ah,15                  ; set flat buttons
150
    jne  no_flat
148
    jne  no_flat
151
    mcall 48, 1, 0
149
    mcall 48, 1, 0
152
doapply:
150
doapply:
153
    mcall 48, 0, 0
151
    mcall 48, 0, 0
154
    jmp  still
152
    jmp  still
155
  no_flat:
153
  no_flat:
156
 
154
 
157
    cmp  ah,16                  ; apply
155
    cmp  ah,16                  ; apply
158
    jne  no_apply
156
    jne  no_apply
159
  apply_direct:
157
  apply_direct:
160
    mov  eax,48
158
    mov  eax,48
161
    mov  ebx,2
159
    mov  ebx,2
162
    mov  ecx,color_table
160
    mov  ecx,color_table
163
    mov  edx,10*4
161
    mov  edx,10*4
164
    mcall
162
    mcall
165
    jmp  doapply
163
    jmp  doapply
166
  no_apply:
164
  no_apply:
167
 
165
 
168
    cmp  ah,17                  ; load skin file
166
    cmp  ah,17                  ; load skin file
169
    jne  no_load_skin
167
    jne  no_load_skin
170
    call load_skin_file
168
    call load_skin_file
171
    call draw_window
169
    call draw_window
172
    jmp  still
170
    jmp  still
173
  no_load_skin:
171
  no_load_skin:
174
 
172
 
175
    cmp   ah,18                 ; apply skin
173
    cmp   ah,18                 ; apply skin
176
    jne   no_apply_skin
174
    jne   no_apply_skin
177
    cmp   [skin_info.fname],0
175
    cmp   [skin_info.fname],0
178
    je    no_apply_skin
176
    je    no_apply_skin
179
    mcall 48,8,skin_info
177
    mcall 48,8,skin_info.fname
180
    call  draw_window
178
    call  draw_window
181
    jmp   still
179
    jmp   still
182
  no_apply_skin:
180
  no_apply_skin:
183
 
181
 
184
    cmp  ah,31
182
    cmp  ah,31
185
    jb   no_new_colour
183
    jb   no_new_colour
186
    cmp  ah,41
184
    cmp  ah,41
187
    jg   no_new_colour
185
    jg   no_new_colour
188
    shr  eax,8
186
    shr  eax,8
189
    sub  eax,31
187
    sub  eax,31
190
    shl  eax,2
188
    shl  eax,2
191
    mov  ebx,[color]
189
    mov  ebx,[color]
192
    mov  [eax+color_table],ebx
190
    mov  [eax+color_table],ebx
193
    cmp  dword[0x18000+SKIN_HEADER.ident],'SKIN'
191
    cmp  dword[0x18000+SKIN_HEADER.ident],'SKIN'
194
    jne  @f
192
    jne  @f
195
    mov  edi,[0x18000+SKIN_HEADER.params]
193
    mov  edi,[0x18000+SKIN_HEADER.params]
196
    mov  dword[edi+0x18000+SKIN_PARAMS.dtp.data+eax],ebx
194
    mov  dword[edi+0x18000+SKIN_PARAMS.dtp.data+eax],ebx
197
    call draw_skin
195
    call draw_skin
198
@@: call draw_colours
196
@@: call draw_colours
199
    jmp  still
197
    jmp  still
200
  no_new_colour:
198
  no_new_colour:
201
 
199
 
202
    cmp  ah,1                   ; terminate
200
    cmp  ah,1                   ; terminate
203
    jnz  noid1
201
    jnz  noid1
204
    or   eax,-1
202
    or   eax,-1
205
    mcall
203
    mcall
206
  noid1:
204
  noid1:
207
 
205
 
208
    jmp  still
206
    jmp  still
209
 
207
 
210
 
208
 
211
draw_cursor:
209
draw_cursor:
212
 
210
 
213
    pusha
211
    pusha
214
    mov  eax,37
212
    mov  eax,37
215
    mov  ebx,2
213
    mov  ebx,2
216
    mcall
214
    mcall
217
 
215
 
218
    cmp  eax,0
216
    cmp  eax,0
219
    jne  dc1
217
    jne  dc1
220
    popa
218
    popa
221
    ret
219
    ret
222
 
220
 
223
 dc1:
221
 dc1:
224
 
222
 
225
    mov  eax,37
223
    mov  eax,37
226
    mov  ebx,1
224
    mov  ebx,1
227
    mcall
225
    mcall
228
 
226
 
229
    mov  ebx,eax
227
    mov  ebx,eax
230
    shr  ebx,16
228
    shr  ebx,16
231
    mov  ecx,eax
229
    mov  ecx,eax
232
    and  ecx,0xffff
230
    and  ecx,0xffff
233
 
231
 
234
    cmp  ecx,32
232
    cmp  ecx,32
235
    jbe  no_color
233
    jbe  no_color
236
    cmp  ebx,32
234
    cmp  ebx,32
237
    jbe  no_color
235
    jbe  no_color
238
 
236
 
239
    cmp  ebx,266           ; CHANGE COLOR
237
    cmp  ebx,266           ; CHANGE COLOR
240
    jb   no_color
238
    jb   no_color
241
    cmp  ebx,266+20*3
239
    cmp  ebx,266+20*3
242
    jg   no_color
240
    jg   no_color
243
 
241
 
244
    cmp  ecx,30+128
242
    cmp  ecx,30+128
245
    jge  no_color
243
    jge  no_color
246
    cmp  ecx,30
244
    cmp  ecx,30
247
    jb   no_color
245
    jb   no_color
248
 
246
 
249
    sub  ebx,266
247
    sub  ebx,266
250
    mov  eax,ebx
248
    mov  eax,ebx
251
    cdq
249
    cdq
252
    mov  ebx,20
250
    mov  ebx,20
253
    div  ebx
251
    div  ebx
254
    mov  ebx,2
252
    mov  ebx,2
255
    sub  ebx,eax
253
    sub  ebx,eax
256
 
254
 
257
    add  ecx,-30
255
    add  ecx,-30
258
    not  ecx
256
    not  ecx
259
    shl  ecx,1
257
    shl  ecx,1
260
 
258
 
261
    mov  byte [ebx+color],cl
259
    mov  byte [ebx+color],cl
262
    call draw_color
260
    call draw_color
263
 
261
 
264
    popa
262
    popa
265
    ret
263
    ret
266
 
264
 
267
  no_color:
265
  no_color:
268
 
266
 
269
    popa
267
    popa
270
    ret
268
    ret
271
 
269
 
272
 
270
 
273
load_file:
271
load_file:
274
        xor     eax, eax
272
        xor     eax, eax
275
        mov     ebx, read_info
273
        mov     ebx, read_info
276
        mov     dword [ebx], eax       ; subfunction: read
274
        mov     dword [ebx], eax       ; subfunction: read
277
        mov     dword [ebx+4], eax     ; offset (low dword)
275
        mov     dword [ebx+4], eax     ; offset (low dword)
278
        mov     dword [ebx+8], eax     ; offset (high dword)
276
        mov     dword [ebx+8], eax     ; offset (high dword)
279
        mov     dword [ebx+12], 40     ; read colors file: 4*10 bytes
277
        mov     dword [ebx+12], 40     ; read colors file: 4*10 bytes
280
        mov     dword [ebx+16], color_table ; address
278
        mov     dword [ebx+16], color_table ; address
281
        mcall   70
279
        mcall   70
282
        ret
280
        ret
283
 
281
 
284
load_skin_file:
282
load_skin_file:
285
        xor     eax, eax
283
        xor     eax, eax
286
        mov     ebx, read_info
284
        mov     ebx, read_info
287
        mov     dword [ebx], eax       ; subfunction: read
285
        mov     dword [ebx], eax       ; subfunction: read
288
        mov     dword [ebx+4], eax     ; offset (low dword)
286
        mov     dword [ebx+4], eax     ; offset (low dword)
289
        mov     dword [ebx+8], eax     ; offset (high dword)
287
        mov     dword [ebx+8], eax     ; offset (high dword)
290
        mov     dword [ebx+12], 32*1024 ; read: max 32 KBytes
288
        mov     dword [ebx+12], 32*1024 ; read: max 32 KBytes
291
        mov     dword [ebx+16], 0x10000 ; address
289
        mov     dword [ebx+16], 0x10000 ; address
292
        mcall   70
290
        mcall   70
293
 
291
 
294
        mov     esi, 0x10000
292
        mov     esi, 0x10000
295
 
293
 
296
        cmp     dword [esi], 'KPCK'
294
        cmp     dword [esi], 'KPCK'
297
        jnz     notpacked
295
        jnz     notpacked
298
        cmp     dword [esi+4], 32*1024 ; max 32 KBytes
296
        cmp     dword [esi+4], 32*1024 ; max 32 KBytes
299
        ja      doret
297
        ja      doret
300
        push    0x20000
298
        push    0x20000
301
        push    esi
299
        push    esi
302
        call    unpack
300
        call    unpack
303
        mov     esi, 0x20000
301
        mov     esi, 0x20000
304
notpacked:
302
notpacked:
305
 
303
 
306
    cmp   dword[esi+SKIN_HEADER.ident],'SKIN'
304
    cmp   dword[esi+SKIN_HEADER.ident],'SKIN'
307
    jne   doret
305
    jne   doret
308
 
306
 
309
    mov   edi,0x18000
307
    mov   edi,0x18000
310
    mov   ecx,0x8000/4
308
    mov   ecx,0x8000/4
311
    rep   movsd
309
    rep   movsd
312
 
310
 
313
    mov   esi,fname
311
    mov   esi,fname
314
    mov   edi,skin_info.fname
312
    mov   edi,skin_info.fname
315
    mov   ecx,257
313
    mov   ecx,257
316
    rep   movsb
314
    rep   movsb
317
 
315
 
318
    mov   ebp,0x18000
316
    mov   ebp,0x18000
319
    mov   esi,[ebp+SKIN_HEADER.params]
317
    mov   esi,[ebp+SKIN_HEADER.params]
320
    add   esi,ebp
318
    add   esi,ebp
321
    lea   esi,[esi+SKIN_PARAMS.dtp.data]
319
    lea   esi,[esi+SKIN_PARAMS.dtp.data]
322
    mov   edi,color_table
320
    mov   edi,color_table
323
    mov   ecx,10
321
    mov   ecx,10
324
    rep   movsd
322
    rep   movsd
325
  doret:
323
  doret:
326
 
324
 
327
ret
325
ret
328
 
326
 
329
 
327
 
330
save_file:
328
save_file:
331
        mov     ebx, write_info
329
        mov     ebx, write_info
332
        mov     dword [ebx], 2         ; subfunction: write
330
        mov     dword [ebx], 2         ; subfunction: write
333
        and     dword [ebx+4], 0       ; (reserved)
331
        and     dword [ebx+4], 0       ; (reserved)
334
        and     dword [ebx+8], 0       ; (reserved)
332
        and     dword [ebx+8], 0       ; (reserved)
335
        mov     dword [ebx+12], 10*4   ; bytes to write
333
        mov     dword [ebx+12], 10*4   ; bytes to write
336
        mov     dword [ebx+16], color_table ; address
334
        mov     dword [ebx+16], color_table ; address
337
        mcall   70
335
        mcall   70
338
        ret
336
        ret
339
 
337
 
340
read_string:
338
read_string:
341
 
339
 
342
    pusha
340
    pusha
343
 
341
 
344
    mov  edi,fname
342
    mov  edi,fname
345
    mov  al,'_'
343
    mov  al,'_'
346
    mov  ecx,87
344
    mov  ecx,87
347
    cld
345
    cld
348
    rep  stosb
346
    rep  stosb
349
 
347
 
350
    call print_text
348
    call print_text
351
 
349
 
352
    mov  edi,fname
350
    mov  edi,fname
353
 
351
 
354
  f11:
352
  f11:
355
    mov  eax,10
353
    mov  eax,10
356
    mcall
354
    mcall
357
    cmp  eax,2
355
    cmp  eax,2
358
    jne  read_done
356
    jne  read_done
359
;    mov  eax,2
357
;    mov  eax,2
360
    mcall
358
    mcall
361
    shr  eax,8
359
    shr  eax,8
362
    cmp  eax,13
360
    cmp  eax,13
363
    je   read_done
361
    je   read_done
364
    cmp  eax,8
362
    cmp  eax,8
365
    jne  nobsl
363
    jne  nobsl
366
    cmp  edi,fname
364
    cmp  edi,fname
367
    je   f11
365
    je   f11
368
    dec  edi
366
    dec  edi
369
    mov  [edi],byte '_'
367
    mov  [edi],byte '_'
370
    call print_text
368
    call print_text
371
    jmp  f11
369
    jmp  f11
372
   nobsl:
370
   nobsl:
373
    mov  [edi],al
371
    mov  [edi],al
374
 
372
 
375
    call print_text
373
    call print_text
376
 
374
 
377
    inc  edi
375
    inc  edi
378
    cmp  edi, fname+87
376
    cmp  edi, fname+87
379
    jne  f11
377
    jne  f11
380
 
378
 
381
  read_done:
379
  read_done:
382
 
380
 
383
    mov  ecx, fname+88
381
    mov  ecx, fname+88
384
    sub  ecx, edi
382
    sub  ecx, edi
385
    mov  eax, 0
383
    mov  eax, 0
386
    cld
384
    cld
387
    rep  stosb
385
    rep  stosb
388
 
386
 
389
    call print_text
387
    call print_text
390
 
388
 
391
    popa
389
    popa
392
 
390
 
393
    ret
391
    ret
394
 
392
 
395
 
393
 
396
print_text:
394
print_text:
397
    pushad
395
    pushad
398
 
396
 
399
    mpack ebx,15,6*87+4
397
    mpack ebx,15,6*87+4
400
    mpack ecx,(30+18*10+2),11
398
    mpack ecx,(30+18*10+2),11
401
    mcall 13,,,[w_work]
399
    mcall 13,,,[w_work]
402
 
400
 
403
    mpack ebx,17,(30+18*10+4)
401
    mpack ebx,17,(30+18*10+4)
404
    mcall 4,,[w_work_text],fname,87
402
    mcall 4,,[w_work_text],fname,87
405
 
403
 
406
    popad
404
    popad
407
ret
405
ret
408
 
406
 
409
 
407
 
410
draw_color:
408
draw_color:
411
 
409
 
412
    pusha
410
    pusha
413
 
411
 
414
    mov  eax,13
412
    mov  eax,13
415
    mov  ebx,266*65536+60
413
    mov  ebx,266*65536+60
416
    mov  ecx,170*65536+30
414
    mov  ecx,170*65536+30
417
    mov  edx,[color]
415
    mov  edx,[color]
418
    mcall
416
    mcall
419
 
417
 
420
;   mov  eax,13
418
;   mov  eax,13
421
    mov  ebx,266*65536+60
419
    mov  ebx,266*65536+60
422
    mov  ecx,200*65536+10
420
    mov  ecx,200*65536+10
423
    mov  edx,[w_work]
421
    mov  edx,[w_work]
424
    mcall
422
    mcall
425
 
423
 
426
    mov  eax,47
424
    mov  eax,47
427
    mov  ebx,0+1*256+8*65536
425
    mov  ebx,0+1*256+8*65536
428
    mov  ecx,[color]
426
    mov  ecx,[color]
429
    mov  edx,272*65536+201
427
    mov  edx,272*65536+201
430
    mov  esi,[w_work_text]
428
    mov  esi,[w_work_text]
431
    mcall
429
    mcall
432
 
430
 
433
    popa
431
    popa
434
 
432
 
435
    ret
433
    ret
436
 
434
 
437
 
435
 
438
draw_colours:
436
draw_colours:
439
 
437
 
440
    pusha
438
    pusha
441
 
439
 
442
    mov  esi,color_table
440
    mov  esi,color_table
443
 
441
 
444
    mov  ebx,225*65536+32
442
    mov  ebx,225*65536+32
445
    mov  ecx,32*65536+12
443
    mov  ecx,32*65536+12
446
  newcol:
444
  newcol:
447
    mov  eax,13
445
    mov  eax,13
448
    mov  edx,[esi]
446
    mov  edx,[esi]
449
    mcall
447
    mcall
450
    add  ecx,18*65536
448
    add  ecx,18*65536
451
    add  esi,4
449
    add  esi,4
452
    cmp  esi,color_table+4*9
450
    cmp  esi,color_table+4*9
453
    jbe  newcol
451
    jbe  newcol
454
 
452
 
455
    popa
453
    popa
456
 
454
 
457
    ret
455
    ret
458
 
456
 
459
 
457
 
460
draw_framerect: ; ebx,ecx
458
draw_framerect: ; ebx,ecx
461
        push    ebx ecx
459
        push    ebx ecx
462
        add     bx,[esp+6]
460
        add     bx,[esp+6]
463
        mov     cx,[esp+2]
461
        mov     cx,[esp+2]
464
        dec     ebx
462
        dec     ebx
465
        mcall   38
463
        mcall   38
466
        add     cx,[esp]
464
        add     cx,[esp]
467
        rol     ecx,16
465
        rol     ecx,16
468
        add     cx,[esp]
466
        add     cx,[esp]
469
        sub     ecx,0x00010001
467
        sub     ecx,0x00010001
470
        mcall
468
        mcall
471
        mov     ebx,[esp+4]
469
        mov     ebx,[esp+4]
472
        mov     ecx,[esp]
470
        mov     ecx,[esp]
473
        mov     bx,[esp+6]
471
        mov     bx,[esp+6]
474
        add     cx,[esp+2]
472
        add     cx,[esp+2]
475
        dec     ecx
473
        dec     ecx
476
        mcall
474
        mcall
477
        add     bx,[esp+4]
475
        add     bx,[esp+4]
478
        rol     ebx,16
476
        rol     ebx,16
479
        add     bx,[esp+4]
477
        add     bx,[esp+4]
480
        sub     ebx,0x00010001
478
        sub     ebx,0x00010001
481
        mcall
479
        mcall
482
        add     esp,8
480
        add     esp,8
483
        ret
481
        ret
484
 
482
 
485
find_bitmap:
483
find_bitmap:
486
        mov     edi,[ebp+SKIN_HEADER.bitmaps]
484
        mov     edi,[ebp+SKIN_HEADER.bitmaps]
487
        add     edi,ebp
485
        add     edi,ebp
488
        xor     ebx,ebx
486
        xor     ebx,ebx
489
  .lp1: cmp     dword[edi],0
487
  .lp1: cmp     dword[edi],0
490
        je      .lp2
488
        je      .lp2
491
        cmp     dword[edi+0],eax
489
        cmp     dword[edi+0],eax
492
        jne     @f
490
        jne     @f
493
        mov     ebx,[edi+SKIN_BITMAPS._data]
491
        mov     ebx,[edi+SKIN_BITMAPS._data]
494
        add     ebx,ebp
492
        add     ebx,ebp
495
        mov     ecx,[ebx-2]
493
        mov     ecx,[ebx-2]
496
        mov     cx,[ebx+4]
494
        mov     cx,[ebx+4]
497
        add     ebx,8
495
        add     ebx,8
498
  .lp2: ret
496
  .lp2: ret
499
    @@: add     edi,8
497
    @@: add     edi,8
500
        jmp     .lp1
498
        jmp     .lp1
501
 
499
 
502
dec_edx:
500
dec_edx:
503
        sub     dl,4
501
        sub     dl,4
504
        jnc     @f
502
        jnc     @f
505
        xor     dl,dl
503
        xor     dl,dl
506
    @@: sub     dh,4
504
    @@: sub     dh,4
507
        jnc     @f
505
        jnc     @f
508
        xor     dh,dh
506
        xor     dh,dh
509
    @@: rol     edx,16
507
    @@: rol     edx,16
510
        sub     dl,4
508
        sub     dl,4
511
        jnc     @f
509
        jnc     @f
512
        xor     dl,dl
510
        xor     dl,dl
513
    @@: rol     edx,16
511
    @@: rol     edx,16
514
        ret
512
        ret
515
 
513
 
516
area:
514
area:
517
  .x      = 345
515
  .x      = 345
518
  .y      = 20
516
  .y      = 20
519
  .width  = 206
517
  .width  = 206
520
  .height = 191
518
  .height = 191
521
 
519
 
522
wnd1:
520
wnd1:
523
  .x      = area.x+49
521
  .x      = area.x+49
524
  .y      = area.y+5
522
  .y      = area.y+5
525
  .width  = 150
523
  .width  = 150
526
  .height = 90
524
  .height = 90
527
wnd2:
525
wnd2:
528
  .x      = area.x+35
526
  .x      = area.x+35
529
  .y      = area.y+35
527
  .y      = area.y+35
530
  .width  = 150
528
  .width  = 150
531
  .height = 90
529
  .height = 90
532
wnd3:
530
wnd3:
533
  .x      = area.x+21
531
  .x      = area.x+21
534
  .y      = area.y+65
532
  .y      = area.y+65
535
  .width  = 150
533
  .width  = 150
536
  .height = 90
534
  .height = 90
537
wnd4:
535
wnd4:
538
  .x      = area.x+7
536
  .x      = area.x+7
539
  .y      = area.y+95
537
  .y      = area.y+95
540
  .width  = 150
538
  .width  = 150
541
  .height = 90
539
  .height = 90
542
 
540
 
543
virtual at edi+SKIN_PARAMS.dtp.data
541
virtual at edi+SKIN_PARAMS.dtp.data
544
  dtp system_colors
542
  dtp system_colors
545
end virtual
543
end virtual
546
 
544
 
547
draw_skin:
545
draw_skin:
548
        mcall   13,,,0x00FFFFFF
546
        mcall   13,,,0x00FFFFFF
549
 
547
 
550
        mov     ebp,0x18000
548
        mov     ebp,0x18000
551
        mov     edi,[ebp+SKIN_HEADER.params]
549
        mov     edi,[ebp+SKIN_HEADER.params]
552
        add     edi,ebp
550
        add     edi,ebp
553
        mpack   ebx,wnd1.x,wnd1.width
551
        mpack   ebx,wnd1.x,wnd1.width
554
        mpack   ecx,wnd1.y,wnd1.height
552
        mpack   ecx,wnd1.y,wnd1.height
555
        mov     edx,[dtp.frame]
553
        mov     edx,[dtp.frame]
556
        call    draw_framerect
554
        call    draw_framerect
557
        mcall   13,,,dword[dtp.work]
555
        mcall   13,,,dword[dtp.work]
558
 
556
 
559
        mov     eax,38
557
        mov     eax,38
560
        mpack   ebx,wnd1.x+1,wnd1.x+wnd1.width-2
558
        mpack   ebx,wnd1.x+1,wnd1.x+wnd1.width-2
561
        mpack   ecx,wnd1.y+1,wnd1.y+1
559
        mpack   ecx,wnd1.y+1,wnd1.y+1
562
        mov     edx,[dtp.grab]
560
        mov     edx,[dtp.grab]
563
        mov     esi,20
561
        mov     esi,20
564
    @@: mcall
562
    @@: mcall
565
        call    dec_edx
563
        call    dec_edx
566
        add     ecx,0x00010001
564
        add     ecx,0x00010001
567
        dec     esi
565
        dec     esi
568
        jnz     @b
566
        jnz     @b
569
 
567
 
570
        mov     edi,[ebp+SKIN_HEADER.params]
568
        mov     edi,[ebp+SKIN_HEADER.params]
571
        add     edi,ebp
569
        add     edi,ebp
572
        mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
570
        mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
573
 
571
 
574
        mcall   8,,,0,[dtp.grab_button]
572
        mcall   8,,,0,[dtp.grab_button]
575
        mcall   4,,dword[dtp.grab_button_text],close_text,close_text.size
573
        mcall   4,,dword[dtp.grab_button_text],close_text,close_text.size
576
 
574
 
577
;----------------------------------------------------------------------
575
;----------------------------------------------------------------------
578
 
576
 
579
        mov     edi,[ebp+SKIN_HEADER.params]
577
        mov     edi,[ebp+SKIN_HEADER.params]
580
        add     edi,ebp
578
        add     edi,ebp
581
        mpack   ebx,wnd2.x,wnd2.width
579
        mpack   ebx,wnd2.x,wnd2.width
582
        mpack   ecx,wnd2.y,wnd2.height
580
        mpack   ecx,wnd2.y,wnd2.height
583
        mov     edx,[dtp.frame]
581
        mov     edx,[dtp.frame]
584
        shr     edx,1
582
        shr     edx,1
585
        and     edx,0x007F7F7F
583
        and     edx,0x007F7F7F
586
        call    draw_framerect
584
        call    draw_framerect
587
        mpack   ebx,wnd2.x+4,wnd2.width-8
585
        mpack   ebx,wnd2.x+4,wnd2.width-8
588
        mpack   ecx,wnd2.y+4,wnd2.height-8
586
        mpack   ecx,wnd2.y+4,wnd2.height-8
589
        call    draw_framerect
587
        call    draw_framerect
590
        mcall   13,,,[dtp.frame]
588
        mcall   13,,,[dtp.frame]
591
        add     ecx,(wnd2.height-5)*65536
589
        add     ecx,(wnd2.height-5)*65536
592
        mcall
590
        mcall
593
        mcall   ,,
591
        mcall   ,,
594
        add     ebx,(wnd2.width-5)*65536
592
        add     ebx,(wnd2.width-5)*65536
595
        mcall
593
        mcall
596
        mcall   ,,,dword[dtp.work]
594
        mcall   ,,,dword[dtp.work]
597
 
595
 
598
        mov     eax,38
596
        mov     eax,38
599
        mpack   ebx,wnd2.x+4,wnd2.x+wnd2.width-5
597
        mpack   ebx,wnd2.x+4,wnd2.x+wnd2.width-5
600
        mpack   ecx,wnd2.y+4,wnd2.y+4
598
        mpack   ecx,wnd2.y+4,wnd2.y+4
601
        mov     edx,[dtp.grab]
599
        mov     edx,[dtp.grab]
602
        mov     esi,16
600
        mov     esi,16
603
    @@: mcall
601
    @@: mcall
604
        call    dec_edx
602
        call    dec_edx
605
        add     ecx,0x00010001
603
        add     ecx,0x00010001
606
        dec     esi
604
        dec     esi
607
        jnz     @b
605
        jnz     @b
608
 
606
 
609
        mov     edi,[ebp+SKIN_HEADER.params]
607
        mov     edi,[ebp+SKIN_HEADER.params]
610
        add     edi,ebp
608
        add     edi,ebp
611
        mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
609
        mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
612
 
610
 
613
        mcall   8,,,0,[dtp.grab_button]
611
        mcall   8,,,0,[dtp.grab_button]
614
        mcall   4,,dword[dtp.grab_button_text],close_text,close_text.size
612
        mcall   4,,dword[dtp.grab_button_text],close_text,close_text.size
615
 
613
 
616
;----------------------------------------------------------------------
614
;----------------------------------------------------------------------
617
 
615
 
618
        mov     edi,[ebp+SKIN_HEADER.params]
616
        mov     edi,[ebp+SKIN_HEADER.params]
619
        add     edi,ebp
617
        add     edi,ebp
620
        mpack   ebx,wnd3.x,wnd3.width
618
        mpack   ebx,wnd3.x,wnd3.width
621
        mpack   ecx,wnd3.y,wnd3.height
619
        mpack   ecx,wnd3.y,wnd3.height
622
        mov     edx,[edi+SKIN_PARAMS.colors_1.outer]
620
        mov     edx,[edi+SKIN_PARAMS.colors_1.outer]
623
        call    draw_framerect
621
        call    draw_framerect
624
        mpack   ebx,wnd3.x+4,wnd3.width-8
622
        mpack   ebx,wnd3.x+4,wnd3.width-8
625
        mpack   ecx,wnd3.y+4,wnd3.height-8
623
        mpack   ecx,wnd3.y+4,wnd3.height-8
626
        mov     edx,[edi+SKIN_PARAMS.colors_1.inner]
624
        mov     edx,[edi+SKIN_PARAMS.colors_1.inner]
627
        call    draw_framerect
625
        call    draw_framerect
628
        mcall   13,,,[edi+SKIN_PARAMS.colors_1.frame]
626
        mcall   13,,,[edi+SKIN_PARAMS.colors_1.frame]
629
        add     ecx,(wnd3.height-5)*65536
627
        add     ecx,(wnd3.height-5)*65536
630
        mcall
628
        mcall
631
        mcall   ,,
629
        mcall   ,,
632
        add     ebx,(wnd3.width-5)*65536
630
        add     ebx,(wnd3.width-5)*65536
633
        mcall
631
        mcall
634
        mcall   ,,,dword[dtp.work]
632
        mcall   ,,,dword[dtp.work]
635
 
633
 
636
        mov     eax,0x00000001 ; left, inactive
634
        mov     eax,0x00000001 ; left, inactive
637
        call    find_bitmap
635
        call    find_bitmap
638
        mcall   7,,,
636
        mcall   7,,,
639
 
637
 
640
        pushd   [ebx-8]
638
        pushd   [ebx-8]
641
        mov     eax,0x00000003 ; base, inactive
639
        mov     eax,0x00000003 ; base, inactive
642
        call    find_bitmap
640
        call    find_bitmap
643
        pop     edx
641
        pop     edx
644
        mov     esi,wnd3.x+wnd3.width-1
642
        mov     esi,wnd3.x+wnd3.width-1
645
        sub     esi,edx
643
        sub     esi,edx
646
        shl     edx,16
644
        shl     edx,16
647
        add     edx,wnd3.x*65536+wnd3.y
645
        add     edx,wnd3.x*65536+wnd3.y
648
        mcall   7
646
        mcall   7
649
    @@: rol     edx,16
647
    @@: rol     edx,16
650
        add     dx,[ebx-8]
648
        add     dx,[ebx-8]
651
        cmp     dx,si
649
        cmp     dx,si
652
        ja      @f
650
        ja      @f
653
        rol     edx,16
651
        rol     edx,16
654
        mcall   7
652
        mcall   7
655
        jmp     @b
653
        jmp     @b
656
    @@:
654
    @@:
657
 
655
 
658
        mov     eax,0x00000002 ; oper, inactive
656
        mov     eax,0x00000002 ; oper, inactive
659
        call    find_bitmap
657
        call    find_bitmap
660
        mov     edx,ecx
658
        mov     edx,ecx
661
        shr     edx,16
659
        shr     edx,16
662
        neg     edx
660
        neg     edx
663
        shl     edx,16
661
        shl     edx,16
664
        add     edx,(wnd3.x+wnd3.width)*65536+wnd3.y
662
        add     edx,(wnd3.x+wnd3.width)*65536+wnd3.y
665
        mcall   7
663
        mcall   7
666
 
664
 
667
        mov     ebp,0x18000
665
        mov     ebp,0x18000
668
        mov     edi,[ebp+SKIN_HEADER.params]
666
        mov     edi,[ebp+SKIN_HEADER.params]
669
        add     edi,ebp
667
        add     edi,ebp
670
        mov     eax,dword[edi+SKIN_PARAMS.margin.left-2]
668
        mov     eax,dword[edi+SKIN_PARAMS.margin.left-2]
671
        mov     ax,word[edi+SKIN_PARAMS.skin_height]
669
        mov     ax,word[edi+SKIN_PARAMS.skin_height]
672
        sub     ax,[edi+SKIN_PARAMS.margin.bottom]
670
        sub     ax,[edi+SKIN_PARAMS.margin.bottom]
673
        shr     ax,1
671
        shr     ax,1
674
        add     ax,[edi+SKIN_PARAMS.margin.top]
672
        add     ax,[edi+SKIN_PARAMS.margin.top]
675
        add     ax,-4
673
        add     ax,-4
676
        push    eax
674
        push    eax
677
        lea     ebx,[eax+wnd3.x*65536+wnd3.y]
675
        lea     ebx,[eax+wnd3.x*65536+wnd3.y]
678
        mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
676
        mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
679
 
677
 
680
;---------------------------------------------------------
678
;---------------------------------------------------------
681
 
679
 
682
        mov     edi,[ebp+SKIN_HEADER.params]
680
        mov     edi,[ebp+SKIN_HEADER.params]
683
        add     edi,ebp
681
        add     edi,ebp
684
        mpack   ebx,wnd4.x,wnd4.width
682
        mpack   ebx,wnd4.x,wnd4.width
685
        mpack   ecx,wnd4.y,wnd4.height
683
        mpack   ecx,wnd4.y,wnd4.height
686
        mov     edx,[edi+SKIN_PARAMS.colors.outer]
684
        mov     edx,[edi+SKIN_PARAMS.colors.outer]
687
        call    draw_framerect
685
        call    draw_framerect
688
        mpack   ebx,wnd4.x+4,wnd4.width-8
686
        mpack   ebx,wnd4.x+4,wnd4.width-8
689
        mpack   ecx,wnd4.y+4,wnd4.height-8
687
        mpack   ecx,wnd4.y+4,wnd4.height-8
690
        mov     edx,[edi+SKIN_PARAMS.colors.inner]
688
        mov     edx,[edi+SKIN_PARAMS.colors.inner]
691
        call    draw_framerect
689
        call    draw_framerect
692
        mcall   13,,,[edi+SKIN_PARAMS.colors.frame]
690
        mcall   13,,,[edi+SKIN_PARAMS.colors.frame]
693
        add     ecx,(wnd4.height-5)*65536
691
        add     ecx,(wnd4.height-5)*65536
694
        mcall
692
        mcall
695
        mcall   ,,
693
        mcall   ,,
696
        add     ebx,(wnd4.width-5)*65536
694
        add     ebx,(wnd4.width-5)*65536
697
        mcall
695
        mcall
698
        mcall   ,,,dword[dtp.work]
696
        mcall   ,,,dword[dtp.work]
699
 
697
 
700
        mov     eax,0x00010001 ; left, inactive
698
        mov     eax,0x00010001 ; left, inactive
701
        call    find_bitmap
699
        call    find_bitmap
702
        mcall   7,,,
700
        mcall   7,,,
703
 
701
 
704
        pushd   [ebx-8]
702
        pushd   [ebx-8]
705
        mov     eax,0x00010003 ; base, inactive
703
        mov     eax,0x00010003 ; base, inactive
706
        call    find_bitmap
704
        call    find_bitmap
707
        pop     edx
705
        pop     edx
708
        mov     esi,wnd4.x+wnd4.width-1
706
        mov     esi,wnd4.x+wnd4.width-1
709
        sub     esi,edx
707
        sub     esi,edx
710
        shl     edx,16
708
        shl     edx,16
711
        add     edx,wnd4.x*65536+wnd4.y
709
        add     edx,wnd4.x*65536+wnd4.y
712
        mcall   7
710
        mcall   7
713
    @@: rol     edx,16
711
    @@: rol     edx,16
714
        add     dx,[ebx-8]
712
        add     dx,[ebx-8]
715
        cmp     dx,si
713
        cmp     dx,si
716
        ja      @f
714
        ja      @f
717
        rol     edx,16
715
        rol     edx,16
718
        mcall   7
716
        mcall   7
719
        jmp     @b
717
        jmp     @b
720
    @@:
718
    @@:
721
 
719
 
722
        mov     eax,0x00010002 ; oper, inactive
720
        mov     eax,0x00010002 ; oper, inactive
723
        call    find_bitmap
721
        call    find_bitmap
724
        mov     edx,ecx
722
        mov     edx,ecx
725
        shr     edx,16
723
        shr     edx,16
726
        neg     edx
724
        neg     edx
727
        shl     edx,16
725
        shl     edx,16
728
        add     edx,(wnd4.x+wnd4.width)*65536+wnd4.y
726
        add     edx,(wnd4.x+wnd4.width)*65536+wnd4.y
729
        mcall   7
727
        mcall   7
730
 
728
 
731
        mov     ebp,0x18000
729
        mov     ebp,0x18000
732
        mov     edi,[ebp+SKIN_HEADER.params]
730
        mov     edi,[ebp+SKIN_HEADER.params]
733
        add     edi,ebp
731
        add     edi,ebp
734
        pop     eax
732
        pop     eax
735
        lea     ebx,[eax+wnd4.x*65536+wnd4.y]
733
        lea     ebx,[eax+wnd4.x*65536+wnd4.y]
736
        mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
734
        mcall   4,,dword[dtp.grab_text],caption_text,caption_text.size
737
 
735
 
738
;----------------------------------------------------------------------
736
;----------------------------------------------------------------------
739
 
737
 
740
        mov     edi,[ebp+SKIN_HEADER.buttons]
738
        mov     edi,[ebp+SKIN_HEADER.buttons]
741
        add     edi,ebp
739
        add     edi,ebp
742
  .lp1: cmp     dword[edi],0
740
  .lp1: cmp     dword[edi],0
743
        je      .lp2
741
        je      .lp2
744
        mov     ebx,dword[edi+SKIN_BUTTONS.left-2]
742
        mov     ebx,dword[edi+SKIN_BUTTONS.left-2]
745
        mov     bx,[edi+SKIN_BUTTONS.width]
743
        mov     bx,[edi+SKIN_BUTTONS.width]
746
        mov     ecx,dword[edi+SKIN_BUTTONS.top-2]
744
        mov     ecx,dword[edi+SKIN_BUTTONS.top-2]
747
        mov     cx,[edi+SKIN_BUTTONS.height]
745
        mov     cx,[edi+SKIN_BUTTONS.height]
748
        add     ebx,(wnd4.x+wnd4.width)*65536
746
        add     ebx,(wnd4.x+wnd4.width)*65536
749
        add     ecx,wnd4.y*65536
747
        add     ecx,wnd4.y*65536
750
        dec     ebx
748
        dec     ebx
751
        dec     ecx
749
        dec     ecx
752
        mcall   8,,,0x40000000
750
        mcall   8,,,0x40000000
753
        add     edi,12
751
        add     edi,12
754
        jmp     .lp1
752
        jmp     .lp1
755
  .lp2:
753
  .lp2:
756
 
754
 
757
        mov     edi,[ebp+SKIN_HEADER.params]
755
        mov     edi,[ebp+SKIN_HEADER.params]
758
        add     edi,ebp
756
        add     edi,ebp
759
        mpack   ebx,wnd4.x+10,wnd4.y+10
757
        mpack   ebx,wnd4.x+10,wnd4.y+10
760
        add     bx,word[edi+SKIN_PARAMS.skin_height]
758
        add     bx,word[edi+SKIN_PARAMS.skin_height]
761
        mcall   4,,[dtp.work_text],window_text,window_text.size
759
        mcall   4,,[dtp.work_text],window_text,window_text.size
762
 
760
 
763
        mov     ecx,[edi+SKIN_PARAMS.skin_height]
761
        mov     ecx,[edi+SKIN_PARAMS.skin_height]
764
        shl     ecx,16
762
        shl     ecx,16
765
        add     ecx,(wnd4.y+8)*65536+10
763
        add     ecx,(wnd4.y+8)*65536+10
766
        mcall   13,
764
        mcall   13,
767
                   (wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
765
                   (wnd4.x+window_text.size*6+20)>,,[dtp.work_graph]
768
 
766
 
769
        add     ecx,25*65536+8
767
        add     ecx,25*65536+8
770
        mcall   8,
768
        mcall   8,
771
                  button_text.size*6+11>,,0,[dtp.work_button]
769
                  button_text.size*6+11>,,0,[dtp.work_button]
772
 
770
 
773
        shr     ecx,16
771
        shr     ecx,16
774
        mov     bx,cx
772
        mov     bx,cx
775
        add     ebx,0x00060006
773
        add     ebx,0x00060006
776
        mcall   4,,[dtp.work_button_text],button_text,button_text.size
774
        mcall   4,,[dtp.work_button_text],button_text,button_text.size
777
 
775
 
778
        ret
776
        ret
779
 
777
 
780
;   *********************************************
778
;   *********************************************
781
;   *******  WINDOW DEFINITIONS AND DRAW ********
779
;   *******  WINDOW DEFINITIONS AND DRAW ********
782
;   *********************************************
780
;   *********************************************
783
 
781
 
784
 
782
 
785
draw_window:
783
draw_window:
786
 
784
 
787
    mov  eax,12                    ; function 12:tell os about windowdraw
785
    mov  eax,12                    ; function 12:tell os about windowdraw
788
    mov  ebx,1                     ; 1, start of draw
786
    mov  ebx,1                     ; 1, start of draw
789
    mcall
787
    mcall
790
 
788
 
791
    mov  eax,48
789
    mov  eax,48
792
    mov  ebx,3
790
    mov  ebx,3
793
    mov  ecx,app_colours
791
    mov  ecx,app_colours
794
    mov  edx,10*4
792
    mov  edx,10*4
795
    mcall
793
    mcall
796
 
794
 
797
    mov  eax,14
795
    mov  eax,14
798
    mcall
796
    mcall
799
 
797
 
800
                                      ; DRAW WINDOW
798
                                      ; DRAW WINDOW
801
    mov  eax,0                     ; function 0 : define and draw window
799
    mov  eax,0                     ; function 0 : define and draw window
802
    mov  ebx,110*65536+555         ; [x start] *65536 + [x size]
800
    mov  ebx,110*65536+555         ; [x start] *65536 + [x size]
803
    mov  ecx,50*65536+255          ; [y start] *65536 + [y size]
801
    mov  ecx,50*65536+255          ; [y start] *65536 + [y size]
804
    mov  edx,[w_work]              ; color of work area RRGGBB,8->color
802
    mov  edx,[w_work]              ; color of work area RRGGBB,8->color
805
    or   edx,0x13000000
803
    or   edx,0x13000000
806
    mov  edi,title                ; WINDOW LABEL
804
    mov  edi,title                ; WINDOW LABEL
807
    mcall
805
    mcall
808
 
806
 
809
if lang eq ru
807
if lang eq ru
810
  load_w  = (5*2+6*9)
808
  load_w  = (5*2+6*9)
811
  save_w  = (5*2+6*9)
809
  save_w  = (5*2+6*9)
812
  flat_w  = (5*2+6*7)
810
  flat_w  = (5*2+6*7)
813
  apply_w = (5*2+6*9)
811
  apply_w = (5*2+6*9)
814
else
812
else
815
  load_w  = (5*2+6*6)
813
  load_w  = (5*2+6*6)
816
  save_w  = (5*2+6*6)
814
  save_w  = (5*2+6*6)
817
  flat_w  = (5*2+6*4)
815
  flat_w  = (5*2+6*4)
818
  apply_w = (5*2+6*7)
816
  apply_w = (5*2+6*7)
819
end if
817
end if
820
 
818
 
821
    mov  eax,8                    ; FILENAME BUTTON
819
    mov  eax,8                    ; FILENAME BUTTON
822
    mov  ebx,5*65536+545
820
    mov  ebx,5*65536+545
823
    mov  ecx,212*65536+10
821
    mov  ecx,212*65536+10
824
    mov  edx,0x4000000B
822
    mov  edx,0x4000000B
825
    mov  esi,[w_grab_button]       ; button color RRGGBB
823
    mov  esi,[w_grab_button]       ; button color RRGGBB
826
    mcall
824
    mcall
827
 
825
 
828
;   mov  eax,8                    ; LOAD BUTTON
826
;   mov  eax,8                    ; LOAD BUTTON
829
    mov  ebx,15*65536+load_w
827
    mov  ebx,15*65536+load_w
830
    mov  ecx,(30+18*11)*65536+14
828
    mov  ecx,(30+18*11)*65536+14
831
    mov  edx,12
829
    mov  edx,12
832
    mov  esi,[w_work_button]
830
    mov  esi,[w_work_button]
833
    mcall
831
    mcall
834
 
832
 
835
;   mov  eax,8                    ; SAVE BUTTON
833
;   mov  eax,8                    ; SAVE BUTTON
836
    add  ebx,(load_w+2)*65536-load_w+save_w
834
    add  ebx,(load_w+2)*65536-load_w+save_w
837
    inc  edx
835
    inc  edx
838
    mcall
836
    mcall
839
 
837
 
840
;   mov  eax,8                    ; 3D
838
;   mov  eax,8                    ; 3D
841
;   mov  ebx,15*65536+35
839
;   mov  ebx,15*65536+35
842
;   mov  ecx,(30+18*12)*65536+14
840
;   mov  ecx,(30+18*12)*65536+14
843
    mov  ebx,(340-t1.size*6-13)*65536+(5*2+6*4)
841
    mov  ebx,(340-t1.size*6-13)*65536+(5*2+6*4)
844
    inc  edx
842
    inc  edx
845
    mcall
843
    mcall
846
 
844
 
847
;   mov  eax,8                    ; FLAT
845
;   mov  eax,8                    ; FLAT
848
    add  ebx,(5*2+6*4+2)*65536-(5*2+6*4)+flat_w
846
    add  ebx,(5*2+6*4+2)*65536-(5*2+6*4)+flat_w
849
    inc  edx
847
    inc  edx
850
    mcall
848
    mcall
851
 
849
 
852
;   mov  eax,8                    ; APPLY BUTTON
850
;   mov  eax,8                    ; APPLY BUTTON
853
    add  ebx,(flat_w+6+2)*65536-flat_w+apply_w
851
    add  ebx,(flat_w+6+2)*65536-flat_w+apply_w
854
    inc  edx
852
    inc  edx
855
    mcall
853
    mcall
856
 
854
 
857
;   mov  eax,8                    ; LOAD SKIN BUTTON
855
;   mov  eax,8                    ; LOAD SKIN BUTTON
858
    mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+load_w
856
    mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+load_w
859
    inc  edx
857
    inc  edx
860
    mcall
858
    mcall
861
 
859
 
862
;   mov  eax,8                    ; APPLY SKIN BUTTON
860
;   mov  eax,8                    ; APPLY SKIN BUTTON
863
    add  ebx,(load_w+6+2)*65536-load_w+apply_w
861
    add  ebx,(load_w+6+2)*65536-load_w+apply_w
864
    inc  edx
862
    inc  edx
865
    mcall
863
    mcall
866
 
864
 
867
    mov  eax, 4
865
    mov  eax, 4
868
    mov  ebx, (339-t1.size*6-12)*65536+(30+18*11+4)
866
    mov  ebx, (339-t1.size*6-12)*65536+(30+18*11+4)
869
    mov  ecx, [w_work_button_text]
867
    mov  ecx, [w_work_button_text]
870
    mov  edx, t1
868
    mov  edx, t1
871
    mov  esi, t1.size
869
    mov  esi, t1.size
872
    mcall
870
    mcall
873
 
871
 
874
    mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+(30+18*11+4)
872
    mov  ebx,(336+(555-335)/2-t2.size*6/2)*65536+(30+18*11+4)
875
    mov  edx,t2
873
    mov  edx,t2
876
    mov  esi,t2.size
874
    mov  esi,t2.size
877
    mcall
875
    mcall
878
 
876
 
879
;   mov  eax, 4
877
;   mov  eax, 4
880
;    mov  ebx, 277*65536+(30+18*12+4)
878
;    mov  ebx, 277*65536+(30+18*12+4)
881
;    mov  edx, t2
879
;    mov  edx, t2
882
;    mov  esi, t2.size
880
;    mov  esi, t2.size
883
;    mcall
881
;    mcall
884
 
882
 
885
    mov  eax,38                    ; R G B COLOR GLIDES
883
    mov  eax,38                    ; R G B COLOR GLIDES
886
    mov  ebx,266*65536+285
884
    mov  ebx,266*65536+285
887
    mov  ecx,30*65536+30
885
    mov  ecx,30*65536+30
888
    mov  edx,0xff0000
886
    mov  edx,0xff0000
889
  .newl:
887
  .newl:
890
    mcall
888
    mcall
891
    pusha
889
    pusha
892
    add  ebx,20*65536+20
890
    add  ebx,20*65536+20
893
    shr  edx,8
891
    shr  edx,8
894
    mcall
892
    mcall
895
    add  ebx,20*65536+20
893
    add  ebx,20*65536+20
896
    shr  edx,8
894
    shr  edx,8
897
    mcall
895
    mcall
898
    popa
896
    popa
899
    sub  edx,0x020000
897
    sub  edx,0x020000
900
    add  ecx,0x00010001
898
    add  ecx,0x00010001
901
    cmp  ecx,158*65536+158
899
    cmp  ecx,158*65536+158
902
    jnz  .newl
900
    jnz  .newl
903
 
901
 
904
    call draw_color
902
    call draw_color
905
 
903
 
906
    mov  edx,31                    ; BUTTON ROW
904
    mov  edx,31                    ; BUTTON ROW
907
    mov  ebx,15*65536+200
905
    mov  ebx,15*65536+200
908
    mov  ecx,30*65536+14
906
    mov  ecx,30*65536+14
909
    mov  esi,[w_work_button]
907
    mov  esi,[w_work_button]
910
  newb:
908
  newb:
911
    mov  eax,8
909
    mov  eax,8
912
    mcall
910
    mcall
913
    add  ecx,18*65536
911
    add  ecx,18*65536
914
    inc  edx
912
    inc  edx
915
    cmp  edx,40
913
    cmp  edx,40
916
    jbe  newb
914
    jbe  newb
917
 
915
 
918
    mov  ebx,15*65536+34           ; ROW OF TEXTS
916
    mov  ebx,15*65536+34           ; ROW OF TEXTS
919
    mov  ecx,[w_work_button_text]
917
    mov  ecx,[w_work_button_text]
920
    mov  edx,text
918
    mov  edx,text
921
    mov  esi,32
919
    mov  esi,32
922
  newline:
920
  newline:
923
    mov  eax,4
921
    mov  eax,4
924
    mcall
922
    mcall
925
    add  ebx,18
923
    add  ebx,18
926
    add  edx,32
924
    add  edx,32
927
    cmp  [edx],byte 'x'
925
    cmp  [edx],byte 'x'
928
    jne  newline
926
    jne  newline
929
 
927
 
930
    call draw_colours
928
    call draw_colours
931
 
929
 
932
    mcall 13,<5,546>,<212,11>,[w_work]
930
    mcall 13,<5,546>,<212,11>,[w_work]
933
    mcall 13,<337,7>,<2,250>,[w_frame]
931
    mcall 13,<337,7>,<2,250>,[w_frame]
934
    shr   edx,1
932
    shr   edx,1
935
    and   edx,0x007F7F7F
933
    and   edx,0x007F7F7F
936
    mcall 38,<336,336>,<20,250>
934
    mcall 38,<336,336>,<20,250>
937
    add   ebx,0x00080008
935
    add   ebx,0x00080008
938
    mcall
936
    mcall
939
    sub   ebx,0x00040004
937
    sub   ebx,0x00040004
940
    mcall ,,<0,255>
938
    mcall ,,<0,255>
941
    mcall ,<5,550>,<211,211>
939
    mcall ,<5,550>,<211,211>
942
    add   ecx,0x000C000C
940
    add   ecx,0x000C000C
943
    mcall
941
    mcall
944
 
942
 
945
    call print_text
943
    call print_text
946
 
944
 
947
    cmp  dword[0x18000+SKIN_HEADER.ident],'SKIN'
945
    cmp  dword[0x18000+SKIN_HEADER.ident],'SKIN'
948
    jne  @f
946
    jne  @f
949
    call draw_skin
947
    call draw_skin
950
  @@:
948
  @@:
951
 
949
 
952
    mov  eax,12                    ; function 12:tell os about windowdraw
950
    mov  eax,12                    ; function 12:tell os about windowdraw
953
    mov  ebx,2                     ; 2, end of draw
951
    mov  ebx,2                     ; 2, end of draw
954
    mcall
952
    mcall
955
 
953
 
956
    ret
954
    ret
957
 
955
 
958
 
956
 
959
; DATA AREA
957
; DATA AREA
960
 
958
 
961
lsz text,\
959
lsz text,\
962
    ru,  ' €ŒŠ€ ŽŠ€                     ',\
960
    ru,  ' €ŒŠ€ ŽŠ€                     ',\
963
    ru,  ' Ž‹Ž‘€ ‡€ƒŽ‹Ž‚Š€               ',\
961
    ru,  ' Ž‹Ž‘€ ‡€ƒŽ‹Ž‚Š€               ',\
964
    ru,  ' ŠŽŠ€ € Ž‹Ž‘… ‡€ƒŽ‹Ž‚Š€     ',\
962
    ru,  ' ŠŽŠ€ € Ž‹Ž‘… ‡€ƒŽ‹Ž‚Š€     ',\
965
    ru,  ' ’…Š‘’ € ŠŽŠ… € ‡€ƒŽ‹Ž‚Š…   ',\
963
    ru,  ' ’…Š‘’ € ŠŽŠ… € ‡€ƒŽ‹Ž‚Š…   ',\
966
    ru,  ' ’…Š‘’ ‡€ƒŽ‹Ž‚ŽŠ€               ',\
964
    ru,  ' ’…Š‘’ ‡€ƒŽ‹Ž‚ŽŠ€               ',\
967
    ru,  ' €Ž—€Ÿ Ž‹€‘’œ                ',\
965
    ru,  ' €Ž—€Ÿ Ž‹€‘’œ                ',\
968
    ru,  ' ŠŽŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ       ',\
966
    ru,  ' ŠŽŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ       ',\
969
    ru,  ' ’…Š‘’ € ŠŽŠ…                ',\
967
    ru,  ' ’…Š‘’ € ŠŽŠ…                ',\
970
    ru,  ' ’…Š‘’ ‚ €Ž—…‰ Ž‹€‘’ˆ        ',\
968
    ru,  ' ’…Š‘’ ‚ €Ž—…‰ Ž‹€‘’ˆ        ',\
971
    ru,  ' ƒ€”ˆŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ      ',\
969
    ru,  ' ƒ€”ˆŠ€ ‚ €Ž—…‰ Ž‹€‘’ˆ      ',\
972
    ru,  '                                ',\
970
    ru,  '                                ',\
973
    ru,  ' ‡€ƒ“‡ˆ’œ  ‘Ž•€ˆ’œ           ',\
971
    ru,  ' ‡€ƒ“‡ˆ’œ  ‘Ž•€ˆ’œ           ',\
974
    ru,  'x',\
972
    ru,  'x',\
975
    en,  ' WINDOW FRAME                   ',\
973
    en,  ' WINDOW FRAME                   ',\
976
    en,  ' WINDOW GRAB BAR                ',\
974
    en,  ' WINDOW GRAB BAR                ',\
977
    en,  ' WINDOW GRAB BUTTON             ',\
975
    en,  ' WINDOW GRAB BUTTON             ',\
978
    en,  ' WINDOW GRAB BUTTON TEXT        ',\
976
    en,  ' WINDOW GRAB BUTTON TEXT        ',\
979
    en,  ' WINDOW GRAB TITLE              ',\
977
    en,  ' WINDOW GRAB TITLE              ',\
980
    en,  ' WINDOW WORK AREA               ',\
978
    en,  ' WINDOW WORK AREA               ',\
981
    en,  ' WINDOW WORK AREA BUTTON        ',\
979
    en,  ' WINDOW WORK AREA BUTTON        ',\
982
    en,  ' WINDOW WORK AREA BUTTON TEXT   ',\
980
    en,  ' WINDOW WORK AREA BUTTON TEXT   ',\
983
    en,  ' WINDOW WORK AREA TEXT          ',\
981
    en,  ' WINDOW WORK AREA TEXT          ',\
984
    en,  ' WINDOW WORK AREA GRAPH         ',\
982
    en,  ' WINDOW WORK AREA GRAPH         ',\
985
    en,  '                                ',\
983
    en,  '                                ',\
986
    en,  '  LOAD    SAVE                  ',\
984
    en,  '  LOAD    SAVE                  ',\
987
    en,  'x',\
985
    en,  'x',\
988
    et,  ' AKNA RAAM                      ',\
986
    et,  ' AKNA RAAM                      ',\
989
    et,  ' AKNA HAARAMISE RIBA            ',\
987
    et,  ' AKNA HAARAMISE RIBA            ',\
990
    et,  ' AKNA HAARAMISE NUPP            ',\
988
    et,  ' AKNA HAARAMISE NUPP            ',\
991
    et,  ' AKNA HAARAMISE NUPU TEKST      ',\
989
    et,  ' AKNA HAARAMISE NUPU TEKST      ',\
992
    et,  ' AKNA HAARAMISE PEALKIRI        ',\
990
    et,  ' AKNA HAARAMISE PEALKIRI        ',\
993
    et,  ' AKNA TÖÖPIIRKOND               ',\
991
    et,  ' AKNA TÖÖPIIRKOND               ',\
994
    et,  ' AKNA TÖÖPIIRKONNA NUPP         ',\
992
    et,  ' AKNA TÖÖPIIRKONNA NUPP         ',\
995
    et,  ' AKNA TÖÖPIIRKONNA NUPPU TEKST  ',\
993
    et,  ' AKNA TÖÖPIIRKONNA NUPPU TEKST  ',\
996
    et,  ' AKNA TÖÖPIIRKONNA TEKST        ',\
994
    et,  ' AKNA TÖÖPIIRKONNA TEKST        ',\
997
    et,  ' AKNA TÖÖPIIRKONNA GRAAFIKA     ',\
995
    et,  ' AKNA TÖÖPIIRKONNA GRAAFIKA     ',\
998
    et,  '                                ',\
996
    et,  '                                ',\
999
    et,  '  LAADI SALVESTA                ',\
997
    et,  '  LAADI SALVESTA                ',\
1000
    et,  'x'
998
    et,  'x'
1001
 
999
 
1002
lsz t1,\
1000
lsz t1,\
1003
    ru, '  3D   ‹Ž‘Šˆ…   ˆŒ…ˆ’œ ',\
1001
    ru, '  3D   ‹Ž‘Šˆ…   ˆŒ…ˆ’œ ',\
1004
    en, '  3D   FLAT    APPLY  ',\
1002
    en, '  3D   FLAT    APPLY  ',\
1005
    et, '  3D   LAME   KINNITA '
1003
    et, '  3D   LAME   KINNITA '
1006
 
1004
 
1007
lsz t2,\
1005
lsz t2,\
1008
    ru,  ' ‡€ƒ“‡ˆ’œ   ˆŒ…ˆ’œ ',\
1006
    ru,  ' ‡€ƒ“‡ˆ’œ   ˆŒ…ˆ’œ ',\
1009
    en,  '  LOAD     APPLY  ',\
1007
    en,  '  LOAD     APPLY  ',\
1010
    et,  '  LAADI   KINNITA '
1008
    et,  '  LAADI   KINNITA '
1011
 
1009
 
1012
lsz caption_text,\
1010
lsz caption_text,\
1013
    ru, '‡ £®«®¢®ª',\
1011
    ru, '‡ £®«®¢®ª',\
1014
    en, 'Caption',\
1012
    en, 'Caption',\
1015
    et, 'Pealkiri'
1013
    et, 'Pealkiri'
1016
 
1014
 
1017
sz  close_text,'x'
1015
sz  close_text,'x'
1018
 
1016
 
1019
lsz window_text,\
1017
lsz window_text,\
1020
    ru, '’¥ªáâ ¢ ®ª­¥',\
1018
    ru, '’¥ªáâ ¢ ®ª­¥',\
1021
    en, 'Window text',\
1019
    en, 'Window text',\
1022
    et, 'Akna tekst'
1020
    et, 'Akna tekst'
1023
 
1021
 
1024
lsz button_text,\
1022
lsz button_text,\
1025
    ru, '’¥ªáâ ­  ª­®¯ª¥',\
1023
    ru, '’¥ªáâ ­  ª­®¯ª¥',\
1026
    en, 'Button text',\
1024
    en, 'Button text',\
1027
    et, 'Nupu tekst'
1025
    et, 'Nupu tekst'
1028
 
1026
 
1029
sz  default_skn, '/RD/1/DEFAULT.SKN',0
1027
sz  default_skn, '/RD/1/DEFAULT.SKN',0
1030
 
1028
 
1031
if lang eq ru
1029
if lang eq ru
1032
  title db '€‘’Ž‰Š€ ŽŠŽ',0
1030
  title db '€‘’Ž‰Š€ ŽŠŽ',0
1033
else if lang eq et
1031
else if lang eq et
1034
  title db 'AKNA SEADED - VALI VÄRV JA VAJUTA OBJEKTILE',0
1032
  title db 'AKNA SEADED - VALI VÄRV JA VAJUTA OBJEKTILE',0
1035
else
1033
else
1036
  title db 'WINDOWS SETTINGS - DEFINE COLOR AND CLICK ON TARGET',0
1034
  title db 'WINDOWS SETTINGS - DEFINE COLOR AND CLICK ON TARGET',0
1037
end if
1035
end if
1038
 
1036
 
1039
 
1037
 
1040
color dd  0
1038
color dd  0
1041
 
1039
 
1042
IncludeIGlobals
1040
IncludeIGlobals
1043
 
1041
 
1044
I_END:
1042
I_END:
1045
 
1043
 
1046
IncludeUGlobals
1044
IncludeUGlobals
1047
 
1045
 
1048
read_info:
1046
read_info:
1049
  .mode         dd ?            ; read
1047
  .mode         dd ?            ; read
1050
  .start_block  dd ?            ; first block
1048
  .start_block  dd ?            ; first block
1051
  .blocks       dd ?            ; 512 bytes
1049
  .blocks       dd ?            ; 512 bytes
1052
  .address      dd ?
1050
  .address      dd ?
1053
  .workarea     dd ?
1051
  .workarea     dd ?
1054
fname rb 256+1            ; filename (+1 - for zero at the end)
1052
fname rb 256+1            ; filename (+1 - for zero at the end)
1055
 
1053
 
1056
virtual at read_info
1054
virtual at read_info
1057
 write_info:
1055
 write_info:
1058
  .mode         dd ?
1056
  .mode         dd ?
1059
  rd 1
1057
  rd 1
1060
  .bytes2write  dd ?
1058
  .bytes2write  dd ?
1061
  .address      dd ?
1059
  .address      dd ?
1062
  .workarea     dd ?
1060
  .workarea     dd ?
1063
end virtual
1061
end virtual
1064
 
1062
 
1065
skin_info:
1063
skin_info:
1066
  .mode         dd ?
-
 
1067
  .start_block  dd ?
-
 
1068
  .blocks       dd ?
-
 
1069
  .address      dd ?
-
 
1070
  .workarea     dd ?
-
 
1071
  .fname rb 256+1
1064
  .fname rb 256+1
1072
 
1065
 
1073
app_colours:
1066
app_colours:
1074
 
1067
 
1075
w_frame              dd ?
1068
w_frame              dd ?
1076
w_grab               dd ?
1069
w_grab               dd ?
1077
w_grab_button        dd ?
1070
w_grab_button        dd ?
1078
w_grab_button_text   dd ?
1071
w_grab_button_text   dd ?
1079
w_grab_text          dd ?
1072
w_grab_text          dd ?
1080
w_work               dd ?
1073
w_work               dd ?
1081
w_work_button        dd ?
1074
w_work_button        dd ?
1082
w_work_button_text   dd ?
1075
w_work_button_text   dd ?
1083
w_work_text          dd ?
1076
w_work_text          dd ?
1084
w_work_graph         dd ?
1077
w_work_graph         dd ?
1085
 
1078
 
1086
color_table:
1079
color_table:
1087
  times 10 dd ?
1080
  times 10 dd ?
1088
>
1081
>
1089
>
1082
>