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 2002/02/06 14:18:33 UTC
cvs commit: xml-batik/sources/org/apache/batik/gvt CompositeShapePainter.java FillShapePainter.java MarkerShapePainter.java ShapeNode.java ShapePainter.java StrokeShapePainter.java
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
Re: cvs commit:
xml-batik/sources/org/apache/batik/gvtCompositeShapePainter.java
FillShapePainter.java MarkerShapePainter.javaShapeNode.java
ShapePainter.java StrokeShapePainter.java
Posted by Vincent Hardy <vi...@sun.com>.
Sure, go for it.
Vincent.
Thomas E Deweese wrote:
>
> >>>>> "VH" == Vincent Hardy <vh...@apache.org> writes:
>
> VH> getPaintedBounds
>
> Can I quickly rename this to getPaintedBounds2D ?
>
> This is used very uniformly for methods that return Rect2D vs. Rect
> (with the exception of GraphicsNode :(.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-dev-help@xml.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org
cvs commit: xml-batik/sources/org/apache/batik/gvt
CompositeShapePainter.java FillShapePainter.java MarkerShapePainter.java
ShapeNode.java ShapePainter.java StrokeShapePainter.java
Posted by Thomas E Deweese <th...@kodak.com>.
>>>>> "VH" == Vincent Hardy <vh...@apache.org> writes:
VH> getPaintedBounds
Can I quickly rename this to getPaintedBounds2D ?
This is used very uniformly for methods that return Rect2D vs. Rect
(with the exception of GraphicsNode :(.
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org