7,14 → 7,13 |
include "../../../macros.inc" |
include "../../../proc32.inc" |
include "../../../dll.inc" |
include "../../../KOSfuncs.inc" |
include "../../../load_lib.mac" |
include "../../../develop/libraries/box_lib/load_lib.mac" |
;include "../../../debug.inc" |
|
include "DATA.INC" |
include "NAME.INC" |
|
@use_library \ |
@use_library_mem \ |
mem.Alloc, \ |
mem.Free, \ |
mem.ReAlloc, \ |
22,10 → 21,10 |
;================================================================================ |
main: |
; ==== Init ==== |
mcall SF_SYSTEM, SSF_GET_ACTIVE_WINDOW |
mcall 18, 7 |
mov [win.psid], eax |
|
mcall SF_SET_EVENTS_MASK, EVM_REDRAW+EVM_BUTTON+EVM_MOUSE ;+EVM_DEKSTOP to update colors on skin change |
mcall 40, EVM_REDRAW+EVM_BUTTON+EVM_MOUSE ;+EVM_DEKSTOP to update colors on skin change |
|
; ==== Load libs ==== |
load_libraries load_lib_start, load_lib_end |
41,17 → 40,17 |
invoke ini.sections, ini_data.file_name, sections_callback |
|
; ==== Load colors ==== |
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, color |
mcall 48, 3, color |
or dword[color.bg], 0x10000000 |
or dword[color.frame], 0x10000000 |
or dword[color.text], 0x80000000 |
|
; ==== Config LibIMG ==== |
mov dword[fi.p00], SSF_GET_INFO |
mov dword[fi.p00], 5 |
mov dword[fi.p16], buf_128 |
mov dword[fi.p21], img_data.file_name |
|
mcall SF_FILE, fi |
mcall 70, fi |
|
mov edx, [buf_128 + 32] |
imul edx, 10 |
59,12 → 58,12 |
stdcall mem.Alloc, edx |
mov [img_data.rgb_object], eax |
|
mov dword[fi.p00], SSF_READ_FILE |
mov dword[fi.p00], 0 |
mov dword[fi.p12], edx |
m2m dword[fi.p16], dword[img_data.rgb_object] |
mov dword[fi.p21], img_data.file_name |
|
mcall SF_FILE, fi |
mcall 70, fi |
|
cmp ebx, 0xFFFFFFFF |
je @f |
154,7 → 153,7 |
dec eax |
jmp .set_hw |
@@: |
mcall SF_GET_SCREEN_SIZE |
mcall 14 |
shr eax, 16 |
.set_hw: |
mov [win.width_opn], eax |
164,7 → 163,7 |
|
;------------------------------------------------------------------------------- |
.HORZ_X: |
mcall SF_GET_SCREEN_SIZE |
mcall 14 |
shr eax, 17 |
mov ecx, [win.width_opn] |
shr ecx, 1 |
183,7 → 182,7 |
|
;------------------------------------------------------------------------------- |
.HORZ_Y_BOTTOM: |
mcall SF_GET_SCREEN_SIZE |
mcall 14 |
and eax, 0xFFFF |
dec eax |
mov [win.y_hdn], eax |
213,7 → 212,7 |
ret |
|
.VERT_X_RIGHT: |
mcall SF_GET_SCREEN_SIZE |
mcall 14 |
and eax, 0xFFFF0000 |
shr eax, 16 |
mov [win.x_hdn], eax |
232,7 → 231,7 |
dec eax |
jmp .set_vh |
@@: |
mcall SF_GET_SCREEN_SIZE |
mcall 14 |
and eax, 0xFFFF |
.set_vh: |
mov [win.height_opn], eax |
242,7 → 241,7 |
|
;------------------------------------------------------------------------------- |
.VERT_Y: |
mcall SF_GET_SCREEN_SIZE |
mcall 14 |
and eax, 0xFFFF |
shr eax, 1 |
|
289,9 → 288,9 |
|
;------------------------------------------------------------------------------- |
; ==== START ==== |
mcall SF_THREAD_INFO, win.procinfo, -1 |
mcall 9, win.procinfo, -1 |
mov ecx, [win.procinfo + 30] |
mcall SF_SYSTEM, SSF_GET_THREAD_SLOT |
mcall 18, 21 |
and eax, 0xFFFF |
mov [win.sid], eax |
|
299,12 → 298,11 |
;------------------------------------------------------------------------------- |
exit: |
stdcall mem.Free, [img_data.rgb_object] |
mcall SF_SYSTEM, SSF_TERMINATE_THREAD, [nwin.sid] |
mcall SF_TERMINATE_PROCESS |
mcall 18, 2, [nwin.sid] |
mcall -1 |
;------------------------------------------------------------------------------- |
align 4 |
main_loop: |
mcall SF_WAIT_EVENT |
mcall 10 |
|
cmp eax, EV_REDRAW |
je event_redraw |
322,19 → 320,19 |
jmp main_loop |
;------------------------------------------------------------------------------- |
DRAW_WINDOW: |
mcall SF_REDRAW, SSF_BEGIN_DRAW |
mcall 12, 1 |
|
mov esi, [color.bg] |
or esi, 0x01000000 |
mcall SF_CREATE_WINDOW, <[win.x], [win.width]>, <[win.y], [win.height]>, [color.bg], , [color.frame] |
mcall 0, <[win.x], [win.width]>, <[win.y], [win.height]>, [color.bg], , [color.frame] |
|
xor edi, edi |
mov edi, 0 |
@@: |
cmp edi, [dock_items.count] |
je @f |
|
push edi |
mov eax, SF_DEFINE_BUTTON |
mov eax, 8 |
mov edx, 0x60000002 |
mov esi, [color.bg] |
imul edi, BUTTON_SIZE |
358,11 → 356,12 |
push ebx |
push ecx |
|
mov eax, SF_DRAW_RECT |
mov eax, 13 |
mov ebx, edi |
imul ebx, BUTTON_SIZE |
add ebx, BUTTON_SIZE |
add ebx, 12-1 |
add ebx, 12 |
dec ebx |
shl ebx, 16 |
add ebx, 2 |
|
398,18 → 397,18 |
imul ebx, ICON_SIZE_BGR |
add ebx, [img_data.rgb_object] |
|
mcall SF_PUT_IMAGE, , <32, 32> |
mcall 7, , <32, 32> |
|
inc edi |
jmp @b |
@@: |
|
mcall SF_REDRAW, SSF_END_DRAW |
mcall 12, 2 |
|
ret |
;------------------------------------------------------------------------------- |
event_button: |
mcall SF_GET_BUTTON |
mcall 17 |
|
;; it must not be possible to close dock |
;cmp ah, 1 |
427,7 → 426,7 |
mov edi, [win.button_index] |
imul edi, 256 |
|
mov dword[fi.p00], SSF_START_APP |
mov dword[fi.p00], 7 |
|
mov esi, edi |
add esi, dock_items.path |
437,10 → 436,10 |
add esi, dock_items.param |
mov dword[fi.p08], esi |
|
mcall SF_FILE, fi |
mcall 70, fi |
|
mov ecx, eax |
mcall SF_SYSTEM, SSF_GET_THREAD_SLOT |
mcall 18, 21 |
and eax, 0xFFFF |
mov [win.psid], eax |
|
451,7 → 450,7 |
;------------------------------------------------------------------------------- |
event_mouse: |
; ==== IS MOUSE INNER ==== |
mcall SF_MOUSE_GET, SSF_WINDOW_POSITION |
mcall 37, 1 |
mov edi, eax |
mov esi, eax |
shr edi, 16 |
514,7 → 513,7 |
add eax, [win.x] |
mov [nwin.x], eax |
mov byte[nwin.change_shape], 1 |
mcall SF_DRAW_RECT, <0, [win.width]>, <[win.height], 1>, [color.frame] |
mcall 13, <0, [win.width]>, <[win.height], 1>, [color.frame] |
jmp .vert_end |
.vert_name: |
add eax, [win.y] |
521,7 → 520,7 |
add eax, 14 |
mov [nwin.y], eax |
mov byte[nwin.change_shape], 1 |
mcall SF_DRAW_RECT, <[win.width], 1>, <0, [win.height]>, [color.frame] |
mcall 13, <[win.width], 1>, <0, [win.height]>, [color.frame] |
.vert_end: |
|
; ==== OPEN/CLOSE WINDOW ==== |
530,12 → 529,14 |
|
mov edx, esp |
add edx, 512 |
mcall SF_CREATE_THREAD, 1, n_main |
mcall 51, 1, n_main |
|
mcall SF_SYSTEM, SSF_GET_ACTIVE_WINDOW |
mov eax, 18 |
|
mcall , 7 |
mov [win.psid], eax |
|
mcall SF_SYSTEM, SSF_FOCUS_WINDOW, [win.sid] |
mcall 18, 3, [win.sid] |
|
mov byte[win.state], 1 |
|
554,7 → 555,7 |
|
cmp byte[dock_items.ashow],1 |
je .change_nothing |
mcall SF_CHANGE_WINDOW, [win.x], [win.y], [win.width], [win.height] |
mcall 67, [win.x], [win.y], [win.width], [win.height] |
|
.change_nothing: |
call DRAW_WINDOW |
568,7 → 569,7 |
|
mov byte[nwin.close], 1 |
|
mcall SF_SYSTEM, SSF_FOCUS_WINDOW, [win.psid] |
mcall 18, 3, [win.psid] |
|
mov byte[win.state], 0 |
mov byte[win.button_index], -1 |
588,7 → 589,7 |
mov eax, [win.y_hdn] |
mov [win.y], eax |
|
mcall SF_CHANGE_WINDOW, [win.x], [win.y], [win.width], [win.height] |
mcall 67, [win.x], [win.y], [win.width], [win.height] |
|
.do_no_hide: |
call DRAW_WINDOW |
608,7 → 609,7 |
sub ecx, 0x000C0000 |
@@: |
|
mcall SF_DRAW_RECT, , , [color.bg] |
mcall 13, , , [color.bg] |
|
mov edx, ebx |
shr ecx, 16 |
622,7 → 623,7 |
imul ebx, ICON_SIZE_BGR |
add ebx, [img_data.rgb_object] |
|
mcall SF_PUT_IMAGE, , <32, 32> |
mcall 7, , <32, 32> |
|
mov ebx, [win.button_index] |
imul ebx, BUTTON_SIZE |
637,7 → 638,7 |
sub ecx, 0x000C0000 |
@@: |
|
mcall SF_DRAW_RECT, , , [color.bt] |
mcall 13, , , [color.bt] |
|
mov edx, ebx |
shr ecx, 16 |
681,7 → 682,7 |
cmp edi, 1024 * 3 |
jne @b |
|
mcall SF_PUT_IMAGE, sel_img, <32, 32> |
mcall 7, sel_img, <32, 32> |
|
ret |
;------------------------------------------------------------------------------- |