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;