vhardy 01/10/01 05:37:10 Modified: sources/org/apache/batik/ext/awt/g2d TransformStackElement.java sources/org/apache/batik/svggen SVGTransform.java test-resources/org/apache/batik/svggen regsvggen.xml Added: test-sources/org/apache/batik/svggen IdentityTest.java test-references/org/apache/batik/svggen IdentityTest.svg Log: Fixed bug #3871. Added test case exercising bug and validating fix. No regression found in other SVGGraphics2D regression tests. Revision Changes Path 1.2 +52 -8 xml-batik/sources/org/apache/batik/ext/awt/g2d/TransformStackElement.java Index: TransformStackElement.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/ext/awt/g2d/TransformStackElement.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TransformStackElement.java 2001/03/14 01:36:09 1.1 +++ TransformStackElement.java 2001/10/01 12:37:10 1.2 @@ -16,9 +16,10 @@ * type and a value, which is an array of double values.<br> * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: TransformStackElement.java,v 1.1 2001/03/14 01:36:09 vhardy Exp $ + * @author <a href="mailto:[EMAIL PROTECTED]">Paul Evenblij</a> + * @version $Id: TransformStackElement.java,v 1.2 2001/10/01 12:37:10 vhardy Exp $ */ -public class TransformStackElement implements Cloneable{ +abstract public class TransformStackElement implements Cloneable{ /** * Transform type */ @@ -43,9 +44,18 @@ * @return an object which is a deep copy of this one */ public Object clone() { + TransformStackElement newElement = null; + + // start with a shallow copy to get our implementations right + try { + newElement = (TransformStackElement) super.clone(); + } catch(java.lang.CloneNotSupportedException ex) {} + + // now deep copy the parameter array double transformParameters[] = new double[this.transformParameters.length]; System.arraycopy(this.transformParameters, 0, transformParameters, 0, transformParameters.length); - return new TransformStackElement(type, transformParameters); + newElement.transformParameters = transformParameters; + return newElement; } /** @@ -61,25 +71,59 @@ */ public static TransformStackElement createTranslateElement(double tx, double ty){ - return new TransformStackElement(TransformType.TRANSLATE, new double[]{ tx, ty }); + return new TransformStackElement(TransformType.TRANSLATE, new double[]{ tx, ty }) { + boolean isIdentity(double[] parameters) { + return parameters[0] == 0 && parameters[1] == 0; + } + }; } public static TransformStackElement createRotateElement(double theta){ - return new TransformStackElement(TransformType.ROTATE, new double[]{ theta }); + return new TransformStackElement(TransformType.ROTATE, new double[]{ theta }) { + boolean isIdentity(double[] parameters) { + return Math.cos(parameters[0]) == 1; + } + }; } public static TransformStackElement createScaleElement(double scaleX, double scaleY){ - return new TransformStackElement(TransformType.SCALE, new double[]{ scaleX, scaleY }); + return new TransformStackElement(TransformType.SCALE, new double[]{ scaleX, scaleY }) { + boolean isIdentity(double[] parameters) { + return parameters[0] == 1 && parameters[1] == 1; + } + }; } public static TransformStackElement createShearElement(double shearX, double shearY){ - return new TransformStackElement(TransformType.SHEAR, new double[]{ shearX, shearY }); + return new TransformStackElement(TransformType.SHEAR, new double[]{ shearX, shearY }) { + boolean isIdentity(double[] parameters) { + return parameters[0] == 0 && parameters[1] == 0; + } + }; } public static TransformStackElement createGeneralTransformElement(AffineTransform txf){ double matrix[] = new double[6]; txf.getMatrix(matrix); - return new TransformStackElement(TransformType.GENERAL, matrix); + return new TransformStackElement(TransformType.GENERAL, matrix) { + boolean isIdentity(double[] m) { + return (m[0] == 1 && m[2] == 0 && m[4] == 0 && + m[1] == 0 && m[3] == 1 && m[5] == 0); + } + }; + } + + /** + * Implementation should determine if the parameter list represents + * an identity transform, for the instance transform type. + */ + abstract boolean isIdentity(double[] parameters); + + /** + * @return true iff this transform is the identity transform + */ + public boolean isIdentity() { + return isIdentity(transformParameters); } /** 1.4 +103 -42 xml-batik/sources/org/apache/batik/svggen/SVGTransform.java Index: SVGTransform.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGTransform.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- SVGTransform.java 2001/03/19 09:26:25 1.3 +++ SVGTransform.java 2001/10/01 12:37:10 1.4 @@ -12,6 +12,7 @@ import java.awt.GradientPaint; import java.awt.geom.Point2D; import java.awt.geom.AffineTransform; +import java.util.Stack; import org.apache.batik.ext.awt.g2d.GraphicContext; import org.apache.batik.ext.awt.g2d.TransformType; @@ -22,7 +23,8 @@ * into an SVG transform attribute. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: SVGTransform.java,v 1.3 2001/03/19 09:26:25 cjolif Exp $ + * @author <a href="mailto:[EMAIL PROTECTED]">Paul Evenblij</a> + * @version $Id: SVGTransform.java,v 1.4 2001/10/01 12:37:10 vhardy Exp $ */ public class SVGTransform extends AbstractSVGConverter{ /** @@ -57,32 +59,101 @@ * This method tries to collapse the transform stack into an SVG * string as compact as possible while still conveying the semantic * of the stack. Successive stack elements of the same kind (e.g., two - * successive transforms or scales) are collasped into a single element. + * successive transforms or scales) are collapsed into a single element. * * @param transformStack sequence of transform that should * be converted to an SVG transform attribute equivalent */ public static String toSVGTransform(TransformStackElement transformStack[]){ StringBuffer transformStackBuffer = new StringBuffer(); - + int nTransforms = transformStack.length; // - // Append transforms in the stack + // Append transforms in the presentation stack // - int nTransforms = transformStack.length; + Stack presentation = new Stack() { + /** + * Adapted push implementation + */ + public Object push(Object o) { + Object element; + if(((TransformStackElement)o).isIdentity()) { + // identity transform: don't push, + // and try to return top of stack + element = pop(); + } else { + // non-identity: push, + // and return null + super.push(o); + element = null; + } + return element; + } + + /** + * Adapted pop implementation + */ + public Object pop() { + Object element = null; + if(!super.empty()) { + element = super.pop(); + } + return element; + } + }; boolean canConcatenate = false; - int i = 0, j = 0; - while(i<nTransforms){ - // Clone current element and try to concatenate - // elements on top of it - TransformStackElement element = (TransformStackElement)transformStack[i].clone(); + int i = 0, j = 0, next = 0; + TransformStackElement element = null; + + // We keep a separate 'presentation' stack, which contains + // all concatenated elements. The top of this stack is the + // element we try to concatenate onto. If this element + // becomes an identity transform, we discard it and look at + // the element underneath it instead. + // The presentation stack is guaranteed not to contain + // identity transforms. + + while(i < nTransforms) { + + // If we do not have an element to concatenate onto, + // we grab one here. + next = i; + if(element == null) { + element = (TransformStackElement) transformStack[i].clone(); + next++; + } + + // try to concatenate as much as possible canConcatenate = true; - for(j= (i+1); j < nTransforms; j++){ + for(j = next; j < nTransforms; j++) { canConcatenate = element.concatenate(transformStack[j]); if(!canConcatenate) break; } + // loop variable assertion: + // If "i" does not increment during this iteration, it is guaranteed + // to do so in the next, since "i" can only keep the same value as a + // result of "element" having a non-null value on starting this + // iteration, which can only be the case if it was popped from the + // stack during the previous one. The stack does not contain + // identities, and since "i" has not grown, "element" has remained + // unchanged and will be pushed onto the stack again. "element" will + // then become null, so "i" will eventually increment. i = j; - transformStackBuffer.append(convertTransform(element)); + + // Get rid of identity transforms within the stack. + // If an identity is pushed, it is immediately removed, and + // the current top of stack will be returned to concatenate onto. + // Otherwise, null will be returned. + element = (TransformStackElement) presentation.push(element); + } + + // + // Transform presentation stack to SVG + // + int nPresentations = presentation.size(); + + for(i = 0; i < nPresentations; i++) { + transformStackBuffer.append(convertTransform((TransformStackElement) presentation.elementAt(i))); transformStackBuffer.append(SPACE); } @@ -98,7 +169,7 @@ double transformParameters[] = transformElement.getTransformParameters(); switch(transformElement.getType().toInt()){ case TransformType.TRANSFORM_TRANSLATE: - if(transformParameters[0] != 0 || transformParameters[1] != 0){ + if(!transformElement.isIdentity()) { transformString.append(TRANSFORM_TRANSLATE); transformString.append(OPEN_PARENTHESIS); transformString.append(doubleString(transformParameters[0])); @@ -108,7 +179,7 @@ } break; case TransformType.TRANSFORM_ROTATE: - if(transformParameters[0] != 0){ + if(!transformElement.isIdentity()) { transformString.append(TRANSFORM_ROTATE); transformString.append(OPEN_PARENTHESIS); transformString.append(doubleString(radiansToDegrees*transformParameters[0])); @@ -116,7 +187,7 @@ } break; case TransformType.TRANSFORM_SCALE: - if(transformParameters[0] != 1 || transformParameters[1] != 1){ + if(!transformElement.isIdentity()) { transformString.append(TRANSFORM_SCALE); transformString.append(OPEN_PARENTHESIS); transformString.append(doubleString(transformParameters[0])); @@ -126,23 +197,25 @@ } break; case TransformType.TRANSFORM_SHEAR: - transformString.append(TRANSFORM_MATRIX); - transformString.append(OPEN_PARENTHESIS); - transformString.append(1); - transformString.append(COMMA); - transformString.append(doubleString(transformParameters[1])); - transformString.append(COMMA); - transformString.append(doubleString(transformParameters[0])); - transformString.append(COMMA); - transformString.append(1); - transformString.append(COMMA); - transformString.append(0); - transformString.append(COMMA); - transformString.append(0); - transformString.append(CLOSE_PARENTHESIS); + if(!transformElement.isIdentity()) { + transformString.append(TRANSFORM_MATRIX); + transformString.append(OPEN_PARENTHESIS); + transformString.append(1); + transformString.append(COMMA); + transformString.append(doubleString(transformParameters[1])); + transformString.append(COMMA); + transformString.append(doubleString(transformParameters[0])); + transformString.append(COMMA); + transformString.append(1); + transformString.append(COMMA); + transformString.append(0); + transformString.append(COMMA); + transformString.append(0); + transformString.append(CLOSE_PARENTHESIS); + } break; case TransformType.TRANSFORM_GENERAL: - if(!isIdentity(transformParameters)){ + if(!transformElement.isIdentity()) { transformString.append(TRANSFORM_MATRIX); transformString.append(OPEN_PARENTHESIS); transformString.append(doubleString(transformParameters[0])); @@ -166,17 +239,5 @@ } return transformString.toString(); - } - - /** - * Examines the input array to find if it represents an - * identity transform. - */ - private static boolean isIdentity(double matrix[]){ - if(matrix.length != 6) - throw new Error(); - - return (matrix[0] == 1 && matrix[2] == 0 && matrix[4] == 0 && - matrix[1] == 0 && matrix[3] == 1 && matrix[5] == 0); } } 1.1 xml-batik/test-sources/org/apache/batik/svggen/IdentityTest.java Index: IdentityTest.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.batik.svggen; import java.awt.*; import java.awt.geom.*; /** * This test validates the convertion of Java 2D AffineTransform into SVG * Shapes. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> * @version $Id: IdentityTest.java,v 1.1 2001/10/01 12:37:10 vhardy Exp $ */ public class IdentityTest implements Painter { public void paint(Graphics2D g) { g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setPaint(Color.black); // new Color(102, 102, 144)); g.translate(10,10); g.scale(2, 2); g.scale(0.5, 0.5); g.translate(20,40); g.rotate(0); g.translate(-30,-50); g.fillRect(10,10, 100,80); } } 1.8 +51 -37 xml-batik/test-resources/org/apache/batik/svggen/regsvggen.xml Index: regsvggen.xml =================================================================== RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/svggen/regsvggen.xml,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- regsvggen.xml 2001/09/28 13:11:33 1.7 +++ regsvggen.xml 2001/10/01 12:37:10 1.8 @@ -8,7 +8,7 @@ <!-- ========================================================================= --> <!-- @author [EMAIL PROTECTED] --> -<!-- @version $Id: regsvggen.xml,v 1.7 2001/09/28 13:11:33 vhardy Exp $ --> +<!-- @version $Id: regsvggen.xml,v 1.8 2001/10/01 12:37:10 vhardy Exp $ --> <!-- ========================================================================= --> <testSuite name="SVGGraphics2D Accuracy Testing"> <test class="org.apache.batik.svggen.SVGAccuracyTest"> @@ -18,81 +18,88 @@ </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.BasicShapes2" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/BasicShapes2.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/BasicShapes2.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/BasicShapes2.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.ATransform" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ATransform.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ATransform.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ATransform.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.AttributedCharacterIterator" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/AttributedCharacterIterator.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/AttributedCharacterIterator.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/AttributedCharacterIterator.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.BEExample" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/BEExample.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/BEExample.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/BEExample.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.BStroke" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/BStroke.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/BStroke.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/BStroke.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Clip" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Clip.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Clip.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Clip.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Color1" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Color1.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Color1.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Color1.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Color2" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Color2.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Color2.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Color2.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.DrawImage" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/DrawImage.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/DrawImage.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/DrawImage.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Font1" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Font1.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Font1.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Font1.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Font2" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Font2.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Font2.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Font2.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.GVector" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/GVector.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/GVector.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/GVector.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Gradient" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Gradient.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Gradient.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Gradient.svg" /> </test> + <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.GraphicObjects" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/GraphicObjects.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/GraphicObjects.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/GraphicObjects.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> + <arg class="org.apache.batik.svggen.IdentityTest" /> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/IdentityTest.svg"/> + <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/IdentityTest.svg" /> + </test> + + <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Lookup" /> <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Lookup.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Lookup.svg" /> @@ -107,22 +114,22 @@ <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Paints" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Paints.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Paints.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Paints.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.RHints" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/RHints.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/RHints.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/RHints.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.Rescale" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Rescale.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/Rescale.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/Rescale.svg" /> </test> <test class="org.apache.batik.svggen.SVGAccuracyTest"> <arg class="org.apache.batik.svggen.ShearTest" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ShearTest.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ShearTest.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ShearTest.svg" /> </test> @@ -148,80 +155,87 @@ </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.BasicShapes2" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextBasicShapes2.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextBasicShapes2.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextBasicShapes2.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.ATransform" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextATransform.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextATransform.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextATransform.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.AttributedCharacterIterator" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextAttributedCharacterIterator.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextAttributedCharacterIterator.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextAttributedCharacterIterator.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.BEExample" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextBEExample.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextBEExample.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextBEExample.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.BStroke" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextBStroke.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextBStroke.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextBStroke.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Clip" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextClip.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextClip.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextClip.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Color1" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextColor1.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextColor1.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextColor1.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Color2" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextColor2.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextColor2.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextColor2.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.DrawImage" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextDrawImage.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextDrawImage.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextDrawImage.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Font1" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextFont1.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextFont1.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextFont1.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Font2" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextFont2.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextFont2.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextFont2.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.GVector" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextGVector.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextGVector.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextGVector.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Gradient" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextGradient.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextGradient.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextGradient.svg" /> </test> + <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.GraphicObjects" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextGraphicObjects.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextGraphicObjects.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextGraphicObjects.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> + <arg class="org.apache.batik.svggen.IdentityTest" /> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextIdentityTest.svg"/> + <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextIdentityTest.svg" /> + </test> + + <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Lookup" /> <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextLookup.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextLookup.svg" /> @@ -235,22 +249,22 @@ <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Paints" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextPaints.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextPaints.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextPaints.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.RHints" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextRHints.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextRHints.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextRHints.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.Rescale" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextRescale.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextRescale.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextRescale.svg" /> </test> <test class="org.apache.batik.svggen.GeneratorContext"> <arg class="org.apache.batik.svggen.ShearTest" /> - <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextShearTest.svg"/> + <arg class="java.net.URL" value="file:test-references/org/apache/batik/svggen/ContextShearTest.svg"/> <property name="SaveSVG" class="java.io.File" value="test-references/org/apache/batik/svggen/candidate-ref/ContextShearTest.svg" /> </test> 1.1 xml-batik/test-references/org/apache/batik/svggen/IdentityTest.svg Index: IdentityTest.svg =================================================================== <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'> <svg stroke-dasharray="none" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" font-family="'Arial'" width="300" text-rendering="auto" fill-opacity="1" contentScriptType="text/ecmascript" color-rendering="auto" color-interpolation="auto" preserveAspectRatio="xMidYMid meet" font-size="12" fill="black" stroke="black" image-rendering="auto" stroke-miterlimit="10" zoomAndPan="magnify" version="1.0" stroke-linecap="square" stroke-linejoin="miter" contentStyleType="text/css" font-style="normal" height="400" stroke-width="1" stroke-dashoffset="0" font-weight="normal" stroke-opacity="1"> <!--Generated by the Batik Graphics2D SVG Generator--> <defs id="genericDefs" /> <g> <g text-rendering="optimizeLegibility" shape-rendering="geometricPrecision"> <rect width="100" x="10" height="80" y="10" stroke="none" /> </g> </g> </svg>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]