JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_setText (JNIEnv *env, jobject self, jstring text) { struct textlayout *tl; gchar *str = NULL; gint len = 0; gdk_threads_enter (); g_assert(self != NULL); g_assert(text != NULL); tl = (struct textlayout *)NSA_GET_TEXT_LAYOUT_PTR (env, self); g_assert(tl != NULL); g_assert(tl->pango_layout != NULL); len = (*env)->GetStringUTFLength (env, text); str = (gchar *)(*env)->GetStringUTFChars (env, text, NULL); g_assert (str != NULL); pango_layout_set_text (tl->pango_layout, text, len); (*env)->ReleaseStringUTFChars (env, text, str); gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_indexToPos (JNIEnv *env, jobject self, jint idx, jdoubleArray javaPos) { struct textlayout *tl; PangoRectangle pangoPos; jdouble *nativePos; gdk_threads_enter (); g_assert(self != NULL); g_assert(javaPos != NULL); tl = (struct textlayout *)NSA_GET_TEXT_LAYOUT_PTR (env, self); g_assert(tl != NULL); g_assert(tl->pango_layout != NULL); g_assert((*env)->GetArrayLength (env, javaPos) == 4); nativePos = (*env)->GetDoubleArrayElements (env, javaPos, NULL); pango_layout_index_to_pos (tl->pango_layout, idx, &pangoPos); nativePos[0] = (jdouble) pangoPos.x; nativePos[1] = (jdouble) pangoPos.y; nativePos[2] = (jdouble) pangoPos.width; nativePos[3] = (jdouble) pangoPos.height; (*env)->ReleaseDoubleArrayElements (env, javaPos, nativePos, 0); gdk_threads_leave (); }
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkTextLayout_getExtents (JNIEnv *env, jobject self, jdoubleArray javaInkExtents, jdoubleArray javaLogExtents) { struct textlayout *tl; PangoRectangle pangoInkExtents, pangoLogExtents; jdouble *nativeInkExtents, *nativeLogExtents; gdk_threads_enter (); g_assert(self != NULL); g_assert(javaInkExtents != NULL); g_assert(javaLogExtents != NULL); tl = (struct textlayout *)NSA_GET_TEXT_LAYOUT_PTR (env, self); g_assert(tl != NULL); g_assert(tl->pango_layout != NULL); g_assert((*env)->GetArrayLength (env, javaInkExtents) == 4); g_assert((*env)->GetArrayLength (env, javaLogExtents) == 4); nativeInkExtents = (*env)->GetDoubleArrayElements (env, javaInkExtents, NULL); nativeLogExtents = (*env)->GetDoubleArrayElements (env, javaLogExtents, NULL); pango_layout_get_extents (tl->pango_layout, &pangoInkExtents, &pangoLogExtents); nativeInkExtents[0] = (jdouble) pangoInkExtents.x; nativeInkExtents[1] = (jdouble) pangoInkExtents.y; nativeInkExtents[2] = (jdouble) pangoInkExtents.width; nativeInkExtents[3] = (jdouble) pangoInkExtents.height; nativeLogExtents[0] = (jdouble) pangoLogExtents.x; nativeLogExtents[1] = (jdouble) pangoLogExtents.y; nativeLogExtents[2] = (jdouble) pangoLogExtents.width; nativeLogExtents[3] = (jdouble) pangoLogExtents.height; (*env)->ReleaseDoubleArrayElements (env, javaInkExtents, nativeInkExtents, 0); (*env)->ReleaseDoubleArrayElements (env, javaLogExtents, nativeLogExtents, 0); gdk_threads_leave (); }