deweese     02/02/20 05:27:10

  Modified:    samples/extensions multi.svg
               sources/org/apache/batik/extension/svg
                        BatikDomExtension.java BatikExtConstants.java
                        BatikMultiImageElementBridge.java
               sources/org/apache/batik/extension/svg/renderable
                        MultiResRable.java
  Added:       sources/org/apache/batik/extension/svg
                        BatikMultiImageElement.java
               test-references/org/apache/batik/ext/awt/geom .cvsignore
  Log:
  1) Wrapped up a few loose ends on <multiImage> extension (renamed tag to
     be consistent with rest of svg).
  
  Revision  Changes    Path
  1.2       +26 -18    xml-batik/samples/extensions/multi.svg
  
  Index: multi.svg
  ===================================================================
  RCS file: /home/cvs/xml-batik/samples/extensions/multi.svg,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- multi.svg 19 Feb 2002 22:08:43 -0000      1.1
  +++ multi.svg 20 Feb 2002 13:27:10 -0000      1.2
  @@ -14,7 +14,7 @@
   <!-- regularPoly extension tag test                                         -->
   <!--                                                                        -->
   <!-- @author [EMAIL PROTECTED]                                       -->
  -<!-- @version $Id: multi.svg,v 1.1 2002/02/19 22:08:43 deweese Exp $ -->
  +<!-- @version $Id: multi.svg,v 1.2 2002/02/20 13:27:10 deweese Exp $ -->
   <!-- ====================================================================== -->
   
   <!-- <?xml-stylesheet type="text/css" href="extension.css" ?> -->
  @@ -23,31 +23,39 @@
        viewBox="0 0 450 500"
        xmlns:batikExt="http://xml.apache.org/batik/ext";>
   
  -    <title>Multi-Image Extension Tag</title>
  -  
  +    <title>MultiImage Extension Tag</title>
  +    <defs>
  +       <g id="sample">
  +          <rect fill="#ADA" x="0" y="0" width="280" height="400"/>
  +          <batikExt:multiImage id="img" xlink:href="multi1.jpg"
  +                 x="20" y="20" width="240" height="360" 
  +                 pixel-width="480" pixel-height="720">
  +             <batikExt:subImage xlink:href="multi2.jpg" 
  +                        pixel-width="240" pixel-height="360"/>
  +             <batikExt:subImage xlink:href="multi3.jpg" 
  +                        pixel-width="120" pixel-height="180"/>
  +             <batikExt:subImage xlink:href="multi4.jpg" 
  +                        pixel-width="60" pixel-height="90"/>
  +          </batikExt:multiImage>
  +       </g>
  +    </defs>  
  +
       <!-- ============================================================= -->
       <!-- Test content                                                  -->
       <!-- ============================================================= -->
       <g id="testContent" class="legend" style="text-anchor:middle">
  -        <text x="225" y="40" class="title">Multi-Image Extension Tag</text>
  +        <text x="225" y="40" class="title">MultiImage Extension Tag</text>
     
  -        <g transform="translate(145, 145)">
  -          <rect fill="#DAA" x="0" y="0" width="160" height="220"/>
  -          <batikExt:multi-image id="img" xlink:href="multi1.jpg"
  -                 x="20" y="20" width="120" height="180" 
  -              pixel-width="480" pixel-height="720">
  -          <batikExt:sub-image xlink:href="multi2.jpg" 
  -                     pixel-width="240" pixel-height="360"/>
  -          <batikExt:sub-image xlink:href="multi3.jpg" 
  -                     pixel-width="120" pixel-height="180"/>
  -          <batikExt:sub-image xlink:href="multi4.jpg" 
  -                     pixel-width="60" pixel-height="90"/>
  -       </batikExt:multi-image>
  -        </g>
  +        <use transform="translate(10, 50)" xlink:href="#sample"/>
  +
  +        <use transform="translate(300, 50) scale(.5)" xlink:href="#sample"/>
  +
  +        <use transform="translate(300, 260) scale(.25)" xlink:href="#sample"/>
  +
       </g>
   
       <!-- ============================================================= -->
       <!-- Batik sample mark                                             -->
       <!-- ============================================================= -->
  -    <!-- <use xlink:href="../batikLogo.svg#Batik_Tag_Box" /> -->
  +    <use xlink:href="../batikLogo.svg#Batik_Tag_Box" />
   </svg>
  
  
  
  1.7       +20 -0     
