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));
           }
       }