Skip to content

Commit c850d0d

Browse files
committed
Refactoring, minor breaking changes
1 parent 65eecc8 commit c850d0d

File tree

7 files changed

+288
-132
lines changed

7 files changed

+288
-132
lines changed

include/DarkModeSubclass.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,7 +315,7 @@ namespace DarkMode
315315
DMLIB_API COLORREF setHotEdgeColor(COLORREF clrNew);
316316
DMLIB_API COLORREF setDisabledEdgeColor(COLORREF clrNew);
317317

318-
DMLIB_API void setThemeColors(Colors colors);
318+
DMLIB_API void setThemeColors(Colors* colors);
319319
DMLIB_API void updateThemeBrushesAndPens();
320320

321321
[[nodiscard]] DMLIB_API COLORREF getBackgroundColor();
@@ -357,7 +357,7 @@ namespace DarkMode
357357
DMLIB_API COLORREF setHeaderTextColor(COLORREF clrNew);
358358
DMLIB_API COLORREF setHeaderEdgeColor(COLORREF clrNew);
359359

360-
DMLIB_API void setViewColors(ColorsView colors);
360+
DMLIB_API void setViewColors(ColorsView* colors);
361361
DMLIB_API void updateViewBrushesAndPens();
362362

363363
[[nodiscard]] DMLIB_API COLORREF getViewBackgroundColor();

src/DarkModeSubclass.cpp

Lines changed: 76 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -238,41 +238,44 @@ static dmlib_color::ThemeView& getThemeView() noexcept
238238
return tView;
239239
}
240240

241-
COLORREF DarkMode::setBackgroundColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.background, clrNew); }
242-
COLORREF DarkMode::setCtrlBackgroundColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.ctrlBackground, clrNew); }
243-
COLORREF DarkMode::setHotBackgroundColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.hotBackground, clrNew); }
244-
COLORREF DarkMode::setDlgBackgroundColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.dlgBackground, clrNew); }
245-
COLORREF DarkMode::setErrorBackgroundColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.errorBackground, clrNew); }
246-
COLORREF DarkMode::setTextColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.text, clrNew); }
247-
COLORREF DarkMode::setDarkerTextColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.darkerText, clrNew); }
248-
COLORREF DarkMode::setDisabledTextColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.disabledText, clrNew); }
249-
COLORREF DarkMode::setLinkTextColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.linkText, clrNew); }
250-
COLORREF DarkMode::setEdgeColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.edge, clrNew); }
251-
COLORREF DarkMode::setHotEdgeColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.hotEdge, clrNew); }
252-
COLORREF DarkMode::setDisabledEdgeColor(COLORREF clrNew) { return dmlib_color::setNewColor(getTheme().m_colors.disabledEdge, clrNew); }
241+
COLORREF DarkMode::setBackgroundColor(COLORREF clrNew) { return getTheme().setColorBackground(clrNew); }
242+
COLORREF DarkMode::setCtrlBackgroundColor(COLORREF clrNew) { return getTheme().setColorCtrlBackground(clrNew); }
243+
COLORREF DarkMode::setHotBackgroundColor(COLORREF clrNew) { return getTheme().setColorHotBackground(clrNew); }
244+
COLORREF DarkMode::setDlgBackgroundColor(COLORREF clrNew) { return getTheme().setColorDlgBackground(clrNew); }
245+
COLORREF DarkMode::setErrorBackgroundColor(COLORREF clrNew) { return getTheme().setColorErrorBackground(clrNew); }
246+
COLORREF DarkMode::setTextColor(COLORREF clrNew) { return getTheme().setColorText(clrNew); }
247+
COLORREF DarkMode::setDarkerTextColor(COLORREF clrNew) { return getTheme().setColorDarkerText(clrNew); }
248+
COLORREF DarkMode::setDisabledTextColor(COLORREF clrNew) { return getTheme().setColorDisabledText(clrNew); }
249+
COLORREF DarkMode::setLinkTextColor(COLORREF clrNew) { return getTheme().setColorLinkText(clrNew); }
250+
COLORREF DarkMode::setEdgeColor(COLORREF clrNew) { return getTheme().setColorEdge(clrNew); }
251+
COLORREF DarkMode::setHotEdgeColor(COLORREF clrNew) { return getTheme().setColorHotEdge(clrNew); }
252+
COLORREF DarkMode::setDisabledEdgeColor(COLORREF clrNew) { return getTheme().setColorDisabledEdge(clrNew); }
253253

254-
void DarkMode::setThemeColors(Colors colors)
254+
void DarkMode::setThemeColors(Colors* colors)
255255
{
256-
getTheme().updateTheme(colors);
256+
if (colors != nullptr)
257+
{
258+
getTheme().updateTheme(*colors);
259+
}
257260
}
258261

