Mercurial > dwindows
diff android/dw.cpp @ 2637:22105f99dd6a
Android: Add support for transparent background color for text drawing.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 11 Aug 2021 23:24:06 +0000 |
parents | 3d20fcfd8583 |
children | 7101b5692601 |
line wrap: on
line diff
--- a/android/dw.cpp Wed Aug 11 20:32:13 2021 +0000 +++ b/android/dw.cpp Wed Aug 11 23:24:06 2021 +0000 @@ -178,7 +178,7 @@ pthread_key_create(&_dw_fgcolor_key, nullptr); pthread_setspecific(_dw_fgcolor_key, nullptr); pthread_key_create(&_dw_bgcolor_key, nullptr); - pthread_setspecific(_dw_bgcolor_key, nullptr); + pthread_setspecific(_dw_bgcolor_key, (void *)DW_RGB_TRANSPARENT); /* Create the dwmain event */ _dw_main_event = dw_event_new(); @@ -842,6 +842,10 @@ { return _dw_colors[thiscolor]; } + else if(thiscolor == DW_RGB_TRANSPARENT) + { + return -1; + } return 0; } @@ -2849,7 +2853,7 @@ */ void API dw_color_foreground_set(unsigned long value) { - pthread_setspecific(_dw_fgcolor_key, (void *)_dw_get_color(value)); + pthread_setspecific(_dw_fgcolor_key, (void *)value); } /* Sets the current background drawing color. @@ -2860,7 +2864,7 @@ */ void API dw_color_background_set(unsigned long value) { - pthread_setspecific(_dw_bgcolor_key, (void *)_dw_get_color(value)); + pthread_setspecific(_dw_bgcolor_key, (void *)value); } /* Allows the user to choose a color using the system's color chooser dialog. @@ -2887,8 +2891,8 @@ if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { - jlong fgcolor = (jlong)pthread_getspecific(_dw_fgcolor_key); - jlong bgcolor = (jlong)pthread_getspecific(_dw_bgcolor_key); + jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); + jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); // First get the class that contains the method you need to call jclass clazz = _dw_find_class(env, DW_CLASS_NAME); @@ -2916,8 +2920,8 @@ if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { - jlong fgcolor = (jlong)pthread_getspecific(_dw_fgcolor_key); - jlong bgcolor = (jlong)pthread_getspecific(_dw_bgcolor_key); + jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); + jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); // First get the class that contains the method you need to call jclass clazz = _dw_find_class(env, DW_CLASS_NAME); @@ -2944,8 +2948,8 @@ if((handle || pixmap) && text && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { - jlong fgcolor = (jlong)pthread_getspecific(_dw_fgcolor_key); - jlong bgcolor = (jlong)pthread_getspecific(_dw_bgcolor_key); + jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); + jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); // Construct the string jstring jstr = env->NewStringUTF(text); @@ -3016,8 +3020,8 @@ if(jx && jy) { - jlong fgcolor = (jlong)pthread_getspecific(_dw_fgcolor_key); - jlong bgcolor = (jlong)pthread_getspecific(_dw_bgcolor_key); + jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); + jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); // Construct the integer arrays env->SetIntArrayRegion(jx, 0, npoints, x); @@ -3050,8 +3054,8 @@ if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { - jlong fgcolor = (jlong)pthread_getspecific(_dw_fgcolor_key); - jlong bgcolor = (jlong)pthread_getspecific(_dw_bgcolor_key); + jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); + jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); // First get the class that contains the method you need to call jclass clazz = _dw_find_class(env, DW_CLASS_NAME); @@ -3083,8 +3087,8 @@ if((handle || pixmap) && (env = (JNIEnv *)pthread_getspecific(_dw_env_key))) { - jlong fgcolor = (jlong)pthread_getspecific(_dw_fgcolor_key); - jlong bgcolor = (jlong)pthread_getspecific(_dw_bgcolor_key); + jlong fgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_fgcolor_key)); + jlong bgcolor = _dw_get_color((unsigned long)pthread_getspecific(_dw_bgcolor_key)); // First get the class that contains the method you need to call jclass clazz = _dw_find_class(env, DW_CLASS_NAME); @@ -6857,7 +6861,7 @@ _dw_jvm->AttachCurrentThread(&env, nullptr); pthread_setspecific(_dw_env_key, env); pthread_setspecific(_dw_fgcolor_key, nullptr); - pthread_setspecific(_dw_bgcolor_key, nullptr); + pthread_setspecific(_dw_bgcolor_key, (void *)DW_RGB_TRANSPARENT); } /*