Subversion Repositories Kolibri OS

Rev

Rev 529 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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