259262
void DarkMode::updateThemeBrushesAndPens()
260263
{
261264
getTheme().updateTheme();
262265
}
263266

264-
COLORREF DarkMode::getBackgroundColor() { return getTheme().m_colors.background; }
265-
COLORREF DarkMode::getCtrlBackgroundColor() { return getTheme().m_colors.ctrlBackground; }
266-
COLORREF DarkMode::getHotBackgroundColor() { return getTheme().m_colors.hotBackground; }
267-
COLORREF DarkMode::getDlgBackgroundColor() { return getTheme().m_colors.dlgBackground; }
268-
COLORREF DarkMode::getErrorBackgroundColor() { return getTheme().m_colors.errorBackground; }
269-
COLORREF DarkMode::getTextColor() { return getTheme().m_colors.text; }
270-
COLORREF DarkMode::getDarkerTextColor() { return getTheme().m_colors.darkerText; }
271-
COLORREF DarkMode::getDisabledTextColor() { return getTheme().m_colors.disabledText; }
272-
COLORREF DarkMode::getLinkTextColor() { return getTheme().m_colors.linkText; }
273-
COLORREF DarkMode::getEdgeColor() { return getTheme().m_colors.edge; }
274-
COLORREF DarkMode::getHotEdgeColor() { return getTheme().m_colors.hotEdge; }
275-
COLORREF DarkMode::getDisabledEdgeColor() { return getTheme().m_colors.disabledEdge; }
267+
COLORREF DarkMode::getBackgroundColor() { return getTheme().getColors().background; }
268+
COLORREF DarkMode::getCtrlBackgroundColor() { return getTheme().getColors().ctrlBackground; }
269+
COLORREF DarkMode::getHotBackgroundColor() { return getTheme().getColors().hotBackground; }
270+
COLORREF DarkMode::getDlgBackgroundColor() { return getTheme().getColors().dlgBackground; }
271+
COLORREF DarkMode::getErrorBackgroundColor() { return getTheme().getColors().errorBackground; }
272+
COLORREF DarkMode::getTextColor() { return getTheme().getColors().text; }
273+
COLORREF DarkMode::getDarkerTextColor() { return getTheme().getColors().darkerText; }
274+
COLORREF DarkMode::getDisabledTextColor() { return getTheme().getColors().disabledText; }
275+
COLORREF DarkMode::getLinkTextColor() { return getTheme().getColors().linkText; }
276+
COLORREF DarkMode::getEdgeColor() { return getTheme().getColors().edge; }
277+
COLORREF DarkMode::getHotEdgeColor() { return getTheme().getColors().hotEdge; }
278+
COLORREF DarkMode::getDisabledEdgeColor() { return getTheme().getColors().disabledEdge; }
276279

