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, |
554 | mcall 13, |
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, |
563 | mcall 13, |
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, |
578 | mcall 4, |
579 | 579 | ||
580 | mcall 8, |
580 | mcall 8, |
581 | mcall 4, |
581 | mcall 4, |
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, |
596 | mcall 13, |
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 , |
602 | mcall , |
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, |
617 | mcall 4, |
618 | 618 | ||
619 | mcall 8, |
619 | mcall 8, |
620 | mcall 4, |
620 | mcall 4, |
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, |
634 | mcall 13, |
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 , |
640 | mcall , |
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, |
698 | mcall 13, |
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 , |
704 | mcall , |
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 ?211,211>5,550>0,255>20,250>336,336>2,250>337,7>212,11>5,546> |
1091 | times 10 dd ?211,211>5,550>0,255>20,250>336,336>2,250>337,7>212,11>5,546> |
1092 | > |
1092 | > |
1093 | >>> |
1093 | >>> |