vhardy      2002/09/18 02:23:12

  Modified:    contrib/rasterizertask README build.xml
               contrib/rasterizertask/sources/org/apache/tools/ant/taskdefs/optional
                        RasterizerTask.java
                        RasterizerTaskSVGConverterController.java
               resources/org/apache/batik/apps/rasterizer/resources
                        Messages.properties
               sources/org/apache/batik/apps/rasterizer Main.java
                        SVGConverter.java
               sources/org/apache/batik/transcoder
                        SVGAbstractTranscoder.java
               test-resources/org/apache/batik/transcoder/image
                        unitTesting.xml
               test-sources/org/apache/batik/apps/rasterizer MainTest.java
                        SVGConverterTest.java
               xdocs    svgrasterizer.xml
  Added:       test-references/org/apache/batik/transcoder/image
                        anneMaxH200.png anneMaxW200.png anneMaxWH200.png
  Log:
  Contribution from Henri Ruini ([EMAIL PROTECTED]). Henri added max-width and 
max-height hints to the rasterizer infrastructure. He also cleaned-up some 
unncecessary import statements in the rasterizer app code. Tests have been added to 
the infrastructre.
  
  Revision  Changes    Path
  1.2       +10 -2     xml-batik/contrib/rasterizertask/README
  
  Index: README
  ===================================================================
  RCS file: /home/cvs/xml-batik/contrib/rasterizertask/README,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- README    28 Nov 2001 08:59:12 -0000      1.1
  +++ README    18 Sep 2002 09:23:11 -0000      1.2
  @@ -6,7 +6,7 @@
   Content of this directory
   =========================
   
  -This directory contains rasterizer task for Ant. Th task can be used to 
  +This directory contains rasterizer task for Ant. The task can be used to 
   convert SVG files to raster format. This has been contributed by 
   Henri Ruini ([EMAIL PROTECTED]).
   
  @@ -16,3 +16,11 @@
   in this directory. Type 
   .\build.bat help
   to display other available targets. These commands work only in Windows.
  +
  +NOTE: Due the internal changes in Ant itself the rasterizer task may not 
  +work if the Ant in use is a different version from the Ant used to build 
  +the task. Use the same Ant version to build and to execute task to avoid 
  +strange problems.
  +
  +At least JDK 1.3 is needed to build and execute the task.
  +
  
  
  
  1.2       +29 -24    xml-batik/contrib/rasterizertask/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/xml-batik/contrib/rasterizertask/build.xml,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- build.xml 28 Nov 2001 08:59:12 -0000      1.1
  +++ build.xml 18 Sep 2002 09:23:11 -0000      1.2
  @@ -26,10 +26,14 @@
       <!-- lib: Directory where the library files (jars etc.) are located. -->
       <property name="src" value="${root}/sources" />
       <!-- src: Directory for source files. -->
  -    <property name="build" value="${root}/classes" />
  -    <!-- build: Directory for compiles class files. -->
  -    <property name="javadoc" value="${root}/javadoc" />
  -    <!-- javadocs: Directory for javadocs. -->
  +    <property name="build" value="${root}/build" />
  +    <!-- build: Directory for build results. -->
  +    <property name="build.classes" value="${build}/classes" />
  +     <!-- build.classes: Directory for compiled classes. -->
  +    <property name="doc" value="${root}/doc" />
  +    <!-- doc: Directory for documentation. -->
  +    <property name="doc.api" value="${doc}/javadoc" />
  +    <!-- doc.api: Directory for javadocs. -->
   
   
   
  @@ -39,37 +43,47 @@
           <echo>SVG Rasterizer Task build file.</echo>
           <echo>Available targets are:</echo>
           <echo>  compile --> Compiles the source code.</echo>
  -        <echo>  javadoc --> Generates Javadoc documentation.</echo>
           <echo>  jar     --> Builds the JAR distribution.</echo>
  -        <echo>  clean   --> Deletes the generated directories.</echo>
  +        <echo>  javadoc --> Generates Javadoc documentation.</echo>
  +        <echo>  clean   --> Deletes generated directories.</echo>
       </target>
   
       <target name="prepare">
  +             <echo>Using ${ant.version}.</echo>
           <tstamp/>
       </target>
   
       <target name="compile" depends="prepare"
           description="Compiles source files.">
  -        <!-- Clean and (re)create the build directory. -->
  -        <delete dir="${build}" />
  -        <mkdir dir="${build}" />
  +        <mkdir dir="${build.classes}" />
           <!-- Compile code. -->
  -        <javac srcdir="${src}" destdir="${build}" />
  +        <javac srcdir="${src}" destdir="${build.classes}" />
  +    </target>
  +
  +    <target name="jar" depends="prepare, compile"
  +        description="Creates a JAR package.">
  +
  +             <mkdir dir="${build}/lib" />
  +        <jar jarfile="${build}/lib/RasterizerTask.jar"
  +            basedir="${build.classes}"
  +            excludes="**/CVS"
  +            includes="**/*.class">
  +        </jar>
       </target>
   
       <target name="javadoc" depends="prepare"
           description="Generates Javadoc documentation.">
           <!-- Clean and (re)create the javadocs directory. -->
  -        <delete dir="${javadoc}" />
  -        <mkdir dir="${javadoc}" />
  +        <delete dir="${doc.api}" />
  +        <mkdir dir="${doc.api}" />
           <!-- Create javadocs. -->
  -        <javadoc destdir="${javadoc}"
  +        <javadoc destdir="${doc.api}"
               packagenames="org.apache.tools.ant.*"
               version="false"
               author="false"
               windowtitle="Rasterizer Task Javadoc"
               doctitle="Rasterizer Task API Specification"
  -            bottom="Copyright &#169; 2001 Apache Software Foundation. All Rights 
Reserved.">
  +            bottom="Copyright &#169; 2001-2002 Apache Software Foundation. All 
Rights Reserved.">
               <sourcepath>
                   <pathelement path="${src}" />
                   <pathelement path="${root}/../../sources" />
  @@ -78,18 +92,9 @@
           </javadoc>
       </target>
   
  -    <target name="jar" depends="prepare, compile"
  -        description="Creates a JAR package.">
  -        <jar jarfile="${root}/RasterizerTask.jar"
  -            basedir="${build}"
  -            excludes="**/CVS"
  -            includes="**/*.class">
  -        </jar>
  -    </target>
  -
       <target name="clean"
           description="Deletes directories created by this script.">
  -        <delete dir="${javadoc}" />
  +        <delete dir="${doc}" />
           <delete dir="${build}" />
       </target>
   
  
  
  
  1.2       +142 -59   
