diff flys-artifacts/src/main/java/de/intevation/flys/exports/ChartInfoGenerator.java @ 1752:b7b424ae32a8

Added /dev/null Graphics2D object to be used in the info rendering pass of the diagram generation. flys-artifacts/trunk@3055 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Fri, 21 Oct 2011 13:25:24 +0000
parents bdb05dc9b763
children f2c14e09a8f1
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/exports/ChartInfoGenerator.java	Fri Oct 21 08:21:45 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/exports/ChartInfoGenerator.java	Fri Oct 21 13:25:24 2011 +0000
@@ -1,9 +1,17 @@
 package de.intevation.flys.exports;
 
-import java.awt.Transparency;
+import de.intevation.flys.java2d.NOPGraphics2D;
+
 import java.io.IOException;
 import java.io.OutputStream;
 
+import java.awt.Transparency;
+import java.awt.Graphics2D;
+
+import java.awt.geom.Rectangle2D;
+
+import java.awt.image.BufferedImage;
+
 import org.w3c.dom.Document;
 
 import org.apache.log4j.Logger;
@@ -31,6 +39,9 @@
  */
 public abstract class ChartInfoGenerator implements OutGenerator {
 
+    public static final boolean USE_NOP_GRAPHICS =
+        Boolean.getBoolean("info.rendering.nop.graphics");
+
     /** The logger used in this generator.*/
     private static Logger logger =
         Logger.getLogger(ChartInfoGenerator.class);
@@ -106,7 +117,35 @@
 
         ChartRenderingInfo info = new ChartRenderingInfo();
 
-        chart.createBufferedImage(size[0], size[1], Transparency.BITMASK, info);
+        long startTime = System.currentTimeMillis();
+
+        if (USE_NOP_GRAPHICS) {
+            BufferedImage image =
+                new BufferedImage(size[0], size[1], Transparency.BITMASK);
+
+            Graphics2D g2d  = image.createGraphics();
+            Graphics2D nop = new NOPGraphics2D(g2d);
+
+            chart.draw(
+                nop,
+                new Rectangle2D.Double(0, 0, size[0], size[1]),
+                null,
+                info);
+
+            nop.dispose();
+        }
+        else {
+            chart.createBufferedImage(
+                size[0], size[1], Transparency.BITMASK, info);
+        }
+
+        long stopTime = System.currentTimeMillis();
+
+        if (logger.isDebugEnabled()) {
+            logger.debug("Rendering info took: " +
+                (stopTime-startTime) + "ms");
+        }
+
 
         InfoGeneratorHelper helper = new InfoGeneratorHelper(generator);
         Document doc = helper.createInfoDocument(chart, info);

http://dive4elements.wald.intevation.org