Unverified Commit 27fcc1b3 authored by Nikolay Igotti's avatar Nikolay Igotti Committed by GitHub

Support getting of system theme. (#118)

parent a8fa8209
......@@ -7,10 +7,7 @@ import org.jetbrains.skija.paragraph.FontCollection
import org.jetbrains.skija.paragraph.ParagraphBuilder
import org.jetbrains.skija.paragraph.ParagraphStyle
import org.jetbrains.skija.paragraph.TextStyle
import org.jetbrains.skiko.SkiaLayer
import org.jetbrains.skiko.SkiaRenderer
import org.jetbrains.skiko.SkiaWindow
import org.jetbrains.skiko.toBufferedImage
import org.jetbrains.skiko.*
import java.awt.Dimension
import java.awt.Toolkit
import java.awt.event.*
......@@ -198,7 +195,7 @@ fun displayScene(renderer: Renderer, width: Int, height: Int, nanoTime: Long, xp
val style = ParagraphStyle()
val paragraph = ParagraphBuilder(style, fontCollection)
.pushStyle(TextStyle().setColor(0xFF000000.toInt()))
.addText("Graphics API: ${renderer.layer.renderApi} ✿゚")
.addText("Graphics API: ${renderer.layer.renderApi} ✿゚ ${currentSystemTheme}")
.popStyle()
.build()
paragraph.layout(Float.POSITIVE_INFINITY)
......
......@@ -461,6 +461,7 @@ tasks.withType(LinkSharedLibrary::class.java).configureEach {
OS.Windows -> {
linkerArgs.addAll(
listOf(
"Advapi32.lib",
"gdi32.lib",
"Dwmapi.lib",
"opengl32.lib",
......
......@@ -60,4 +60,11 @@ extern "C"
JAWT_X11DrawingSurfaceInfo *dsi_x11 = fromJavaPointer<JAWT_X11DrawingSurfaceInfo *>(platformInfoPtr);
return (float) getDpiScaleByDisplay(dsi_x11->display);
}
JNIEXPORT jint JNICALL Java_org_jetbrains_skiko_SystemThemeKt_getCurrentSystemTheme(JNIEnv *env, jobject topLevel)
{
// Unknown.
return 2;
}
} // extern "C"
\ No newline at end of file
......@@ -27,4 +27,34 @@ extern "C"
JAWT_Win32DrawingSurfaceInfo* dsi_win = fromJavaPointer<JAWT_Win32DrawingSurfaceInfo *>(platformInfoPtr);
return (jlong) dsi_win->hwnd;
}
JNIEXPORT jint JNICALL Java_org_jetbrains_skiko_SystemThemeKt_getCurrentSystemTheme(JNIEnv *env, jobject topLevel)
{
auto subkey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize";
auto name = L"AppsUseLightTheme";
DWORD result;
DWORD result_length = sizeof(result);
auto status = RegGetValueW(
HKEY_CURRENT_USER,
subkey,
name,
RRF_RT_DWORD,
NULL,
&result,
&result_length
);
switch (status) {
case ERROR_SUCCESS:
if (result) {
// Light.
return 0;
} else {
// Dark.
return 1;
}
default:
// Unknown.
return 2;
}
}
} // extern "C"
\ No newline at end of file
package org.jetbrains.skiko
enum class SystemTheme {
DARK,
LIGHT,
UNKNOWN
}
val currentSystemTheme: SystemTheme
get() = when (getCurrentSystemTheme()) {
0 -> SystemTheme.LIGHT
1 -> SystemTheme.DARK
else -> SystemTheme.UNKNOWN
}
// Common
external private fun getCurrentSystemTheme(): Int
......@@ -191,6 +191,18 @@ JNIEXPORT void JNICALL Java_org_jetbrains_skiko_PlatformOperationsKt_osxDisableT
});
}
JNIEXPORT jint JNICALL Java_org_jetbrains_skiko_SystemThemeKt_getCurrentSystemTheme(JNIEnv *env, jobject topLevel)
{
NSString *osxMode = [[NSUserDefaults standardUserDefaults] stringForKey:@"AppleInterfaceStyle"];
if ([@"Dark" isEqualToString:osxMode]) {
// Dark.
return 1;
} else {
// Light.
return 0;
}
}
void getMetalDeviceAndQueue(void** device, void** queue)
{
id<MTLDevice> fDevice = MTLCreateSystemDefaultDevice();
......@@ -199,4 +211,6 @@ void getMetalDeviceAndQueue(void** device, void** queue)
*queue = (__bridge void*)fQueue;
}
} // extern C
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment