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 tk...@apache.org on 2001/02/05 16:55:27 UTC
cvs commit: xml-batik/sources/org/apache/batik/gvt/renderer StaticRenderer.java
tkormann 01/02/05 07:55:27
Modified: sources/org/apache/batik/gvt AbstractGraphicsNode.java
CompositeGraphicsNode.java GraphicsNode.java
sources/org/apache/batik/gvt/renderer StaticRenderer.java
Log:
small patch to improve GVT rendering (30% faster :)
Revision Changes Path
1.9 +19 -4 xml-batik/sources/org/apache/batik/gvt/AbstractGraphicsNode.java
Index: AbstractGraphicsNode.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/AbstractGraphicsNode.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AbstractGraphicsNode.java 2001/02/03 16:26:15 1.8
+++ AbstractGraphicsNode.java 2001/02/05 15:55:25 1.9
@@ -48,9 +48,9 @@
* @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
* @author <a href="mailto:etissandier@ilog.fr">Emmanuel Tissandier</a>
* @author <a href="mailto:Thomas.DeWeeese@Kodak.com">Thomas DeWeese</a>
- * @version $Id: AbstractGraphicsNode.java,v 1.8 2001/02/03 16:26:15 deweese Exp $
+ * @version $Id: AbstractGraphicsNode.java,v 1.9 2001/02/05 15:55:25 tkormann Exp $
*/
-public abstract class AbstractGraphicsNode implements GraphicsNode {
+public abstract class AbstractGraphicsNode implements GraphicsNode, Cloneable {
/**
* The listeners list.
@@ -312,9 +312,10 @@
Shape defaultClip = g2d.getClip();
Composite defaultComposite = g2d.getComposite();
AffineTransform defaultTransform = g2d.getTransform();
- RenderingHints defaultHints = g2d.getRenderingHints();
+ RenderingHints defaultHints = null;
if (hints != null) {
+ defaultHints = g2d.getRenderingHints();
g2d.addRenderingHints(hints);
}
if (transform != null) {
@@ -420,7 +421,9 @@
}
// Restore default rendering attributes
- g2d.setRenderingHints(defaultHints);
+ if (defaultHints != null) {
+ g2d.setRenderingHints(defaultHints);
+ }
g2d.setTransform(defaultTransform);
g2d.setClip(defaultClip);
g2d.setComposite(defaultComposite);
@@ -822,5 +825,17 @@
*/
public boolean intersects(Rectangle2D r, GraphicsNodeRenderContext rc) {
return getBounds(rc).intersects(r);
+ }
+
+ /**
+ *
+ */
+ public GraphicsNode renderingClone() {
+ try {
+ return (GraphicsNode)clone();
+ } catch(CloneNotSupportedException ex) {
+ ex.printStackTrace();
+ return null;
+ }
}
}
1.9 +18 -2 xml-batik/sources/org/apache/batik/gvt/CompositeGraphicsNode.java
Index: CompositeGraphicsNode.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/CompositeGraphicsNode.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- CompositeGraphicsNode.java 2001/02/03 16:26:15 1.8
+++ CompositeGraphicsNode.java 2001/02/05 15:55:25 1.9
@@ -32,7 +32,7 @@
* A CompositeGraphicsNode is a graphics node that can contain graphics nodes.
*
* @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
- * @version $Id: CompositeGraphicsNode.java,v 1.8 2001/02/03 16:26:15 deweese Exp $
+ * @version $Id: CompositeGraphicsNode.java,v 1.9 2001/02/05 15:55:25 tkormann Exp $
*/
public class CompositeGraphicsNode extends AbstractGraphicsNode
implements List {
@@ -388,6 +388,20 @@
}
}
+ /**
+ *
+ */
+ public GraphicsNode renderingClone() {
+ CompositeGraphicsNode n =
+ (CompositeGraphicsNode)super.renderingClone();
+ n.children = new GraphicsNode[count];
+ for (int i = 0; i < count; ++i) {
+ n.children[i] = children[i].renderingClone();
+ }
+ n.count = count;
+ return n;
+ }
+
//
// List implementation
//
@@ -431,7 +445,9 @@
*/
public Object [] toArray() {
GraphicsNode [] result = new GraphicsNode[count];
- System.arraycopy(children, 0, result, 0, count);
+ for (int i=0; i < count; ++i) {
+ result[i] = children[i];
+ }
return result;
}
1.19 +7 -1 xml-batik/sources/org/apache/batik/gvt/GraphicsNode.java
Index: GraphicsNode.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/GraphicsNode.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- GraphicsNode.java 2001/01/29 10:28:13 1.18
+++ GraphicsNode.java 2001/02/05 15:55:25 1.19
@@ -33,7 +33,7 @@
*
* @author <a href="mailto:Thierry.Kormann@sophia.inria.fr">Thierry Kormann</a>
* @author <a href="mailto:etissandier@ilog.fr">Emmanuel Tissandier</a>
- * @version $Id: GraphicsNode.java,v 1.18 2001/01/29 10:28:13 tkormann Exp $
+ * @version $Id: GraphicsNode.java,v 1.19 2001/02/05 15:55:25 tkormann Exp $
*/
public interface GraphicsNode {
@@ -338,4 +338,10 @@
* @return the outline of this node
*/
Shape getOutline(GraphicsNodeRenderContext rc);
+
+ /**
+ *
+ */
+ GraphicsNode renderingClone();
+
}
1.3 +11 -5 xml-batik/sources/org/apache/batik/gvt/renderer/StaticRenderer.java
Index: StaticRenderer.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/renderer/StaticRenderer.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- StaticRenderer.java 2001/02/03 16:26:18 1.2
+++ StaticRenderer.java 2001/02/05 15:55:27 1.3
@@ -38,7 +38,7 @@
* rendering in an offscreen buffer image.
*
* @author <a href="mailto:vincent.hardy@eng.sun.com>Vincent Hardy</a>
- * @version $Id: StaticRenderer.java,v 1.2 2001/02/03 16:26:18 deweese Exp $
+ * @version $Id: StaticRenderer.java,v 1.3 2001/02/05 15:55:27 tkormann Exp $
*/
public class StaticRenderer implements Renderer {
/**
@@ -83,8 +83,8 @@
* @param offScreen image where the Renderer should do its rendering
* @param rc a GraphicsNodeRenderContext which this renderer should use
*/
- public StaticRenderer(BufferedImage offScreen,
- GraphicsNodeRenderContext rc){
+ public StaticRenderer(BufferedImage offScreen,
+ GraphicsNodeRenderContext rc){
setOffScreen(offScreen);
setRenderContext(rc);
}
@@ -125,7 +125,7 @@
* for its rendering
*/
public void setRenderContext(GraphicsNodeRenderContext rc) {
- this.nodeRenderContext = rc;
+ this.nodeRenderContext = rc;
}
/**
@@ -133,7 +133,7 @@
* for its rendering
*/
public GraphicsNodeRenderContext getRenderContext() {
- return nodeRenderContext;
+ return nodeRenderContext;
}
/**
@@ -205,8 +205,14 @@
g.clip(nodeRenderContext.getAreaOfInterest());
// Render tree
+ long t0 = System.currentTimeMillis();
if(treeRoot != null) {
treeRoot.paint(g, nodeRenderContext);
+ long t1 = System.currentTimeMillis();
+ GraphicsNode copy = treeRoot.renderingClone();
+ long t2 = System.currentTimeMillis();
+ System.out.println("Rendering time: "+(t1-t0));
+ System.out.println("Cloning time: "+(t2-t1));
}
}