xmlgraphics-batik-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From vha...@apache.org
Subject cvs commit: xml-batik/sources/org/apache/batik/gvt CompositeShapePainter.java FillShapePainter.java MarkerShapePainter.java ShapeNode.java ShapePainter.java StrokeShapePainter.java
Date Wed, 06 Feb 2002 13:18:33 GMT
vhardy      02/02/06 05:18:33

  Modified:    sources/org/apache/batik/gvt CompositeShapePainter.java
                        FillShapePainter.java MarkerShapePainter.java
                        ShapeNode.java ShapePainter.java
                        StrokeShapePainter.java
  Log:
  Added getPaintedBounds to the ShapePainter interface so that it is used in
  ShapeNode's getPrimitiveBounds instead of getPaintedArea. This is important
  because getPaintedArea is very costly on CompositeShapePainter (it uses the
  Area class).
  This should solve the performance degradation problem seen on large files.
  
  Revision  Changes    Path
  1.12      +21 -1     xml-batik/sources/org/apache/batik/gvt/CompositeShapePainter.java
  
  Index: CompositeShapePainter.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/CompositeShapePainter.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- CompositeShapePainter.java	3 Jan 2002 12:27:26 -0000	1.11
  +++ CompositeShapePainter.java	6 Feb 2002 13:18:33 -0000	1.12
  @@ -12,6 +12,7 @@
   import java.awt.Shape;
   import java.awt.geom.Area;
   import java.awt.geom.GeneralPath;
  +import java.awt.geom.Rectangle2D;
   import java.util.Iterator;
   import java.util.LinkedList;
   import java.util.List;
  @@ -20,7 +21,7 @@
    * A shape painter which consists of multiple shape painters.
    *
    * @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
  - * @version $Id: CompositeShapePainter.java,v 1.11 2002/01/03 12:27:26 tkormann Exp $
  + * @version $Id: CompositeShapePainter.java,v 1.12 2002/02/06 13:18:33 vhardy Exp $
    */
   public class CompositeShapePainter implements ShapePainter {
   
  @@ -118,6 +119,25 @@
               return null;
           }
       }
  +
  +    /**
  +     * Returns the bounds of the area painted by this shape painter
  +     */
  +    public Rectangle2D getPaintedBounds(){
  +        if (painters != null) {
  +            GeneralPath paintedArea = new GeneralPath();
  +            for (int i=0; i < count; ++i) {
  +                Shape s = painters[i].getPaintedArea();
  +                if (s != null) {
  +                    paintedArea.append(s, false);
  +                }
  +            }
  +            return paintedArea.getBounds2D();
  +        } else {
  +            return null;
  +        }
  +    }
  +
   
       /**
        * Sets the Shape this shape painter is associated with.
  
  
  
  1.8       +13 -1     xml-batik/sources/org/apache/batik/gvt/FillShapePainter.java
  
  Index: FillShapePainter.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/FillShapePainter.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- FillShapePainter.java	18 Sep 2001 21:18:59 -0000	1.7
  +++ FillShapePainter.java	6 Feb 2002 13:18:33 -0000	1.8
  @@ -11,12 +11,13 @@
   import java.awt.Shape;
   import java.awt.Graphics2D;
   import java.awt.Paint;
  +import java.awt.geom.Rectangle2D;
   
   /**
    * A shape painter that can be used to fill a shape.
    *
    * @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
  - * @version $Id: FillShapePainter.java,v 1.7 2001/09/18 21:18:59 deweese Exp $
  + * @version $Id: FillShapePainter.java,v 1.8 2002/02/06 13:18:33 vhardy Exp $
    */
   public class FillShapePainter implements ShapePainter {
   
  @@ -70,6 +71,17 @@
        */
       public Shape getPaintedArea(){
           return shape;
  +    }
  +
  +    /**
  +     * Returns the bounds of the area painted by this shape painter
  +     */
  +    public Rectangle2D getPaintedBounds(){
  +	if (shape != null){
  +	    return shape.getBounds2D();
  +	} else {
  +	    return null;
  +	}
       }
   
       /**
  
  
  
  1.6       +13 -1     xml-batik/sources/org/apache/batik/gvt/MarkerShapePainter.java
  
  Index: MarkerShapePainter.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/MarkerShapePainter.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- MarkerShapePainter.java	18 Sep 2001 21:19:00 -0000	1.5
  +++ MarkerShapePainter.java	6 Feb 2002 13:18:33 -0000	1.6
  @@ -23,7 +23,7 @@
    * A shape painter that can be used to paint markers on a shape.
    *
    * @author <a href="vincent.hardy@eng.sun.com">Vincent Hardy</a>
  - * @version $Id: MarkerShapePainter.java,v 1.5 2001/09/18 21:19:00 deweese Exp $
  + * @version $Id: MarkerShapePainter.java,v 1.6 2002/02/06 13:18:33 vhardy Exp $
    */
   public class MarkerShapePainter implements ShapePainter {
   
  @@ -114,6 +114,18 @@
   	     buildMarkerGroup();
   	 }
           return markerGroup.getBounds();
  +    }
  +
  +    /**
  +     * Returns the bounds of the area painted by this shape painter
  +     */
  +    public Rectangle2D getPaintedBounds(){
  +	Shape shape = getPaintedArea();
  +	if (shape != null){
  +	    return shape.getBounds2D();
  +	} else {
  +	    return null;
  +	}
       }
   
       /**
  
  
  
  1.14      +4 -3      xml-batik/sources/org/apache/batik/gvt/ShapeNode.java
  
  Index: ShapeNode.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/ShapeNode.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ShapeNode.java	23 Jan 2002 14:14:08 -0000	1.13
  +++ ShapeNode.java	6 Feb 2002 13:18:33 -0000	1.14
  @@ -20,7 +20,7 @@
    * A graphics node that represents a shape.
    *
    * @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
  - * @version $Id: ShapeNode.java,v 1.13 2002/01/23 14:14:08 deweese Exp $
  + * @version $Id: ShapeNode.java,v 1.14 2002/02/06 13:18:33 vhardy Exp $
    */
   public class ShapeNode extends AbstractGraphicsNode {
   
  @@ -219,8 +219,9 @@
               if ((shape == null) || (shapePainter == null)) {
                   return null;
               }
  -            paintedArea = shapePainter.getPaintedArea();
  -            primitiveBounds = paintedArea.getBounds2D();
  +            // paintedArea = shapePainter.getPaintedArea();
  +            // primitiveBounds = paintedArea.getBounds2D();
  +	    primitiveBounds = shapePainter.getPaintedBounds();
   
               // Make sure we haven't been interrupted
               if (Thread.currentThread().isInterrupted()) {
  
  
  
  1.9       +7 -1      xml-batik/sources/org/apache/batik/gvt/ShapePainter.java
  
  Index: ShapePainter.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/ShapePainter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ShapePainter.java	18 Sep 2001 21:19:00 -0000	1.8
  +++ ShapePainter.java	6 Feb 2002 13:18:33 -0000	1.9
  @@ -10,12 +10,13 @@
   
   import java.awt.Shape;
   import java.awt.Graphics2D;
  +import java.awt.geom.Rectangle2D;
   
   /**
    * Renders the shape of a <tt>ShapeNode</tt>.
    *
    * @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
  - * @version $Id: ShapePainter.java,v 1.8 2001/09/18 21:19:00 deweese Exp $
  + * @version $Id: ShapePainter.java,v 1.9 2002/02/06 13:18:33 vhardy Exp $
    */
   public interface ShapePainter {
   
  @@ -30,6 +31,11 @@
        * Returns the area painted by this shape painter.
        */
       Shape getPaintedArea();
  +
  +    /**
  +     * Returns the bounds of the area painted by this shape painter
  +     */
  +    Rectangle2D getPaintedBounds();
   
       /**
        * Sets the Shape this shape painter is associated with.
  
  
  
  1.9       +15 -1     xml-batik/sources/org/apache/batik/gvt/StrokeShapePainter.java
  
  Index: StrokeShapePainter.java
  ===================================================================
  RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/StrokeShapePainter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- StrokeShapePainter.java	18 Sep 2001 21:19:00 -0000	1.8
  +++ StrokeShapePainter.java	6 Feb 2002 13:18:33 -0000	1.9
  @@ -12,12 +12,13 @@
   import java.awt.Graphics2D;
   import java.awt.Stroke;
   import java.awt.Paint;
  +import java.awt.geom.Rectangle2D;
   
   /**
    * A shape painter that can be used to draw the outline of a shape.
    *
    * @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
  - * @version $Id: StrokeShapePainter.java,v 1.8 2001/09/18 21:19:00 deweese Exp $
  + * @version $Id: StrokeShapePainter.java,v 1.9 2002/02/06 13:18:33 vhardy Exp $
    */
   public class StrokeShapePainter implements ShapePainter {
   
  @@ -91,6 +92,19 @@
               return null;
           }
       }
  +
  +    /**
  +     * Returns the bounds of the area painted by this shape painter
  +     */
  +    public Rectangle2D getPaintedBounds(){
  +	Shape painted = getPaintedArea();
  +	if (painted != null){
  +	    return painted.getBounds2D();
  +	} else {
  +	    return null;
  +	}
  +    }
  +
   
       /**
        * Sets the Shape this shape painter is associated with.
  
  
  

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


Mime
View raw message