Mercurial > dive4elements > gnv-client
diff gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java @ 321:a4376fd23f99
Implemented svg export of charts.
gnv-artifacts/trunk@383 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Ingo Weinzierl <ingo.weinzierl@intevation.de> |
---|---|
date | Mon, 30 Nov 2009 14:18:37 +0000 |
parents | 18302372703f |
children | a88e15972c72 |
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java Mon Nov 30 09:51:59 2009 +0000 +++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java Mon Nov 30 14:18:37 2009 +0000 @@ -13,9 +13,14 @@ import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D.Double; import java.io.OutputStream; +import java.io.OutputStreamWriter; import java.io.IOException; +import java.io.UnsupportedEncodingException; import javax.imageio.ImageIO; +import org.apache.batik.dom.svg.SVGDOMImplementation; +import org.apache.batik.svggen.SVGGraphics2D; +import org.apache.batik.svggen.SVGGraphics2DIOException; import org.apache.log4j.Logger; import org.jfree.chart.JFreeChart; @@ -27,6 +32,7 @@ public class ChartExportHelper { private static final String DEFAULT_PAGE_SIZE = "A4"; + private static final String DEFAULT_ENCODING = "UTF-8"; private static Logger log = Logger.getLogger(ChartExportHelper.class); @@ -51,8 +57,33 @@ } - public static void exportSVG() { - log.info("export chart as svg (not implemented yet)"); + public static void exportSVG( + OutputStream out, + JFreeChart chart, + String encoding, + int width, + int height + ) { + log.info("export chart as svg"); + + if (encoding == null) + encoding = DEFAULT_ENCODING; + + SVGDOMImplementation svgDom = new SVGDOMImplementation(); + org.w3c.dom.Document document = svgDom.createDocument(null,"svg",null); + SVGGraphics2D graphics = new SVGGraphics2D(document); + + chart.draw(graphics, new Rectangle2D.Double(0.0D, 0.0D,width,height)); + + try { + graphics.stream(new OutputStreamWriter(out, encoding)); + } + catch (SVGGraphics2DIOException svge) { + log.error("Error while writing svg export to output stream.", svge); + } + catch (UnsupportedEncodingException uee) { + log.error("Unsupported encoding: " + encoding, uee); + } }