Subversion Repositories Kolibri OS

Rev

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

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