diff options
author | Thomas Fitzsimmons <fitzsim@redhat.com> | 2003-08-22 20:33:50 +0000 |
---|---|---|
committer | Thomas Fitzsimmons <fitzsim@gcc.gnu.org> | 2003-08-22 20:33:50 +0000 |
commit | 50fe737a03bcea7be0301b3debadb15af7aa54af (patch) | |
tree | 2659c867c2e81ee9fa4fb77239ed3b3ce2f03896 /libjava | |
parent | 376de22592739c19b0d81eb295afd29ca53362d1 (diff) | |
download | gcc-50fe737a03bcea7be0301b3debadb15af7aa54af.zip gcc-50fe737a03bcea7be0301b3debadb15af7aa54af.tar.gz gcc-50fe737a03bcea7be0301b3debadb15af7aa54af.tar.bz2 |
GdkGraphics.java (drawString): Pass font name, not XLFD, to native drawString.
2003-08-22 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GdkGraphics.java (drawString): Pass font
name, not XLFD, to native drawString.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (drawString):
Replace XLFD-based implementation with Pango-based
implementation.
From-SVN: r70698
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 8 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GdkGraphics.java | 3 | ||||
-rw-r--r-- | libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c | 33 | ||||
-rw-r--r-- | libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c | 2 |
4 files changed, 33 insertions, 13 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 161c2d3..bc0066d 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,13 @@ 2003-08-22 Thomas Fitzsimmons <fitzsim@redhat.com> + * gnu/java/awt/peer/gtk/GdkGraphics.java (drawString): Pass font + name, not XLFD, to native drawString. + * jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c (drawString): + Replace XLFD-based implementation with Pango-based + implementation. + +2003-08-22 Thomas Fitzsimmons <fitzsim@redhat.com> + * gnu/java/awt/peer/gtk/GtkWindowPeer.java: Remove GTK_WINDOW_DIALOG. Set GTK_WINDOW_POPUP to 1. diff --git a/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java b/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java index 8e8ee57..9012da2 100644 --- a/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java +++ b/libjava/gnu/java/awt/peer/gtk/GdkGraphics.java @@ -215,8 +215,7 @@ public class GdkGraphics extends Graphics native void drawString (String str, int x, int y, String fname, int size); public void drawString (String str, int x, int y) { - drawString (str, x, y, - ((GtkFontPeer)font.getPeer ()).getXLFD (), font.getSize ()); + drawString (str, x, y, font.getName(), font.getSize()); } public void drawString (AttributedCharacterIterator ci, int x, int y) diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c index 2c57494..24b8f4e 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c @@ -191,27 +191,40 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawString jstring fname, jint size) { struct graphics *g; - const char *cfname, *cstr; - gchar *xlfd; + const char *cstr; + const char *font_name; + PangoFontDescription *font_desc; + PangoContext *context; + PangoLayout *layout; g = (struct graphics *) NSA_GET_PTR (env, obj); - - cfname = (*env)->GetStringUTFChars (env, fname, NULL); - xlfd = g_strdup_printf (cfname, (size * 10)); - (*env)->ReleaseStringUTFChars (env, fname, cfname); cstr = (*env)->GetStringUTFChars (env, str, NULL); + font_name = (*env)->GetStringUTFChars (env, fname, NULL); gdk_threads_enter (); - gdk_draw_string (g->drawable, gdk_font_load (xlfd), g->gc, - x + g->x_offset, y + g->y_offset, cstr); + + font_desc = pango_font_description_from_string (font_name); + pango_font_description_set_size (font_desc, size * PANGO_SCALE); + + context = gdk_pango_context_get(); + pango_context_set_font_description (context, font_desc); + + layout = pango_layout_new (context); + + pango_layout_set_text (layout, cstr, -1); + + gdk_draw_layout (g->drawable, g->gc, + x + g->x_offset, y + g->y_offset, layout); + + pango_font_description_free (font_desc); + gdk_threads_leave (); + (*env)->ReleaseStringUTFChars (env, fname, font_name); (*env)->ReleaseStringUTFChars (env, str, cstr); - g_free (xlfd); } - JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GdkGraphics_drawLine (JNIEnv *env, jobject obj, jint x, jint y, jint x2, jint y2) { diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c index cc7cfb8..6559c5b 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c @@ -43,7 +43,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkCanvasPeer_create (JNIEnv *env, jobject obj) { gpointer widget; - + gdk_threads_enter (); widget = gtk_type_new (gtk_drawing_area_get_type ()); gdk_threads_leave (); |