vmote       2003/08/28 12:49:45

  Modified:    src/java/org/apache/fop/fo FOTreeBuilder.java
                        FOTreeVisitor.java
               src/java/org/apache/fop/image/analyser SVGReader.java
               src/java/org/apache/fop/render/pdf PDFXMLHandler.java
               src/java/org/apache/fop/render/ps PSXMLHandler.java
  Added:       src/java/org/apache/fop/fo/extensions/svg SVGElement.java
                        SVGElementMapping.java SVGObj.java
                        SVGUserAgent.java
  Removed:     src/java/org/apache/fop/svg SVGElement.java
                        SVGElementMapping.java SVGObj.java
                        SVGUserAgent.java
  Log:
  move svg classes related to the FO Tree building from svg to fo/extensions/svg
  
  Revision  Changes    Path
  1.14      +1 -1      xml-fop/src/java/org/apache/fop/fo/FOTreeBuilder.java
  
  Index: FOTreeBuilder.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOTreeBuilder.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FOTreeBuilder.java        26 Aug 2003 17:15:14 -0000      1.13
  +++ FOTreeBuilder.java        28 Aug 2003 19:49:44 -0000      1.14
  @@ -162,7 +162,7 @@
        */
       private void setupDefaultMappings() {
           addElementMapping("org.apache.fop.fo.FOElementMapping");
  -        addElementMapping("org.apache.fop.svg.SVGElementMapping");
  +        addElementMapping("org.apache.fop.fo.extensions.svg.SVGElementMapping");
           addElementMapping("org.apache.fop.fo.extensions.ExtensionElementMapping");
   
           // add mappings from available services
  
  
  
  1.3       +3 -3      xml-fop/src/java/org/apache/fop/fo/FOTreeVisitor.java
  
  Index: FOTreeVisitor.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/fo/FOTreeVisitor.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FOTreeVisitor.java        26 Aug 2003 17:15:14 -0000      1.2
  +++ FOTreeVisitor.java        28 Aug 2003 19:49:44 -0000      1.3
  @@ -115,8 +115,8 @@
   import org.apache.fop.fo.flow.MultiToggle;
   import org.apache.fop.fo.flow.TableAndCaption;
   import org.apache.fop.fo.flow.TableCaption;
  -import org.apache.fop.svg.SVGObj;
  -import org.apache.fop.svg.SVGElement;
  +import org.apache.fop.fo.extensions.svg.SVGObj;
  +import org.apache.fop.fo.extensions.svg.SVGElement;
   
   /**
    * <p>Implements the GoF Visitor design pattern to allow access to the FOTree
  
  
  
  1.1                  
xml-fop/src/java/org/apache/fop/fo/extensions/svg/SVGElement.java
  
  Index: SVGElement.java
  ===================================================================
  /*
   * $Id: SVGElement.java,v 1.1 2003/08/28 19:49:44 vmote Exp $
   * ============================================================================
   *                    The Apache Software License, Version 1.1
   * ============================================================================
   *
   * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   *
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   *
   * 3. The end-user documentation included with the redistribution, if any, must
   *    include the following acknowledgment: "This product includes software
   *    developed by the Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself, if
   *    and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "FOP" and "Apache Software Foundation" must not be used to
   *    endorse or promote products derived from this software without prior
   *    written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache", nor may
   *    "Apache" appear in their name, without prior written permission of the
   *    Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * ============================================================================
   *
   * This software consists of voluntary contributions made by many individuals
   * on behalf of the Apache Software Foundation and was originally created by
   * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache
   * Software Foundation, please see <http://www.apache.org/>.
   */
  package org.apache.fop.fo.extensions.svg;
  
  // FOP
  import org.apache.fop.fo.FONode;
  import org.apache.fop.fo.FOTreeVisitor;
  import org.apache.fop.apps.FOPException;
  
  import org.apache.batik.dom.svg.SVGOMDocument;
  import org.apache.batik.dom.svg.SVGOMElement;
  import org.apache.batik.dom.svg.SVGContext;
  import org.apache.batik.dom.util.XMLSupport;
  import org.w3c.dom.Element;
  import org.w3c.dom.svg.SVGDocument;
  import org.xml.sax.Attributes;
  import org.apache.batik.bridge.UnitProcessor;
  import org.apache.batik.util.SVGConstants;
  
  import org.w3c.dom.DOMImplementation;
  
  import org.apache.batik.dom.svg.SVGDOMImplementation;
  
  import java.net.URL;
  import java.awt.geom.AffineTransform;
  import java.awt.geom.Point2D;
  import java.awt.geom.Rectangle2D;
  import org.apache.fop.apps.*;
  import org.apache.fop.svg.*;
  
  /**
   * class representing the SVG root element
   * for constructing an svg document.
   */
  public class SVGElement extends SVGObj {
  
      /**
       * Constructs an SVG object
       *
       * @param parent the parent formatting object
       */
      public SVGElement(FONode parent) {
          super(parent);
      }
  
      /**
       * Handle the xml attributes from SAX.
       * @param attlist the attribute list
       * @throws FOPException not thrown from here
       */
      public void handleAttrs(Attributes attlist) throws FOPException {
          super.handleAttrs(attlist);
          init();
      }
  
      /**
       * Get the dimensions of this XML document.
       * @param view the viewport dimensions
       * @return the dimensions of this SVG document
       */
      public Point2D getDimension(final Point2D view) {
  
          // TODO - change so doesn't hold onto fo,area tree
          Element svgRoot = element;
          /* create an SVG area */
          /* if width and height are zero, get the bounds of the content. */
  
          try {
              String baseDir = userAgent.getBaseURL();
              if (baseDir != null) {
                  ((SVGOMDocument)doc).setURLObject(new URL(baseDir));
              }
          } catch (Exception e) {
              getLogger().error("Could not set base URL for svg", e);
          }
  
          Element e = ((SVGDocument)doc).getRootElement();
          final float ptmm = userAgent.getPixelUnitToMillimeter();
          // temporary svg context
          SVGContext dc = new SVGContext() {
              public float getPixelToMM() {
                  return ptmm;
              }
              public float getPixelUnitToMillimeter() {
                  return ptmm;
              }
  
              public Rectangle2D getBBox() {
                  return new Rectangle2D.Double(0, 0, view.getX(), view.getY());
              }
  
              /**
               * Returns the transform from the global transform space to pixels.
               */
              public AffineTransform getScreenTransform() {
                  throw new UnsupportedOperationException("NYI");
              }
  
              /**
               * Sets the transform to be used from the global transform space
               * to pixels.
               */
              public void setScreenTransform(AffineTransform at) {
                  throw new UnsupportedOperationException("NYI");
              }
  
              public AffineTransform getCTM() {
                  return new AffineTransform();
              }
  
              public AffineTransform getGlobalTransform() {
                  return new AffineTransform();
              }
  
              public float getViewportWidth() {
                  return (float)view.getX();
              }
  
              public float getViewportHeight() {
                  return (float)view.getY();
              }
  
              public float getFontSize() {
                  return 12;
              }
          };
          ((SVGOMElement)e).setSVGContext(dc);
  
          //if (!e.hasAttributeNS(XMLSupport.XMLNS_NAMESPACE_URI, "xmlns")) {
              e.setAttributeNS(XMLSupport.XMLNS_NAMESPACE_URI, "xmlns",
                                  SVGDOMImplementation.SVG_NAMESPACE_URI);
          //}
          int fontSize = 12;
          Point2D p2d = getSize(fontSize, svgRoot, 
userAgent.getPixelUnitToMillimeter());
         ((SVGOMElement)e).setSVGContext(null);
  
          return p2d;
      }
  
      private void init() {
          DOMImplementation impl = SVGDOMImplementation.getDOMImplementation();
          String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI;
          doc = impl.createDocument(svgNS, "svg", null);
  
          element = doc.getDocumentElement();
  
          buildTopLevel(doc, element);
      }
  
      /**
       * Get the size of the SVG root element.
       * @param size the font size
       * @param svgRoot the svg root element
       * @param ptmm the pixel to millimeter conversion factor
       * @return the size of the SVG document
       */
      public static Point2D getSize(int size, Element svgRoot, float ptmm) {
          String str;
          UnitProcessor.Context ctx;
          ctx = new PDFUnitContext(size, svgRoot, ptmm);
          str = svgRoot.getAttributeNS(null, SVGConstants.SVG_WIDTH_ATTRIBUTE);
          if (str.length() == 0) {
              str = "100%";
          }
          float width = UnitProcessor.svgHorizontalLengthToUserSpace
              (str, SVGConstants.SVG_WIDTH_ATTRIBUTE, ctx);
  
          str = svgRoot.getAttributeNS(null, SVGConstants.SVG_HEIGHT_ATTRIBUTE);
          if (str.length() == 0) {
              str = "100%";
          }
          float height = UnitProcessor.svgVerticalLengthToUserSpace
              (str, SVGConstants.SVG_HEIGHT_ATTRIBUTE, ctx);
          return new Point2D.Float(width, height);
      }
  
      /**
       * This class is the default context for a particular
       * element. Informations not available on the element are get from
       * the bridge context (such as the viewport or the pixel to
       * millimeter factor.
       */
      public static class PDFUnitContext implements UnitProcessor.Context {
  
          /** The element. */
          private Element e;
          private int fontSize;
          private float pixeltoMM;
  
          /**
           * Create a PDF unit context.
           * @param size the font size.
           * @param e the svg element
           * @param ptmm the pixel to millimeter factor
           */
          public PDFUnitContext(int size, Element e, float ptmm) {
              this.e = e;
              this.fontSize = size;
              this.pixeltoMM = ptmm;
          }
  
          /**
           * Returns the element.
           * @return the element
           */
          public Element getElement() {
              return e;
          }
  
          /**
           * Returns the context of the parent element of this context.
           * Since this is always for the root SVG element there never
           * should be one...
           * @return null
           */
          public UnitProcessor.Context getParentElementContext() {
              return null;
          }
  
          /**
           * Returns the pixel to mm factor. (this is deprecated)
           * @return the pixel to millimeter factor
           */
          public float getPixelToMM() {
              return pixeltoMM;
          }
  
          /**
           * Returns the pixel to mm factor.
           * @return the pixel to millimeter factor
           */
          public float getPixelUnitToMillimeter() {
              return pixeltoMM;
          }
  
          /**
           * Returns the font-size value.
           * @return the default font size
           */
          public float getFontSize() {
              return fontSize;
          }
  
          /**
           * Returns the x-height value.
           * @return the x-height value
           */
          public float getXHeight() {
              return 0.5f;
          }
  
          /**
           * Returns the viewport width used to compute units.
           * @return the default viewport width of 100
           */
          public float getViewportWidth() {
              return 100;
          }
  
          /**
           * Returns the viewport height used to compute units.
           * @return the default viewport height of 100
           */
          public float getViewportHeight() {
              return 100;
          }
      }
  
      public void acceptVisitor(FOTreeVisitor fotv) {
          fotv.serveVisitor(this);
      }
  
  }
  
  
  
  
  1.1                  
xml-fop/src/java/org/apache/fop/fo/extensions/svg/SVGElementMapping.java
  
  Index: SVGElementMapping.java
  ===================================================================
  /*
   * $Id: SVGElementMapping.java,v 1.1 2003/08/28 19:49:44 vmote Exp $
   * ============================================================================
   *                    The Apache Software License, Version 1.1
   * ============================================================================
   * 
   * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   * 
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following disclaimer.
   * 
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   * 
   * 3. The end-user documentation included with the redistribution, if any, must
   *    include the following acknowledgment: "This product includes software
   *    developed by the Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself, if
   *    and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "FOP" and "Apache Software Foundation" must not be used to
   *    endorse or promote products derived from this software without prior
   *    written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   * 
   * 5. Products derived from this software may not be called "Apache", nor may
   *    "Apache" appear in their name, without prior written permission of the
   *    Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * ============================================================================
   * 
   * This software consists of voluntary contributions made by many individuals
   * on behalf of the Apache Software Foundation and was originally created by
   * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache
   * Software Foundation, please see <http://www.apache.org/>.
   */ 
  package org.apache.fop.fo.extensions.svg;
  
  import java.util.HashMap;
  
  import org.apache.fop.fo.FONode;
  import org.apache.fop.fo.ElementMapping;
  import org.apache.fop.apps.FOFileHandler;
  
  import org.apache.batik.util.XMLResourceDescriptor;
  import org.apache.batik.dom.svg.SVGDOMImplementation;
  
  import org.apache.fop.svg.*;
  
  /**
   * Setup the SVG element mapping.
   * This adds the svg element mappings used to create the objects
   * that create the SVG Document.
   */
  public class SVGElementMapping extends ElementMapping {
      private boolean batik = true;
  
      public SVGElementMapping() {
          namespaceURI = SVGDOMImplementation.SVG_NAMESPACE_URI;
      }
  
      protected void initialize() {
          if (foObjs == null && batik == true) {
              // this sets the parser that will be used
              // by default (SVGBrokenLinkProvider)
              // normally the user agent value is used
              try {
                  XMLResourceDescriptor.setXMLParserClassName(
                    FOFileHandler.getParserClassName());
      
                  foObjs = new HashMap();
                  foObjs.put("svg", new SE());
                  foObjs.put(DEFAULT, new SVGMaker());
              } catch (Throwable t) {
                  // if the classes are not available
                  // the DISPLAY is not checked
                  batik = false;
              }
          }
      }
  
      static class SVGMaker extends ElementMapping.Maker {
          public FONode make(FONode parent) {
              return new SVGObj(parent);
          }
      }
  
      static class SE extends ElementMapping.Maker {
          public FONode make(FONode parent) {
              return new SVGElement(parent);
          }
      }
  }
  
  
  
  1.1                  xml-fop/src/java/org/apache/fop/fo/extensions/svg/SVGObj.java
  
  Index: SVGObj.java
  ===================================================================
  /*
   * $Id: SVGObj.java,v 1.1 2003/08/28 19:49:44 vmote Exp $
   * ============================================================================
   *                    The Apache Software License, Version 1.1
   * ============================================================================
   *
   * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   *
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   *
   * 3. The end-user documentation included with the redistribution, if any, must
   *    include the following acknowledgment: "This product includes software
   *    developed by the Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself, if
   *    and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "FOP" and "Apache Software Foundation" must not be used to
   *    endorse or promote products derived from this software without prior
   *    written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   *
   * 5. Products derived from this software may not be called "Apache", nor may
   *    "Apache" appear in their name, without prior written permission of the
   *    Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * ============================================================================
   *
   * This software consists of voluntary contributions made by many individuals
   * on behalf of the Apache Software Foundation and was originally created by
   * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache
   * Software Foundation, please see <http://www.apache.org/>.
   */
  package org.apache.fop.fo.extensions.svg;
  
  import org.apache.fop.fo.FONode;
  import org.apache.fop.fo.XMLObj;
  import org.apache.fop.fo.FOTreeVisitor;
  
  /**
   * Class for SVG element objects.
   * This aids in the construction of the SVG Document.
   */
  public class SVGObj extends XMLObj {
      /**
       * constructs an svg object (called by Maker).
       *
       * @param parent the parent formatting object
       */
      public SVGObj(FONode parent) {
          super(parent);
      }
  
      /**
       * Get the namespace for svg.
       * @return the svg namespace
       */
      public String getNameSpace() {
          return "http://www.w3.org/2000/svg";;
      }
  
      public void acceptVisitor(FOTreeVisitor fotv) {
          fotv.serveVisitor(this);
      }
  
  }
  
  
  
  
  1.1                  
xml-fop/src/java/org/apache/fop/fo/extensions/svg/SVGUserAgent.java
  
  Index: SVGUserAgent.java
  ===================================================================
  /*
   * $Id: SVGUserAgent.java,v 1.1 2003/08/28 19:49:44 vmote Exp $
   * ============================================================================
   *                    The Apache Software License, Version 1.1
   * ============================================================================
   * 
   * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without modifica-
   * tion, are permitted provided that the following conditions are met:
   * 
   * 1. Redistributions of source code must retain the above copyright notice,
   *    this list of conditions and the following disclaimer.
   * 
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   * 
   * 3. The end-user documentation included with the redistribution, if any, must
   *    include the following acknowledgment: "This product includes software
   *    developed by the Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself, if
   *    and wherever such third-party acknowledgments normally appear.
   * 
   * 4. The names "FOP" and "Apache Software Foundation" must not be used to
   *    endorse or promote products derived from this software without prior
   *    written permission. For written permission, please contact
   *    [EMAIL PROTECTED]
   * 
   * 5. Products derived from this software may not be called "Apache", nor may
   *    "Apache" appear in their name, without prior written permission of the
   *    Apache Software Foundation.
   * 
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
   * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
   * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
   * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
   * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
   * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   * ============================================================================
   * 
   * This software consists of voluntary contributions made by many individuals
   * on behalf of the Apache Software Foundation and was originally created by
   * James Tauber <[EMAIL PROTECTED]>. For more information on the Apache
   * Software Foundation, please see <http://www.apache.org/>.
   */ 
  package org.apache.fop.fo.extensions.svg;
  
  import org.apache.fop.apps.FOUserAgent;
  
  import org.apache.batik.bridge.UserAgentAdapter;
  
  import org.apache.avalon.framework.logger.Logger;
  
  // Java
  import java.awt.geom.AffineTransform;
  import java.awt.geom.Dimension2D;
  import java.awt.Dimension;
  
  /**
   * The SVG user agent.
   * This is an implementation of the batik svg user agent
   * for handling errors and getting user agent values.
   */
  public class SVGUserAgent extends UserAgentAdapter {
      private AffineTransform currentTransform = null;
      private FOUserAgent userAgent;
  
      /**
       * Creates a new SVGUserAgent.
       * @param ua the FO user agent
       * @param at the current transform
       */
      public SVGUserAgent(FOUserAgent ua, AffineTransform at) {
          currentTransform = at;
          userAgent = ua;
      }
  
      /**
       * Returns the logger associated with this user agent.
       * @return Logger the logger
       */
      protected final Logger getLogger() {
          return this.userAgent.getLogger();
      }
  
      /**
       * Displays an error message.
       * @param message the message to display
       */
      public void displayError(String message) {
          getLogger().error(message);
      }
  
      /**
       * Displays an error resulting from the specified Exception.
       * @param ex the exception to display
       */
      public void displayError(Exception ex) {
          getLogger().error("SVG Error" + ex.getMessage(), ex);
      }
  
      /**
       * Displays a message in the User Agent interface.
       * The given message is typically displayed in a status bar.
       * @param message the message to display
       */
      public void displayMessage(String message) {
          getLogger().info(message);
      }
  
      /**
       * Shows an alert dialog box.
       * @param message the message to display
       */
      public void showAlert(String message) {
          getLogger().warn(message);
      }
  
      /**
       * Returns a customized the pixel to mm factor.
       * @return the pixel unit to millimeter conversion factor
       */
      public float getPixelUnitToMillimeter() {
          return userAgent.getPixelUnitToMillimeter();
      }
  
      /**
       * Returns the language settings.
       * @return the languages supported
       */
      public String getLanguages() {
          return "en"; // userLanguages;
      }
  
      /**
       * Returns the media type for this rendering.
       * @return the media for fo documents is "print"
       */
      public String getMedia() {
          return "print";
      }
  
      /**
       * Returns the user stylesheet uri.
       * @return null if no user style sheet was specified.
       */
      public String getUserStyleSheetURI() {
          return null; // userStyleSheetURI;
      }
  
      /**
       * Returns the class name of the XML parser.
       * @return the XML parser class name
       */
      public String getXMLParserClassName() {
          return org.apache.fop.apps.FOFileHandler.getParserClassName();
      }
  
      /**
       * Is the XML parser validating.
       * @return true if the xml parser is validating
       */
      public boolean isXMLParserValidating() {
          return false;
      }
  
      /**
       * Get the transform of the svg document.
       * @return the transform
       */
      public AffineTransform getTransform() {
          return currentTransform;
      }
  
      /**
       * Get the default viewport size for an svg document.
       * This returns a default value of 100x100.
       * @return the default viewport size
       */
      public Dimension2D getViewportSize() {
          return new Dimension(100, 100);
      }
  
  }
  
  
  
  
  1.3       +1 -1      xml-fop/src/java/org/apache/fop/image/analyser/SVGReader.java
  
  Index: SVGReader.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/image/analyser/SVGReader.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SVGReader.java    22 Aug 2003 17:42:41 -0000      1.2
  +++ SVGReader.java    28 Aug 2003 19:49:44 -0000      1.3
  @@ -70,7 +70,7 @@
   import org.apache.fop.image.XMLImage;
   import org.apache.fop.image.FopImage;
   import org.apache.fop.apps.FOUserAgent;
  -import org.apache.fop.svg.SVGUserAgent;
  +import org.apache.fop.fo.extensions.svg.SVGUserAgent;
   
   /** 
    * ImageReader object for SVG document image type.
  
  
  
  1.5       +1 -1      xml-fop/src/java/org/apache/fop/render/pdf/PDFXMLHandler.java
  
  Index: PDFXMLHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/pdf/PDFXMLHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PDFXMLHandler.java        22 Aug 2003 17:42:42 -0000      1.4
  +++ PDFXMLHandler.java        28 Aug 2003 19:49:45 -0000      1.5
  @@ -61,7 +61,7 @@
   import org.apache.fop.svg.PDFTextElementBridge;
   import org.apache.fop.svg.PDFAElementBridge;
   import org.apache.fop.svg.PDFGraphics2D;
  -import org.apache.fop.svg.SVGUserAgent;
  +import org.apache.fop.fo.extensions.svg.SVGUserAgent;
   import org.apache.fop.apps.Document;
   
   /* org.w3c.dom.Document is not imported to avoid conflict with
  
  
  
  1.5       +1 -1      xml-fop/src/java/org/apache/fop/render/ps/PSXMLHandler.java
  
  Index: PSXMLHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-fop/src/java/org/apache/fop/render/ps/PSXMLHandler.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- PSXMLHandler.java 22 Aug 2003 17:42:42 -0000      1.4
  +++ PSXMLHandler.java 28 Aug 2003 19:49:45 -0000      1.5
  @@ -71,7 +71,7 @@
   import org.apache.fop.apps.Document;
   import org.apache.fop.render.XMLHandler;
   import org.apache.fop.render.RendererContext;
  -import org.apache.fop.svg.SVGUserAgent;
  +import org.apache.fop.fo.extensions.svg.SVGUserAgent;
   import org.apache.fop.apps.*;
   
   /**
  
  
  

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

Reply via email to