# HG changeset patch # User Chris Cannam # Date 1579296967 0 # Node ID c5ee0746bdefdeb79260df85886f8685c9da1998 # Parent 23d5cb3f9f381c859df8253f62a0bbd0065b8408 Determine whether a dark background is indicated diff -r 23d5cb3f9f38 -r c5ee0746bdef system/System.cpp --- a/system/System.cpp Tue Jan 14 15:48:22 2020 +0000 +++ b/system/System.cpp Fri Jan 17 21:36:07 2020 +0000 @@ -27,6 +27,10 @@ #include #endif +#ifdef _MSC_VER +#include +#endif + #ifdef __APPLE__ #include #include @@ -334,6 +338,21 @@ } } +bool +OSThemeIsDark() +{ + SVCERR << "OSThemeIsDark() called" << endl; +#ifdef _MSC_VER + using namespace winrt::Windows::UI::ViewManagement; + UISettings settings; + auto background = settings.GetColorValue(UIColorType::Background); + if (int(background.R) + int(background.G) + int(background.B) < 384) { + return true; + } +#endif + return false; +} + double mod(double x, double y) { return x - (y * floor(x / y)); } float modf(float x, float y) { return x - (y * floorf(x / y)); } diff -r 23d5cb3f9f38 -r c5ee0746bdef system/System.h --- a/system/System.h Tue Jan 14 15:48:22 2020 +0000 +++ b/system/System.h Fri Jan 17 21:36:07 2020 +0000 @@ -163,6 +163,11 @@ // if unknown. (Hence signed return type) extern ssize_t GetDiscSpaceMBAvailable(const char *path); +// Return true if the OS desktop is set to use a dark mode +// theme. Return false if it is set to a light theme or if the theme +// is unknown. +extern bool OSThemeIsDark(); + extern void StoreStartupLocale(); extern void RestoreStartupLocale();