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="&apos;Arial&apos;" 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]

Reply via email to