summaryrefslogtreecommitdiff
path: root/gnu/java/awt/peer/gtk/GtkToolkit.java
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2006-11-21 14:14:25 +0000
committerRoman Kennke <roman@kennke.org>2006-11-21 14:14:25 +0000
commitc768f6ecd4c053662755ce4f402c8a03edcfce28 (patch)
treee713ddc7bf2b0bae9b33932bdd13c915c8015bb5 /gnu/java/awt/peer/gtk/GtkToolkit.java
parentafa8741b4c8ea8cc833faffad70aca7b67bd9bb5 (diff)
downloadclasspath-c768f6ecd4c053662755ce4f402c8a03edcfce28.tar.gz
2006-11-21 Roman Kennke <kennke@aicas.com>
* gnu/java/awt/peer/gtk/GdkFontMetrics.java: Removed. This is now an inner class in GdkFontPeer. * gnu/java/awt/peer/gtk/CairoGraphics2D.java (drawString(float,float)): Use text layout cache from GdkFontPeer. (getFontMetrics): Delegate to GdkFontPeer. * gnu/java/awt/peer/gtk/FreetypeGlyphVector.java (getGlyphCodes): Also check array size. (getGlyphPositions): Also check array size. * gnu/java/awt/peer/gtk/GdkFontPeer.java (GdkFontLineMetrics.fm): Removed. (GdkFontLineMetrics.strikeThroughOffset): Removed. (GdkFontLineMetrics.strikeThroughThickness): Removed. (GdkFontLineMetrics.underlineOffset): Removed. (GdkFontLineMetrics.underlineThickness): Removed. (GdkFontLineMetrics.GdkFontLineMetrics): Don't take FontMetrics argument. Don't init removed fields. (GdkFontLineMetrics.getAscent): Return font peer's field. (GdkFontLineMetrics.getDescent): Return font peer's field. (GdkFontLineMetrics.getHeight): Return font peer's field. (GdkFontLineMetrics.getLeading): Return font peer's field. (GdkFontLineMetrics.getNumChars): Reformat. (GdkFontLineMetrics.getStrikeThroughOffset): Return half ascent. (GdkFontLineMetrics.getStrikeThroughThickness): Return 1. (GdkFontLineMetrics.getUnderlineOffset): Return font peer's field. (GdkFontLineMetrics.getUnderlineThickness): Return font peer's field. (GdkFontMetrics): Moved class in here as inner class. Make it use the font peer's fields and for the char(s) width and string width method, use TextLayout to measure the actual widths. (ascent): New field. (bundle): Removed. (DEFAULT_CTX): New constant field. (descent): New field. (FONT_METRICS_ASCENT): New constant. (FONT_METRICS_DESCENT): New constant. (FONT_METRICS_HEIGHT): New constant. (FONT_METRICS_MAX_ADVANCE): New constant. (FONT_METRICS_MAX_ASCENT): New constant. (FONT_METRICS_MAX_DESCENT): New constant. (FONT_METRICS_UNDERLINE_OFFSET): New constant. (FONT_METRICS_UNDERLINE_THICKNESS): New constant. (height): New field. (maxAdvance): New field. (maxAscent): New field. (maxDescent): New field. (metrics): New field. Stores a FontMetrics for this font. (textLayoutCache): New field. Caches TextLayout instances. (underlineOffset): New field. (underlineThickness): New field. (cinit): Don't initialize resource bundle. (GdkFontPeer): Setup the metrics. (getFontMetrics): Return stored metrics if possible. (getLineMetrics): Adapt to new constructor. (initFont): New helper method. (setupMetrics): New helper method. * gnu/java/awt/peer/gtk/GtkToolkit.java (LRUCache): Made class a static class. (getFontMetrics): Delegate to GdkFontPeer. * native/jni/gtk-peer/gdkfont.h Added new constant defines. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c (getFontMetrics): Rewritten to fetch the font metrics from FreeType.
Diffstat (limited to 'gnu/java/awt/peer/gtk/GtkToolkit.java')
-rw-r--r--gnu/java/awt/peer/gtk/GtkToolkit.java17
1 files changed, 2 insertions, 15 deletions
diff --git a/gnu/java/awt/peer/gtk/GtkToolkit.java b/gnu/java/awt/peer/gtk/GtkToolkit.java
index d2721b43f..81367d6b0 100644
--- a/gnu/java/awt/peer/gtk/GtkToolkit.java
+++ b/gnu/java/awt/peer/gtk/GtkToolkit.java
@@ -115,7 +115,6 @@ import java.awt.peer.WindowPeer;
import java.io.InputStream;
import java.net.URL;
import java.util.HashMap;
-import java.util.Hashtable;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
@@ -295,7 +294,7 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
"SansSerif" });
}
- private class LRUCache extends LinkedHashMap
+ static class LRUCache extends LinkedHashMap
{
int max_entries;
public LRUCache(int max)
@@ -310,23 +309,11 @@ public class GtkToolkit extends gnu.java.awt.ClasspathToolkit
}
private LRUCache fontCache = new LRUCache(50);
- private LRUCache metricsCache = new LRUCache(50);
private LRUCache imageCache = new LRUCache(50);
public FontMetrics getFontMetrics (Font font)
{
- synchronized (metricsCache)
- {
- if (metricsCache.containsKey(font))
- return (FontMetrics) metricsCache.get(font);
- }
-
- FontMetrics m = new GdkFontMetrics (font);
- synchronized (metricsCache)
- {
- metricsCache.put(font, m);
- }
- return m;
+ return ((GdkFontPeer) font.getPeer()).getFontMetrics(font);
}
public Image getImage (String filename)