@@ -1,40 +1,23 @@
|
|||||||
; SPDX-License-Identifier: GPL-2.0-only
|
; SPDX-License-Identifier: GPL-2.0-only
|
||||||
;
|
;
|
||||||
; Reshare - Shared Resources Daemon
|
; Reshare - Shared Resources Daemon
|
||||||
; Copyright (C) 2024 KolibriOS-NG Team
|
|
||||||
;
|
;
|
||||||
; Contributor rgmaid - Main code
|
; Copyright (C) 2024-2026 KolibriOS Team
|
||||||
; Contributor Burer - Image conversion from 8bpp
|
; Copyright (C) 2024-2026 KolibriOS-NG Team
|
||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
CBOX_WIDTH = 13
|
CBOX_WIDTH = 13
|
||||||
CBOX_HEIGHT = 13
|
CBOX_HEIGHT = 13
|
||||||
CBOX_PIXELS = CBOX_WIDTH * CBOX_HEIGHT
|
CBOX_PIXELS = CBOX_WIDTH * CBOX_HEIGHT
|
||||||
CBOX_IMG_SIZE = CBOX_PIXELS * 3 ; 24-bpp RGB, tight rows
|
CBOX_IMG_SIZE = CBOX_PIXELS * 3 ; 24-bpp BGR, tight rows
|
||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
macro RGB24 c
|
; Palette entry: 4 bytes BGR0 (padded for dword-indexed lookup)
|
||||||
|
macro BGRA c
|
||||||
{
|
{
|
||||||
db (c) and 0xFF, (c shr 8) and 0xFF, (c shr 16) and 0xFF
|
db (c) and 0xFF, (c shr 8) and 0xFF, (c shr 16) and 0xFF, 0
|
||||||
}
|
|
||||||
|
|
||||||
macro ROW13 c00, c01, c02, c03, c04, c05, c06, c07, c08, c09, c10, c11, c12
|
|
||||||
{
|
|
||||||
RGB24 c00
|
|
||||||
RGB24 c01
|
|
||||||
RGB24 c02
|
|
||||||
RGB24 c03
|
|
||||||
RGB24 c04
|
|
||||||
RGB24 c05
|
|
||||||
RGB24 c06
|
|
||||||
RGB24 c07
|
|
||||||
RGB24 c08
|
|
||||||
RGB24 c09
|
|
||||||
RGB24 c10
|
|
||||||
RGB24 c11
|
|
||||||
RGB24 c12
|
|
||||||
}
|
}
|
||||||
|
|
||||||
P00 = 0x04D4FC ; 0xRRGGBB
|
P00 = 0x04D4FC ; 0xRRGGBB
|
||||||
@@ -54,18 +37,36 @@ P13 = 0x0464BC
|
|||||||
P14 = 0x2CDCFC
|
P14 = 0x2CDCFC
|
||||||
P15 = 0x049FFA
|
P15 = 0x049FFA
|
||||||
|
|
||||||
cbox_image:
|
cbox_palette:
|
||||||
ROW13 P00, P00, P00, P00, P00, P00, P00, P00, P00, P00, P00, P00, P01
|
BGRA P00
|
||||||
ROW13 P02, P01, P01, P01, P01, P01, P01, P01, P01, P01, P01, P01, P03
|
BGRA P01
|
||||||
ROW13 P02, P01, P01, P01, P01, P04, P04, P04, P03, P05, P05, P03, P03
|
BGRA P02
|
||||||
ROW13 P00, P01, P01, P01, P04, P04, P03, P03, P06, P07, P07, P08, P03
|
BGRA P03
|
||||||
ROW13 P00, P03, P05, P05, P03, P03, P03, P06, P09, P10, P11, P06, P03
|
BGRA P04
|
||||||
ROW13 P00, P05, P07, P07, P06, P03, P06, P09, P10, P12, P13, P06, P05
|
BGRA P05
|
||||||
ROW13 P00, P06, P10, P09, P14, P06, P09, P10, P12, P13, P06, P15, P05
|
BGRA P06
|
||||||
ROW13 P00, P06, P12, P10, P09, P09, P10, P12, P13, P06, P15, P05, P05
|
BGRA P07
|
||||||
ROW13 P00, P06, P13, P12, P10, P10, P12, P13, P06, P15, P05, P05, P05
|
BGRA P08
|
||||||
ROW13 P01, P08, P06, P13, P12, P12, P13, P06, P15, P05, P05, P05, P15
|
BGRA P09
|
||||||
ROW13 P01, P05, P15, P06, P13, P13, P06, P15, P05, P05, P05, P15, P15
|
BGRA P10
|
||||||
ROW13 P01, P05, P05, P15, P06, P06, P15, P05, P05, P05, P15, P15, P06
|
BGRA P11
|
||||||
ROW13 P03, P06, P06, P06, P06, P06, P06, P06, P06, P06, P06, P06, P06
|
BGRA P12
|
||||||
align 4
|
BGRA P13
|
||||||
|
BGRA P14
|
||||||
|
BGRA P15
|
||||||
|
|
||||||
|
; 4-bit palette indices, one byte per pixel (upper nibble unused — values 0..15)
|
||||||
|
cbox_indexed:
|
||||||
|
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ; row 1
|
||||||
|
db 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3 ; row 2
|
||||||
|
db 2, 1, 1, 1, 1, 4, 4, 4, 3, 5, 5, 3, 3 ; row 3
|
||||||
|
db 0, 1, 1, 1, 4, 4, 3, 3, 6, 7, 7, 8, 3 ; row 4
|
||||||
|
db 0, 3, 5, 5, 3, 3, 3, 6, 9,10,11, 6, 3 ; row 5
|
||||||
|
db 0, 5, 7, 7, 6, 3, 6, 9,10,12,13, 6, 5 ; row 6
|
||||||
|
db 0, 6,10, 9,14, 6, 9,10,12,13, 6,15, 5 ; row 7
|
||||||
|
db 0, 6,12,10, 9, 9,10,12,13, 6,15, 5, 5 ; row 8
|
||||||
|
db 0, 6,13,12,10,10,12,13, 6,15, 5, 5, 5 ; row 9
|
||||||
|
db 1, 8, 6,13,12,12,13, 6,15, 5, 5, 5,15 ; row 10
|
||||||
|
db 1, 5,15, 6,13,13, 6,15, 5, 5, 5,15,15 ; row 11
|
||||||
|
db 1, 5, 5,15, 6, 6,15, 5, 5, 5,15,15, 6 ; row 12
|
||||||
|
db 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 ; row 13
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
; SPDX-License-Identifier: GPL-2.0-only
|
; SPDX-License-Identifier: GPL-2.0-only
|
||||||
;
|
;
|
||||||
; Reshare - Shared Resources Daemon
|
; Reshare - Shared Resources Daemon
|
||||||
; Copyright (C) 2024-2025 KolibriOS/-NG Team
|
|
||||||
;
|
;
|
||||||
; Contributor Leency - Original version in C--
|
; Copyright (C) 2024-2026 KolibriOS Team
|
||||||
; Contributor rgmaid - Main code
|
; Copyright (C) 2024-2026 KolibriOS-NG Team
|
||||||
; Contributor Burer - Refactoring and localization
|
|
||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
@@ -25,14 +23,14 @@ dd 0
|
|||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
include "../../macros.inc"
|
include "../macros.inc"
|
||||||
include "../../KOSfuncs.inc"
|
include "../KOSfuncs.inc"
|
||||||
include "../../encoding.inc"
|
include "../encoding.inc"
|
||||||
include "../../proc32.inc"
|
include "../proc32.inc"
|
||||||
include "../../dll.inc"
|
include "../dll.inc"
|
||||||
include "../../debug-fdo.inc"
|
include "../debug-fdo.inc"
|
||||||
|
|
||||||
include "../../develop/libraries/libs-dev/libimg/libimg.inc"
|
include "../libimg.inc"
|
||||||
|
|
||||||
include "checkbox.inc"
|
include "checkbox.inc"
|
||||||
|
|
||||||
@@ -52,9 +50,10 @@ START:
|
|||||||
mcall SF_KEYBOARD, SSF_SET_INPUT_MODE, 1
|
mcall SF_KEYBOARD, SSF_SET_INPUT_MODE, 1
|
||||||
|
|
||||||
; check if this is second instance of app. if so - run gui, else - run daemon
|
; check if this is second instance of app. if so - run gui, else - run daemon
|
||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, meta_name, 0, SHM_OPEN + SHM_READ
|
mcall SF_SYS_MISC, SSF_MEM_OPEN, meta_name, 0, SHM_READ
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz MODE_DAEMON
|
jz MODE_DAEMON
|
||||||
|
mcall SF_SYS_MISC, SSF_MEM_CLOSE, meta_name
|
||||||
jmp MODE_GUI
|
jmp MODE_GUI
|
||||||
|
|
||||||
.exit:
|
.exit:
|
||||||
@@ -87,41 +86,75 @@ MODE_GUI:
|
|||||||
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc, sizeof.system_colors
|
mcall SF_STYLE_SETTINGS, SSF_GET_COLORS, sc, sizeof.system_colors
|
||||||
mcall , SSF_GET_SKIN_HEIGHT
|
mcall , SSF_GET_SKIN_HEIGHT
|
||||||
|
|
||||||
mov ecx, WIN.Y shl 16 + WIN.H
|
add eax, WIN.H
|
||||||
add ecx, eax
|
mov esi, eax
|
||||||
|
mcall SF_GET_SCREEN_SIZE
|
||||||
|
movzx ecx, ax
|
||||||
|
shr eax, 16
|
||||||
|
sub eax, WIN.W
|
||||||
|
shr eax, 1
|
||||||
|
shl eax, 16
|
||||||
|
add eax, WIN.W
|
||||||
|
mov ebx, eax
|
||||||
|
sub ecx, esi
|
||||||
|
shr ecx, 1
|
||||||
|
shl ecx, 16
|
||||||
|
add ecx, esi
|
||||||
mov edx, [sc.work]
|
mov edx, [sc.work]
|
||||||
add edx, 0x34000000
|
add edx, WIN_STYLE
|
||||||
|
|
||||||
mcall SF_CREATE_WINDOW, <WIN.X, WIN.W>, , , , title
|
mcall SF_CREATE_WINDOW, , , , , title
|
||||||
|
|
||||||
; visual dividers
|
; visual dividers
|
||||||
mcall SF_DRAW_RECT, <PAD, GRID.W>, <BTN.Y + BTN.H + GAP, 1>, [sc.work_graph]
|
mcall SF_DRAW_RECT, <PAD, GRID.W>, <BTN.Y + BTN.H + PAD, 1>, [sc.work_graph]
|
||||||
mcall , , <GRID.Y + GRID.H, 1>,
|
mcall , , <GRID.Y + GRID.H, 1>,
|
||||||
|
|
||||||
; info row
|
; info row
|
||||||
mov ecx, FONT_TYPE shl 24
|
mov ecx, FONT_TYPE shl 24
|
||||||
add ecx, [sc.work_text]
|
add ecx, [sc.work_text]
|
||||||
mcall SF_DRAW_TEXT, <PAD, GRID.Y + GRID.H + 1 + GAP>, , lb_info
|
mcall SF_DRAW_TEXT, <PAD, GRID.Y + GRID.H + PAD - 1>, , lb_info
|
||||||
|
|
||||||
; tabs labels
|
; tabs labels
|
||||||
mcall , <TAB_STEP * 0 + PAD * 2, BTN.Y>, , lb_tab_i32
|
mov esi, tab_label_strs
|
||||||
mcall , <TAB_STEP * 0 + PAD * 2 + 1, BTN.Y>, ,
|
xor edi, edi
|
||||||
mcall , <TAB_STEP * 0 + PAD *11, BTN.Y>, , lb_tab_i32_res
|
.tab_label_loop:
|
||||||
mcall , <TAB_STEP * 1 + PAD * 2, BTN.Y>, , lb_tab_i18
|
mov ebx, edi
|
||||||
mcall , <TAB_STEP * 1 + PAD * 2 + 1, BTN.Y>, ,
|
imul ebx, TAB_STEP
|
||||||
mcall , <TAB_STEP * 1 + PAD *11, BTN.Y>, , lb_tab_i18_res
|
push ebx
|
||||||
mcall , <TAB_STEP * 2 + PAD * 2, BTN.Y>, , lb_tab_i18w
|
add ebx, PAD * 2
|
||||||
mcall , <TAB_STEP * 2 + PAD * 2 + 1, BTN.Y>, ,
|
shl ebx, 16
|
||||||
mcall , <TAB_STEP * 2 + PAD *11, BTN.Y>, , lb_tab_i18_res
|
add ebx, BTN.Y
|
||||||
mcall , <TAB_STEP * 3 + PAD * 2, BTN.Y>, , lb_tab_cbox
|
mov edx, [esi]
|
||||||
mcall , <TAB_STEP * 3 + PAD * 2 + 1, BTN.Y>, ,
|
mcall SF_DRAW_TEXT
|
||||||
mcall , <TAB_STEP * 3 + PAD *11, BTN.Y>, , lb_tab_cbox_res
|
add ebx, 1 shl 16 ; bold: x+1, same string
|
||||||
|
mcall SF_DRAW_TEXT
|
||||||
|
pop ebx
|
||||||
|
add ebx, PAD * 11
|
||||||
|
shl ebx, 16
|
||||||
|
add ebx, BTN.Y
|
||||||
|
mov edx, [esi + 4]
|
||||||
|
mcall SF_DRAW_TEXT
|
||||||
|
add esi, 8
|
||||||
|
inc edi
|
||||||
|
cmp edi, TAB_COUNT
|
||||||
|
jb .tab_label_loop
|
||||||
|
|
||||||
; tabs buttons
|
; tabs buttons
|
||||||
mcall SF_DEFINE_BUTTON, <TAB_STEP * 0 + PAD, BTN.W>, <BTN.Y, BTN.H>, 10 + BTN_HIDE + ACTIVE_ICONS32
|
mov ecx, BTN.Y shl 16 + BTN.H
|
||||||
mcall , <TAB_STEP * 1 + PAD, BTN.W>, , 10 + BTN_HIDE + ACTIVE_ICONS18
|
mov esi, ACTIVE_ICONS32
|
||||||
mcall , <TAB_STEP * 2 + PAD, BTN.W>, , 10 + BTN_HIDE + ACTIVE_ICONS18W
|
xor edi, edi
|
||||||
mcall , <TAB_STEP * 3 + PAD, BTN.W>, , 10 + BTN_HIDE + ACTIVE_CHECKBOX
|
.btn_loop:
|
||||||
|
mov ebx, edi
|
||||||
|
imul ebx, TAB_STEP
|
||||||
|
add ebx, PAD
|
||||||
|
shl ebx, 16
|
||||||
|
add ebx, BTN.W
|
||||||
|
lea edx, [esi + BTN_BASE + BTN_HIDE]
|
||||||
|
mcall SF_DEFINE_BUTTON
|
||||||
|
add esi, esi ; 1→2→4→8 (next ACTIVE bit)
|
||||||
|
inc edi
|
||||||
|
cmp edi, TAB_COUNT
|
||||||
|
jb .btn_loop
|
||||||
|
|
||||||
; tabs content
|
; tabs content
|
||||||
call draw_tabs
|
call draw_tabs
|
||||||
@@ -134,7 +167,7 @@ MODE_GUI:
|
|||||||
.event_key:
|
.event_key:
|
||||||
|
|
||||||
mcall SF_GET_KEY
|
mcall SF_GET_KEY
|
||||||
cmp ah, 15 ; TAB
|
cmp ah, KEY_TAB
|
||||||
jne .event_loop
|
jne .event_loop
|
||||||
|
|
||||||
shl [active_tab], 1 ; * 2
|
shl [active_tab], 1 ; * 2
|
||||||
@@ -156,7 +189,7 @@ MODE_GUI:
|
|||||||
je .event_exit
|
je .event_exit
|
||||||
|
|
||||||
movzx eax, ah
|
movzx eax, ah
|
||||||
sub eax, 10
|
sub eax, BTN_BASE
|
||||||
mov [active_tab], eax
|
mov [active_tab], eax
|
||||||
call draw_tabs
|
call draw_tabs
|
||||||
|
|
||||||
@@ -170,14 +203,13 @@ MODE_GUI:
|
|||||||
|
|
||||||
draw_tabs:
|
draw_tabs:
|
||||||
|
|
||||||
; draw tabs headers underlines
|
; draw tab underlines; active tab gets highlight color
|
||||||
mov esi, [active_tab]
|
|
||||||
xor edi, edi
|
xor edi, edi
|
||||||
|
mov esi, 1 ; current tab bit (ACTIVE_ICONS32=1, then 2, 4, 8)
|
||||||
|
|
||||||
.loop:
|
.loop:
|
||||||
mov edx, [sc.work_dark]
|
mov edx, [sc.work_dark]
|
||||||
mov eax, [tab_masks + edi * 4]
|
test [active_tab], esi
|
||||||
test esi, eax
|
|
||||||
jz .color_ok
|
jz .color_ok
|
||||||
mov edx, [sc.work_button]
|
mov edx, [sc.work_button]
|
||||||
|
|
||||||
@@ -190,6 +222,7 @@ draw_tabs:
|
|||||||
mcall SF_DRAW_RECT, ebx, ecx, edx
|
mcall SF_DRAW_RECT, ebx, ecx, edx
|
||||||
|
|
||||||
inc edi
|
inc edi
|
||||||
|
add esi, esi ; shift to next tab bit (1→2→4→8)
|
||||||
cmp edi, TAB_COUNT
|
cmp edi, TAB_COUNT
|
||||||
jb .loop
|
jb .loop
|
||||||
|
|
||||||
@@ -197,59 +230,46 @@ draw_tabs:
|
|||||||
mcall SF_DRAW_RECT, <GRID.X, GRID.W>, <GRID.Y, GRID.H>, [sc.work]
|
mcall SF_DRAW_RECT, <GRID.X, GRID.W>, <GRID.Y, GRID.H>, [sc.work]
|
||||||
|
|
||||||
mov eax, [active_tab]
|
mov eax, [active_tab]
|
||||||
|
bsf eax, eax ; 0=i32, 1=i18, 2=i18w, 3=cbox
|
||||||
.tab_i32:
|
cmp eax, 3
|
||||||
cmp eax, ACTIVE_ICONS32
|
je .cbox
|
||||||
jne .tab_i18
|
lea esi, [tab_icon_args + eax * 8]
|
||||||
stdcall draw_tab_icons, lb_tab_i32, META_I32_C, META_I32_W
|
stdcall draw_tab_icons, [esi], [esi + 4]
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.tab_i18:
|
.cbox:
|
||||||
cmp eax, ACTIVE_ICONS18
|
|
||||||
jne .tab_i18w
|
|
||||||
stdcall draw_tab_icons, lb_tab_i18, META_I18_C, META_I18_W
|
|
||||||
ret
|
|
||||||
|
|
||||||
.tab_i18w:
|
|
||||||
cmp eax, ACTIVE_ICONS18W
|
|
||||||
jne .tab_cbox
|
|
||||||
stdcall draw_tab_icons, lb_tab_i18w, META_I18W_C, META_I18W_W
|
|
||||||
ret
|
|
||||||
|
|
||||||
.tab_cbox:
|
|
||||||
stdcall draw_tab_cbox
|
stdcall draw_tab_cbox
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
proc draw_tab_icons stdcall uses ebx ecx, _shm_name, _meta_c_off, _meta_w_off
|
proc draw_tab_icons stdcall, _shm_name, _meta_off
|
||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, meta_name, 0, SHM_OPEN + SHM_READ
|
mcall SF_SYS_MISC, SSF_MEM_OPEN, meta_name, 0, SHM_READ
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .done
|
jz .done
|
||||||
|
|
||||||
mov ebx, [_meta_c_off]
|
add eax, [_meta_off]
|
||||||
mov ecx, [eax + ebx] ; icon_c
|
mov ecx, [eax] ; icon_c
|
||||||
mov ebx, [_meta_w_off]
|
mov edx, [eax + 4] ; icon_w (always next field: _meta_off + 4)
|
||||||
mov edx, [eax + ebx] ; icon_w
|
|
||||||
|
|
||||||
test ecx, ecx
|
test ecx, ecx
|
||||||
jz .done
|
jz .close_meta
|
||||||
test edx, edx
|
test edx, edx
|
||||||
jz .done
|
jz .close_meta
|
||||||
|
|
||||||
push ecx
|
push ecx
|
||||||
push edx
|
push edx
|
||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, [_shm_name], 0, SHM_OPEN + SHM_READ
|
mcall SF_SYS_MISC, SSF_MEM_OPEN, [_shm_name], 0, SHM_READ
|
||||||
pop edx
|
pop edx
|
||||||
pop ecx
|
pop ecx
|
||||||
|
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .done
|
jz .close_meta
|
||||||
|
|
||||||
mov ebx, eax
|
stdcall draw_tab_icons_grid, eax, ecx, edx
|
||||||
|
|
||||||
stdcall draw_tab_icons_grid, ebx, ecx, edx
|
|
||||||
|
|
||||||
mcall SF_SYS_MISC, SSF_MEM_CLOSE, [_shm_name]
|
mcall SF_SYS_MISC, SSF_MEM_CLOSE, [_shm_name]
|
||||||
|
|
||||||
|
.close_meta:
|
||||||
mcall SF_SYS_MISC, SSF_MEM_CLOSE, meta_name
|
mcall SF_SYS_MISC, SSF_MEM_CLOSE, meta_name
|
||||||
|
|
||||||
.done:
|
.done:
|
||||||
@@ -257,7 +277,7 @@ proc draw_tab_icons stdcall uses ebx ecx, _shm_name, _meta_c_off, _meta_w_off
|
|||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
||||||
proc draw_tab_icons_grid stdcall uses eax ebx ecx edx esi edi, _icon_img, _icon_c, _icon_w
|
proc draw_tab_icons_grid stdcall uses ebx esi edi, _icon_img, _icon_c, _icon_w
|
||||||
locals
|
locals
|
||||||
x dd 0
|
x dd 0
|
||||||
x_off dd 0
|
x_off dd 0
|
||||||
@@ -276,10 +296,8 @@ endl
|
|||||||
shr eax, 1
|
shr eax, 1
|
||||||
mov [x_off], eax
|
mov [x_off], eax
|
||||||
|
|
||||||
; y_step = icon_w + 28
|
; y_step = CELL.H
|
||||||
mov eax, [_icon_w]
|
mov edi, CELL.H
|
||||||
add eax, 28
|
|
||||||
mov edi, eax
|
|
||||||
|
|
||||||
xor ecx, ecx
|
xor ecx, ecx
|
||||||
|
|
||||||
@@ -288,7 +306,7 @@ endl
|
|||||||
jae .end_for_icons
|
jae .end_for_icons
|
||||||
push ecx
|
push ecx
|
||||||
|
|
||||||
; SF_PUT_IMAGE_EXT _icon_img+icon_size*index, <_icon_w, _icon_w>, <x+x_off, y+RES_Y>, 32, 0, 0
|
; SF_PUT_IMAGE_EXT _icon_img+icon_size*index, <_icon_w, _icon_w>, <x+x_off, y+GRID_Y>, 32, 0, 0
|
||||||
mov ebx, [icon_size]
|
mov ebx, [icon_size]
|
||||||
imul ebx, ecx
|
imul ebx, ecx
|
||||||
add ebx, [_icon_img]
|
add ebx, [_icon_img]
|
||||||
@@ -309,18 +327,18 @@ endl
|
|||||||
pop ebp
|
pop ebp
|
||||||
pop edi
|
pop edi
|
||||||
|
|
||||||
; DrawNumber with no leading zeros, centered in CELL.W
|
; draw number with no leading zeros, centered in CELL.W
|
||||||
mov edx, [x]
|
mov edx, [x]
|
||||||
add edx, GAP
|
add edx, GAP
|
||||||
shl edx, 16
|
shl edx, 16
|
||||||
add edx, [y]
|
add edx, [y]
|
||||||
add edx, [_icon_w]
|
add edx, [_icon_w]
|
||||||
add edx, GRID.Y + 4
|
add edx, GRID.Y + 2
|
||||||
mov esi, 0x10000000
|
mov esi, DRAWNUM_NOZERO
|
||||||
add esi, [sc.work_graph]
|
add esi, [sc.work_graph]
|
||||||
|
|
||||||
pop ecx
|
pop ecx
|
||||||
mcall SF_DRAW_NUMBER, 0x00030000, , , ,
|
mcall SF_DRAW_NUMBER, DRAWNUM_DEC3, , , ,
|
||||||
inc ecx
|
inc ecx
|
||||||
|
|
||||||
add [x], CELL.W
|
add [x], CELL.W
|
||||||
@@ -337,16 +355,14 @@ endp
|
|||||||
|
|
||||||
|
|
||||||
proc draw_tab_cbox stdcall
|
proc draw_tab_cbox stdcall
|
||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, lb_tab_cbox, 0, SHM_OPEN + SHM_READ
|
mcall SF_SYS_MISC, SSF_MEM_OPEN, lb_tab_cbox, 0, SHM_READ
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .done
|
jz .done
|
||||||
mov ebx, eax
|
mov ebx, eax
|
||||||
mcall SF_PUT_IMAGE, , \
|
mcall SF_PUT_IMAGE, , \
|
||||||
<CBOX_WIDTH, CBOX_HEIGHT>, \
|
<CBOX_WIDTH, CBOX_HEIGHT>, \
|
||||||
<(WIN.W - CBOX_WIDTH)/2, (WIN.H - RES_Y - CBOX_HEIGHT)/2 + RES_Y>
|
<(WIN.W - CBOX_WIDTH)/2, (WIN.H - CBOX_HEIGHT)/2>
|
||||||
|
|
||||||
mcall SF_SYS_MISC, SSF_MEM_CLOSE, lb_tab_cbox
|
mcall SF_SYS_MISC, SSF_MEM_CLOSE, lb_tab_cbox
|
||||||
|
|
||||||
.done:
|
.done:
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
@@ -359,7 +375,6 @@ MODE_DAEMON:
|
|||||||
|
|
||||||
; load shared resources from files
|
; load shared resources from files
|
||||||
DEBUGF DBG_INFO, "I: @reshare: loading resources...\n"
|
DEBUGF DBG_INFO, "I: @reshare: loading resources...\n"
|
||||||
|
|
||||||
stdcall load_icons, icons32_path, icons32_image, size32
|
stdcall load_icons, icons32_path, icons32_image, size32
|
||||||
stdcall load_icons, icons18_path, icons18_image, size18
|
stdcall load_icons, icons18_path, icons18_image, size18
|
||||||
|
|
||||||
@@ -391,6 +406,7 @@ MODE_DAEMON:
|
|||||||
mov eax, [icons18_image]
|
mov eax, [icons18_image]
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .i18_set
|
jz .i18_set
|
||||||
|
|
||||||
mov ebx, [eax + Image.Width]
|
mov ebx, [eax + Image.Width]
|
||||||
mov eax, [eax + Image.Height]
|
mov eax, [eax + Image.Height]
|
||||||
test ebx, ebx
|
test ebx, ebx
|
||||||
@@ -415,11 +431,21 @@ MODE_DAEMON:
|
|||||||
mcall SF_SYS_MISC, SSF_MEM_OPEN, lb_tab_cbox, CBOX_IMG_SIZE, SHM_CREATE + SHM_WRITE
|
mcall SF_SYS_MISC, SSF_MEM_OPEN, lb_tab_cbox, CBOX_IMG_SIZE, SHM_CREATE + SHM_WRITE
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jz .skip_cbox
|
jz .skip_cbox
|
||||||
mov esi, cbox_image
|
|
||||||
mov edi, eax
|
mov edi, eax
|
||||||
mov ecx, CBOX_IMG_SIZE
|
mov esi, cbox_indexed
|
||||||
|
mov ecx, CBOX_PIXELS
|
||||||
cld
|
cld
|
||||||
rep movsb
|
.cbox_expand:
|
||||||
|
movzx ebx, byte [esi]
|
||||||
|
inc esi
|
||||||
|
mov eax, [cbox_palette + ebx * 4]
|
||||||
|
stosb ; B
|
||||||
|
shr eax, 8
|
||||||
|
stosb ; G
|
||||||
|
shr eax, 8
|
||||||
|
stosb ; R
|
||||||
|
dec ecx
|
||||||
|
jnz .cbox_expand
|
||||||
.skip_cbox:
|
.skip_cbox:
|
||||||
|
|
||||||
cmp [icons32_image], 0
|
cmp [icons32_image], 0
|
||||||
@@ -472,7 +498,6 @@ MODE_DAEMON:
|
|||||||
je .event_loop
|
je .event_loop
|
||||||
jmp .wait_event
|
jmp .wait_event
|
||||||
|
|
||||||
; ====================================================================
|
|
||||||
|
|
||||||
proc load_icons stdcall uses ebx ecx, _path, _img_ptr, _size_ptr
|
proc load_icons stdcall uses ebx ecx, _path, _img_ptr, _size_ptr
|
||||||
invoke img.from_file, [_path]
|
invoke img.from_file, [_path]
|
||||||
@@ -484,15 +509,13 @@ proc load_icons stdcall uses ebx ecx, _path, _img_ptr, _size_ptr
|
|||||||
mov ebx, [eax + Image.Width]
|
mov ebx, [eax + Image.Width]
|
||||||
mov ecx, [eax + Image.Height]
|
mov ecx, [eax + Image.Height]
|
||||||
imul ecx, ebx
|
imul ecx, ebx
|
||||||
shl ecx, 2 ; * 4 to get size in bytes
|
shl ecx, 2
|
||||||
mov ebx, [_size_ptr]
|
mov ebx, [_size_ptr]
|
||||||
mov [ebx], ecx
|
mov [ebx], ecx
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
.fail:
|
.fail:
|
||||||
DEBUGF DBG_ERR, "E: @reshare: error loading icons from %s\n", [_path]
|
DEBUGF DBG_ERR, "E: @reshare: error loading icons from %s\n", [_path]
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
@@ -509,41 +532,36 @@ proc copy_image_to_shm stdcall uses ebx ecx edx esi edi, _shm_name, _size_ptr, _
|
|||||||
mov edi, eax
|
mov edi, eax
|
||||||
mov ecx, [_size_ptr]
|
mov ecx, [_size_ptr]
|
||||||
mov ecx, [ecx]
|
mov ecx, [ecx]
|
||||||
shr ecx, 2 ; / 4 to get size in dwords
|
shr ecx, 2
|
||||||
cld
|
cld
|
||||||
rep movsd
|
rep movsd
|
||||||
|
|
||||||
.done:
|
.done:
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
||||||
proc replace_2cols stdcall uses edi, imgsrc, imgsize, color_old_1, color_new_1, color_old_2, color_new_2
|
proc replace_2cols stdcall uses edi, _imgsrc, _imgsize, _col_old1, _col_new1, _col_old2, _col_new2
|
||||||
mov edx, [imgsize]
|
mov edx, [_imgsize]
|
||||||
add edx, [imgsrc]
|
add edx, [_imgsrc]
|
||||||
mov edi, [imgsrc]
|
mov edi, [_imgsrc]
|
||||||
|
|
||||||
.loop:
|
.loop:
|
||||||
cmp edi, edx
|
cmp edi, edx
|
||||||
jae .done
|
jae .done
|
||||||
mov eax, [edi]
|
mov eax, [edi]
|
||||||
cmp eax, [color_old_1]
|
cmp eax, [_col_old1]
|
||||||
jne .check_second
|
jne .check2
|
||||||
mov eax, [color_new_1]
|
mov eax, [_col_new1]
|
||||||
mov [edi], eax
|
mov [edi], eax
|
||||||
jmp .next
|
jmp .next
|
||||||
|
.check2:
|
||||||
.check_second:
|
cmp eax, [_col_old2]
|
||||||
cmp eax, [color_old_2]
|
|
||||||
jne .next
|
jne .next
|
||||||
mov eax, [color_new_2]
|
mov eax, [_col_new2]
|
||||||
mov [edi], eax
|
mov [edi], eax
|
||||||
|
|
||||||
.next:
|
.next:
|
||||||
add edi, 4
|
add edi, 4
|
||||||
jmp .loop
|
jmp .loop
|
||||||
.done:
|
.done:
|
||||||
|
|
||||||
ret
|
ret
|
||||||
endp
|
endp
|
||||||
|
|
||||||
@@ -556,17 +574,25 @@ GAP = 12
|
|||||||
GRID_COLS = 16
|
GRID_COLS = 16
|
||||||
GRID_ROWS = 9
|
GRID_ROWS = 9
|
||||||
|
|
||||||
RES_Y = BTN.Y + BTN.H + PAD * 2 + 1
|
GRID_Y = BTN.Y + BTN.H + PAD * 2 + 1
|
||||||
TAB_STEP = BTN.W + PAD * 2
|
TAB_STEP = BTN.W + PAD * 2
|
||||||
|
|
||||||
WIN RECT 80, 50, GRID.W + PAD * 2 + BORD * 2, 638
|
WIN RECT 0, 0, GRID.W + PAD * 2 + BORD * 2, GRID.H + GRID_Y + 1 + PAD + 10 + GAP
|
||||||
BTN RECT 0, PAD + 4, CELL.W * 4 - PAD * 2 , 22
|
BTN RECT 0, PAD + 4, CELL.W * 4 - PAD * 2 , 22
|
||||||
CELL RECT 0, 0, 32 + PAD * 2 , 60
|
CELL RECT 0, 0, 32 + PAD * 2 , 32 + 4 + 10 + PAD
|
||||||
|
|
||||||
GRID RECT PAD, RES_Y + PAD, CELL.W * GRID_COLS - PAD * 2, CELL.H * GRID_ROWS
|
GRID RECT PAD, GRID_Y, CELL.W * GRID_COLS - PAD * 2, CELL.H * GRID_ROWS
|
||||||
|
|
||||||
FONT_TYPE = 0x90
|
FONT_TYPE = 0x90
|
||||||
|
WIN_STYLE = 0x34000000 ; skinned window, draws itself
|
||||||
|
|
||||||
BTN_HIDE = 0x60000000
|
BTN_HIDE = 0x60000000
|
||||||
|
BTN_BASE = 10 ; first user-defined button ID
|
||||||
|
|
||||||
|
DRAWNUM_DEC3 = 0x00030000 ; SF_DRAW_NUMBER: decimal, 3 digits
|
||||||
|
DRAWNUM_NOZERO = 0x10000000 ; SF_DRAW_NUMBER: no leading zeros
|
||||||
|
|
||||||
|
KEY_TAB = 15 ; Tab key scan code
|
||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
@@ -605,10 +631,8 @@ DBG_ERR = 2 ; only errors
|
|||||||
__DEBUG__ = 1
|
__DEBUG__ = 1
|
||||||
__DEBUG_LEVEL__ = DBG_ERR
|
__DEBUG_LEVEL__ = DBG_ERR
|
||||||
|
|
||||||
SHM_OPEN = 0x00
|
|
||||||
SHM_READ = 0x00
|
SHM_READ = 0x00
|
||||||
SHM_WRITE = 0x01
|
SHM_WRITE = 0x01
|
||||||
SHM_OPEN_ALWAYS = 0x04
|
|
||||||
SHM_CREATE = 0x08
|
SHM_CREATE = 0x08
|
||||||
|
|
||||||
ACTIVE_ICONS32 = 1
|
ACTIVE_ICONS32 = 1
|
||||||
@@ -629,8 +653,6 @@ META_CBOX_H = 28
|
|||||||
META_CBOX_SIZE = 32
|
META_CBOX_SIZE = 32
|
||||||
META_SIZE = 36
|
META_SIZE = 36
|
||||||
|
|
||||||
tab_masks dd ACTIVE_ICONS32, ACTIVE_ICONS18, ACTIVE_ICONS18W, ACTIVE_CHECKBOX
|
|
||||||
|
|
||||||
; ====================================================================
|
; ====================================================================
|
||||||
|
|
||||||
meta_name db "RESHARE_META", 0
|
meta_name db "RESHARE_META", 0
|
||||||
@@ -652,6 +674,17 @@ shared_i18w dd 0
|
|||||||
|
|
||||||
active_tab dd ACTIVE_ICONS32
|
active_tab dd ACTIVE_ICONS32
|
||||||
|
|
||||||
|
tab_icon_args:
|
||||||
|
dd lb_tab_i32, META_I32_C ; META_I32_W = META_I32_C + 4
|
||||||
|
dd lb_tab_i18, META_I18_C ; META_I18_W = META_I18_C + 4
|
||||||
|
dd lb_tab_i18w, META_I18W_C ; META_I18W_W = META_I18W_C + 4
|
||||||
|
|
||||||
|
tab_label_strs:
|
||||||
|
dd lb_tab_i32, lb_tab_i32_res
|
||||||
|
dd lb_tab_i18, lb_tab_i18_res
|
||||||
|
dd lb_tab_i18w, lb_tab_i18_res
|
||||||
|
dd lb_tab_cbox, lb_tab_cbox_res
|
||||||
|
|
||||||
sc system_colors
|
sc system_colors
|
||||||
|
|
||||||
include_debug_strings
|
include_debug_strings
|
||||||
|
|||||||
Reference in New Issue
Block a user