You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by ar...@apache.org on 2001/02/11 01:48:17 UTC
cvs commit: xml-fop/src/org/apache/fop/render/pdf SVGRenderer.java
arved 01/02/10 16:48:17
Modified: src/org/apache/fop/render/pdf SVGRenderer.java
Log:
Patch for SVG viewbox
Revision Changes Path
1.6 +28 -11 xml-fop/src/org/apache/fop/render/pdf/SVGRenderer.java
Index: SVGRenderer.java
===================================================================
RCS file: /home/cvs/xml-fop/src/org/apache/fop/render/pdf/SVGRenderer.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SVGRenderer.java 2001/01/25 15:11:05 1.5
+++ SVGRenderer.java 2001/02/11 00:48:16 1.6
@@ -1,4 +1,4 @@
-/*-- $Id: SVGRenderer.java,v 1.5 2001/01/25 15:11:05 eschaeffer Exp $ --
+/*-- $Id: SVGRenderer.java,v 1.6 2001/02/11 00:48:16 arved Exp $ --
============================================================================
The Apache Software License, Version 1.1
@@ -2144,15 +2144,6 @@
public void renderText(SVGTextElementImpl tg, float x, float y,
DrawingInstruction di) {
SVGTextRenderer str = new SVGTextRenderer(fontState, tg, x, y);
- if (di.fill) {
- if (di.stroke) {
- currentStream.write("2 Tr\n");
- } else {
- currentStream.write("0 Tr\n");
- }
- } else if (di.stroke) {
- currentStream.write("1 Tr\n");
- }
str.renderText(tg);
}
@@ -2300,6 +2291,32 @@
}
void renderText(SVGTextElementImpl te) {
+ float xoffset = 0;
+
+ if (te.anchor.getEnum() != TextAnchor.START) {
+ // This is a bit of a hack: The code below will update
+ // the current position, so all I have to do is to
+ // prevent that the code will write anything to the
+ // PDF stream...
+ StringWriter oldStream = currentStream;
+ currentStream = new StringWriter ();
+
+ _renderText (te, 0f, true);
+
+ float width = currentX - te.x;
+ currentStream = oldStream;
+
+ if (te.anchor.getEnum() == TextAnchor.END) {
+ xoffset = -width;
+ } else if (te.anchor.getEnum() == TextAnchor.MIDDLE) {
+ xoffset = -width/2;
+ }
+ }
+
+ _renderText (te, xoffset, false);
+ }
+
+ void _renderText(SVGTextElementImpl te, float xoffset, boolean getWidthOnly) {
DrawingInstruction di = applyStyle(te, te);
if (di.fill) {
if (di.stroke) {
@@ -2314,7 +2331,7 @@
float tx = te.x;
float ty = te.y;
- currentX = x + tx;
+ currentX = x + tx + xoffset;
currentY = y + ty;
baseX = currentX;
baseY = currentY;