1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-15 15:53:55 +00:00

Added ability to specify alternate colors for windows installer UI

This commit is contained in:
Bryan Roe
2022-02-14 12:13:56 -08:00
parent 7df445ac6d
commit 7a2356f777

View File

@@ -991,6 +991,32 @@ int wmain(int argc, char* wargv[])
#ifndef _MINCORE
COLORREF gBKCOLOR = RGB(0, 0, 0);
COLORREF gFGCOLOR = RGB(0, 0, 0);
COLORREF GDIP_RGB(COLORREF c)
{
unsigned char _r = (c & 0xFF);
unsigned char _g = ((c >> 8) & 0xFF);
unsigned char _b = ((c >> 16) & 0xFF);
return (RGB(_b, _g, _r));
}
uint32_t ColorFromMSH(char *c)
{
uint32_t ret = RGB(0, 54, 105);
size_t len = strnlen_s(c, 12);
parser_result *pr = ILibParseString(c, 0, len, ",", 1);
if (pr->NumResults == 3)
{
pr->FirstResult->data[pr->FirstResult->datalength] = 0;
pr->FirstResult->NextResult->data[pr->FirstResult->NextResult->datalength] = 0;
pr->LastResult->data[pr->LastResult->datalength] = 0;
ret = RGB(atoi(pr->FirstResult->data), atoi(pr->FirstResult->NextResult->data), atoi(pr->LastResult->data));
}
ILibDestructParserResults(pr);
return(ret);
}
WCHAR *Dialog_GetTranslationEx(void *ctx, char *utf8)
{
@@ -1044,7 +1070,7 @@ HBITMAP GetScaledImage(char *raw, size_t rawLen, int w, int h)
s = __GdipSetSmoothingMode(g, SmoothingModeAntiAlias);
s = __GdipSetInterpolationMode(g, InterpolationModeBicubic);
s = __GdipDrawImageRectI(g, bm, 0, 0, w, h);
s = __GdipCreateHBITMAPFromBitmap(nb, &hbm, RGB(105, 54, 0));
s = __GdipCreateHBITMAPFromBitmap(nb, &hbm, GDIP_RGB(gBKCOLOR));
s = __GdipDisposeImage(bm);
ILibMemory_Free(decoded);
return(hbm);
@@ -1063,7 +1089,7 @@ INT_PTR CALLBACK DialogHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP
case WM_CTLCOLORDLG: {
// Set the background of the dialog box to blue
if (DialogBackgroundBrush == NULL) {
DialogBackgroundBrush = CreateSolidBrush(RGB(0, 54, 105));
DialogBackgroundBrush = CreateSolidBrush(gBKCOLOR);
}
return (INT_PTR)DialogBackgroundBrush;
}
@@ -1072,7 +1098,7 @@ INT_PTR CALLBACK DialogHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP
if ((HWND)lParam == GetDlgItem(hDlg, IDC_STATIC_LEFTTEXT))
{
SetBkMode((HDC)wParam, TRANSPARENT);
SetTextColor((HDC)wParam, RGB(255, 255, 255));
SetTextColor((HDC)wParam, gFGCOLOR);
return (INT_PTR)GetStockObject(NULL_BRUSH);
}
break;
@@ -1156,6 +1182,11 @@ INT_PTR CALLBACK DialogHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lP
RECT r;
GetWindowRect(GetDlgItem(hDlg, IDC_IMAGE), &r);
char *bkcolor = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "bkcolor", "0,54,105");
char *fgcolor = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "fgcolor", "255,255,255");
gBKCOLOR = ColorFromMSH(bkcolor);
gFGCOLOR = ColorFromMSH(fgcolor);
duk_size_t rawLen;
char *imageraw = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "image", NULL);
if (imageraw != NULL)
@@ -1344,14 +1375,14 @@ INT_PTR CALLBACK DialogHandler2(HWND hDlg, UINT message, WPARAM wParam, LPARAM l
case WM_CTLCOLORDLG: {
// Set the background of the dialog box to blue
if (DialogBackgroundBrush == NULL) {
DialogBackgroundBrush = CreateSolidBrush(RGB(0, 54, 105));
DialogBackgroundBrush = CreateSolidBrush(gBKCOLOR);
}
return (INT_PTR)DialogBackgroundBrush;
}
case WM_CTLCOLORSTATIC: {
// Set the left text to white over transparent
SetBkMode((HDC)wParam, TRANSPARENT);
SetTextColor((HDC)wParam, RGB(255, 255, 255));
SetTextColor((HDC)wParam, gFGCOLOR);
return (INT_PTR)GetStockObject(NULL_BRUSH);
break;
}
@@ -1376,6 +1407,7 @@ INT_PTR CALLBACK DialogHandler2(HWND hDlg, UINT message, WPARAM wParam, LPARAM l
serverurl = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "MeshServer", NULL);
displayName = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "displayName", NULL);
meshServiceName = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "meshServiceName", "Mesh Agent");
char *bkcolor = Duktape_GetStringPropertyValue(g_dialogCtx, -1, "bkcolor", "0,0,0");
// Set text in the dialog box
if (strnlen_s(meshid, 255) > 50) { meshid += 2; meshid[42] = 0; }