tkormann 02/02/22 08:52:09 Modified: sources/org/apache/batik/bridge BridgeContext.java RepaintManager.java sources/org/apache/batik/gvt AbstractGraphicsNode.java sources/org/apache/batik/gvt/renderer DynamicRenderer.java ImageRenderer.java StaticRenderer.java sources/org/apache/batik/script/rhino RhinoInterpreter.java Log: little performance improvements Revision Changes Path 1.37 +23 -1 xml-batik/sources/org/apache/batik/bridge/BridgeContext.java Index: BridgeContext.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/BridgeContext.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- BridgeContext.java 21 Feb 2002 10:06:47 -0000 1.36 +++ BridgeContext.java 22 Feb 2002 16:52:09 -0000 1.37 @@ -47,7 +47,7 @@ * a SVG DOM tree such as the current viewport or the user agent. * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: BridgeContext.java,v 1.36 2002/02/21 10:06:47 vhardy Exp $ + * @version $Id: BridgeContext.java,v 1.37 2002/02/22 16:52:09 tkormann Exp $ */ public class BridgeContext implements ErrorConstants { @@ -159,6 +159,10 @@ */ private static InterpreterPool sharedPool = new InterpreterPool(); + //static int total; + //static int alive; + //int number; + /** * Constructs a new bridge context. * @param userAgent the user agent @@ -193,7 +197,25 @@ this.interpreterPool = interpreterPool; this.documentLoader = documentLoader; registerSVGBridges(this); + + // start debug leak + /* + total++; + alive++; + number = total; + System.out.println("--- Create BridgeContext #"+number+" alive: "+alive); + // end debug leak + */ + } + + /* start debug leak + protected void finalize() throws Throwable { + super.finalize(); + alive--; + System.out.println("--- BridgeContext #"+number+" goes to GC. left: "+alive); } + // end debug leak + */ // properties 1.9 +2 -8 xml-batik/sources/org/apache/batik/bridge/RepaintManager.java Index: RepaintManager.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/bridge/RepaintManager.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- RepaintManager.java 21 Feb 2002 10:33:43 -0000 1.8 +++ RepaintManager.java 22 Feb 2002 16:52:09 -0000 1.9 @@ -26,7 +26,7 @@ * This class manages the rendering of a GVT tree. * * @author <a href="mailto:[EMAIL PROTECTED]">Stephane Hillion</a> - * @version $Id: RepaintManager.java,v 1.8 2002/02/21 10:33:43 hillion Exp $ + * @version $Id: RepaintManager.java,v 1.9 2002/02/22 16:52:09 tkormann Exp $ */ public class RepaintManager { @@ -105,13 +105,7 @@ * in the image have been modified and need to be rerendered.. */ public void modifiedAreas(List areas) { - AffineTransform at = renderer.getTransform(); - Iterator i = areas.iterator(); - while (i.hasNext()) { - Shape s = (Shape)i.next(); - Rectangle r = at.createTransformedShape(s).getBounds(); - renderer.flush(r); - } + renderer.flush(areas); } /** 1.36 +11 -11 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.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- AbstractGraphicsNode.java 19 Feb 2002 18:01:29 -0000 1.35 +++ AbstractGraphicsNode.java 22 Feb 2002 16:52:09 -0000 1.36 @@ -54,7 +54,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> * @author <a href="mailto:[EMAIL PROTECTED]">Emmanuel Tissandier</a> * @author <a href="mailto:[EMAIL PROTECTED]">Thomas DeWeese</a> - * @version $Id: AbstractGraphicsNode.java,v 1.35 2002/02/19 18:01:29 deweese Exp $ + * @version $Id: AbstractGraphicsNode.java,v 1.36 2002/02/22 16:52:09 tkormann Exp $ */ public abstract class AbstractGraphicsNode implements GraphicsNode { @@ -420,7 +420,6 @@ * @param g2d the Graphics2D to use */ public void paint(Graphics2D g2d){ - // first, make sure we haven't been interrupted if (Thread.currentThread().isInterrupted()) { return; @@ -455,14 +454,14 @@ } Shape curClip = g2d.getClip(); - g2d.setRenderingHint(RenderingHintsKeyExt.KEY_AREA_OF_INTEREST, + g2d.setRenderingHint(RenderingHintsKeyExt.KEY_AREA_OF_INTEREST, curClip); // Check if any painting is needed at all. Get the clip (in user space) // and see if it intersects with this node's bounds (in user space). boolean paintNeeded = true; Rectangle2D bounds = getBounds(); - Shape g2dClip = g2d.getClip(); + Shape g2dClip = curClip; //g2d.getClip(); if (g2dClip != null) { Rectangle2D clipBounds = g2dClip.getBounds2D(); if(bounds != null && !bounds.intersects(clipBounds.getX(), @@ -478,10 +477,10 @@ AffineTransform txf = g2d.getTransform(); boolean antialiasedClip = false; if(clip != null){ - antialiasedClip = - isAntialiasedClip(g2d.getTransform(), + antialiasedClip = false; + /* isAntialiasedClip(g2d.getTransform(), g2d.getRenderingHints(), - clip.getClipPath()); + clip.getClipPath());*/ } boolean useOffscreen = isOffscreenBufferNeeded(); @@ -535,7 +534,9 @@ } g2d.setTransform(defaultTransform); g2d.setClip(defaultClip); - g2d.setComposite(defaultComposite); + if (composite != null) { + g2d.setComposite(defaultComposite); + } } /** @@ -572,7 +573,6 @@ protected boolean isAntialiasedClip(AffineTransform usr2dev, RenderingHints hints, Shape clip){ - boolean antialiased = false; // // Antialias clip if: // + Antialiasing is on *or* rendering quality is on @@ -586,6 +586,7 @@ // of the current Graphics2D's clip and this node's clip) // is not a rectangle. // + boolean antialiased = false; if((hints.get(RenderingHints.KEY_ANTIALIASING) == RenderingHints.VALUE_ANTIALIAS_ON) || (hints.get(RenderingHints.KEY_RENDERING) == @@ -596,8 +597,7 @@ antialiased = true; } } - // return antialiased; - return false; + return antialiased; } // 1.10 +11 -3 xml-batik/sources/org/apache/batik/gvt/renderer/DynamicRenderer.java Index: DynamicRenderer.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/renderer/DynamicRenderer.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- DynamicRenderer.java 21 Feb 2002 22:13:10 -0000 1.9 +++ DynamicRenderer.java 22 Feb 2002 16:52:09 -0000 1.10 @@ -30,7 +30,7 @@ * Simple implementation of the Renderer that supports dynamic updates. * * @author <a href="mailto:[EMAIL PROTECTED]">Thierry Kormann</a> - * @version $Id: DynamicRenderer.java,v 1.9 2002/02/21 22:13:10 deweese Exp $ + * @version $Id: DynamicRenderer.java,v 1.10 2002/02/22 16:52:09 tkormann Exp $ */ public class DynamicRenderer extends StaticRenderer { @@ -52,12 +52,20 @@ RectListManager damagedAreas; protected CachableRed setupCache(CachableRed img) { - /* Don't do any caching of content for dynamic case */ + // Don't do any caching of content for dynamic case return img; } public void flush(Rectangle r) { - /* Since we don't cache we don't need to flush */ + // Since we don't cache we don't need to flush + return; + } + + /** + * Flush a list of rectangles of cached image data. + */ + public void flush(List areas) { + // Since we don't cache we don't need to flush return; } 1.3 +10 -1 xml-batik/sources/org/apache/batik/gvt/renderer/ImageRenderer.java Index: ImageRenderer.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/gvt/renderer/ImageRenderer.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ImageRenderer.java 18 Jul 2001 22:04:54 -0000 1.2 +++ ImageRenderer.java 22 Feb 2002 16:52:09 -0000 1.3 @@ -11,11 +11,13 @@ import java.awt.image.BufferedImage; import java.awt.Rectangle; +import java.util.List; + /** * Interface for GVT Renderers that render into raster images. * * @author <a href="mailto:[EMAIL PROTECTED]">Vincent Hardy</a> - * @version $Id: ImageRenderer.java,v 1.2 2001/07/18 22:04:54 deweese Exp $ + * @version $Id: ImageRenderer.java,v 1.3 2002/02/22 16:52:09 tkormann Exp $ */ public interface ImageRenderer extends Renderer{ /** @@ -42,4 +44,11 @@ * Flush a rectangle of cached image data (preliminary interface). */ public void flush(Rectangle r); + + /** + * Flush a list of rectangles of cached image data (preliminary + * interface). Each area are transformed via the usr2dev's renderer + * transform before the flush(Rectangle) is called. + */ + public void flush(List areas); } 1.22 +13 -1 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.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- StaticRenderer.java 31 Jan 2002 21:57:35 -0000 1.21 +++ StaticRenderer.java 22 Feb 2002 16:52:09 -0000 1.22 @@ -45,7 +45,7 @@ * rendering in an offscreen buffer image. * * @author <a href="mailto:[EMAIL PROTECTED]>Vincent Hardy</a> - * @version $Id: StaticRenderer.java,v 1.21 2002/01/31 21:57:35 deweese Exp $ + * @version $Id: StaticRenderer.java,v 1.22 2002/02/22 16:52:09 tkormann Exp $ */ public class StaticRenderer implements ImageRenderer { /** @@ -420,6 +420,18 @@ tcr.flushCache(tcr.getBounds()); } + /** + * Flush a list of rectangles of cached image data. + */ + public void flush(List areas) { + AffineTransform at = getTransform(); + Iterator i = areas.iterator(); + while (i.hasNext()) { + Shape s = (Shape)i.next(); + Rectangle r = at.createTransformedShape(s).getBounds(); + flush(r); + } + } /** * Flush a rectangle of cached image data. 1.12 +6 -2 xml-batik/sources/org/apache/batik/script/rhino/RhinoInterpreter.java Index: RhinoInterpreter.java =================================================================== RCS file: /home/cvs/xml-batik/sources/org/apache/batik/script/rhino/RhinoInterpreter.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- RhinoInterpreter.java 12 Feb 2002 07:08:17 -0000 1.11 +++ RhinoInterpreter.java 22 Feb 2002 16:52:09 -0000 1.12 @@ -37,7 +37,7 @@ * A simple implementation of <code>Interpreter</code> interface to use * Rhino ECMAScript interpreter. * @author <a href="mailto:[EMAIL PROTECTED]">Christophe Jolif</a> - * @version $Id: RhinoInterpreter.java,v 1.11 2002/02/12 07:08:17 hillion Exp $ + * @version $Id: RhinoInterpreter.java,v 1.12 2002/02/22 16:52:09 tkormann Exp $ */ public class RhinoInterpreter implements Interpreter { private static String[] TO_BE_IMPORTED = { @@ -74,6 +74,9 @@ * @see org.apache.batik.script.InterpreterPool */ public RhinoInterpreter() { + Context.setCachingEnabled(false); // reset the cache + Context.setCachingEnabled(true); // enable caching again + // entering a context Context ctx = Context.enter(); try { @@ -152,6 +155,7 @@ */ public Object evaluate(String scriptstr) throws InterpreterException { + Context ctx = Context.enter(); ctx.setWrapHandler(wrapHandler); Script script = null; @@ -160,7 +164,7 @@ // between nlog(n) and log(n) because it is // an AbstractSequentialList while (it.hasNext()) { - if ((et = (Entry)(it.next())).str == scriptstr) { + if ((et = (Entry)(it.next())).str.equals(scriptstr)) { // if it is not at the end, remove it because // it will change from place (it is faster // to remove it now)
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]