apps/reshare: code refactoring, creds cleanup
Some checks failed
Build system / Check kernel codestyle (pull_request) Successful in 56s
Build system / Build (pull_request) Failing after 2m36s

Co-authored-by: @rgimad
This commit is contained in:
2026-03-08 13:08:51 +02:00
parent 7ec23b1400
commit 0380ec1157
2 changed files with 192 additions and 158 deletions

View File

@@ -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

View File

@@ -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