xml-batik/contrib/rasterizertask/sources/org/apache/tools/ant/taskdefs/optional/RasterizerTask.java
  
  Index: RasterizerTask.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/contrib/rasterizertask/sources/org/apache/tools/ant/taskdefs/optional/RasterizerTask.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RasterizerTask.java       28 Nov 2001 08:59:12 -0000      1.1
  +++ RasterizerTask.java       18 Sep 2002 09:23:11 -0000      1.2
  @@ -16,13 +16,17 @@
   import org.apache.tools.ant.taskdefs.MatchingTask;
   import org.apache.tools.ant.types.EnumeratedAttribute;
   import org.apache.tools.ant.types.FileSet;
  +import org.apache.tools.ant.util.JAXPUtils;
   
   // -- Batik classes ----------------------------------------------------------
   import org.apache.batik.apps.rasterizer.SVGConverter;
   import org.apache.batik.apps.rasterizer.DestinationType;
   import org.apache.batik.apps.rasterizer.SVGConverterException;
  -
   import org.apache.batik.transcoder.image.JPEGTranscoder;
  +import org.apache.batik.util.XMLResourceDescriptor;
  +
  +// -- SAX classes ------------------------------------------------------------
  +import org.xml.sax.XMLReader;
   
   // -- Java SDK classes -------------------------------------------------------
   import java.awt.geom.Rectangle2D;
  @@ -52,14 +56,19 @@
    */
   public class RasterizerTask extends MatchingTask {
   
  -    // -- Class constants ----------------------------------------------------
  +    // -- Constants ----------------------------------------------------------
       /**
        * Default quality value for JPEGs. This value is used when 
        * the user doesn't set the quality.
        */
  -    protected static final float DEFAULT_QUALITY = 0.99f;
  +    private static final float DEFAULT_QUALITY = 0.99f;
  +    /**
  +     * Magic string indicating that any JAXP conforming XML parser can 
  +     * be used.
  +     */
  +    private static final String JAXP_PARSER = "jaxp";
   
  -    // -- Class variables ----------------------------------------------------
  +    // -- Variables ----------------------------------------------------------
       /** Result image type. The default is PNG. */
       protected DestinationType resultType = DestinationType.PNG;
   
  @@ -67,6 +76,10 @@
       protected float height = Float.NaN;
       /** Output image width. */
       protected float width = Float.NaN;
  +    /** Maximum output image height. */
  +    protected float maxHeight = Float.NaN;
  +    /** Maximum output image width. */
  +    protected float maxWidth = Float.NaN;
       /** Output image quality. */
       protected float quality = Float.NaN;
       /** Output Area of Interest (AOI) area. */
  @@ -79,23 +92,21 @@
       protected float dpi = Float.NaN;
       /** Output image language. */
       protected String language = null;
  +    /** XML parser class currently in use. */
  +    protected String readerClassName = 
XMLResourceDescriptor.getXMLParserClassName();
  +
   
       /** Source image path. */
       protected File srcFile = null;
  -
       /** Destination image path. */
       protected File destFile = null;
  -
       /** Source directory of images. */
       protected File srcDir = null;
  -
       /** Destination directory for output images. */
       protected File destDir = null;
  -
       /** Contents of <code>fileset</code> elements. */
       protected Vector filesets = new Vector();
   
  -
       /** Converter object used to convert SVG images to raster images. */
       protected SVGConverter converter;
   
  @@ -146,6 +157,28 @@
       }
   
       /**
  +     * Gets <code>maxheight</code> attribute value.
  +     *
  +     * <p>The attribute is optional.</p>
  +     *
  +     * @param height Attribute value.
  +     */
  +    public void setMaxheight(float height) {
  +        this.maxHeight = height;
  +    }
  +
  +    /**
  +     * Gets <code>maxwidth</code> attribute value.
  +     *
  +     * <p>The attribute is optional.</p>
  +     *
  +     * @param width Attribute value.
  +     */
  +    public void setMaxwidth(float width) {
  +        this.maxWidth = width;
  +    }
  +
  +    /**
        * Gets <code>quality</code> attribute value.
        *
        * <p>The value have to be a float between 0 and 1 excluded. 
  @@ -219,6 +252,16 @@
           this.language = language;
       }
   
  +     /**
  +     * Sets classname of an XML parser.
  +     * The attribute is optional.
  +     *
  +     * @param value Java classname of an XML parser.
  +     */
  +    public void setClassname(String value) {
  +        this.readerClassName = value;
  +    }
  +
       /**
        * Gets <code>src</code> attribute value.
        *
  @@ -294,45 +337,55 @@
   
           String[] sources;        // Array of input files.
   
  -        // Check file and directory values.
  -        if(this.srcFile != null) {
  -            if(this.destFile == null) {
  -                throw new BuildException("dest attribute is not set.");
  -            }
  -        } else {
  -            if((this.srcDir == null) && (filesets.size() == 0)) {
  -                throw new BuildException("No input files! Either srcdir or fileset 
have to be set.");
  -            }
  -            if(this.destDir == null) {
  -                throw new BuildException("destdir attribute is not set!");
  -            }
  -        }
  -
  +             // Store default XML parser information and set user class.
  +        String defaultParser = XMLResourceDescriptor.getXMLParserClassName();
           // Throws BuildException.
  -        setRasterizingParameters();
  +        
XMLResourceDescriptor.setXMLParserClassName(getParserClassName(readerClassName));
   
  -        // Get and set source(s).
  -        sources = getSourceFiles();
  -        converter.setSources(sources);
  +        try {
  +            // Check file and directory values.
  +            if(this.srcFile != null) {
  +                if(this.destFile == null) {
  +                    throw new BuildException("dest attribute is not set.");
  +                }
  +            } else {
  +                if((this.srcDir == null) && (filesets.size() == 0)) {
  +                    throw new BuildException("No input files! Either srcdir or 
fileset have to be set.");
  +                }
  +                if(this.destDir == null) {
  +                    throw new BuildException("destdir attribute is not set!");
  +                }
  +            }
   
  -        // Set destination.
  -        if(this.srcFile != null) {
  -            converter.setDst(this.destFile);
  -        } else {
  -            converter.setDst(this.destDir);
  -        }
  +            // Throws BuildException.
  +            setRasterizingParameters();
   
  -        // Input filenames are stored in the converter and 
  -        // everything is ready for the conversion.
  +            // Get and set source(s).
  +            sources = getSourceFiles();
  +            converter.setSources(sources);
  +
  +            // Set destination.
  +            if(this.srcFile != null) {
  +                converter.setDst(this.destFile);
  +            } else {
  +                converter.setDst(this.destDir);
  +            }
   
  -        log("Rasterizing " + sources.length + 
  -            (sources.length == 1 ? " image " : " images ") + 
  -            "from SVG to " + this.resultType.toString() + ".");
  +            // Input filenames are stored in the converter and 
  +            // everything is ready for the conversion.
   
  -        try {
  -            converter.execute();
  -        } catch(SVGConverterException sce) {
  -            throw new BuildException(sce.getMessage());
  +            log("Rasterizing " + sources.length + 
  +                (sources.length == 1 ? " image " : " images ") + 
  +                "from SVG to " + this.resultType.toString() + ".");
  +
  +            try {
  +                converter.execute();
  +            } catch(SVGConverterException sce) {
  +                throw new BuildException(sce.getMessage());
  +            }
  +        } finally {
  +            // Restore default XML parser for the next execute.
  +            XMLResourceDescriptor.setXMLParserClassName(defaultParser);
           }
       }
   
  @@ -357,18 +410,32 @@
           } else {
               throw new BuildException("Unknown value in result parameter.");
           }
  +        // Set size values.
           if(!Float.isNaN(this.width)) {
               if(this.width < 0) {
  -                throw new BuildException("Value in width parameter must positive.");
  +                throw new BuildException("Value of width parameter must positive.");
               }
               converter.setWidth(this.width);
           }
           if(!Float.isNaN(this.height)) {
               if(this.height < 0) {
  -                throw new BuildException("Value in height parameter must 
positive.");
  +                throw new BuildException("Value of height parameter must 
positive.");
               }
               converter.setHeight(this.height);
           }
  +        // Set maximum size values.
  +        if(!Float.isNaN(this.maxWidth)) {
  +            if(this.maxWidth < 0) {
  +                throw new BuildException("Value of maxwidth parameter must 
positive.");
  +            }
  +            converter.setMaxWidth(this.maxWidth);
  +        }
  +        if(!Float.isNaN(this.maxHeight)) {
  +            if(this.maxHeight < 0) {
  +                throw new BuildException("Value of maxheight parameter must 
positive.");
  +            }
  +            converter.setMaxHeight(this.maxHeight);
  +        }
           // The quality is just swallowed if the result type is not correct.
           if(allowedToSetQuality(resultType)) {
               if(!Float.isNaN(this.quality)) {
  @@ -394,10 +461,10 @@
           }
           if(!Float.isNaN(this.dpi)) {
               if(this.dpi < 0) {
  -                throw new BuildException("Value in dpi parameter must positive.");
  +                throw new BuildException("Value of dpi parameter must positive.");
               }
               // The calculation is the same as 2.54/dpi*10 where
  -            converter.setPixelToMillimeter(25.4f/this.dpi);
  +            converter.setPixelUnitToMillimeter(25.4f/this.dpi);
           }
           if(this.language != null) {
               converter.setLanguage(this.language);
  @@ -412,8 +479,7 @@
        */
       protected String[] getSourceFiles() {
   
  -        String[] list;                          // Input files in array.
  -        ArrayList inputFiles = new ArrayList(); // Input files in temp list.
  +        List inputFiles = new ArrayList(); // Input files in temp list.
   
           if(this.srcFile != null) {
               // Only one source and destination file have been set.
  @@ -454,14 +520,8 @@
               }
           }
   
  -        // Copy items from list object to array.
  -        list = new String[inputFiles.size()];
  -        Iterator iter = inputFiles.iterator();
  -        for(int i = 0 ; iter.hasNext() ; i++) {
  -            list[i] = (String)iter.next();
  -        }
  -
  -        return list;
  +        // Convert List to array and return the array.
  +        return (String[])inputFiles.toArray(new String[0]);
       }
   
       /**
  @@ -599,6 +659,29 @@
           }
   
           return new Color(r, g, b, a);
  +    }
  +
  +    /**
  +     * Returns name of an XML parser.
  +     * Magic string {@link #JAXP_PARSER} is also accepted.
  +     *
  +     * @param className Name of the XML parser class or a magic string.
  +     *
  +     * @return Name of an XML parser.
  +     *
  +     * @throws BuildException Unable to get the name of JAXP parser.
  +     */
  +    private String getParserClassName(final String className) {
  +        String name = className;
  +        if(className.equals(JAXP_PARSER)) {
  +            // Set first JAXP parser.
  +            // Throws BuildException.
  +            XMLReader reader = JAXPUtils.getXMLReader();
  +            name = reader.getClass().getName();
  +        }
  +
  +        log("Using class '" + name + "' to parse SVG documents.", 
Project.MSG_VERBOSE);
  +        return name;
       }
   
   
  
  
  
  1.2       +3 -4      
