diff system/System.cpp @ 1818:c5ee0746bdef background-mode

Determine whether a dark background is indicated
author Chris Cannam
date Fri, 17 Jan 2020 21:36:07 +0000
parents 85903b0e9b42
children 4eda6ba5b5d8
line wrap: on
line diff
--- 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 <unistd.h>
 #endif
 
+#ifdef _MSC_VER
+#include <winrt/Windows.UI.ViewManagement.h>
+#endif
+
 #ifdef __APPLE__
 #include <sys/param.h>
 #include <sys/sysctl.h>
@@ -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)); }