summaryrefslogtreecommitdiffstats
path: root/platform/android/java_godot_wrapper.cpp
diff options
context:
space:
mode:
authorThaddeus Crews <repiteo@outlook.com>2024-11-04 21:52:04 -0600
committerThaddeus Crews <repiteo@outlook.com>2024-11-04 21:52:04 -0600
commit7d950c15677b6c778294238ea29e00b6355cf931 (patch)
treea1dca2546b883526c815af7c0694f3ce352ffb15 /platform/android/java_godot_wrapper.cpp
parentef8aafc2dfba33e867f9b0b6e4be71a210daf78e (diff)
parent7b866f302ffbcdbacbc1d7fa0f280f2c36cfd481 (diff)
downloadredot-engine-7d950c15677b6c778294238ea29e00b6355cf931.tar.gz
Merge pull request #98712 from syntaxerror247/android_accent_color
[Android] Implement support for accent color retrieval
Diffstat (limited to 'platform/android/java_godot_wrapper.cpp')
-rw-r--r--platform/android/java_godot_wrapper.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/platform/android/java_godot_wrapper.cpp b/platform/android/java_godot_wrapper.cpp
index 2811182e29..5ecd789d43 100644
--- a/platform/android/java_godot_wrapper.cpp
+++ b/platform/android/java_godot_wrapper.cpp
@@ -64,6 +64,7 @@ GodotJavaWrapper::GodotJavaWrapper(JNIEnv *p_env, jobject p_activity, jobject p_
_alert = p_env->GetMethodID(godot_class, "alert", "(Ljava/lang/String;Ljava/lang/String;)V");
_is_dark_mode_supported = p_env->GetMethodID(godot_class, "isDarkModeSupported", "()Z");
_is_dark_mode = p_env->GetMethodID(godot_class, "isDarkMode", "()Z");
+ _get_accent_color = p_env->GetMethodID(godot_class, "getAccentColor", "()I");
_get_clipboard = p_env->GetMethodID(godot_class, "getClipboard", "()Ljava/lang/String;");
_set_clipboard = p_env->GetMethodID(godot_class, "setClipboard", "(Ljava/lang/String;)V");
_has_clipboard = p_env->GetMethodID(godot_class, "hasClipboard", "()Z");
@@ -214,6 +215,23 @@ bool GodotJavaWrapper::is_dark_mode() {
}
}
+Color GodotJavaWrapper::get_accent_color() {
+ if (_get_accent_color) {
+ JNIEnv *env = get_jni_env();
+ ERR_FAIL_NULL_V(env, Color(0, 0, 0, 0));
+ int accent_color = env->CallIntMethod(godot_instance, _get_accent_color);
+
+ // Convert ARGB to RGBA.
+ int alpha = (accent_color >> 24) & 0xFF;
+ int red = (accent_color >> 16) & 0xFF;
+ int green = (accent_color >> 8) & 0xFF;
+ int blue = accent_color & 0xFF;
+ return Color(red / 255.0f, green / 255.0f, blue / 255.0f, alpha / 255.0f);
+ } else {
+ return Color(0, 0, 0, 0);
+ }
+}
+
bool GodotJavaWrapper::has_get_clipboard() {
return _get_clipboard != nullptr;
}