xml-batik/contrib/rasterizertask/sources/org/apache/tools/ant/taskdefs/optional/RasterizerTaskSVGConverterController.java
  
  Index: RasterizerTaskSVGConverterController.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/contrib/rasterizertask/sources/org/apache/tools/ant/taskdefs/optional/RasterizerTaskSVGConverterController.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RasterizerTaskSVGConverterController.java 28 Nov 2001 08:59:12 -0000      1.1
  +++ RasterizerTaskSVGConverterController.java 18 Sep 2002 09:23:11 -0000      1.2
  @@ -40,7 +40,7 @@
    */
   public class RasterizerTaskSVGConverterController implements SVGConverterController 
{
   
  -    // -- Class variables ----------------------------------------------------
  +    // -- Variables ----------------------------------------------------------
       /** Ant task that is used to log messages. */
       protected Task executingTask = null;
   
  @@ -63,7 +63,6 @@
   
   
       // -- Public interface ---------------------------------------------------
  -
       public boolean proceedWithComputedTask(Transcoder transcoder,
                                              Map hints,
                                              Vector sources,
  @@ -80,7 +79,7 @@
                                                        File dest,
                                                        String errorCode){
           if(executingTask != null) {
  -            executingTask.log("Unable to rasterize image from '" 
  +            executingTask.log("Unable to rasterize image '" 
                   + source.getName() + "' to '" 
                   + dest.getAbsolutePath() + "': " + errorCode);
           }
  
  
  
  1.11      +17 -3     
xml-batik/resources/org/apache/batik/apps/rasterizer/resources/Messages.properties
  
  Index: Messages.properties
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/resources/org/apache/batik/apps/rasterizer/resources/Messages.properties,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Messages.properties       9 Sep 2002 13:02:06 -0000       1.10
  +++ Messages.properties       18 Sep 2002 09:23:11 -0000      1.11
  @@ -71,6 +71,10 @@
   \toutput width. This is a floating point value. \n \
    -h <height>     \n \
   \toutput height. This is a floating point value. \n \
  + -maxw <width>      \n \
  +\tMaximum output width. This is a floating point value. \n \
  + -maxh <height>     \n \
  +\tMaximum output height. This is a floating point value. \n \
    -a <area>       \n \
   \toutput area. The format for <area> is x,y,w,h, where x, y, w and h \n \
   \tare floating point values. \n \
  @@ -135,15 +139,25 @@
   Default: image/png
   
   Main.cl.option.width.description = \
  --w <width> Output width. This is a floating point value. \n
  +-w <width> Output width. This is a floating point value. \n \
   Example: -w 455.6 \n \
   Default: none (which means that the images's width will be used)
   
   Main.cl.option.height.description = \
  --h <height> Output height. This is a floating point value. \n
  +-h <height> Output height. This is a floating point value. \n \
   Example: -h 345.67 \n \
   Default: none (which means that the image's height will be used)
   
  +Main.cl.option.max.width.description = \
  +-maxw <width> Maximum output width. This is a floating point value. \n \
  +Example: -maxw 455.6 \n \
  +Default: none (which means that the option is ignored)
  +
  +Main.cl.option.max.height.description = \
  +-maxh <height> Maximum output height. This is a floating point value. \n \
  +Example: -maxh 345.67 \n \
  +Default: none (which means that the option is ignored)
  +
   Main.cl.option.area.description = \
   -a <area> output area. The format for <area> is x,y,w,h, where x, y, w and h are \n 
\
             floating point values. \n \
  @@ -166,7 +180,7 @@
   Main.cl.option.default.font.family.description = \
   -font-family <defaultValue> Value used as a default when no font-family value \n \
                               is specified.\n \
  -Example: -font-family "Times, Comic Sans MS"
  +Example: -font-family "Times, Comic Sans MS" \n \
   Default: "Arial, Helvetica, sans-serif"
   
   Main.cl.option.cssAlternate.description = \
  
  
  
  1.25      +51 -19    xml-batik/sources/org/apache/batik/apps/rasterizer/Main.java
  
  Index: Main.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/rasterizer/Main.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Main.java 9 Sep 2002 13:02:07 -0000       1.24
  +++ Main.java 18 Sep 2002 09:23:11 -0000      1.25
  @@ -11,36 +11,19 @@
   import java.awt.Color;
   import java.awt.geom.Rectangle2D;
   
  -import java.io.BufferedOutputStream;
   import java.io.File;
  -import java.io.FileOutputStream;
  -import java.io.IOException;
  -import java.io.OutputStream;
  -import java.io.PrintStream;
   
   import java.util.Hashtable;
   import java.util.Map;
   import java.util.Vector;
   
   import java.util.Iterator;
  -import java.util.LinkedList;
  -import java.util.List;
   import java.util.StringTokenizer;
  -import java.net.URL;
  -import java.net.MalformedURLException;
   
  -import org.apache.batik.transcoder.TranscoderInput;
  -import org.apache.batik.transcoder.TranscoderOutput;
  -import org.apache.batik.transcoder.image.ImageTranscoder;
   import org.apache.batik.transcoder.Transcoder;
  -import org.apache.batik.transcoder.image.JPEGTranscoder;
  -import org.apache.batik.transcoder.image.PNGTranscoder;
  -import org.apache.batik.transcoder.image.TIFFTranscoder;
   
   import org.apache.batik.util.ApplicationSecurityEnforcer;
   
  -import org.xml.sax.InputSource;
  -
   /**
    * Handles command line parameters to configure the <tt>SVGConverter</tt>
    * and rasterizer images. <br />
  @@ -324,6 +307,24 @@
           = Messages.get("Main.cl.option.height.description", "No description");
   
       /**
  +     * Option to specify the output image's maximum width.
  +     */
  +    public static String CL_OPTION_MAX_WIDTH 
  +        = Messages.get("Main.cl.option.max.width", "-maxw");
  +
  +    public static String CL_OPTION_MAX_WIDTH_DESCRIPTION
  +        = Messages.get("Main.cl.option.max.width.description", "No description");
  +
  +    /**
  +     * Option to specify the output image's maximum height.
  +     */
  +    public static String CL_OPTION_MAX_HEIGHT
  +        = Messages.get("Main.cl.option.max.height", "-maxh");
  +
  +    public static String CL_OPTION_MAX_HEIGHT_DESCRIPTION
  +        = Messages.get("Main.cl.option.max.height.description", "No description");
  +
  +    /**
        * Option to specify the area of interest in the output 
        * image.
        */
  @@ -552,7 +553,38 @@
                                 }
                             });
   
  -        
  +        optionMap.put(CL_OPTION_MAX_WIDTH,
  +                      new FloatOptionHandler(){
  +                              public void handleOption(float optionValue,
  +                                                       SVGConverter c){
  +                                  if (optionValue <= 0){
  +                                      throw new IllegalArgumentException();
  +                                  }
  +
  +                                  c.setMaxWidth(optionValue);
  +                              }
  +
  +                              public String getOptionDescription(){
  +                                  return CL_OPTION_MAX_WIDTH_DESCRIPTION;
  +                              }
  +                          });
  +
  +        optionMap.put(CL_OPTION_MAX_HEIGHT,
  +                      new FloatOptionHandler(){
  +                              public void handleOption(float optionValue,
  +                                                       SVGConverter c){
  +                                  if (optionValue <= 0){
  +                                      throw new IllegalArgumentException();
  +                                  }
  +
  +                                  c.setMaxHeight(optionValue);
  +                              }
  +
  +                              public String getOptionDescription(){
  +                                  return CL_OPTION_MAX_HEIGHT_DESCRIPTION;
  +                              }
  +                          });
  +
           optionMap.put(CL_OPTION_AOI,
                         new RectangleOptionHandler(){
                                 public void handleOption(Rectangle2D optionValue,
  
  
  
  1.18      +48 -10    
xml-batik/sources/org/apache/batik/apps/rasterizer/SVGConverter.java
  
  Index: SVGConverter.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/apps/rasterizer/SVGConverter.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- SVGConverter.java 9 Sep 2002 13:02:07 -0000       1.17
  +++ SVGConverter.java 18 Sep 2002 09:23:11 -0000      1.18
  @@ -9,7 +9,6 @@
   package org.apache.batik.apps.rasterizer;
   
   import org.apache.batik.transcoder.Transcoder;
  -import org.apache.batik.transcoder.TranscoderException;
   import org.apache.batik.transcoder.TranscoderInput;
   import org.apache.batik.transcoder.TranscoderOutput;
   import org.apache.batik.transcoder.image.ImageTranscoder;
  @@ -18,7 +17,6 @@
   
   import java.io.File;
   import java.io.FileFilter;
  -import java.io.FileInputStream;
   import java.io.InputStream;
   import java.io.OutputStream;
   import java.io.FileOutputStream;
  @@ -26,14 +24,11 @@
   import java.io.FileNotFoundException;
   
   import java.awt.Color;
  -import java.awt.Graphics2D;
   import java.awt.geom.Rectangle2D;
  -import java.awt.image.BufferedImage;
   
   import java.util.HashMap;
   import java.util.Vector;
   import java.util.Map;
  -import java.util.StringTokenizer;
   
   /**
    * This application can be used to convert SVG images to raster images.
  @@ -60,9 +55,11 @@
    * There are a number of options which control the way the image is
    * converted to the destination format:<br /><ul>
    * <li>destinationType: controls the type of conversion which should be done. 
  - * see the {@link DestinationType} documentation.</li>
  + *     see the {@link DestinationType} documentation.</li>
    * <li>width/height: they control the desired width and height, in user space,
  - * for the output image.</li>
  + *     for the output image.</li>
  + * <li>maxWidth/maxHeight: control the maximum width and height, 
  + *     in user space, of the output image.</li>
    * <li>area: controls the specific sub-area of the image which should be 
    *     rendered.</li>
    * <li>backgroundColor: controls the color which is used to fill the 
  @@ -85,8 +82,9 @@
    * </ul>
    *
    * @version $Id$
  - * @author Henri Ruini
  - * @author <a href="mailto:[EMAIL PROTECTED]";>Vincent Hardy</a> */
  + * @author <a href="[EMAIL PROTECTED]">Henri Ruini</a>
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Vincent Hardy</a>
  + */
   public class SVGConverter {
       // 
       // Error codes reported by the SVGConverter
  @@ -204,6 +202,12 @@
       /** Output image width. */
       protected float width = DEFAULT_WIDTH;
   
  +    /** Maximum output image height. */
  +    protected float maxHeight = DEFAULT_HEIGHT;
  +
  +    /** Maximum output image width. */
  +    protected float maxWidth = DEFAULT_WIDTH;
  +
       /** Output image quality. */
       protected float quality = DEFAULT_QUALITY;
   
  @@ -333,6 +337,32 @@
       }
   
       /**
  +     * If less than or equal to zero, the maximum height 
  +     * does not have any effect on the output image. 
  +     * The maximum height is in user space.
  +     */
  +    public void setMaxHeight(float height) {
  +        this.maxHeight = height;
  +    }
  +
  +    public float getMaxHeight(){
  +        return maxHeight;
  +    }
  +
  +    /**
  +     * If less than or equal to zero, the maximum width 
  +     * does not have any effect on the output image. 
  +     * The maximum width is in user space.
  +     */
  +    public void setMaxWidth(float width) {
  +        this.maxWidth = width;
  +    }
  +
  +    public float getMaxWidth(){
  +        return maxWidth;
  +    }
  +
  +    /**
        * Sets the JPEG encoding quality. The value should be strictly
        * less than 1. If the value is less than zero, then the maximum
        * encoding quality is used.
  @@ -792,6 +822,14 @@
           }
           if (width > 0){
               map.put(ImageTranscoder.KEY_WIDTH, new Float(this.width));
  +        }
  +
  +        // Set maximum height and width ---------------------------------------
  +        if (maxHeight > 0) {
  +            map.put(ImageTranscoder.KEY_MAX_HEIGHT, new Float(this.maxHeight));
  +        }
  +        if (maxWidth > 0){
  +            map.put(ImageTranscoder.KEY_MAX_WIDTH, new Float(this.maxWidth));
           }
   
           // Set CSS Media
  
  
  
  1.3       +115 -37   
xml-batik/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java
  
  Index: SVGAbstractTranscoder.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SVGAbstractTranscoder.java        9 Sep 2002 13:02:07 -0000       1.2
  +++ SVGAbstractTranscoder.java        18 Sep 2002 09:23:12 -0000      1.3
  @@ -8,15 +8,11 @@
   
   package org.apache.batik.transcoder;
   
  -import java.awt.Cursor;
   import java.awt.Dimension;
  -import java.awt.Point;
   import java.awt.geom.AffineTransform;
   import java.awt.geom.Dimension2D;
   import java.awt.geom.Rectangle2D;
   
  -import java.net.URL;
  -
   import java.util.StringTokenizer;
   import java.util.Vector;
   
  @@ -26,12 +22,10 @@
   import org.apache.batik.dom.util.DocumentFactory;
   
   import org.apache.batik.gvt.GraphicsNode;
  -import org.apache.batik.gvt.event.EventDispatcher;
   
   import org.apache.batik.bridge.BaseScriptingEnvironment;
   import org.apache.batik.bridge.BridgeContext;
   import org.apache.batik.bridge.BridgeException;
  -import org.apache.batik.bridge.BridgeExtension;
   import org.apache.batik.bridge.NoLoadScriptSecurity;
   import org.apache.batik.bridge.DefaultScriptSecurity;
   import org.apache.batik.bridge.RelaxedScriptSecurity;
  @@ -49,13 +43,10 @@
   import org.apache.batik.transcoder.image.resources.Messages;
   
   import org.apache.batik.util.SVGConstants;
  -import org.apache.batik.util.XMLResourceDescriptor;
   import org.apache.batik.util.ParsedURL;
   
   import org.w3c.dom.DOMImplementation;
   import org.w3c.dom.Document;
  -import org.w3c.dom.Element;
  -import org.w3c.dom.svg.SVGAElement;
   import org.w3c.dom.svg.SVGSVGElement;
   
   
  @@ -95,6 +86,9 @@
        */
       protected GraphicsNode root;
   
  +    /**
  +     * Image's width and height.
  +     */
       protected float width, height;
   
       /** The user agent dedicated to an SVG Transcoder. */
  @@ -186,29 +180,8 @@
           ctx = null;
           builder = null;
   
  -        // compute the image's width and height according the hints
  -        float imgWidth = -1;
  -        if (hints.containsKey(KEY_WIDTH)) {
  -            imgWidth = ((Float)hints.get(KEY_WIDTH)).floatValue();
  -        }
  -        float imgHeight = -1;
  -        if (hints.containsKey(KEY_HEIGHT)) {
  -            imgHeight = ((Float)hints.get(KEY_HEIGHT)).floatValue();
  -        }
  +        setImageSize(docWidth, docHeight);
   
  -        if (imgWidth > 0 && imgHeight > 0) {
  -            width = imgWidth;
  -            height = imgHeight;
  -        } else if (imgHeight > 0) {
  -            width = (docWidth * imgHeight) / docHeight;
  -            height = imgHeight;
  -        } else if (imgWidth > 0) {
  -            width = imgWidth;
  -            height = (docHeight * imgWidth) / docWidth;
  -        } else {
  -            width = docWidth;
  -            height = docHeight;
  -        }
           // compute the preserveAspectRatio matrix
           AffineTransform Px;
           String ref = new ParsedURL(uri).getRef();
  @@ -250,6 +223,60 @@
           this.root = gvtRoot;
       }
   
  +    /**
  +     * Sets document size according to the hints.
  +     * Global variables width and height are modified.
  +     *
  +     * @param docWidth Width of the document.
  +     * @param docHeight Height of the document.
  +     */
  +    protected void setImageSize(float docWidth, float docHeight) {
  +
  +        // Compute the image's width and height according the hints
  +        float imgWidth = -1;
  +        if (hints.containsKey(KEY_WIDTH)) {
  +            imgWidth = ((Float)hints.get(KEY_WIDTH)).floatValue();
  +        }
  +        float imgHeight = -1;
  +        if (hints.containsKey(KEY_HEIGHT)) {
  +            imgHeight = ((Float)hints.get(KEY_HEIGHT)).floatValue();
  +        }
  +
  +        if (imgWidth > 0 && imgHeight > 0) {
  +            width = imgWidth;
  +            height = imgHeight;
  +        } else if (imgHeight > 0) {
  +            width = (docWidth * imgHeight) / docHeight;
  +            height = imgHeight;
  +        } else if (imgWidth > 0) {
  +            width = imgWidth;
  +            height = (docHeight * imgWidth) / docWidth;
  +        } else {
  +            width = docWidth;
  +            height = docHeight;
  +        }
  +
  +        // Limit image size according to the maximuxm size hints.
  +        float imgMaxWidth = -1;
  +        if (hints.containsKey(KEY_MAX_WIDTH)) {
  +            imgMaxWidth = ((Float)hints.get(KEY_MAX_WIDTH)).floatValue();
  +        }
  +        float imgMaxHeight = -1;
  +        if (hints.containsKey(KEY_MAX_HEIGHT)) {
  +            imgMaxHeight = ((Float)hints.get(KEY_MAX_HEIGHT)).floatValue();
  +        }
  +
  +        if ((imgMaxHeight > 0) && (height > imgMaxHeight)) {
  +            width = (docWidth * imgMaxHeight) / docHeight;
  +            height = imgMaxHeight;
  +        }
  +        if ((imgMaxWidth > 0) && (width > imgMaxWidth)) {
  +            width = imgMaxWidth;
  +            height = (docHeight * imgMaxWidth) / docWidth;
  +        }
  +    }
  +
  +
       // --------------------------------------------------------------------
       // Keys definition
       // --------------------------------------------------------------------
  @@ -298,6 +325,57 @@
       public static final TranscodingHints.Key KEY_HEIGHT
           = new LengthKey();
   
  +    /**
  +     * The maximum width of the image key.
  +     * <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Key: </TH>
  +     * <TD VALIGN="TOP">KEY_MAX_WIDTH</TD></TR>
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Value: </TH>
  +     * <TD VALIGN="TOP">Float</TD></TR>
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Default: </TH>
  +     * <TD VALIGN="TOP">The width of the top most svg element</TD></TR>
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Required: </TH>
  +     * <TD VALIGN="TOP">No</TD></TR>
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Description: </TH>
  +     * <TD VALIGN="TOP">Specify the maximum width of the image to create.
  +     * The value will set the maximum width of the image even when 
  +     * bigger width is specified in a document or set with KEY_WIDTH.
  +     * </TD></TR>
  +     * </TABLE>
  +     */
  +    public static final TranscodingHints.Key KEY_MAX_WIDTH
  +        = new LengthKey();
  +
  +    /**
  +     * The maximux height of the image key.
  +     * <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Key: </TH>
  +     * <TD VALIGN="TOP">KEY_MAX_HEIGHT</TD></TR>
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Value: </TH>
  +     * <TD VALIGN="TOP">Float</TD></TR>
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Default: </TH>
  +     * <TD VALIGN="TOP">The height of the top most svg element</TD></TR>
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Required: </TH>
  +     * <TD VALIGN="TOP">No</TD></TR>
  +     * <TR>
  +     * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Description: </TH>
  +     * <TD VALIGN="TOP">Specify the maximum height of the image to create. 
  +     * The value will set the maximum height of the image even when 
  +     * bigger height is specified in a document or set with KEY_HEIGHT.
  +     * </TD></TR>
  +     * </TABLE>
  +     */
  +    public static final TranscodingHints.Key KEY_MAX_HEIGHT
  +        = new LengthKey();
   
       /**
        * The area of interest key.
  @@ -726,9 +804,9 @@
           }
   
           /**
  -      * Returns true if the XML parser must be in validation mode, false
  -      * otherwise.
  -      */
  +         * Returns true if the XML parser must be in validation mode, false
  +         * otherwise.
  +         */
           public boolean isXMLParserValidating() {
               Boolean b = (Boolean)SVGAbstractTranscoder.this.hints.get
                   (KEY_XML_PARSER_VALIDATING);
  @@ -744,11 +822,11 @@
            * 
            * @param scriptType type of script, as found in the 
            *        type attribute of the &lt;script&gt; element.
  -         * @param scriptURL url for the script, as defined in
  +         * @param scriptPURL url for the script, as defined in
            *        the script's xlink:href attribute. If that
            *        attribute was empty, then this parameter should
            *        be null
  -         * @param docURL url for the document into which the 
  +         * @param docPURL url for the document into which the 
            *        script was found.
            */
           public ScriptSecurity getScriptSecurity(String scriptType,
  
  
  
  1.1                  
xml-batik/test-references/org/apache/batik/transcoder/image/anneMaxH200.png
  
        <<Binary file>>
  
  
  1.1                  
xml-batik/test-references/org/apache/batik/transcoder/image/anneMaxW200.png
  
        <<Binary file>>
  
  
  1.1                  
xml-batik/test-references/org/apache/batik/transcoder/image/anneMaxWH200.png
  
        <<Binary file>>
  
  
  1.3       +58 -1     
xml-batik/test-resources/org/apache/batik/transcoder/image/unitTesting.xml
  
  Index: unitTesting.xml
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/test-resources/org/apache/batik/transcoder/image/unitTesting.xml,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- unitTesting.xml   9 Sep 2002 13:02:07 -0000       1.2
  +++ unitTesting.xml   18 Sep 2002 09:23:12 -0000      1.3
  @@ -133,6 +133,63 @@
   
   </testGroup>
   
  +<!-- ================================================================== -->
  +<!-- KEY_MAX_WIDTH and/or KEY_MAX_HEIGHT tests                          -->
  +<!-- ================================================================== -->
  +
  +<testGroup id="transcoder.image.hints.maxDimension" 
class="org.apache.batik.transcoder.image.MaxDimensionTest">
  +
  +<!-- ###### Limit size in the document ###### -->
  +<test id="transcoder.image.hints.maxWidth200">
  +     <arg class="java.lang.String" value="samples/anne.svg" />
  +     <arg class="java.lang.String" 
value="test-references/org/apache/batik/transcoder/image/anneMaxW200.png" />
  +     <arg class="java.lang.Float" value="200" />
  +     <arg class="java.lang.Float" value="-1" />
  +</test>
  +
  +<test id="transcoder.image.hints.maxHeight200">
  +     <arg class="java.lang.String" value="samples/anne.svg" />
  +     <arg class="java.lang.String" 
value="test-references/org/apache/batik/transcoder/image/anneMaxH200.png" />
  +     <arg class="java.lang.Float" value="-1" />
  +     <arg class="java.lang.Float" value="200" />
  +</test>
  +
  +<test id="transcoder.image.hints.maxWidthHeight200">
  +     <arg class="java.lang.String" value="samples/anne.svg" />
  +     <arg class="java.lang.String" 
value="test-references/org/apache/batik/transcoder/image/anneMaxWH200.png" />
  +     <arg class="java.lang.Float" value="200" />
  +     <arg class="java.lang.Float" value="200" />
  +</test>
  +
  +<!-- ###### Limit size set in hints ###### -->
  +<test id="transcoder.image.hints.maxWidth200.overrideHints">
  +     <arg class="java.lang.String" value="samples/anne.svg" />
  +     <arg class="java.lang.String" 
value="test-references/org/apache/batik/transcoder/image/anneMaxW200.png" />
  +     <arg class="java.lang.Float" value="200" />
  +     <arg class="java.lang.Float" value="-1" />
  +     <arg class="java.lang.Float" value="300" />
  +     <arg class="java.lang.Float" value="-1" />
  +</test>
  +
  +<test id="transcoder.image.hints.maxHeight200.overrideHints">
  +     <arg class="java.lang.String" value="samples/anne.svg" />
  +     <arg class="java.lang.String" 
value="test-references/org/apache/batik/transcoder/image/anneMaxH200.png" />
  +     <arg class="java.lang.Float" value="-1" />
  +     <arg class="java.lang.Float" value="200" />
  +     <arg class="java.lang.Float" value="-1" />
  +     <arg class="java.lang.Float" value="300" />
  +</test>
  +
  +<test id="transcoder.image.hints.maxWidthHeight200.overrideHints">
  +     <arg class="java.lang.String" value="samples/anne.svg" />
  +     <arg class="java.lang.String" 
value="test-references/org/apache/batik/transcoder/image/anneMaxWH200.png" />
  +     <arg class="java.lang.Float" value="200" />
  +     <arg class="java.lang.Float" value="200" />
  +     <arg class="java.lang.Float" value="300" />
  +     <arg class="java.lang.Float" value="300" />
  +</test>
  +
  +</testGroup>
   
   <!-- ================================================================== -->
   <!-- KEY_BACKGROUND_COLOR                                               -->
  
  
  
  1.9       +45 -2     
xml-batik/test-sources/org/apache/batik/apps/rasterizer/MainTest.java
  
  Index: MainTest.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/test-sources/org/apache/batik/apps/rasterizer/MainTest.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- MainTest.java     9 Sep 2002 13:02:06 -0000       1.8
  +++ MainTest.java     18 Sep 2002 09:23:12 -0000      1.9
  @@ -157,7 +157,7 @@
           t = new MainConfigTest("-w 467.69") {
                   public TestReport validate(SVGConverter c){
                       float width = c.getWidth();
  -                    if(width != 467.69){
  +                    if(width == 467.69f){
                           return reportSuccess();
                       } else {
                           return reportError("-w", "" + 467.69, "" + width);
  @@ -184,6 +184,33 @@
           addTest(t);
           t.setId("MainConfigTest.height");
   
  +        t = new MainConfigTest("-maxw 467.69") {
  +                public TestReport validate(SVGConverter c){
  +                    float maxWidth = c.getMaxWidth();
  +                    if(maxWidth == 467.69f){
  +                        return reportSuccess();
  +                    } else {
  +                        return reportError("-maxw", "" + 467.69, "" + maxWidth);
  +                    }
  +                }
  +            
  +            };
  +        addTest(t);
  +        t.setId("MainConfigTest.maxWidth");
  +
  +        t = new MainConfigTest("-maxh 345.67") {
  +                public TestReport validate(SVGConverter c){
  +                    float maxHeight = c.getMaxHeight();
  +                    if(maxHeight == 345.67f){
  +                        return reportSuccess();
  +                    } else {
  +                        return reportError("-maxh", "" + 345.67, "" + maxHeight);
  +                    }
  +                }
  +            };
  +        addTest(t);
  +        t.setId("MainConfigTest.maxHeight");
  +
           t = new MainConfigTest("-a 5,10,20,30") {
                   public TestReport validate(SVGConverter c){
                       Rectangle2D aoi = c.getArea();
  @@ -428,6 +455,14 @@
           addTest(t);
           t.setId("MainConfigErrorTest.height");
   
  +        t = new MainConfigErrorTest("-maxw", "hello.svg -maxw");
  +        addTest(t);
  +        t.setId("MainConfigErrorTest.maxWidth");
  +
  +        t = new MainConfigErrorTest("-maxh", "hello.svg -maxh");
  +        addTest(t);
  +        t.setId("MainConfigErrorTest.maxHeight");
  +
           t = new MainConfigErrorTest("-a", "hello.svg -a");
           addTest(t);
           t.setId("MainConfigErrorTest.area");
  @@ -479,6 +514,14 @@
           t = new MainIllegalArgTest("-h", "-h abaa");
           addTest(t);
           t.setId("MainIllegalArgTest.height");
  +
  +        t = new MainIllegalArgTest("-maxw", "-maxw abd");
  +        addTest(t);
  +        t.setId("MainIllegalArgTest.maxWidth");
  +
  +        t = new MainIllegalArgTest("-maxh", "-maxh abaa");
  +        addTest(t);
  +        t.setId("MainIllegalArgTest.maxHeight");
   
           t = new MainIllegalArgTest("a", "-a aaaaaa");
           addTest(t);
  
  
  
  1.16      +19 -1     
xml-batik/test-sources/org/apache/batik/apps/rasterizer/SVGConverterTest.java
  
  Index: SVGConverterTest.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/test-sources/org/apache/batik/apps/rasterizer/SVGConverterTest.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- SVGConverterTest.java     9 Sep 2002 13:02:06 -0000       1.15
  +++ SVGConverterTest.java     18 Sep 2002 09:23:12 -0000      1.16
  @@ -115,6 +115,24 @@
           t.setId("HintsConfigTest.KEY_WIDTH");
   
           t = new HintsConfigTest(new Object[][]{
  +            {ImageTranscoder.KEY_MAX_HEIGHT, new Float(50)}}){
  +                protected void deltaConfigure(SVGConverter c){
  +                    c.setMaxHeight(50);
  +                }
  +            };
  +        addTest(t);
  +        t.setId("HintsConfigTest.KEY_MAX_HEIGHT");
  +
  +        t = new HintsConfigTest(new Object[][]{
  +            {ImageTranscoder.KEY_MAX_WIDTH, new Float(50)}}){
  +                protected void deltaConfigure(SVGConverter c){
  +                    c.setMaxWidth(50);
  +                }
  +            };
  +        addTest(t);
  +        t.setId("HintsConfigTest.KEY_MAX_WIDTH");
  +
  +        t = new HintsConfigTest(new Object[][]{
               {ImageTranscoder.KEY_MEDIA, "print"}}){
                   protected void deltaConfigure(SVGConverter c){
                       c.setMediaType("print");
  
  
  
  1.13      +41 -13    xml-batik/xdocs/svgrasterizer.xml
  
  Index: svgrasterizer.xml
  ===================================================================
  RCS file: /home/cvs/xml-batik/xdocs/svgrasterizer.xml,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- svgrasterizer.xml 19 Jun 2002 07:02:19 -0000      1.12
  +++ svgrasterizer.xml 18 Sep 2002 09:23:12 -0000      1.13
  @@ -66,7 +66,7 @@
               <s2 title="Using the binary distribution" >
   
                   <p>If you downloaded the binary distribution of Batik, you should 
have
  -                gotten a file called <em>batik-1.5beta3.zip</em>, and, after 
expanding that
  +                gotten a file called <em>batik-1.5beta4.zip</em>, and, after 
expanding that
                   file, a JAR (Java ARchive) file called 
<code>batik-rasterizer.jar</code>. 
                   To start the rasterizer, open a console, go to the directory where 
you 
                   expanded the distribution (and where 
<code>batik-rasterizer.jar</code> is located) and
  @@ -82,10 +82,12 @@
                   <p><code>java -jar batik-rasterizer.jar </code><em>[options] 
[@files]</em></p>
                   <p>Where the options are:</p>
                   <ul>
  -                <li><code>-d</code> <em>&lt;dir|file&gt;</em>. Output directory. If 
there is a single input file, this can be a file.</li>
  +                <li><code>-d</code><em> &lt;dir|file&gt;</em>. Output directory. If 
there is a single input file, this can be a file.</li>
                   <li><code>-m</code><em> &lt;mimeType&gt;</em>. Output mime type, 
one of image/png, image/jpeg, application/pdf, image/tiff.</li>
                   <li><code>-w</code><em> &lt;width&gt;</em>. Output width. This is a 
floating point value.</li>
                   <li><code>-h</code><em> &lt;height&gt;</em>. Output height. This is 
a floating point value.</li>
  +                <li><code>-maxw</code><em> &lt;width&gt;</em>. Maximum output 
width. This is a floating point value.</li>
  +                <li><code>-maxh</code><em> &lt;height&gt;</em>. Maximum output 
height. This is a floating point value.</li>
                   <li><code>-a</code><em> &lt;area&gt;</em>. Output area. The format 
for &lt;area&gt; is x,y,w,h, where x, y, w and h
                   are floating point values.</li>
                   <li><code>-bg</code><em> &lt;color&gt;</em>. Uuput color. The 
format for &lt;color&gt; is a.r.g.b, where a, r, g and b
  @@ -111,7 +113,7 @@
                       <li><code>java -jar batik-rasterizer.jar -d myDir -m image/jpeg 
samples/*.svg</code> will generate JPEG images
                       for all the SVG files found in the samples directory.</li>
                   </ul>
  -                <p><strong>NOTE:</strong>to run MIME type 
<code>application/pdf</code> need to have (see <link 
href="http://xml.apache.org/fop/index.html";>FOP</link>) installed.</p>
  +                <p><strong>NOTE:</strong> to run MIME type 
<code>application/pdf</code> need to have (see <link 
href="http://xml.apache.org/fop/index.html";>FOP</link>) installed.</p>
               </s2>
   
               <s2 title="Using the source distribution">
  @@ -162,12 +164,18 @@
   
               <anchor id="initTask" />
               <s2 title="Taking rasterizer task in use">
  -                <p>The first thing to do before you can use the task in your Ant 
  -                projects is to set <code>batik-rasterizer.jar</code> and 
  -                classes of the rasterizer task to your 
  +
  +                <p>The first thing to do is to compile rasterizer task classes. 
  +                Download <link href="install.html#distributions">source 
distribution</link> 
  +                of Batik and see <code>README</code> file in 
<code>xml-batik\contrib\rasterizertask</code> 
  +                directory for more instructions. The build procedure works the same 
way as when building 
  +                Batik itself.</p>
  +
  +                <p> After building set <code>batik-rasterizer.jar</code> and 
  +                classes (or JAR) of the rasterizer task to your 
                   <em>CLASSPATH</em>.</p>
   
  -                <p>After that you have to define the task in your Ant 
  +                <p>Next you have to define the task in your Ant 
                   project. To do this, add the following line either after the 
                   <code>project</code> start tag or after the <code>target</code> 
                   start tag in the target you are using the rasterizer task:</p>
  @@ -222,6 +230,22 @@
                           <td>No</td>
                       </tr>
                       <tr>
  +                        <td>maxheight</td>
  +                        <td>Sets the maximum height of the result image in pixels.
  +                        The image won't be higher than defined in this parameter, 
  +                        regardless of the size set in the image itself or in other 
parameters.
  +                        This is a floating point value.</td>
  +                        <td>No</td>
  +                    </tr>
  +                    <tr>
  +                        <td>maxwidth</td>
  +                        <td>Sets the maximum width of the result image in pixels.
  +                        The image won't be wider than defined in this parameter, 
  +                        regardless of the size set in the image itself or in other 
parameters.
  +                        This is a floating point value.</td>
  +                        <td>No</td>
  +                    </tr>
  +                    <tr>
                           <td>quality</td>
                           <td>Sets the quality of the produced image. The value 
                           have to be greater than 0 but smaller than 1. A bigger 
  @@ -297,11 +321,6 @@
                           <code>fileset</code> element(s).</td>
                       </tr>
                       <tr>
  -                        <td></td>
  -                        <td></td>
  -                    </tr>
  -
  -                    <tr>
                           <td>dest</td>
                           <td>Name of a one output file. Use this with 
                           <code>src</code> parameter only. Output directory is 
  @@ -334,6 +353,15 @@
                           created if they don't exist.</td>
                           <td>Required if <code>srcdir</code> attribute or 
                           <code>fileset</code> elements are used.</td>
  +                    </tr>
  +                    <tr>
  +                        <td>classname</td>
  +                        <td>Classname of the XML parser used to parse SVG images.
  +                        The value can be either complete classname with package 
  +                        information included or <code>jaxp</code>, 
  +                        which means any available parser in the 
<code>CLASSPATH</code> 
  +                        that supports JAXP. See the Batik code for the default 
value.</td>
  +                        <td>No</td>
                       </tr>
                   </table>
                   <p>You can use <code>fileset</code> elements to select input 
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to