You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by vh...@apache.org on 2001/09/18 12:47:57 UTC

cvs commit: xml-batik/sources/org/apache/batik/svggen SVGEllipse.java SVGGraphics2D.java SVGRectangle.java

vhardy      01/09/18 03:47:57

  Modified:    sources/org/apache/batik/apps/svgbrowser
                        JSVGViewerFrame.java
               sources/org/apache/batik/svggen SVGEllipse.java
                        SVGGraphics2D.java SVGRectangle.java
  Log:
  Fixed bugs #929 and #1574.
  
  Revision  Changes    Path
  1.49      +4 -3      xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java
  
  Index: JSVGViewerFrame.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- JSVGViewerFrame.java	2001/09/10 15:23:33	1.48
  +++ JSVGViewerFrame.java	2001/09/18 10:47:57	1.49
  @@ -138,7 +138,7 @@
    * This class represents a SVG viewer swing frame.
    *
    * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
  - * @version $Id: JSVGViewerFrame.java,v 1.48 2001/09/10 15:23:33 tkormann Exp $
  + * @version $Id: JSVGViewerFrame.java,v 1.49 2001/09/18 10:47:57 vhardy Exp $
    */
   public class JSVGViewerFrame
       extends    JFrame
  @@ -812,7 +812,8 @@
           public PrintAction() {}
           public void actionPerformed(ActionEvent e) {
               if (svgDocument != null) {
  -                final SVGDocument doc = svgDocument;
  +                // final SVGDocument doc = svgDocument;
  +                final String docURI = svgCanvas.getURI();
                   new Thread() {
                       public void run(){
                           //
  @@ -837,7 +838,7 @@
                           //
                           // Do transcoding now
                           //
  -                        pt.transcode(new TranscoderInput(doc), null);
  +                        pt.transcode(new TranscoderInput(docURI), null);
   
                           //
                           // Print
  
  
  
  1.6       +42 -15    xml-batik/sources/org/apache/batik/svggen/SVGEllipse.java
  
  Index: SVGEllipse.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGEllipse.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGEllipse.java	2001/03/21 14:35:59	1.5
  +++ SVGEllipse.java	2001/09/18 10:47:57	1.6
  @@ -19,20 +19,31 @@
    * a corresponding SVG element, i.e., a circle or an ellipse.
    *
    * @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
  - * @version $Id: SVGEllipse.java,v 1.5 2001/03/21 14:35:59 cjolif Exp $
  + * @version $Id: SVGEllipse.java,v 1.6 2001/09/18 10:47:57 vhardy Exp $
    */
   public class SVGEllipse extends SVGGraphicObjectConverter {
       /**
  +     * Line converter used for degenerate cases
  +     */
  +    private SVGLine svgLine;
  +
  +    /**
        * @param generatorContext used to build Elements
        */
       public SVGEllipse(SVGGeneratorContext generatorContext) {
           super(generatorContext);
  +
  +        svgLine = new SVGLine(generatorContext);
       }
   
       /**
        * @param ellipse the Ellipse2D object to be converted
        */
       public Element toSVG(Ellipse2D ellipse) {
  +        if(ellipse.getWidth() < 0 || ellipse.getHeight() < 0){
  +            return null;
  +        }
  +
           if(ellipse.getWidth() == ellipse.getHeight())
               return toSVGCircle(ellipse);
           else
  @@ -61,19 +72,35 @@
        * @param ellipse the Ellipse2D object to be converted to an ellipse
        */
       private Element toSVGEllipse(Ellipse2D ellipse){
  -        Element svgCircle =
  -            generatorContext.domFactory.createElementNS(SVG_NAMESPACE_URI,
  -                                                        SVG_ELLIPSE_TAG);
  -        svgCircle.setAttributeNS(null, SVG_CX_ATTRIBUTE,
  -                               doubleString(ellipse.getX() +
  -                                            ellipse.getWidth()/2));
  -        svgCircle.setAttributeNS(null, SVG_CY_ATTRIBUTE,
  -                               doubleString(ellipse.getY() +
  -                                            ellipse.getHeight()/2));
  -        svgCircle.setAttributeNS(null, SVG_RX_ATTRIBUTE,
  -                                 doubleString(ellipse.getWidth()/2));
  -        svgCircle.setAttributeNS(null, SVG_RY_ATTRIBUTE,
  -                                 doubleString(ellipse.getHeight()/2));
  -        return svgCircle;
  +        if(ellipse.getWidth() > 0 && ellipse.getHeight() > 0){
  +            Element svgCircle =
  +                generatorContext.domFactory.createElementNS(SVG_NAMESPACE_URI,
  +                                                            SVG_ELLIPSE_TAG);
  +            svgCircle.setAttributeNS(null, SVG_CX_ATTRIBUTE,
  +                                     doubleString(ellipse.getX() +
  +                                                  ellipse.getWidth()/2));
  +            svgCircle.setAttributeNS(null, SVG_CY_ATTRIBUTE,
  +                                     doubleString(ellipse.getY() +
  +                                                  ellipse.getHeight()/2));
  +            svgCircle.setAttributeNS(null, SVG_RX_ATTRIBUTE,
  +                                     doubleString(ellipse.getWidth()/2));
  +            svgCircle.setAttributeNS(null, SVG_RY_ATTRIBUTE,
  +                                     doubleString(ellipse.getHeight()/2));
  +            return svgCircle;
  +        }
  +        else if(ellipse.getWidth() == 0 && ellipse.getHeight() > 0){
  +            // Degenerate to a line
  +            Line2D line = new Line2D.Double(ellipse.getX(), ellipse.getY(), ellipse.getX(), 
  +                                            ellipse.getY() + ellipse.getHeight());
  +            return svgLine.toSVG(line);
  +        }
  +        else if(ellipse.getWidth() > 0 && ellipse.getHeight() == 0){
  +            // Degenerate to a line
  +            Line2D line = new Line2D.Double(ellipse.getX(), ellipse.getY(),
  +                                            ellipse.getX() + ellipse.getWidth(),
  +                                            ellipse.getY());
  +            return svgLine.toSVG(line);
  +        }
  +        return null;
       }
   }
  
  
  
  1.22      +3 -8      xml-batik/sources/org/apache/batik/svggen/SVGGraphics2D.java
  
  Index: SVGGraphics2D.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGGraphics2D.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- SVGGraphics2D.java	2001/08/29 12:47:08	1.21
  +++ SVGGraphics2D.java	2001/09/18 10:47:57	1.22
  @@ -44,7 +44,7 @@
    *
    *
    * @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
  - * @version $Id: SVGGraphics2D.java,v 1.21 2001/08/29 12:47:08 cjolif Exp $
  + * @version $Id: SVGGraphics2D.java,v 1.22 2001/09/18 10:47:57 vhardy Exp $
    * @see                org.apache.batik.ext.awt.g2d.GraphicContext
    * @see                org.apache.batik.svggen.DOMTreeManager
    * @see                org.apache.batik.svggen.DOMGroupManager
  @@ -103,8 +103,7 @@
       /**
        * SVG Canvas size
        */
  -    private Dimension svgCanvasSize =
  -        new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
  +    private Dimension svgCanvasSize;
   
       /**
        * Used to create proper font metrics
  @@ -126,13 +125,9 @@
       }
   
       /**
  -     * @param SVG Canvas size
  +     * @param SVG Canvas size. May be null (equivalent to 100%, 100%)
        */
       public final void setSVGCanvasSize(Dimension svgCanvasSize) {
  -        if (svgCanvasSize == null)
  -            generatorCtx.errorHandler.
  -                handleError(new SVGGraphics2DRuntimeException(ERR_CANVAS_SIZE_NULL));
  -
           this.svgCanvasSize = new Dimension(svgCanvasSize);
       }
   
  
  
  
  1.7       +47 -16    xml-batik/sources/org/apache/batik/svggen/SVGRectangle.java
  
  Index: SVGRectangle.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGRectangle.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGRectangle.java	2001/03/21 14:36:20	1.6
  +++ SVGRectangle.java	2001/09/18 10:47:57	1.7
  @@ -19,14 +19,20 @@
    * object into an SVG element.
    *
    * @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
  - * @version $Id: SVGRectangle.java,v 1.6 2001/03/21 14:36:20 cjolif Exp $
  + * @version $Id: SVGRectangle.java,v 1.7 2001/09/18 10:47:57 vhardy Exp $
    */
   public class SVGRectangle extends SVGGraphicObjectConverter {
       /**
  +     * Line converter used for degenerate cases
  +     */
  +    private SVGLine svgLine;
  +
  +    /**
        * @param generatorContext used to build Elements
        */
       public SVGRectangle(SVGGeneratorContext generatorContext) {
           super(generatorContext);
  +        svgLine = new SVGLine(generatorContext);
       }
   
       /**
  @@ -38,14 +44,20 @@
   
   
       /**
  +     * In the Java 2D API, arc width/height are used
  +     * as absolute values.
  +     *
        * @param rect rectangle object to convert to SVG
        */
       public Element toSVG(RoundRectangle2D rect) {
           Element svgRect = toSVG((RectangularShape)rect);
  -        svgRect.setAttributeNS(null, SVG_RX_ATTRIBUTE,
  -                               doubleString(rect.getArcWidth()/2));
  -        svgRect.setAttributeNS(null, SVG_RY_ATTRIBUTE,
  -                               doubleString(rect.getArcHeight()/2));
  +        if(svgRect != null && svgRect.getTagName() == SVG_RECT_TAG){
  +            svgRect.setAttributeNS(null, SVG_RX_ATTRIBUTE,
  +                                   doubleString(Math.abs(rect.getArcWidth()/2)));
  +            svgRect.setAttributeNS(null, SVG_RY_ATTRIBUTE,
  +                                   doubleString(Math.abs(rect.getArcHeight()/2)));
  +        }
  +
           return svgRect;
       }
   
  @@ -54,16 +66,35 @@
        * @param rect rectangle object to convert to SVG
        */
       private Element toSVG(RectangularShape rect) {
  -        Element svgRect =
  -            generatorContext.domFactory.createElementNS(SVG_NAMESPACE_URI,
  -                                                        SVG_RECT_TAG);
  -        svgRect.setAttributeNS(null, SVG_X_ATTRIBUTE, doubleString(rect.getX()));
  -        svgRect.setAttributeNS(null, SVG_Y_ATTRIBUTE, doubleString(rect.getY()));
  -        svgRect.setAttributeNS(null, SVG_WIDTH_ATTRIBUTE,
  -                               doubleString(rect.getWidth()));
  -        svgRect.setAttributeNS(null, SVG_HEIGHT_ATTRIBUTE,
  -                               doubleString(rect.getHeight()));
  -
  -        return svgRect;
  +        if(rect.getWidth() > 0 && rect.getHeight() > 0){
  +            Element svgRect =
  +                generatorContext.domFactory.createElementNS(SVG_NAMESPACE_URI,
  +                                                            SVG_RECT_TAG);
  +            svgRect.setAttributeNS(null, SVG_X_ATTRIBUTE, doubleString(rect.getX()));
  +            svgRect.setAttributeNS(null, SVG_Y_ATTRIBUTE, doubleString(rect.getY()));
  +            svgRect.setAttributeNS(null, SVG_WIDTH_ATTRIBUTE,
  +                                   doubleString(rect.getWidth()));
  +            svgRect.setAttributeNS(null, SVG_HEIGHT_ATTRIBUTE,
  +                                   doubleString(rect.getHeight()));
  +            
  +            return svgRect;
  +        }
  +        else{
  +            // Handle degenerate cases
  +            if(rect.getWidth() == 0 && rect.getHeight() > 0){
  +                // Degenerate to a line
  +                Line2D line = new Line2D.Double(rect.getX(), rect.getY(), rect.getX(), 
  +                                                rect.getY() + rect.getHeight());
  +                return svgLine.toSVG(line);
  +            }
  +            else if(rect.getWidth() > 0 && rect.getHeight() == 0){
  +                // Degenerate to a line
  +                Line2D line = new Line2D.Double(rect.getX(), rect.getY(),
  +                                                rect.getX() + rect.getWidth(),
  +                                                rect.getY());
  +                return svgLine.toSVG(line);
  +            }
  +            return null;
  +        }
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org