Mercurial > hg > svcore
changeset 1883:e5d0ea9ac8f1
OK I give in, we are going to have to put this in a separate DLL so we can deploy a version on Win7 that doesn't have the WinRT dependency
author | Chris Cannam |
---|---|
date | Tue, 21 Jul 2020 13:59:14 +0100 |
parents | 5671836cdac7 |
children | bdab3a921d5d |
files | files.pri system/System.cpp system/System.h system/os-other.cpp system/os-win10.cpp |
diffstat | 5 files changed, 74 insertions(+), 46 deletions(-) [+] |
line wrap: on
line diff
--- a/files.pri Thu Jun 25 12:20:20 2020 +0100 +++ b/files.pri Tue Jul 21 13:59:14 2020 +0100 @@ -253,6 +253,7 @@ rdf/RDFTransformFactory.cpp \ system/Init.cpp \ system/System.cpp \ + system/os-other.cpp \ transform/CSVFeatureWriter.cpp \ transform/FeatureExtractionModelTransformer.cpp \ transform/FileFeatureWriter.cpp \
--- a/system/System.cpp Thu Jun 25 12:20:20 2020 +0100 +++ b/system/System.cpp Tue Jul 21 13:59:14 2020 +0100 @@ -27,12 +27,6 @@ #include <unistd.h> #endif -#ifndef AVOID_WINRT_DEPENDENCY -#ifdef _MSC_VER -#include <winrt/Windows.UI.ViewManagement.h> -#endif -#endif - #ifdef __APPLE__ #include <sys/param.h> #include <sys/sysctl.h> @@ -340,45 +334,6 @@ } } -bool -OSReportsDarkThemeActive() -{ -#ifndef AVOID_WINRT_DEPENDENCY -#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 -#endif - return false; -} - -bool -OSQueryAccentColour(int &r, int &g, int &b) -{ - SVCERR << "OSQueryAccentColour() called" << endl; -#ifndef AVOID_WINRT_DEPENDENCY -#ifdef _MSC_VER - using namespace winrt::Windows::UI::ViewManagement; - bool dark = OSReportsDarkThemeActive(); - UISettings settings; - auto accent = settings.GetColorValue - (dark ? UIColorType::AccentLight1 : UIColorType::Accent); - r = accent.R; - g = accent.G; - b = accent.B; - return true; -#endif -#endif - (void)r; - (void)g; - (void)b; - 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)); }
--- a/system/System.h Thu Jun 25 12:20:20 2020 +0100 +++ b/system/System.h Tue Jul 21 13:59:14 2020 +0100 @@ -163,6 +163,8 @@ // if unknown. (Hence signed return type) extern ssize_t GetDiscSpaceMBAvailable(const char *path); +extern "C" { + // 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. @@ -172,7 +174,9 @@ // the current theme; if so, also return by reference the r, g, and b // components of the colour (range 0-255). Return false if we can't // query such a thing. -extern bool OSQueryAccentColour(int &r, int &g, int &b); +extern bool OSQueryAccentColour(int *r, int *g, int *b); + +} extern void StoreStartupLocale(); extern void RestoreStartupLocale();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system/os-other.cpp Tue Jul 21 13:59:14 2020 +0100 @@ -0,0 +1,19 @@ + +extern "C" { + +bool +OSReportsDarkThemeActive() +{ + return false; +} + +bool +OSQueryAccentColour(int &r, int &g, int &b) +{ + (void)r; + (void)g; + (void)b; + return false; +} + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system/os-win10.cpp Tue Jul 21 13:59:14 2020 +0100 @@ -0,0 +1,49 @@ + +#ifndef AVOID_WINRT_DEPENDENCY +#ifdef _MSC_VER +#include <winrt/Windows.UI.ViewManagement.h> +#endif +#endif + +extern "C" { + +bool +OSReportsDarkThemeActive() +{ +#ifndef AVOID_WINRT_DEPENDENCY +#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 +#endif + return false; +} + +bool +OSQueryAccentColour(int *r, int *g, int *b) +{ +#ifndef AVOID_WINRT_DEPENDENCY +#ifdef _MSC_VER + using namespace winrt::Windows::UI::ViewManagement; + bool dark = OSReportsDarkThemeActive(); + UISettings settings; + auto accent = settings.GetColorValue + (dark ? UIColorType::AccentLight1 : UIColorType::Accent); + *r = accent.R; + *g = accent.G; + *b = accent.B; + return true; +#endif +#endif + (void)r; + (void)g; + (void)b; + return false; +} + +} +