aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java')
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java48
1 files changed, 30 insertions, 18 deletions
diff --git a/libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java b/libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java
index ee051451026..d130c117560 100644
--- a/libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java
+++ b/libjava/gnu/java/awt/peer/gtk/GdkFontPeer.java
@@ -1,5 +1,5 @@
/* GdkFontPeer.java -- Implements FontPeer with GTK+
- Copyright (C) 1999, 2004 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
@@ -37,24 +37,25 @@ exception statement from your version. */
package gnu.java.awt.peer.gtk;
-import java.awt.peer.FontPeer;
-import java.awt.*;
-import java.awt.geom.*;
-import java.awt.font.*;
+
+import gnu.classpath.Configuration;
+import gnu.java.awt.peer.ClasspathFontPeer;
+
+import java.awt.Font;
+import java.awt.FontMetrics;
+import java.awt.font.FontRenderContext;
+import java.awt.font.GlyphVector;
+import java.awt.font.LineMetrics;
+import java.awt.geom.Rectangle2D;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
-import java.util.MissingResourceException;
-import java.text.CharacterIterator;
-import java.text.AttributedCharacterIterator;
-import java.text.StringCharacterIterator;
-import gnu.classpath.Configuration;
-import gnu.java.awt.peer.ClasspathFontPeer;
public class GdkFontPeer extends ClasspathFontPeer
{
-
- native static void initStaticState ();
+ static native void initStaticState();
private final int native_state = GtkGenericPeer.getUniqueInteger ();
private static ResourceBundle bundle;
@@ -81,6 +82,9 @@ public class GdkFontPeer extends ClasspathFontPeer
private native void dispose ();
private native void setFont (String family, int style, int size, boolean useGraphics2D);
+ native void getFontMetrics(double [] metrics);
+ native void getTextMetrics(String str, double [] metrics);
+
protected void finalize ()
{
if (GtkToolkit.useGraphics2D ())
@@ -158,26 +162,33 @@ public class GdkFontPeer extends ClasspathFontPeer
public boolean canDisplay (Font font, char c)
{
- throw new UnsupportedOperationException ();
+ // FIXME: inquire with pango
+ return true;
}
public int canDisplayUpTo (Font font, CharacterIterator i, int start, int limit)
{
- throw new UnsupportedOperationException ();
+ // FIXME: inquire with pango
+ return -1;
}
+
+ private native GdkGlyphVector getGlyphVector(String txt,
+ Font f,
+ FontRenderContext ctx);
public GlyphVector createGlyphVector (Font font,
FontRenderContext ctx,
CharacterIterator i)
{
- return new GdkGlyphVector(font, this, ctx, buildString (i));
+ return getGlyphVector(buildString (i), font, ctx);
}
public GlyphVector createGlyphVector (Font font,
FontRenderContext ctx,
int[] glyphCodes)
{
- return new GdkGlyphVector (font, this, ctx, glyphCodes);
+ return null;
+ // return new GdkGlyphVector (font, this, ctx, glyphCodes);
}
public byte getBaselineFor (Font font, char c)
@@ -259,7 +270,8 @@ public class GdkFontPeer extends ClasspathFontPeer
public Rectangle2D getStringBounds (Font font, CharacterIterator ci,
int begin, int limit, FontRenderContext frc)
{
- throw new UnsupportedOperationException ();
+ GdkGlyphVector gv = getGlyphVector(buildString (ci, begin, limit), font, frc);
+ return gv.getVisualBounds();
}
public boolean hasUniformLineMetrics (Font font)