xml-batik/sources/org/apache/batik/extension/svg/BatikDomExtension.java
  
  Index: BatikDomExtension.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/BatikDomExtension.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BatikDomExtension.java    23 Oct 2001 13:42:29 -0000      1.6
  +++ BatikDomExtension.java    20 Feb 2002 13:27:10 -0000      1.7
  @@ -93,6 +93,11 @@
   
           di.registerCustomElementFactory
               (BATIK_EXT_NAMESPACE_URI,
  +             BATIK_EXT_MULTI_IMAGE_TAG,
  +             new BatikMultiImageElementFactory());
  +
  +        di.registerCustomElementFactory
  +            (BATIK_EXT_NAMESPACE_URI,
                BATIK_EXT_SOLID_COLOR_TAG,
                new SolidColorElementFactory());
   
  @@ -150,6 +155,21 @@
            */
           public Element create(String prefix, Document doc) {
               return new BatikHistogramNormalizationElement
  +                (prefix, (AbstractDocument)doc);
  +        }
  +    }
  +
  +    /**
  +     * To create a 'multiImage' element.
  +     */
  +    protected static class BatikMultiImageElementFactory 
  +        implements SVGDOMImplementation.ElementFactory {
  +        public BatikMultiImageElementFactory() {}
  +        /**
  +         * Creates an instance of the associated element type.
  +         */
  +        public Element create(String prefix, Document doc) {
  +            return new BatikMultiImageElement
                   (prefix, (AbstractDocument)doc);
           }
       }
  
  
  
  1.7       +4 -4      
xml-batik/sources/org/apache/batik/extension/svg/BatikExtConstants.java
  
  Index: BatikExtConstants.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/BatikExtConstants.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BatikExtConstants.java    19 Feb 2002 22:08:43 -0000      1.6
  +++ BatikExtConstants.java    20 Feb 2002 13:27:10 -0000      1.7
  @@ -35,13 +35,13 @@
       public static final String BATIK_EXT_HISTOGRAM_NORMALIZATION_TAG =
           "histogramNormalization";
   
  -    /** Tag name for Batik's multi-image extension. */
  +    /** Tag name for Batik's multiImage extension. */
       public static final String BATIK_EXT_MULTI_IMAGE_TAG =
  -        "multi-image";
  +        "multiImage";
   
  -    /** Tag name for Batik's multi-image extension. */
  +    /** Tag name for Batik's subImage multiImage extension. */
       public static final String BATIK_EXT_SUB_IMAGE_TAG =
  -        "sub-image";
  +        "subImage";
   
       /** Attribute name for sides attribute */
       public static final String BATIK_EXT_SIDES_ATTRIBUTE = 
  
  
  
  1.2       +30 -16    
