--- /dev/null
+// Copyright 2003 Adam Megacz, see the COPYING file for licensing [GPL]
+package org.xwt;
+import org.xwt.translators.*;
+
+public class Glyph {
+ char c;
+ int line_height; // same value for every glyph in font; the max height of all chars
+ int baseline; // within the picture, this is the y-coordinate of the baseline
+ int advance; // amount to increment the x-coordinate
+ Picture p;
+
+ // k1=font.res k2=(c << 16 | pointsize)
+ private static Cache glyphCache = new Cache();
+
+ public static Glyph getGlyph(Res res, int pointsize, char c) {
+ Glyph ret = (Glyph)glyphCache.get(res, new Integer((((int)c) << 16) | pointsize));
+ if (ret != null) return ret;
+
+ // FEATURE: be smarter here
+ if (c < 256)
+ org.xwt.translators.Font.renderGlyphs(res, pointsize, 0, 255, glyphCache);
+ else
+ org.xwt.translators.Font.renderGlyphs(res, pointsize, (int)c, (int)c, glyphCache);
+
+ ret = (Glyph)glyphCache.get(res, new Integer((((int)c) << 16) | pointsize));
+ if (ret != null) return ret;
+ throw new RuntimeException("renderGlyphs didn't create the glyph we wanted");
+ }
+}