aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/org
diff options
context:
space:
mode:
authorAdrian Cumiskey <acumiskey@apache.org>2008-11-05 10:28:26 +0000
committerAdrian Cumiskey <acumiskey@apache.org>2008-11-05 10:28:26 +0000
commit6bfc5fa86ea789899a75a8706cd1270aeecd95fe (patch)
treeef9f0c1f89fa563ee7aa18b0b8ab9bf7c923225e /src/java/org
parente4de9639e4759965d90070b010d5fd80f919c7bc (diff)
downloadxmlgraphics-fop-6bfc5fa86ea789899a75a8706cd1270aeecd95fe.tar.gz
xmlgraphics-fop-6bfc5fa86ea789899a75a8706cd1270aeecd95fe.zip
GOCA Text painting positional fix.
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_AFPGOCAResources@711550 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/java/org')
-rw-r--r--src/java/org/apache/fop/afp/AFPTextHandler.java30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/java/org/apache/fop/afp/AFPTextHandler.java b/src/java/org/apache/fop/afp/AFPTextHandler.java
index 3f5ff7b33..be6aba51c 100644
--- a/src/java/org/apache/fop/afp/AFPTextHandler.java
+++ b/src/java/org/apache/fop/afp/AFPTextHandler.java
@@ -20,6 +20,7 @@
package org.apache.fop.afp;
import java.awt.Color;
+import java.awt.geom.AffineTransform;
import java.io.IOException;
import org.apache.commons.logging.Log;
@@ -40,6 +41,9 @@ public class AFPTextHandler implements TextHandler {
/** logging instance */
private static Log log = LogFactory.getLog(AFPTextHandler.class);
+ private static final int X = 0;
+ private static final int Y = 1;
+
private AFPGraphics2D g2d = null;
/** Overriding FontState */
@@ -47,7 +51,7 @@ public class AFPTextHandler implements TextHandler {
/**
* Main constructor.
- * @param g2d the PSGraphics2D instance this instances is used by
+ * @param g2d the AFPGraphics2D instance
*/
public AFPTextHandler(AFPGraphics2D g2d) {
this.g2d = g2d;
@@ -55,6 +59,7 @@ public class AFPTextHandler implements TextHandler {
/**
* Return the font information associated with this object
+ *
* @return the FontInfo object
*/
public FontInfo getFontInfo() {
@@ -64,23 +69,24 @@ public class AFPTextHandler implements TextHandler {
/**
* Add a text string to the current data object of the AFP datastream.
* The text is painted using text operations.
+ *
* {@inheritDoc}
*/
public void drawString(String str, float x, float y) throws IOException {
log.debug("drawString() str=" + str + ", x=" + x + ", y=" + y);
GraphicsObject graphicsObj = g2d.getGraphicsObject();
- Color col = g2d.getColor();
+ Color color = g2d.getColor();
- AFPPaintingState state = g2d.getPaintingState();
- if (state.setColor(col)) {
- graphicsObj.setColor(col);
+ AFPPaintingState paintingState = g2d.getPaintingState();
+ if (paintingState.setColor(color)) {
+ graphicsObj.setColor(color);
}
if (overrideFont != null) {
FontInfo fontInfo = getFontInfo();
- AFPPageFonts pageFonts = state.getPageFonts();
+ AFPPageFonts pageFonts = paintingState.getPageFonts();
String internalFontName = overrideFont.getFontName();
int fontSize = overrideFont.getFontSize();
- if (state.setFontName(internalFontName) || state.setFontSize(fontSize)) {
+ if (paintingState.setFontName(internalFontName) || paintingState.setFontSize(fontSize)) {
AFPFont font = (AFPFont)fontInfo.getFonts().get(internalFontName);
AFPFontAttributes afpFontAttributes = pageFonts.registerFont(
internalFontName,
@@ -91,11 +97,19 @@ public class AFPTextHandler implements TextHandler {
graphicsObj.setCharacterSet(fontReference);
}
}
- graphicsObj.addString(str, Math.round(x), Math.round(y));
+
+ // calculate x, y plotting coordinates from graphics context
+ AffineTransform at = g2d.getTransform();
+ float[] srcPts = new float[] { x, y };
+ float[] dstPts = new float[srcPts.length];
+ at.transform(srcPts, 0, dstPts, 0, 1);
+
+ graphicsObj.addString(str, Math.round(dstPts[X]), Math.round(dstPts[Y]));
}
/**
* Sets the overriding font.
+ *
* @param overrideFont Overriding Font to set
*/
public void setOverrideFont(Font overrideFont) {