xml-batik/sources/org/apache/batik/extension/svg/BatikMultiImageElementBridge.java
  
  Index: BatikMultiImageElementBridge.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/BatikMultiImageElementBridge.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BatikMultiImageElementBridge.java 19 Feb 2002 22:08:43 -0000      1.1
  +++ BatikMultiImageElementBridge.java 20 Feb 2002 13:27:10 -0000      1.2
  @@ -42,10 +42,26 @@
   import org.apache.batik.util.ParsedURL;
   
   /**
  - * Bridge class for the &lt;image> element.
  + * Bridge class for the &lt;multiImage> element.
    *
  - * @author <a href="mailto:[EMAIL PROTECTED]";>Thierry Kormann</a>
  - * @version $Id: BatikMultiImageElementBridge.java,v 1.1 2002/02/19 22:08:43 
deweese Exp $
  + * The 'multiImage' element is similar to the 'image' element (supports
  + * all the same attributes and properties) except.
  + * <ol>
  + *    <li>It can only be used to reference raster content (this is an
  + *        implementation thing really)</li>
  + *    <li>It has two addtional attributes: 'pixel-width' and
  + *        'pixel-height' which are the maximum width and height of the
  + *        image referenced by the xlink:href attribute.</li>
  + *    <li>It can contain a child element 'subImage' which has only
  + *        three attributes, pixel-width, pixel-height and xlink:href.
  + *        The image displayed is the smallest image such that
  + *        pixel-width and pixel-height are greater than or equal to the
  + *        required image size for display.</li>
  + * </ol>
  + *
  + *
  + * @author <a href="mailto:[EMAIL PROTECTED]";>Thomas DeWeese</a>
  + * @version $Id: BatikMultiImageElementBridge.java,v 1.2 2002/02/20 13:27:10 
deweese Exp $
    */
   public class BatikMultiImageElementBridge extends SVGImageElementBridge
       implements BatikExtConstants {
  @@ -60,7 +76,7 @@
       }
   
       /**
  -     * Returns 'multi-image'.
  +     * Returns 'multiImage'.
        */
       public String getLocalName() {
           return BATIK_EXT_MULTI_IMAGE_TAG;
  @@ -174,31 +190,29 @@
           int w=0, h=0;
           String s;
   
  -        s = e.getAttributeNS
  -            (null,BATIK_EXT_PIXEL_WIDTH_ATTRIBUTE);
  -        if (s.length() == 0) 
  -            throw new BridgeException(e, ERR_ATTRIBUTE_MISSING,
  -                                      new Object[] {"pixel-width"});
  +        s = e.getAttributeNS(null,BATIK_EXT_PIXEL_WIDTH_ATTRIBUTE);
  +        if (s.length() == 0) throw new BridgeException
  +            (e, ERR_ATTRIBUTE_MISSING,
  +             new Object[] {BATIK_EXT_PIXEL_WIDTH_ATTRIBUTE});
   
           try {
               w = (int)SVGUtilities.convertSVGNumber(s);
           } catch (NumberFormatException ex) {
               throw new BridgeException
                   (e, ERR_ATTRIBUTE_VALUE_MALFORMED,
  -                 new Object[] {BATIK_EXT_TRIM_ATTRIBUTE, s});
  +                 new Object[] {BATIK_EXT_PIXEL_WIDTH_ATTRIBUTE, s});
           }
   
  -        s = e.getAttributeNS
  -            (null,BATIK_EXT_PIXEL_HEIGHT_ATTRIBUTE);
  -        if (s.length() == 0) 
  -            throw new BridgeException(e, ERR_ATTRIBUTE_MISSING,
  -                                      new Object[] {"pixel-height"});
  +        s = e.getAttributeNS(null,BATIK_EXT_PIXEL_HEIGHT_ATTRIBUTE);
  +        if (s.length() == 0) throw new BridgeException
  +            (e, ERR_ATTRIBUTE_MISSING,
  +             new Object[] {BATIK_EXT_PIXEL_HEIGHT_ATTRIBUTE});
           try {
               h = (int)SVGUtilities.convertSVGNumber(s);
           } catch (NumberFormatException ex) {
               throw new BridgeException
                   (e, ERR_ATTRIBUTE_VALUE_MALFORMED,
  -                 new Object[] {BATIK_EXT_TRIM_ATTRIBUTE, s});
  +                 new Object[] {BATIK_EXT_PIXEL_HEIGHT_ATTRIBUTE, s});
           }
   
           return new Dimension(w, h);
  
  
  
  1.1                  
