# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1638562873 0 # Node ID 26bb1e4a97d078d12c7061667e3de968379d799e # Parent 6594bb323ab5d1b2d068f721324721f8db9f50e9 Android: Add glue to bring up the color wheel when calling dw_color_choose(). diff -r 6594bb323ab5 -r 26bb1e4a97d0 android/DWindows.kt --- a/android/DWindows.kt Fri Dec 03 00:00:28 2021 +0000 +++ b/android/DWindows.kt Fri Dec 03 20:21:13 2021 +0000 @@ -5071,6 +5071,23 @@ return retval } + fun colorChoose(color: Int, alpha: Int, red: Int, green: Int, blue: Int): Int + { + var retval: Int = 0 + + waitOnUiThread { + val dialog = Dialog(this) + val colorWheel = ColorWheel(this, null, 0) + + dialog.setContentView(colorWheel) + colorWheel.rgb = Color.rgb(red, green, blue) + dialog.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) + dialog.show() + retval = colorWheel.rgb + } + return retval + } + fun messageBox(title: String, body: String, flags: Int): Int { var retval = 0 diff -r 6594bb323ab5 -r 26bb1e4a97d0 android/dw.cpp --- a/android/dw.cpp Fri Dec 03 00:00:28 2021 +0000 +++ b/android/dw.cpp Fri Dec 03 20:21:13 2021 +0000 @@ -2966,8 +2966,25 @@ */ unsigned long API dw_color_choose(unsigned long value) { - /* TODO: Implement this */ - return value; + JNIEnv *env; + unsigned long newcolor = value; + + if((env = (JNIEnv *)pthread_getspecific(_dw_env_key))) + { + unsigned long _value = _dw_get_color(value); + + // First get the class that contains the method you need to call + jclass clazz = _dw_find_class(env, DW_CLASS_NAME); + // Get the method that you want to call + jmethodID colorChoose = env->GetMethodID(clazz, "colorChoose", + "(IIIII)I"); + // Call the method on the object + newcolor = (unsigned long)env->CallIntMethod(_dw_obj, colorChoose, (jint)value, 0, + (jint)DW_RED_VALUE(_value), (jint)DW_GREEN_VALUE(_value), (jint)DW_BLUE_VALUE(_value)); + if(!_dw_jni_check_exception(env)) + return value; + } + return newcolor; } /* Draw a point on a window (preferably a render window).