277280
HBRUSH DarkMode::getBackgroundBrush() { return getTheme().getBrushes().m_background; }
278281
HBRUSH DarkMode::getCtrlBackgroundBrush() { return getTheme().getBrushes().m_ctrlBackground; }
@@ -289,33 +292,36 @@ HPEN DarkMode::getEdgePen() { return getTheme().getPens().m_
289292
HPEN DarkMode::getHotEdgePen() { return getTheme().getPens().m_hotEdge; }
290293
HPEN DarkMode::getDisabledEdgePen() { return getTheme().getPens().m_disabledEdge; }
291294

292-
COLORREF DarkMode::setViewBackgroundColor(COLORREF clrNew) { return dmlib_color::setNewColor(getThemeView().m_clrView.background, clrNew); }
293-
COLORREF DarkMode::setViewTextColor(COLORREF clrNew) { return dmlib_color::setNewColor(getThemeView().m_clrView.text, clrNew); }
294-
COLORREF DarkMode::setViewGridlinesColor(COLORREF clrNew) { return dmlib_color::setNewColor(getThemeView().m_clrView.gridlines, clrNew); }
295+
COLORREF DarkMode::setViewBackgroundColor(COLORREF clrNew) { return getThemeView().setColorBackground(clrNew); }
296+
COLORREF DarkMode::setViewTextColor(COLORREF clrNew) { return getThemeView().setColorText(clrNew); }
297+
COLORREF DarkMode::setViewGridlinesColor(COLORREF clrNew) { return getThemeView().setColorGridlines(clrNew); }
295298

296-
COLORREF DarkMode::setHeaderBackgroundColor(COLORREF clrNew) { return dmlib_color::setNewColor(getThemeView().m_clrView.headerBackground, clrNew); }
297-
COLORREF DarkMode::setHeaderHotBackgroundColor(COLORREF clrNew) { return dmlib_color::setNewColor(getThemeView().m_clrView.headerHotBackground, clrNew); }
298-
COLORREF DarkMode::setHeaderTextColor(COLORREF clrNew) { return dmlib_color::setNewColor(getThemeView().m_clrView.headerText, clrNew); }
299-
COLORREF DarkMode::setHeaderEdgeColor(COLORREF clrNew) { return dmlib_color::setNewColor(getThemeView().m_clrView.headerEdge, clrNew); }
299+
COLORREF DarkMode::setHeaderBackgroundColor(COLORREF clrNew) { return getThemeView().setColorHeaderBackground(clrNew); }
300+
COLORREF DarkMode::setHeaderHotBackgroundColor(COLORREF clrNew) { return getThemeView().setColorHeaderHotBackground(clrNew); }
301+
COLORREF DarkMode::setHeaderTextColor(COLORREF clrNew) { return getThemeView().setColorHeaderText(clrNew); }
302+
COLORREF DarkMode::setHeaderEdgeColor(COLORREF clrNew) { return getThemeView().setColorHeaderEdge(clrNew); }
300303

301-
void DarkMode::setViewColors(ColorsView colors)
304+
void DarkMode::setViewColors(ColorsView* colors)
302305
{
303-
getThemeView().updateView(colors);
306+
if (colors != nullptr)
307+
{
308+
getThemeView().updateView(*colors);
309+
}
304310
}
305311

306312
void DarkMode::updateViewBrushesAndPens()
307313
{
308314
getThemeView().updateView();
309315
}
310316

311-
COLORREF DarkMode::getViewBackgroundColor() { return getThemeView().m_clrView.background; }
312-
COLORREF DarkMode::getViewTextColor() { return getThemeView().m_clrView.text; }
313-
COLORREF DarkMode::getViewGridlinesColor() { return getThemeView().m_clrView.gridlines; }
317+
COLORREF DarkMode::getViewBackgroundColor() { return getThemeView().getColors().background; }
318+
COLORREF DarkMode::getViewTextColor() { return getThemeView().getColors().text; }
319+
COLORREF DarkMode::getViewGridlinesColor() { return getThemeView().getColors().gridlines; }
314320

315-
COLORREF DarkMode::getHeaderBackgroundColor() { return getThemeView().m_clrView.headerBackground; }
316-
COLORREF DarkMode::getHeaderHotBackgroundColor() { return getThemeView().m_clrView.headerHotBackground; }
317-
COLORREF DarkMode::getHeaderTextColor() { return getThemeView().m_clrView.headerText; }
318-
COLORREF DarkMode::getHeaderEdgeColor() { return getThemeView().m_clrView.headerEdge; }
321+
COLORREF DarkMode::getHeaderBackgroundColor() { return getThemeView().getColors().headerBackground; }
322+
COLORREF DarkMode::getHeaderHotBackgroundColor() { return getThemeView().getColors().headerHotBackground; }
323+
COLORREF DarkMode::getHeaderTextColor() { return getThemeView().getColors().headerText; }
324+
COLORREF DarkMode::getHeaderEdgeColor() { return getThemeView().getColors().headerEdge; }
319325

320326
HBRUSH DarkMode::getViewBackgroundBrush() { return getThemeView().getViewBrushesAndPens().m_background; }
321327
HBRUSH DarkMode::getViewGridlinesBrush() { return getThemeView().getViewBrushesAndPens().m_gridlines; }
@@ -349,14 +355,14 @@ void DarkMode::setDefaultColors(bool updateBrushesAndOther)
349355
case DarkModeType::dark:
350356
{
351357
getTheme().setToneColors();
352-
getThemeView().m_clrView = dmlib_color::kDarkColorsView;
358+
getThemeView().resetColors(true);
353359
break;
354360
}
355361

356362
case DarkModeType::light:
357363
{
358-
getTheme().m_colors = dmlib_color::getLightColors();
359-
getThemeView().m_clrView = dmlib_color::kLightColorsView;
364+
getTheme().setLightColors();
365+
getThemeView().resetColors(false);
360366
break;
361367
}
362368

@@ -591,6 +597,8 @@ static void initOptions(const std::wstring& iniName)
591597
g_dmCfg.m_borderColor = DWMWA_COLOR_DEFAULT;
592598
}
593599

600+
getThemeView().resetColors(useDark);
601+
594602
if (useDark)
595603
{
596604
UINT tone = ::GetPrivateProfileIntW(sectionBase.c_str(), L"tone", 0, iniPath.c_str());
@@ -600,10 +608,9 @@ static void initOptions(const std::wstring& iniName)
600608
}
601609

