summaryrefslogtreecommitdiffstats
path: root/libjava
diff options
context:
space:
mode:
authorfitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4>2003-08-22 20:33:50 +0000
committerfitzsim <fitzsim@138bc75d-0d04-0410-961f-82ee72b054a4>2003-08-22 20:33:50 +0000
commit379042cba43f39171cd2106503cbaa21453b5ec2 (patch)
tree2659c867c2e81ee9fa4fb77239ed3b3ce2f03896 /libjava
parent931ce09a7696b1fe7c6c9d7de46d7a4750c171db (diff)
downloadppe42-gcc-379042cba43f39171cd2106503cbaa21453b5ec2.tar.gz
ppe42-gcc-379042cba43f39171cd2106503cbaa21453b5ec2.zip
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@70698 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog8
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GdkGraphics.java3
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkGraphics.c33
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkCanvasPeer.c2
4 files changed, 33 insertions, 13 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 161c2d38df9..bc0066d3f0e 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 8e8ee57c154..9012da23cce 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 2c574942b21..24b8f4e8c07 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 cc7cfb8fd30..6559c5baf70 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 ();
OpenPOWER on IntegriCloud