From ab2eb9b73f7643fa579810abc5d2c422525b1362 Mon Sep 17 00:00:00 2001 From: Sven Gothel <sgothel@jausoft.com> Date: Tue, 15 May 2012 17:48:15 +0200 Subject: graph/font: Add "public float getAdvanceWidth(int i, float pixelSize);" Font::getAdvancedWidth(..) allows applications to query a glyphs width with a given pixel size, as it is being used for rendering. --- src/jogl/classes/com/jogamp/graph/font/Font.java | 1 + src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java | 5 +++++ src/jogl/classes/jogamp/graph/font/typecast/TypecastRenderer.java | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src/jogl') diff --git a/src/jogl/classes/com/jogamp/graph/font/Font.java b/src/jogl/classes/com/jogamp/graph/font/Font.java index c60d0cc2a..e2b3fe5d7 100644 --- a/src/jogl/classes/com/jogamp/graph/font/Font.java +++ b/src/jogl/classes/com/jogamp/graph/font/Font.java @@ -97,6 +97,7 @@ public interface Font { public StringBuilder getAllNames(StringBuilder string, String separator); + public float getAdvanceWidth(int i, float pixelSize); public Metrics getMetrics(); public Glyph getGlyph(char symbol); public int getNumGlyphs(); diff --git a/src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java b/src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java index 8806f537d..8e465de99 100644 --- a/src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java +++ b/src/jogl/classes/jogamp/graph/font/typecast/TypecastFont.java @@ -44,6 +44,7 @@ import com.jogamp.common.util.IntObjectHashMap; import com.jogamp.graph.curve.OutlineShape; import com.jogamp.graph.font.Font; import com.jogamp.graph.font.FontFactory; +import com.jogamp.graph.font.Font.Glyph; import com.jogamp.graph.geom.AABBox; import com.jogamp.graph.geom.Vertex; import com.jogamp.graph.geom.Vertex.Factory; @@ -162,6 +163,10 @@ class TypecastFont implements FontInt { return sb; } + public float getAdvanceWidth(int i, float pixelSize) { + return font.getHmtxTable().getAdvanceWidth(i) * metrics.getScale(pixelSize); + } + public Metrics getMetrics() { if (metrics == null) { metrics = new TypecastHMetrics(this); diff --git a/src/jogl/classes/jogamp/graph/font/typecast/TypecastRenderer.java b/src/jogl/classes/jogamp/graph/font/typecast/TypecastRenderer.java index 6baaf5afb..916c7b4d8 100644 --- a/src/jogl/classes/jogamp/graph/font/typecast/TypecastRenderer.java +++ b/src/jogl/classes/jogamp/graph/font/typecast/TypecastRenderer.java @@ -77,7 +77,7 @@ public class TypecastRenderer { advanceTotal = 0; continue; } else if (character == ' ') { - advanceTotal += font.font.getHmtxTable().getAdvanceWidth(Glyph.ID_SPACE) * metrics.getScale(pixelSize); + advanceTotal += font.getAdvanceWidth(Glyph.ID_SPACE, pixelSize); continue; } Glyph glyph = font.getGlyph(character); -- cgit v1.2.3