602610
getTheme().setToneColors(static_cast<DarkMode::ColorTone>(tone));
603-
getThemeView().m_clrView = dmlib_color::kDarkColorsView;
604-
getThemeView().m_clrView.headerBackground = getTheme().m_colors.background;
605-
getThemeView().m_clrView.headerHotBackground = getTheme().m_colors.hotBackground;
606-
getThemeView().m_clrView.headerText = getTheme().m_colors.darkerText;
611+
getThemeView().setColorHeaderBackground(getTheme().getColors().background);
612+
getThemeView().setColorHeaderHotBackground(getTheme().getColors().hotBackground);
613+
getThemeView().setColorHeaderText(getTheme().getColors().darkerText);
607614

608615
if (!DarkMode::isWindowsModeEnabled())
609616
{
@@ -612,8 +619,7 @@ static void initOptions(const std::wstring& iniName)
612619
}
613620
else
614621
{
615-
getTheme().m_colors = dmlib_color::getLightColors();
616-
getThemeView().m_clrView = dmlib_color::kLightColorsView;
622+
getTheme().setLightColors();
617623
}
618624

619625
struct ColorEntry
@@ -624,29 +630,29 @@ static void initOptions(const std::wstring& iniName)
624630

625631
static constexpr size_t nColorsViewMembers = 7;
626632
const std::array<ColorEntry, nColorsViewMembers> viewColors{ {
627-
{L"backgroundView", &getThemeView().m_clrView.background},
628-
{L"textView", &getThemeView().m_clrView.text},
629-
{L"gridlines", &getThemeView().m_clrView.gridlines},
630-
{L"backgroundHeader", &getThemeView().m_clrView.headerBackground},
631-
{L"backgroundHotHeader", &getThemeView().m_clrView.headerHotBackground},
632-
{L"textHeader", &getThemeView().m_clrView.headerText},
633-
{L"edgeHeader", &getThemeView().m_clrView.headerEdge}
633+
{L"backgroundView", &getThemeView().getToSetColors().background},
634+
{L"textView", &getThemeView().getToSetColors().text},
635+
{L"gridlines", &getThemeView().getToSetColors().gridlines},
636+
{L"backgroundHeader", &getThemeView().getToSetColors().headerBackground},
637+
{L"backgroundHotHeader", &getThemeView().getToSetColors().headerHotBackground},
638+
{L"textHeader", &getThemeView().getToSetColors().headerText},
639+
{L"edgeHeader", &getThemeView().getToSetColors().headerEdge}
634640
} };
635641

636642
static constexpr size_t nColorsMembers = 12;
637643
const std::array<ColorEntry, nColorsMembers> baseColors{ {
638-
{L"background", &getTheme().m_colors.background},
639-
{L"backgroundCtrl", &getTheme().m_colors.ctrlBackground},
640-
{L"backgroundHot", &getTheme().m_colors.hotBackground},
641-
{L"backgroundDlg", &getTheme().m_colors.dlgBackground},
642-
{L"backgroundError", &getTheme().m_colors.errorBackground},
643-
{L"text", &getTheme().m_colors.text},
644-
{L"textItem", &getTheme().m_colors.darkerText},
645-
{L"textDisabled", &getTheme().m_colors.disabledText},
646-
{L"textLink", &getTheme().m_colors.linkText},
647-
{L"edge", &getTheme().m_colors.edge},
648-
{L"edgeHot", &getTheme().m_colors.hotEdge},
649-
{L"edgeDisabled", &getTheme().m_colors.disabledEdge}
644+
{L"background", &getTheme().getToSetColors().background},
645+
{L"backgroundCtrl", &getTheme().getToSetColors().ctrlBackground},
646+
{L"backgroundHot", &getTheme().getToSetColors().hotBackground},
647+
{L"backgroundDlg", &getTheme().getToSetColors().dlgBackground},
648+
{L"backgroundError", &getTheme().getToSetColors().errorBackground},
649+
{L"text", &getTheme().getToSetColors().text},
650+
{L"textItem", &getTheme().getToSetColors().darkerText},
651+
{L"textDisabled", &getTheme().getToSetColors().disabledText},
652+
{L"textLink", &getTheme().getToSetColors().linkText},
653+
{L"edge", &getTheme().getToSetColors().edge},
654+
{L"edgeHot", &getTheme().getToSetColors().hotEdge},
655+
{L"edgeDisabled", &getTheme().getToSetColors().disabledEdge}
650656
} };
651657

652658
for (const auto& entry : viewColors)

src/DmlibColor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ DarkMode::Colors dmlib_color::getLightColors()
5858
*/
5959
double dmlib_color::calculatePerceivedLightness(COLORREF clr) noexcept
6060
{
61-
auto linearValue = [](double colorChannel) noexcept -> double
61+
auto linearValue = [](double colorChannel) noexcept
6262
{
6363
colorChannel /= 255.0;
6464

0 commit comments

Comments
 (0)