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