Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/exports/ChartExportHelper.java @ 7597:fca46ce8e4f5
(issue1225) Implement Magic labels.
There is now a new value in the chartsettings "Suggested Label" which
is hidden in the property editor. A suggested label is the label that
combines the label's of all processors that wrote data to an axis.
This suggested label is set as the label when the user has not
overwritten the label.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 25 Nov 2013 14:58:14 +0100 |
parents | 491b645123b6 |
children | ef99781bcec7 |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5862
diff
changeset
|
8 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
9 package org.dive4elements.river.exports; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
11 import com.lowagie.text.Document; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
12 import com.lowagie.text.DocumentException; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
13 import com.lowagie.text.PageSize; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
14 import com.lowagie.text.Rectangle; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
15 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
16 import com.lowagie.text.pdf.PdfContentByte; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
17 import com.lowagie.text.pdf.PdfTemplate; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
18 import com.lowagie.text.pdf.PdfWriter; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
19 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
20 import java.awt.Graphics2D; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
21 import java.awt.Transparency; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
22 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
23 import java.awt.geom.Rectangle2D.Double; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
24 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
25 import java.awt.geom.Rectangle2D; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
26 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
27 import java.io.IOException; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
28 import java.io.OutputStream; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
29 import java.io.OutputStreamWriter; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
30 import java.io.UnsupportedEncodingException; |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
31 |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
32 import java.text.NumberFormat; |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
33 |
1036
e6aff80b59ff
Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
714
diff
changeset
|
34 import org.jfree.chart.ChartRenderingInfo; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
35 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
36 import javax.imageio.ImageIO; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
37 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
38 import au.com.bytecode.opencsv.CSVWriter; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
39 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 import org.apache.batik.svggen.SVGGraphics2D; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 import org.apache.batik.svggen.SVGGraphics2DIOException; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
42 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
43 import org.apache.log4j.Logger; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
44 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
45 import org.jfree.chart.JFreeChart; |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
46 import org.jfree.chart.plot.XYPlot; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
47 import org.jfree.data.xy.XYDataset; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
49 import org.dive4elements.artifacts.CallContext; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
50 |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
3284
diff
changeset
|
51 import org.dive4elements.artifacts.common.utils.XMLUtils; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
52 |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
53 import org.dive4elements.river.utils.Formatter; |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
54 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
57 * This class is a helper class which supports some methods to export charts |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
58 * into specific formats. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
59 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
60 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
61 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
62 public class ChartExportHelper { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
63 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
64 public static final String FORMAT_PNG = "png"; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
65 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
66 public static final String FORMAT_PDF = "pdf"; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
67 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
68 public static final String FORMAT_SVG = "svg"; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
69 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
70 public static final String FORMAT_CSV = "csv"; |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
71 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
72 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
73 * Constant field to define A4 as default page size. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
74 */ |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
75 public static final String DEFAULT_PAGE_SIZE = "A4"; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
76 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
77 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
78 * Constant field to define UTF-8 as default encoding. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
79 */ |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
80 public static final String DEFAULT_ENCODING = "UTF-8"; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
81 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
82 /** The default separator for the CSV export. */ |
7045
1f6c0915a58d
issue971: Use ";" as CSV separator also in ChartExportHelper, with the
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
5994
diff
changeset
|
83 public static final char DEFAULT_CSV_SEPARATOR = ';'; |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
84 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
85 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
86 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
87 * Logger used for logging with log4j. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
88 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
89 private static Logger log = Logger.getLogger(ChartExportHelper.class); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
90 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
91 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
92 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
93 * A method to export a <code>JFreeChart</code> as image to an |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
94 * <code>OutputStream</code> with a given format, width and height. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
95 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
97 * @param chart JFreeChart object to be exported. |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
98 * @param cc context, in which e.g. size is stored. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
99 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 * @throws IOException if writing image to OutputStream failed. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
102 public static void exportImage( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 OutputStream out, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
104 JFreeChart chart, |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
105 CallContext cc |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
106 ) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
107 throws IOException |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
108 { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
109 log.info("export chart as png"); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
110 |
1036
e6aff80b59ff
Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
714
diff
changeset
|
111 ChartRenderingInfo info = new ChartRenderingInfo(); |
e6aff80b59ff
Added proof-of-concept collision detection for text annotations.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
714
diff
changeset
|
112 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
113 String format = (String) cc.getContextValue("chart.image.format"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
114 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
115 int[] size = getSize(cc); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
116 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
117 ImageIO.write( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
118 chart.createBufferedImage( |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
119 size[0], size[1], Transparency.BITMASK, info |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
120 ), |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
121 format, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
122 out |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
123 ); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
124 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
125 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
126 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
127 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
128 * A method to export a <code>JFreeChart</code> as SVG to an |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
129 * <code>OutputStream</code>. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
130 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
131 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
132 * @param chart JFreeChart to be exported |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
133 * @param context The CallContext object that contains extra chart |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
134 * parameters. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
135 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
136 public static void exportSVG( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
137 OutputStream out, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
138 JFreeChart chart, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
139 CallContext context |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
140 ) { |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
141 String encoding = (String) context.getContextValue("chart.encoding"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
142 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
143 log.info("export chart as svg"); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
144 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
145 if (encoding == null) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
146 encoding = DEFAULT_ENCODING; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
147 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
148 org.w3c.dom.Document document = XMLUtils.newDocument(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
149 SVGGraphics2D graphics = new SVGGraphics2D(document); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
150 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
151 int[] size = getSize(context); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
152 |
2160
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
153 ChartRenderingInfo info = new ChartRenderingInfo(); |
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
154 |
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
155 chart.draw(graphics, new Rectangle2D.Double(0.0D, 0.0D,size[0],size[1]), info); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
156 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
157 try { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
158 graphics.stream(new OutputStreamWriter(out, encoding)); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
159 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
160 catch (SVGGraphics2DIOException svge) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
161 log.error("Error while writing svg export to output stream.", svge); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
162 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
163 catch (UnsupportedEncodingException uee) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
164 log.error("Unsupported encoding: " + encoding, uee); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
165 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
166 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
167 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
168 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
169 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
170 * A method to export a <code>JFreeChart</code> as PDF to an |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
171 * <code>OutputStream</code>. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
172 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
173 * @param out OutputStream |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
174 * @param chart JFreeChart |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
175 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
176 public static void exportPDF( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
177 OutputStream out, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
178 JFreeChart chart, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
179 CallContext cc |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
180 ) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
181 log.info("export chart as pdf."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
182 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
183 String pageFormat = (String) cc.getContextValue("chart.page.format"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
184 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
185 if (pageFormat == null) |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
186 pageFormat = DEFAULT_PAGE_SIZE; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
187 |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
188 // Max size of the chart. |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
189 Rectangle page = PageSize.getRectangle(pageFormat); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
190 float pageWidth = page.getWidth(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
191 float pageHeight = page.getHeight(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
192 |
3270
4ac581062c40
Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2231
diff
changeset
|
193 // The chart width. |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
194 int[] size = getSize(cc); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
195 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
196 boolean landscape = size[0] > size[1]; |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
197 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
198 float width = 0; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
199 float height = 0; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
200 if (landscape) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
201 width = pageHeight; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
202 height = pageWidth; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
203 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
204 else { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
205 width = pageWidth; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
206 height = pageHeight; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
207 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
208 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
209 float marginLeft = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
210 "chart.marginLeft"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
211 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
212 float marginRight = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
213 "chart.marginRight"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
214 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
215 float marginTop = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
216 "chart.marginTop"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
217 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
218 float marginBottom = (Float) cc.getContextValue( |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
219 "chart.marginBottom"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
220 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
221 float spaceX = width - marginLeft - marginRight; |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
222 if (size[0] > spaceX) { |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
223 log.warn("Width of the chart is too big for pdf -> resize it now."); |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
224 double ratio = ((double)spaceX) / size[0]; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
225 size[0] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
226 size[1] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
227 log.debug("Resized chart to " + size[0] + "x" + size[1]); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
228 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
229 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
230 float spaceY = height - marginTop - marginBottom; |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
231 if (size[1] > spaceY) { |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
232 log.warn("Height of the chart is too big for pdf -> resize it now."); |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
233 double ratio = ((double)spaceY) / size[1]; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
234 size[0] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
235 size[1] *= ratio; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
236 log.debug("Resized chart to " + size[0] + "x" + size[1]); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
237 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
238 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
239 Document document = null; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
240 if (landscape) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
241 document = new Document(page.rotate()); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
242 log.debug("Create landscape pdf."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
243 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
244 else |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
245 document = new Document(page); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
246 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
247 try { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
248 PdfWriter writer = PdfWriter.getInstance(document, out); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
249 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
250 document.addSubject(chart.getTitle().getText()); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
251 document.addCreationDate(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
252 document.open(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
253 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
254 PdfContentByte content = writer.getDirectContent(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
255 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
256 PdfTemplate template = content.createTemplate(width, height); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
257 Graphics2D graphics = template.createGraphics(width, height); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
258 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
259 double[] origin = getCenteredAnchor( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
260 marginLeft, marginRight, marginBottom, marginTop, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
261 width, height, |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
262 size[0], size[1]); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
263 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
264 Rectangle2D area = new Rectangle2D.Double( |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
265 origin[0], origin[1], size[0], size[1]); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
266 |
2160
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
267 ChartRenderingInfo info = new ChartRenderingInfo(); |
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
268 |
8428de5846e8
Employ ChartRenderingInfo when creating svg/pdf exports.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1735
diff
changeset
|
269 chart.draw(graphics, area, info); |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
270 graphics.dispose(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
271 content.addTemplate(template, 0f, 0f); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
272 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
273 catch (DocumentException de) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
274 log.error("Error while exporting chart to pdf.", de); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
275 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
276 finally { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
277 document.close(); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
278 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
279 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
280 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
281 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
282 /** |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
283 * A method to export a CSV file to an |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
284 * <code>OutputStream</code>. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
285 * |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
286 * @param out OutputStream |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
287 * @param chart JFreeChart containing the data. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
288 * @param context The CallContext object that contains extra parameters. |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
289 */ |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
290 public static void exportCSV( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
291 OutputStream out, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
292 JFreeChart chart, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
293 CallContext context) |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
294 { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
295 log.debug("export chart as CSV"); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
296 CSVWriter writer = null; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
297 try { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
298 writer = new CSVWriter( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
299 new OutputStreamWriter( |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
300 out, |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
301 DEFAULT_ENCODING), |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
302 DEFAULT_CSV_SEPARATOR); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
303 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
304 catch(UnsupportedEncodingException uee) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
305 log.warn("Wrong encoding for CSV export."); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
306 return; |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
307 } |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
308 |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
309 NumberFormat format = Formatter.getCSVFormatter(context); |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
310 |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
311 XYPlot plot = chart.getXYPlot(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
312 int count = plot.getDatasetCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
313 for (int i = 0; i < count; i++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
314 XYDataset data = plot.getDataset(i); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
315 int scount = data.getSeriesCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
316 for (int j = 0; j < scount; j++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
317 Comparable seriesKey = data.getSeriesKey(j); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
318 log.debug("series key: " + seriesKey.toString()); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
319 writeCSVHeader(writer, seriesKey.toString()); |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
320 writeCSVData(writer, data, format); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
321 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
322 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
323 try { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
324 writer.close(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
325 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
326 catch(IOException ioe) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
327 log.error("Writing CSV export failed!"); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
328 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
329 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
330 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
331 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
332 protected static void writeCSVHeader(CSVWriter writer, String key) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
333 writer.writeNext(new String[] {"#"}); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
334 writer.writeNext(new String[] {"# " + key}); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
335 writer.writeNext(new String[] {"#"}); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
336 writer.writeNext(new String[] {"X", "Y"}); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
337 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
338 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
339 |
7047
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
340 /** Get x/y data from axis set and write it, on pair per line. */ |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
341 protected static void writeCSVData( |
b5e9b8b5c8d6
issue1493: Use other numberformat for csv data from diagram.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7046
diff
changeset
|
342 CSVWriter writer, XYDataset data, NumberFormat format) { |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
343 int series = data.getSeriesCount(); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
344 for (int i = 0; i < series; i++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
345 int items = data.getItemCount(i); |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
346 for (int j = 0; j < items; j++) { |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
347 log.debug("write data: " + data.getX(i, j) + ", " + data.getY(i, j)); |
7151
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
348 |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
349 /* |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
350 // Skip (NaN,NaN) datapoints. |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
351 if (java.lang.Double.isNaN(data.getYValue(i,j)) |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
352 && java.lang.Double.isNaN(data.getXValue(i,j))) { |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
353 continue; |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
354 } |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
355 */ |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
356 |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
357 String xString; |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
358 String yString; |
7151
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
359 |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
360 try { |
7151
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
361 xString = java.lang.Double.isNaN(data.getXValue(i,j)) |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
362 ? "" |
491b645123b6
issue1493: Also transform NaN X values to empty string.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7095
diff
changeset
|
363 : format.format(data.getX(i, j)); |
7095
bdadffad35b1
issue1493: Don't let NaNs slip through csv export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7094
diff
changeset
|
364 yString = java.lang.Double.isNaN(data.getYValue(i, j)) |
bdadffad35b1
issue1493: Don't let NaNs slip through csv export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7094
diff
changeset
|
365 ? "" |
bdadffad35b1
issue1493: Don't let NaNs slip through csv export.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7094
diff
changeset
|
366 : format.format(data.getY(i, j)); |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
367 } |
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
368 catch (NumberFormatException nfe) { |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
369 xString = data.getX(i, j).toString(); |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
370 yString = data.getY(i, j).toString(); |
7046
50b9959330de
issue971: Bring a formatter in (a bad) place.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7045
diff
changeset
|
371 } |
7094
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
372 writer.writeNext(new String[] { |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
373 xString, |
99527ef3f151
Minor refactoring for 1493.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
7047
diff
changeset
|
374 yString}); |
2231
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
375 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
376 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
377 } |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
378 |
5648b5b34ae2
Issue 466.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
2160
diff
changeset
|
379 |
1735
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
380 public static int[] getSize(CallContext cc) { |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
381 int[] size = new int[2]; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
382 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
383 size[0] = (Integer) cc.getContextValue("chart.width"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
384 size[1] = (Integer) cc.getContextValue("chart.height"); |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
385 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
386 return size; |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
387 } |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
388 |
5966a20fc72c
Enabled support for PDF and SVG chart exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1036
diff
changeset
|
389 |
152
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
390 /** |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
391 * This method returns the anchor of the chart so that the chart is centered |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
392 * according to the given parameters. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
393 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
394 * @param mLeft Left margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
395 * @param mRight Right margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
396 * @param mBottom Bottom margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
397 * @param mTop Top margin |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
398 * @param width The complete width of the drawing area. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
399 * @param height The complete height of the drawing area. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
400 * @param chartWidth The width of the chart. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
401 * @param chartHeight The height of the chart. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
402 * |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
403 * @return an array that contains the anchor for a chart with the given |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
404 * parameters. The first value is the x point, the second value is the y |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
405 * point. |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
406 */ |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
407 public static double[] getCenteredAnchor( |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
408 double mLeft, double mRight, double mBottom, double mTop, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
409 double width, double height, |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
410 double chartWidth, double chartHeight |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
411 ) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
412 if (log.isDebugEnabled()) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
413 log.debug("Calculate centered origin..."); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
414 log.debug("-> PDF width : " + width); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
415 log.debug("-> PDF height : " + height); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
416 log.debug("-> Chart width : " + chartWidth); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
417 log.debug("-> Chart height : " + chartHeight); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
418 log.debug("-> margin left : " + mLeft); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
419 log.debug("-> margin right : " + mRight); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
420 log.debug("-> margin bottom: " + mBottom); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
421 log.debug("-> margin top : " + mTop); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
422 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
423 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
424 double[] origin = new double[2]; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
425 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
426 double centerX = width / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
427 double centerY = height / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
428 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
429 origin[0] = centerX - chartWidth / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
430 origin[1] = centerY - chartHeight / 2; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
431 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
432 origin[0] = origin[0] >= mLeft ? origin[0] : mLeft; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
433 origin[1] = origin[1] >= mTop ? origin[1] : mTop; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
434 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
435 if (log.isDebugEnabled()) { |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
436 log.debug("==> centered left origin: " + origin[0]); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
437 log.debug("==> centered top origin: " + origin[1]); |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
438 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
439 |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
440 return origin; |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
441 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
442 } |
956445dd601d
Added a helper class to export charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
443 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |