diff system/os-win10.cpp @ 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
children
line wrap: on
line diff
--- /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;
+}
+
+}
+