Rev 4129 | Rev 4140 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4120 | eAndrew | 1 | use32 |
2 | org 0x0 |
||
3 | ;------------------------------------------------------------------------------- |
||
4 | db "MENUET01" |
||
5 | dd 1, main, __dataend, __memend, __stackend, 0, sys_path |
||
6 | ;------------------------------------------------------------------------------- |
||
7 | include "../../../macros.inc" |
||
8 | include "../../../proc32.inc" |
||
9 | include "../../../dll.inc" |
||
10 | include "../../../develop/libraries/box_lib/load_lib.mac" |
||
4134 | eAndrew | 11 | ;include "../../../debug.inc" |
4120 | eAndrew | 12 | |
13 | @use_library_mem \ |
||
14 | mem.Alloc, \ |
||
15 | mem.Free, \ |
||
16 | mem.ReAlloc, \ |
||
17 | dll.Load |
||
18 | ;------------------------------------------------------------------------------- |
||
19 | ICON_SIZE equ 32 * 32 * 3 |
||
4124 | eAndrew | 20 | IMAGE_FILE_SIZE equ ICON_SIZE * 29 |
4120 | eAndrew | 21 | IMAGE_DATA_SIZE equ 32 * 32 * 4 * 29 |
22 | ;================================================================================ |
||
23 | proc main |
||
24 | ; ==== Init ==== |
||
25 | mcall 18, 7 |
||
26 | mov [win.psid], eax |
||
27 | |||
28 | mcall 40, 100101b |
||
29 | |||
30 | mov dword[file_exec.proc], 7 |
||
31 | |||
32 | ; ==== Load libs ==== |
||
33 | load_libraries load_lib_start, load_lib_end |
||
34 | |||
35 | ; ==== Config LibINI ==== |
||
36 | invoke ini.get_int, ini_data.file_name, ini_data.settings_name, ini_data.location_name, -1 |
||
37 | mov [dock_items.location], eax |
||
38 | |||
4121 | eAndrew | 39 | invoke ini.get_color, ini_data.file_name, ini_data.settings_name, ini_data.color_bg, 0x0 |
4120 | eAndrew | 40 | mov [color.bg], eax |
4134 | eAndrew | 41 | invoke ini.get_color, ini_data.file_name, ini_data.settings_name, ini_data.color_bg_line, 0x080808 |
42 | mov [color.bg_line], eax |
||
4121 | eAndrew | 43 | invoke ini.get_color, ini_data.file_name, ini_data.settings_name, ini_data.color_frame, 0xFFFFFF |
4120 | eAndrew | 44 | mov [color.frame], eax |
4121 | eAndrew | 45 | invoke ini.get_color, ini_data.file_name, ini_data.settings_name, ini_data.color_framein, 0x888888 |
4120 | eAndrew | 46 | mov [color.framein], eax |
4121 | eAndrew | 47 | invoke ini.get_color, ini_data.file_name, ini_data.settings_name, ini_data.color_text, 0xFFFFFF |
4120 | eAndrew | 48 | or eax, 0x80000000 |
49 | mov [color.text], eax |
||
50 | |||
51 | invoke ini.sections, ini_data.file_name, sections_callback |
||
52 | |||
53 | ; ==== Config LibIMG ==== |
||
54 | stdcall mem.Alloc, dword IMAGE_FILE_SIZE |
||
55 | mov [img_data.rgb_object], eax |
||
56 | |||
57 | mov dword[img_data.file.proc], 0 |
||
58 | mov dword[img_data.file.position], 0 |
||
59 | mov dword[img_data.file.size], dword IMAGE_FILE_SIZE |
||
60 | m2m dword[img_data.file.buffer], dword[img_data.rgb_object] |
||
61 | mov byte[img_data.file + 20], 0 |
||
62 | mov dword[img_data.file.name], img_data.file_name |
||
63 | |||
64 | mcall 70, img_data.file |
||
65 | |||
66 | cmp ebx, 0xFFFFFFFF |
||
67 | je @f |
||
68 | |||
69 | stdcall dword[img.decode], dword[img_data.rgb_object], ebx, 0 |
||
70 | mov dword[img_data.object], eax |
||
71 | |||
72 | ; === ALPHA === |
||
73 | mov edi, 0 |
||
74 | add eax, 24 |
||
75 | mov eax, [eax] |
||
76 | .setalpha: |
||
77 | mov ebx, [eax + edi] |
||
78 | shr ebx, 24 |
||
79 | cmp ebx, 0 |
||
80 | jne .nonalpha |
||
4134 | eAndrew | 81 | |
82 | pushad |
||
83 | mov eax, edi |
||
84 | mov edx, 0 |
||
85 | mov ebx, 128 |
||
86 | div ebx |
||
87 | |||
88 | mov edx, 0 |
||
89 | mov ebx, 2 |
||
90 | div ebx |
||
91 | |||
92 | mov edx, 0 |
||
93 | div ebx |
||
94 | |||
95 | cmp edx, 1 |
||
96 | je .set_bg_line |
||
97 | .set_bg: |
||
98 | popad |
||
99 | mov ecx, [color.bg] |
||
100 | jmp .set_ecx |
||
101 | .set_bg_line: |
||
102 | popad |
||
103 | mov ecx, [color.bg_line] |
||
104 | .set_ecx: |
||
4120 | eAndrew | 105 | mov [eax + edi], ecx |
106 | .nonalpha: |
||
107 | add edi, 4 |
||
108 | cmp edi, IMAGE_DATA_SIZE |
||
109 | jne .setalpha |
||
110 | |||
111 | ; === CONVERTING TO BGR |
||
112 | stdcall dword[img.toRGB], dword[img_data.object], dword[img_data.rgb_object] |
||
113 | stdcall dword[img.destroy], dword[img_data.object] |
||
114 | |||
115 | ; ==== Config window ==== |
||
116 | mov eax, dword[dock_items.location] |
||
117 | and eax, 1b |
||
118 | cmp eax, 0 |
||
119 | je .vert |
||
120 | jmp .setshape |
||
121 | |||
122 | .vert: |
||
123 | mov byte[win.isvert], 1 |
||
124 | |||
125 | .setshape: |
||
126 | cmp byte[win.isvert], 1 |
||
127 | je .vert_sp |
||
128 | |||
129 | .horz_sp: |
||
130 | call .HORZ_WIDTH |
||
131 | call .HORZ_X |
||
132 | call .HORZ_HEIGHT |
||
133 | cmp dword[dock_items.location], 1 |
||
134 | je .settop |
||
135 | |||
136 | .setbottom: |
||
137 | call .HORZ_Y_BOTTOM |
||
138 | jmp .SETDEF |
||
139 | |||
140 | .settop: |
||
141 | call .HORZ_Y_TOP |
||
142 | jmp .SETDEF |
||
143 | |||
144 | |||
145 | .vert_sp: |
||
146 | call .VERT_WIDTH |
||
147 | call .VERT_HEIGHT |
||
148 | call .VERT_Y |
||
149 | cmp dword[dock_items.location], 2 |
||
150 | je .setleft |
||
151 | |||
152 | .setright: |
||
153 | call .VERT_X_RIGHT |
||
154 | jmp .SETDEF |
||
155 | |||
156 | .setleft: |
||
157 | call .VERT_X_LEFT |
||
158 | jmp .SETDEF |
||
159 | |||
160 | .HORZ_WIDTH: |
||
4134 | eAndrew | 161 | mov eax, 40 |
4120 | eAndrew | 162 | mov ebx, [dock_items.count] |
163 | imul eax, ebx |
||
164 | dec eax |
||
165 | mov [win.width_opn], eax |
||
166 | mov [win.width_hdn], eax |
||
167 | |||
168 | ret |
||
169 | |||
170 | .HORZ_X: |
||
171 | mcall 14 |
||
172 | shr eax, 16 |
||
173 | mov ebx, 2 |
||
174 | mov edx, 0 |
||
175 | div ebx |
||
176 | mov edx, 0 |
||
177 | mov ecx, eax |
||
178 | |||
179 | mov eax, [win.width_opn] |
||
180 | div ebx |
||
181 | sub ecx, eax |
||
182 | mov [win.x_opn], ecx |
||
183 | mov [win.x_hdn], ecx |
||
184 | |||
185 | ret |
||
186 | |||
187 | .HORZ_HEIGHT: |
||
4134 | eAndrew | 188 | mov dword[win.height_opn], 40 |
4120 | eAndrew | 189 | mov dword[win.height_hdn], 0 |
190 | |||
191 | ret |
||
192 | |||
193 | .HORZ_Y_BOTTOM: |
||
194 | mcall 14 |
||
195 | and eax, 0xFFFF |
||
196 | dec eax |
||
197 | mov [win.y_hdn], eax |
||
4134 | eAndrew | 198 | sub eax, 40 |
4120 | eAndrew | 199 | mov [win.y_opn], eax |
200 | |||
201 | ret |
||
202 | |||
203 | .HORZ_Y_TOP: |
||
204 | mov dword[win.y_opn], 0 |
||
205 | mov dword[win.y_hdn], 0 |
||
206 | |||
207 | ret |
||
208 | |||
209 | .VERT_WIDTH: |
||
4134 | eAndrew | 210 | mov dword[win.width_opn], 40 |
4120 | eAndrew | 211 | mov dword[win.width_hdn], 0 |
212 | |||
213 | ret |
||
214 | |||
215 | .VERT_X_LEFT: |
||
216 | |||
217 | mov dword[win.x_opn], 0 |
||
218 | mov dword[win.x_hdn], 0 |
||
219 | |||
220 | ret |
||
221 | |||
222 | .VERT_X_RIGHT: |
||
223 | mcall 14 |
||
224 | and eax, 0xFFFF0000 |
||
225 | shr eax, 16 |
||
226 | mov [win.x_hdn], eax |
||
4134 | eAndrew | 227 | sub eax, 40 |
4120 | eAndrew | 228 | mov [win.x_opn], eax |
229 | |||
230 | ret |
||
231 | |||
232 | .VERT_HEIGHT: |
||
4134 | eAndrew | 233 | mov eax, 40 |
4120 | eAndrew | 234 | mov ebx, [dock_items.count] |
235 | imul eax, ebx |
||
236 | dec eax |
||
237 | mov [win.height_opn], eax |
||
238 | mov [win.height_hdn], eax |
||
239 | |||
240 | ret |
||
241 | |||
242 | .VERT_Y: |
||
243 | mcall 14 |
||
244 | and eax, 0xFFFF |
||
245 | mov edx, 0 |
||
246 | mov ebx, 2 |
||
247 | div ebx |
||
248 | mov esi, eax |
||
249 | |||
250 | mov eax, [win.height_opn] |
||
251 | mov edx, 0 |
||
252 | mov ebx, 2 |
||
253 | div ebx |
||
254 | sub esi, eax |
||
255 | |||
256 | mov [win.y_hdn], esi |
||
257 | mov [win.y_opn], esi |
||
258 | |||
259 | ret |
||
260 | |||
261 | .SETDEF: |
||
262 | mov eax, [win.width_hdn] |
||
263 | mov [win.width], eax |
||
264 | |||
265 | mov eax, [win.x_hdn] |
||
266 | mov [win.x], eax |
||
267 | |||
268 | mov eax, [win.height_hdn] |
||
269 | mov [win.height], eax |
||
270 | |||
271 | mov eax, [win.y_hdn] |
||
272 | mov [win.y], eax |
||
273 | |||
274 | ; ==== START ==== |
||
275 | mcall 9, win.procinfo, -1 |
||
276 | mov ecx, [win.procinfo + 30] |
||
277 | mcall 18, 21 |
||
278 | and eax, 0xFFFF |
||
279 | mov [win.sid], eax |
||
280 | |||
281 | call main_loop |
||
282 | |||
283 | exit: |
||
284 | stdcall mem.Free, [img_data.rgb_object] |
||
285 | mcall 18, 2, [nwin.sid] |
||
286 | mcall -1 |
||
287 | endp |
||
288 | ;------------------------------------------------------------------------------- |
||
289 | proc main_loop |
||
290 | mcall 10 |
||
291 | |||
292 | cmp eax, EV_REDRAW |
||
293 | je event_redraw |
||
294 | |||
295 | cmp eax, EV_BUTTON |
||
296 | je event_button |
||
297 | |||
298 | cmp eax, EV_MOUSE |
||
299 | je event_mouse |
||
300 | |||
301 | jmp main_loop |
||
302 | |||
303 | .end: |
||
304 | ret |
||
305 | endp |
||
306 | ;------------------------------------------------------------------------------- |
||
307 | proc event_redraw |
||
308 | mcall 12, 1 |
||
309 | |||
310 | mcall 0, <[win.x], [win.width]>, <[win.y], [win.height]>, [color.frame], [color.frame], [color.frame] |
||
311 | |||
4124 | eAndrew | 312 | mov eax, 13 |
313 | |||
4120 | eAndrew | 314 | and ebx, 0x0000FFFF |
315 | add ebx, 0x00010000 |
||
316 | sub ebx, 0x00000001 |
||
317 | |||
318 | and ecx, 0x0000FFFF |
||
319 | add ecx, 0x00010000 |
||
320 | sub ecx, 0x00000001 |
||
321 | |||
4124 | eAndrew | 322 | mcall , , , [color.framein] |
4120 | eAndrew | 323 | |
324 | |||
325 | add ebx, 0x00010000 |
||
326 | sub ebx, 0x00000002 |
||
327 | |||
328 | add ecx, 0x00010000 |
||
329 | sub ecx, 0x00000002 |
||
330 | |||
4124 | eAndrew | 331 | mcall , , , [color.bg] |
4120 | eAndrew | 332 | |
4134 | eAndrew | 333 | mov edi, 2 |
334 | mov eax, 13 |
||
335 | mov ebx, 2 shl 16 |
||
336 | add ebx, [win.width] |
||
337 | sub ebx, 3 |
||
338 | mov ecx, 2 shl 16 + 2 |
||
339 | mov edx, [color.bg_line] |
||
340 | @@: |
||
341 | mcall |
||
342 | add ecx, 4 shl 16 |
||
343 | add edi, 4 |
||
344 | cmp edi, [win.height] |
||
345 | jl @b |
||
346 | |||
4120 | eAndrew | 347 | mov edi, 0 |
348 | @@: |
||
349 | cmp edi, [dock_items.count] |
||
350 | je @f |
||
351 | |||
352 | push edi |
||
4124 | eAndrew | 353 | mov eax, 8 |
354 | mov edx, 0x60000002 |
||
355 | mov esi, [color.bg] |
||
4134 | eAndrew | 356 | imul edi, 40 |
4124 | eAndrew | 357 | shl edi, 16 |
4134 | eAndrew | 358 | add edi, 39 |
4120 | eAndrew | 359 | cmp byte[win.isvert], 1 |
360 | je .vert_btn |
||
4134 | eAndrew | 361 | mcall , edi, <0, 40> |
4120 | eAndrew | 362 | jmp .endbtn |
363 | .vert_btn: |
||
4134 | eAndrew | 364 | mcall , <0, 40>, edi |
4120 | eAndrew | 365 | .endbtn: |
366 | pop edi |
||
367 | |||
4134 | eAndrew | 368 | .draw_Sseparator: |
369 | push ebx |
||
370 | push ecx |
||
371 | mov eax, 13 |
||
372 | mov ebx, edi |
||
373 | imul ebx, 40 |
||
374 | add ebx, 40 |
||
375 | shl ebx, 16 |
||
376 | add ebx, 1 |
||
377 | cmp byte[win.isvert], 1 |
||
378 | je .vert_Sdraw_sep |
||
379 | mcall , , <6, 29>, [color.framein] |
||
380 | jmp .end_Sinner_sep |
||
381 | .vert_Sdraw_sep: |
||
382 | mov ecx, ebx |
||
383 | mcall , <6, 29>, , [color.framein] |
||
384 | .end_Sinner_sep: |
||
385 | pop ecx |
||
386 | pop ebx |
||
387 | .end_Sseparator: |
||
388 | |||
4120 | eAndrew | 389 | cmp byte[dock_items.separator + edi], 1 |
4134 | eAndrew | 390 | jne .end_separator |
4120 | eAndrew | 391 | |
392 | .draw_separator: |
||
393 | push ebx |
||
394 | push ecx |
||
4124 | eAndrew | 395 | mov eax, 13 |
4120 | eAndrew | 396 | mov ebx, edi |
4134 | eAndrew | 397 | imul ebx, 40 |
398 | add ebx, 39 |
||
4120 | eAndrew | 399 | shl ebx, 16 |
400 | add ebx, 1 |
||
401 | cmp byte[win.isvert], 1 |
||
402 | je .vert_draw_sep |
||
4134 | eAndrew | 403 | mcall , , <0, 41>, [color.frame] |
4120 | eAndrew | 404 | sub ebx, 0x00010000 |
4124 | eAndrew | 405 | mov edx, [color.framein] |
4134 | eAndrew | 406 | mcall , , <1, 39> |
4120 | eAndrew | 407 | add ebx, 0x00020000 |
4134 | eAndrew | 408 | mcall , , <1, 39> |
4120 | eAndrew | 409 | jmp .end_inner_sep |
410 | .vert_draw_sep: |
||
411 | mov ecx, ebx |
||
4134 | eAndrew | 412 | mcall , <0, 41>, , [color.frame] |
4120 | eAndrew | 413 | sub ecx, 0x00010000 |
4124 | eAndrew | 414 | mov edx, [color.framein] |
4134 | eAndrew | 415 | mcall , <1, 39> |
4120 | eAndrew | 416 | add ecx, 0x00020000 |
4134 | eAndrew | 417 | mcall , <1, 39> |
4120 | eAndrew | 418 | .end_inner_sep: |
419 | pop ecx |
||
420 | pop ebx |
||
421 | .end_separator: |
||
422 | |||
423 | cmp byte[win.isvert], 1 |
||
424 | je .vert_dig |
||
425 | mov edx, ebx |
||
426 | and edx, 0xFFFF0000 |
||
4134 | eAndrew | 427 | add edx, 0x00040004 |
4120 | eAndrew | 428 | jmp .digend |
429 | .vert_dig: |
||
430 | mov edx, ecx |
||
431 | and edx, 0xFFFF0000 |
||
432 | shr edx, 16 |
||
4134 | eAndrew | 433 | add edx, 0x00040004 |
4120 | eAndrew | 434 | .digend: |
435 | |||
436 | imul ebx, edi, 4 |
||
437 | add ebx, dock_items.icon |
||
438 | mov ebx, [ebx] |
||
439 | imul ebx, ICON_SIZE |
||
440 | add ebx, [img_data.rgb_object] |
||
441 | |||
442 | mcall 7, , <32, 32> |
||
443 | |||
444 | inc edi |
||
445 | jmp @b |
||
446 | @@: |
||
447 | |||
448 | mcall 12, 2 |
||
449 | |||
450 | jmp main_loop |
||
451 | endp |
||
452 | ;------------------------------------------------------------------------------- |
||
453 | proc event_button |
||
454 | mcall 17 |
||
455 | |||
456 | cmp ah, 1 |
||
457 | je .button_close |
||
458 | |||
459 | cmp ah, 2 |
||
460 | je .button_dock |
||
461 | |||
462 | jmp @f |
||
463 | |||
464 | .button_close: |
||
465 | jmp exit |
||
466 | |||
467 | .button_dock: |
||
468 | mov edi, [win.button_index] |
||
469 | imul edi, 256 |
||
470 | |||
471 | mov esi, edi |
||
472 | add esi, dock_items.path |
||
473 | mov dword[file_exec.file], esi |
||
474 | |||
475 | mov esi, edi |
||
476 | add esi, dock_items.param |
||
477 | mov dword[file_exec.param], esi |
||
478 | |||
479 | mcall 70, file_exec |
||
480 | |||
4134 | eAndrew | 481 | mov ecx, eax |
482 | mcall 18, 21 |
||
483 | and eax, 0xFFFF |
||
484 | mov [win.psid], eax |
||
485 | |||
4120 | eAndrew | 486 | @@: |
487 | jmp main_loop |
||
488 | endp |
||
489 | ;------------------------------------------------------------------------------- |
||
490 | proc event_mouse |
||
491 | mcall 37, 1 |
||
492 | mov edi, eax |
||
493 | mov esi, eax |
||
494 | shr edi, 16 |
||
495 | and esi, 0xFFFF |
||
496 | |||
497 | cmp edi, 0 |
||
498 | jl @f |
||
499 | dec edi |
||
500 | cmp edi, [win.width] |
||
501 | jg @f |
||
502 | cmp esi, 0 |
||
503 | jl @f |
||
504 | dec esi |
||
505 | cmp esi, [win.height] |
||
506 | jg @f |
||
507 | |||
508 | mov eax, [dock_items.location] |
||
509 | and eax, 1b |
||
510 | cmp eax, 1 |
||
511 | jne .vert |
||
512 | mov eax, edi |
||
513 | jmp .nxt |
||
514 | |||
515 | .vert: |
||
516 | mov eax, esi |
||
517 | |||
518 | .nxt: |
||
519 | mov edx, 0 |
||
4134 | eAndrew | 520 | mov ebx, 40 |
4120 | eAndrew | 521 | div ebx |
522 | |||
523 | cmp eax, [dock_items.count] |
||
524 | jge .set0 |
||
525 | jmp .nxtcmp |
||
526 | |||
527 | .set0: |
||
528 | mov eax, 100 |
||
529 | |||
530 | .nxtcmp: |
||
531 | cmp [win.button_index], eax |
||
532 | je .nxt2 |
||
533 | |||
534 | mov [win.button_index], eax |
||
535 | |||
536 | .nxt2: |
||
537 | mov eax, [win.button_index] |
||
4134 | eAndrew | 538 | imul eax, 40 |
4120 | eAndrew | 539 | cmp byte[win.isvert], 1 |
540 | je .vert_name |
||
4134 | eAndrew | 541 | sub eax, 15 |
4120 | eAndrew | 542 | add eax, [win.x] |
543 | mov [nwin.x], eax |
||
544 | jmp .vert_end |
||
545 | .vert_name: |
||
4134 | eAndrew | 546 | add eax, 12 |
4120 | eAndrew | 547 | add eax, [win.y] |
548 | mov [nwin.y], eax |
||
549 | .vert_end: |
||
550 | mov byte[nwin.change_shape], 1 |
||
551 | |||
552 | cmp byte[win.state], 1 |
||
553 | je .end_cmp |
||
554 | |||
555 | mov edx, esp |
||
556 | add edx, 512 |
||
557 | mcall 51, 1, n_main |
||
558 | |||
4124 | eAndrew | 559 | mov eax, 18 |
560 | |||
561 | mcall , 7 |
||
4120 | eAndrew | 562 | mov [win.psid], eax |
563 | |||
4129 | eAndrew | 564 | mcall 18, 3, [win.sid] |
4120 | eAndrew | 565 | |
566 | mov byte[win.state], 1 |
||
567 | |||
568 | mov eax, [win.width_opn] |
||
569 | mov [win.width], eax |
||
570 | |||
571 | mov eax, [win.x_opn] |
||
572 | mov [win.x], eax |
||
573 | |||
574 | mov eax, [win.height_opn] |
||
575 | mov [win.height], eax |
||
576 | |||
577 | mov eax, [win.y_opn] |
||
578 | mov [win.y], eax |
||
579 | |||
580 | mcall 67, [win.x], [win.y], [win.width], [win.height] |
||
581 | |||
582 | call event_redraw |
||
583 | |||
584 | @@: |
||
585 | cmp byte[win.state], 0 |
||
586 | je .end_cmp |
||
587 | |||
588 | mov byte[nwin.close], 1 |
||
589 | |||
590 | mcall 18, 3, [win.psid] |
||
591 | |||
592 | mov byte[win.state], 0 |
||
593 | mov byte[win.button_index], -1 |
||
594 | |||
595 | mov eax, [win.width_hdn] |
||
596 | mov [win.width], eax |
||
597 | |||
598 | mov eax, [win.x_hdn] |
||
599 | mov [win.x], eax |
||
600 | |||
601 | mov eax, [win.height_hdn] |
||
602 | mov [win.height], eax |
||
603 | |||
604 | mov eax, [win.y_hdn] |
||
605 | mov [win.y], eax |
||
606 | |||
607 | mcall 67, [win.x], [win.y], [win.width], [win.height] |
||
608 | |||
609 | call event_redraw |
||
610 | |||
611 | .end_cmp: |
||
612 | jmp main_loop |
||
613 | endp |
||
614 | ;------------------------------------------------------------------------------- |
||
615 | proc sections_callback, _file_name, _section_name |
||
616 | mov eax, [_section_name] |
||
617 | cmp byte[eax], '@' |
||
618 | jne @f |
||
619 | |||
620 | dec dword[dock_items.count] |
||
621 | jmp .endproc |
||
622 | |||
623 | @@: |
||
624 | ; ==== GET NAME ==== |
||
625 | mov ebx, [dock_items.count] |
||
626 | imul ebx, 16 |
||
627 | add ebx, dock_items.name |
||
628 | |||
629 | mov eax, [_section_name] |
||
630 | |||
631 | mov edi, 0 |
||
632 | @@: |
||
633 | mov cl, byte[eax] |
||
634 | mov byte[ebx + edi], cl |
||
635 | |||
636 | inc eax |
||
637 | inc edi |
||
638 | cmp edi, 10 |
||
639 | jne @b |
||
640 | |||
641 | ; ==== GET PATH ==== |
||
642 | mov ebx, [dock_items.count] |
||
643 | imul ebx, 256 |
||
644 | add ebx, dock_items.path |
||
645 | |||
646 | invoke ini.get_str, [_file_name], [_section_name], ini_data.path_name, ebx, 256, 0 |
||
647 | |||
648 | ; === GET PARAM === |
||
649 | mov ebx, [dock_items.count] |
||
650 | imul ebx, 256 |
||
651 | add ebx, dock_items.param |
||
652 | |||
653 | invoke ini.get_str, [_file_name], [_section_name], ini_data.param_name, ebx, 256, 0 |
||
654 | |||
655 | ; ==== GET ICON ==== |
||
656 | invoke ini.get_int, [_file_name], [_section_name], ini_data.icon_name, 0 |
||
657 | |||
658 | mov ebx, [dock_items.count] |
||
659 | imul ebx, 4 |
||
660 | mov [dock_items.icon + ebx], eax |
||
661 | |||
662 | ; ==== GET SEPARATOR ==== |
||
663 | invoke ini.get_int, [_file_name], [_section_name], ini_data.separator_name, 0 |
||
664 | |||
665 | mov ebx, [dock_items.count] |
||
666 | mov byte[dock_items.separator + ebx], al |
||
667 | |||
668 | ; ====== END ======= |
||
669 | .endproc: |
||
670 | mov eax, 1 |
||
671 | inc dword[dock_items.count] |
||
672 | ret |
||
673 | endp |
||
674 | ;------------------------------------------------------------------------------- |
||
675 | n_main: |
||
676 | cmp dword[dock_items.location], 1 |
||
677 | je .top |
||
678 | cmp dword[dock_items.location], 4 |
||
679 | je .right |
||
680 | cmp dword[dock_items.location], 3 |
||
681 | je .bottom |
||
682 | jmp .left |
||
683 | .top: |
||
684 | mov eax, [win.height_opn] |
||
4134 | eAndrew | 685 | add eax, 4 |
4120 | eAndrew | 686 | mov [nwin.y], eax |
687 | jmp @f |
||
688 | .right: |
||
689 | mov eax, [win.x_opn] |
||
4134 | eAndrew | 690 | sub eax, 72 |
4120 | eAndrew | 691 | mov [nwin.x], eax |
692 | jmp @f |
||
693 | .bottom: |
||
694 | mov eax, [win.y_opn] |
||
4134 | eAndrew | 695 | sub eax, 20 |
4120 | eAndrew | 696 | mov [nwin.y], eax |
697 | jmp @f |
||
698 | .left: |
||
699 | mov eax, [win.width_opn] |
||
4134 | eAndrew | 700 | add eax, 4 |
4120 | eAndrew | 701 | mov [nwin.x], eax |
702 | @@: |
||
703 | mov dword[nwin.width], 68 |
||
704 | mov dword[nwin.height], 16 |
||
705 | |||
706 | mcall 40, 1b |
||
707 | |||
708 | mcall 9, win.procinfo, -1 |
||
709 | mov ecx, [win.procinfo + 30] |
||
710 | mcall 18, 21 |
||
711 | and eax, 0xFFFF |
||
712 | mov [nwin.sid], eax |
||
713 | ;------------------------------------------------------------------------------- |
||
714 | n_main_loop: |
||
715 | mcall 23, 1 |
||
716 | |||
717 | cmp eax, EV_IDLE |
||
718 | je n_event_idle |
||
719 | cmp eax, EV_REDRAW |
||
720 | je n_event_redraw |
||
721 | |||
722 | jmp n_main_loop |
||
723 | ;------------------------------------------------------------------------------- |
||
724 | n_event_idle: |
||
725 | cmp byte[nwin.close], 1 |
||
726 | jne @f |
||
727 | |||
728 | mov byte[nwin.close], 0 |
||
729 | mcall -1 |
||
730 | |||
731 | @@: |
||
732 | cmp byte[win.button_index], 100 |
||
733 | jne @f |
||
734 | |||
735 | mcall 67, 0, 0, 0, 0 |
||
736 | jmp .end |
||
737 | |||
738 | @@: |
||
739 | cmp byte[nwin.change_shape], 1 |
||
740 | jne .end |
||
741 | |||
742 | mov byte[nwin.change_shape], 0 |
||
743 | mcall 67, [nwin.x], [nwin.y], [nwin.width], [nwin.height] |
||
744 | |||
745 | .end: |
||
746 | jmp n_main_loop |
||
747 | ;------------------------------------------------------------------------------- |
||
748 | n_event_redraw: |
||
749 | mcall 12, 1 |
||
750 | |||
751 | mcall 0, <[nwin.x], [nwin.width]>, <[nwin.y], [nwin.height]>, [color.frame], [color.frame], [color.frame] |
||
752 | |||
4124 | eAndrew | 753 | mov eax, 13 |
754 | |||
4120 | eAndrew | 755 | and ebx, 0x0000FFFF |
756 | add ebx, 0x00010000 |
||
757 | sub ebx, 0x00000001 |
||
758 | |||
759 | and ecx, 0x0000FFFF |
||
760 | add ecx, 0x00010000 |
||
761 | sub ecx, 0x00000001 |
||
762 | |||
4124 | eAndrew | 763 | mcall , , , [color.framein] |
4120 | eAndrew | 764 | |
765 | |||
766 | add ebx, 0x00010000 |
||
767 | sub ebx, 0x00000002 |
||
768 | |||
769 | add ecx, 0x00010000 |
||
770 | sub ecx, 0x00000002 |
||
771 | |||
4124 | eAndrew | 772 | mcall , , , [color.bg] |
4120 | eAndrew | 773 | |
4134 | eAndrew | 774 | mov edi, 0 |
775 | mov eax, 13 |
||
776 | mov ebx, 2 shl 16 |
||
777 | add ebx, [nwin.width] |
||
778 | sub ebx, 3 |
||
779 | mov ecx, 2 shl 16 + 2 |
||
780 | mov edx, [color.bg_line] |
||
781 | @@: |
||
782 | mcall |
||
783 | add ecx, 4 shl 16 |
||
784 | add edi, 4 |
||
785 | cmp edi, 16 |
||
786 | jne @b |
||
787 | |||
4120 | eAndrew | 788 | mov edx, [win.button_index] |
789 | imul edx, 16 |
||
790 | add edx, dock_items.name |
||
791 | |||
792 | mov eax, 0 |
||
793 | @@: |
||
794 | inc eax |
||
795 | cmp byte[edx+eax], 0 |
||
796 | jne @b |
||
797 | |||
798 | imul eax, 3 |
||
799 | mov ebx, 34 |
||
800 | sub ebx, eax |
||
801 | inc ebx |
||
802 | shl ebx, 16 |
||
803 | add ebx, 5 |
||
804 | |||
805 | mcall 4, , [color.text] |
||
806 | |||
807 | mcall 12, 2 |
||
808 | |||
809 | jmp n_main_loop |
||
810 | ;------------------------------------------------------------------------------- |
||
811 | img_data: |
||
812 | .file_name: |
||
813 | db "/sys/iconstrp.png", 0 |
||
814 | .cfg_text: |
||
815 | db "R", 0 |
||
816 | .ext_text: |
||
817 | db "X", 0 |
||
818 | ;------------------------------------------------------------------------------- |
||
819 | ini_data: |
||
820 | .file_name: |
||
821 | db "/sys/settings/Docky.ini", 0 |
||
822 | .path_name: |
||
823 | db "path", 0 |
||
824 | .param_name: |
||
825 | db "param", 0 |
||
826 | .icon_name: |
||
827 | db "icon", 0 |
||
828 | .separator_name: |
||
829 | db "separator", 0 |
||
830 | |||
831 | .settings_name: |
||
832 | db "@SETTINGS", 0 |
||
833 | .location_name: |
||
834 | db "location", 0 |
||
835 | .color_bg: |
||
836 | db "bg", 0 |
||
4134 | eAndrew | 837 | .color_bg_line: |
838 | db "bg_line", 0 |
||
4120 | eAndrew | 839 | .color_frame: |
840 | db "frame", 0 |
||
841 | .color_framein: |
||
842 | db "framein", 0 |
||
843 | .color_text: |
||
844 | db "text", 0 |
||
845 | ;------------------------------------------------------------------------------- |
||
846 | load_lib_start: |
||
847 | lib1 l_libs img.name, \ |
||
848 | sys_path, \ |
||
849 | file_name, \ |
||
850 | img.dir, \ |
||
851 | error, \ |
||
852 | error, \ |
||
853 | img, \ |
||
854 | error, \ |
||
855 | error |
||
856 | |||
857 | lib2 l_libs ini.name, \ |
||
858 | sys_path, \ |
||
859 | file_name, \ |
||
860 | ini.dir, \ |
||
861 | error, \ |
||
862 | error, \ |
||
863 | ini, \ |
||
864 | error, \ |
||
865 | error |
||
866 | load_lib_end: |
||
867 | ;------------------------------------------------------------------------------- |
||
868 | img: |
||
869 | .init \ |
||
870 | dd .init_T |
||
871 | .toRGB \ |
||
872 | dd .toRGB_T |
||
873 | .decode \ |
||
874 | dd .decode_T |
||
875 | .destroy \ |
||
876 | dd .destroy_T |
||
877 | |||
878 | dd 0, 0 |
||
879 | |||
880 | .init_T: |
||
881 | db "lib_init", 0 |
||
882 | .toRGB_T: |
||
883 | db "img_to_rgb2", 0 |
||
884 | .decode_T: |
||
885 | db "img_decode", 0 |
||
886 | .destroy_T: |
||
887 | db "img_destroy", 0 |
||
888 | |||
889 | .dir: |
||
890 | db "/sys/lib/" |
||
891 | .name: |
||
892 | db "libimg.obj", 0 |
||
893 | ;------------------------------------------------------------------------------- |
||
894 | ini: |
||
895 | .init \ |
||
896 | dd .init_T |
||
897 | .sections \ |
||
898 | dd .sections_T |
||
899 | .get_int \ |
||
900 | dd .get_int_T |
||
901 | .get_str \ |
||
902 | dd .get_str_T |
||
903 | .get_color\ |
||
904 | dd .get_color_T |
||
905 | |||
906 | dd 0, 0 |
||
907 | |||
908 | .init_T: |
||
909 | db "lib_init", 0 |
||
910 | .sections_T: |
||
911 | db "ini_enum_sections", 0 |
||
912 | .get_int_T: |
||
913 | db "ini_get_int", 0 |
||
914 | .get_str_T: |
||
915 | db "ini_get_str", 0 |
||
916 | .get_color_T: |
||
917 | db "ini_get_color", 0 |
||
918 | |||
919 | .dir: |
||
920 | db "/sys/lib/" |
||
921 | .name: |
||
922 | db "libini.obj", 0 |
||
923 | ;------------------------------------------------------------------------------- |
||
924 | error: |
||
925 | db 0 |
||
926 | ;------------------------------------------------------------------------------- |
||
927 | __dataend: |
||
928 | ;================================================================================ |
||
929 | rb 1024 |
||
930 | __stackend: |
||
931 | ;================================================================================ |
||
932 | color: |
||
933 | .bg: |
||
934 | rd 1 |
||
4134 | eAndrew | 935 | .bg_line: |
936 | rd 1 |
||
4120 | eAndrew | 937 | .frame: |
938 | rd 1 |
||
939 | .framein: |
||
940 | rd 1 |
||
941 | .text: |
||
942 | rd 1 |
||
943 | ;------------------------------------------------------------------------------- |
||
944 | win: |
||
945 | .x: |
||
946 | rd 1 |
||
947 | .y: |
||
948 | rd 1 |
||
949 | .width: |
||
950 | rd 1 |
||
951 | .height: |
||
952 | rd 1 |
||
953 | |||
954 | .x_hdn: |
||
955 | rd 1 |
||
956 | .y_hdn: |
||
957 | rd 1 |
||
958 | .width_hdn: |
||
959 | rd 1 |
||
960 | .height_hdn: |
||
961 | rd 1 |
||
962 | |||
963 | .x_opn: |
||
964 | rd 1 |
||
965 | .y_opn: |
||
966 | rd 1 |
||
967 | .width_opn: |
||
968 | rd 1 |
||
969 | .height_opn: |
||
970 | rd 1 |
||
971 | |||
972 | .sid: |
||
973 | rd 1 |
||
974 | .psid: |
||
975 | rd 1 |
||
976 | .procinfo: |
||
977 | rb 1024 |
||
978 | .state: |
||
979 | rb 1 |
||
980 | .button_index: |
||
981 | rd 1 |
||
982 | |||
983 | .isvert: |
||
984 | rb 1 |
||
985 | ;------------------------------------------------------------------------------- |
||
986 | nwin: |
||
987 | .x: |
||
988 | rd 1 |
||
989 | .y: |
||
990 | rd 1 |
||
991 | .width: |
||
992 | rd 1 |
||
993 | .height: |
||
994 | rd 1 |
||
995 | |||
996 | .visible: |
||
997 | rd 1 |
||
998 | .sid: |
||
999 | rd 1 |
||
1000 | .change_shape: |
||
1001 | rb 1 |
||
1002 | .close: |
||
1003 | rb 1 |
||
1004 | ;------------------------------------------------------------------------------- |
||
1005 | img_data.object: |
||
1006 | rd 1 |
||
1007 | img_data.rgb_object: |
||
1008 | rd 1 |
||
1009 | img_data.file: |
||
1010 | .proc: |
||
1011 | rd 1 |
||
1012 | .position: |
||
1013 | rd 1 |
||
1014 | rd 1 |
||
1015 | .size: |
||
1016 | rd 1 |
||
1017 | .buffer: |
||
1018 | rd 1 |
||
1019 | rb 1 |
||
1020 | .name: |
||
1021 | rd 1 |
||
1022 | ;------------------------------------------------------------------------------- |
||
1023 | file_exec: |
||
1024 | .proc: |
||
1025 | rd 1 |
||
1026 | rd 1 |
||
1027 | .param: |
||
1028 | rd 1 |
||
1029 | rd 1 |
||
1030 | rd 1 |
||
1031 | rb 1 |
||
1032 | .file: |
||
1033 | rd 1 |
||
1034 | ;------------------------------------------------------------------------------- |
||
1035 | dock_items: |
||
1036 | .count: |
||
1037 | rd 1 |
||
1038 | .name: |
||
1039 | rb 16 * 20 |
||
1040 | .path: |
||
1041 | rb 256 * 20 |
||
1042 | .param: |
||
1043 | rb 256 * 20 |
||
1044 | .icon: |
||
1045 | rd 1 * 20 |
||
1046 | .separator: |
||
1047 | rb 1 * 20 |
||
1048 | .location: |
||
1049 | rd 1 |
||
1050 | ;------------------------------------------------------------------------------- |
||
1051 | sys_path: |
||
1052 | rb 4096 |
||
1053 | file_name: |
||
1054 | rb 4096 |
||
1055 | ;------------------------------------------------------------------------------- |
||
1056 | __memend: |
||
1057 | ;================================================================================[nwin.y],>[nwin.x],>32,>1,>1,>0,>1,>1,>0,>6,>6,>0,>0,>[win.y],>[win.x],> |