xml-batik/sources/org/apache/batik/extension/svg/BatikMultiImageElement.java
  
  Index: BatikMultiImageElement.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.extension.svg;
  
  import org.w3c.dom.Node;
  
  import org.apache.batik.dom.AbstractDocument;
  import org.apache.batik.extension.PrefixableStylableExtensionElement;
  
  /**
   *  This class implements a multiImage extension to SVG.
   *
   * The 'multiImage' element is similar to the 'image' element (supports
   * all the same attributes and properties) except.
   * <ol>
   *    <li>It can only be used to reference raster content (this is an
   *        implementation thing really)</li>
   *    <li>It has two addtional attributes: 'pixel-width' and
   *        'pixel-height' which are the maximum width and height of the
   *        image referenced by the xlink:href attribute.</li>
   *    <li>It can contain a child element 'subImage' which has only
   *        three attributes, pixel-width, pixel-height and xlink:href.
   *        The image displayed is the smallest image such that
   *        pixel-width and pixel-height are greater than or equal to the
   *        required image size for display.</li>
   * </ol>
   *
   * @author <a href="mailto:[EMAIL PROTECTED]";>Thomas DeWeese</a>
   * @version $Id: BatikMultiImageElement.java,v 1.1 2002/02/20 13:27:10 deweese Exp $ 
*/
  public class BatikMultiImageElement
      extends    PrefixableStylableExtensionElement 
      implements BatikExtConstants {
  
      /**
       * Creates a new BatikMultiImageElement object.
       */
      protected BatikMultiImageElement() {
      }
  
      /**
       * Creates a new BatikMultiImageElement object.
       * @param prefix The namespace prefix.
       * @param owner The owner document.
       */
      public BatikMultiImageElement(String prefix, AbstractDocument owner) {
          super(prefix, owner);
      }
  
      /**
       * <b>DOM</b>: Implements {@link org.w3c.dom.Node#getLocalName()}.
       */
      public String getLocalName() {
          return BATIK_EXT_MULTI_IMAGE_TAG;
      }
  
      /**
       * <b>DOM</b>: Implements {@link org.w3c.dom.Node#getNamespaceURI()}.
       */
      public String getNamespaceURI() {
          return BATIK_EXT_NAMESPACE_URI;
      }
  
      /**
       * Returns a new uninitialized instance of this object's class.
       */
      protected Node newNode() {
          return new BatikMultiImageElement();
      }
  }
  
  
  
  1.2       +16 -4     
xml-batik/sources/org/apache/batik/extension/svg/renderable/MultiResRable.java
  
  Index: MultiResRable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/sources/org/apache/batik/extension/svg/renderable/MultiResRable.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- MultiResRable.java        19 Feb 2002 22:08:44 -0000      1.1
  +++ MultiResRable.java        20 Feb 2002 13:27:10 -0000      1.2
  @@ -11,6 +11,7 @@
   import java.awt.Dimension;
   import java.awt.Rectangle;
   import java.awt.RenderingHints;
  +import java.awt.Shape;
   import java.awt.geom.AffineTransform;
   import java.awt.geom.Rectangle2D;
   import java.awt.image.RenderedImage;
  @@ -28,7 +29,7 @@
    * RenderableImage world.
    *
    * @author <a href="mailto:[EMAIL PROTECTED]>Thomas DeWeese</a>
  - * @version $Id: MultiResRable.java,v 1.1 2002/02/19 22:08:44 deweese Exp $
  + * @version $Id: MultiResRable.java,v 1.2 2002/02/20 13:27:10 deweese Exp $
    */
   public class MultiResRable
       extends    AbstractRable {
  @@ -72,6 +73,10 @@
               srcs[idx] = new SoftReference(f);
           }
   
  +        // Just copy over the rendering hints.
  +        RenderingHints rh = rc.getRenderingHints();
  +        if (rh == null) rh = new RenderingHints(null);
  +
           double sx = bounds.getWidth() /(double)f.getWidth();
           double sy = bounds.getHeight()/(double)f.getHeight();
           
  @@ -79,8 +84,15 @@
           AffineTransform at = rc.getTransform();
           at.scale(sx, sy);
   
  -        rc.setTransform(at);
  -        return f.createRendering(rc);
  +        // Map the area of interest to our input...
  +        Shape aoi = rc.getAreaOfInterest();
  +        if (aoi != null) {
  +            AffineTransform invAt = AffineTransform.getScaleInstance
  +                (1/sx, 1/sy);
  +            aoi = invAt.createTransformedShape(aoi);
  +        }
  +
  +        return f.createRendering(new RenderContext(at, aoi, rh));
       }
   
       public RenderedImage createRendering(RenderContext rc) {
  @@ -93,7 +105,7 @@
           
           double w = bounds.getWidth()*det;
           for (int i=1; i<sizes.length; i++) {
  -            if (w >= sizes[i].width) 
  +            if (w > sizes[i].width) 
                   return getImage(i-1, rc);
           }
   
  
  
  
  1.1                  
xml-batik/test-references/org/apache/batik/ext/awt/geom/.cvsignore
  
  Index: .cvsignore
  ===================================================================
  candidate
  variation
  
  
  

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

Reply via email to