Mercurial > dive4elements > gnv-client
annotate gnv-artifacts/src/main/java/de/intevation/gnv/exports/ChartExportHelper.java @ 1117:dec4257ad570
Changed imports to fit new positions of XMLUtils and Config
gnv-artifacts/trunk@1478 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Tue, 15 Mar 2011 16:13:39 +0000 |
parents | f953c9a559d8 |
children |
rev | line source |
---|---|
1115
f953c9a559d8
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1087
diff
changeset
|
1 /* |
f953c9a559d8
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1087
diff
changeset
|
2 * Copyright (c) 2010 by Intevation GmbH |
f953c9a559d8
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1087
diff
changeset
|
3 * |
f953c9a559d8
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1087
diff
changeset
|
4 * This program is free software under the LGPL (>=v2.1) |
f953c9a559d8
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1087
diff
changeset
|
5 * Read the file LGPL.txt coming with the software for details |
f953c9a559d8
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1087
diff
changeset
|
6 * or visit http://www.gnu.org/licenses/ if it does not exist. |
f953c9a559d8
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1087
diff
changeset
|
7 */ |
f953c9a559d8
Added license file and license headers.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1087
diff
changeset
|
8 |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
9 package de.intevation.gnv.exports; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
10 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
11 import com.lowagie.text.Document; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
12 import com.lowagie.text.DocumentException; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
13 import com.lowagie.text.PageSize; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
14 import com.lowagie.text.Rectangle; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
15 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
16 import com.lowagie.text.pdf.PdfContentByte; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
17 import com.lowagie.text.pdf.PdfTemplate; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
18 import com.lowagie.text.pdf.PdfWriter; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
19 |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
20 import de.intevation.artifacts.CallContext; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
21 |
1117
dec4257ad570
Changed imports to fit new positions of XMLUtils and Config
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1115
diff
changeset
|
22 import de.intevation.artifacts.common.utils.XMLUtils; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
23 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
24 import de.intevation.gnv.chart.Chart; |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
25 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
26 import java.awt.Graphics2D; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
27 import java.awt.Transparency; |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
28 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
29 import java.awt.geom.Rectangle2D.Double; |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
30 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
31 import java.awt.geom.Rectangle2D; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
32 |
617
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
33 import java.awt.image.BufferedImage; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
34 |
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
35 import java.io.IOException; |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
36 import java.io.OutputStream; |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
37 import java.io.OutputStreamWriter; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
38 import java.io.UnsupportedEncodingException; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
39 |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
40 import javax.imageio.ImageIO; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
41 |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
42 import org.apache.batik.svggen.SVGGraphics2D; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
43 import org.apache.batik.svggen.SVGGraphics2DIOException; |
623
65f09139e9b3
Fixed file handle leak when writing meta data.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
617
diff
changeset
|
44 |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
45 import org.apache.log4j.Logger; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
46 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
47 import org.jfree.chart.JFreeChart; |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
48 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
49 /** |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
50 * This class is a helper class which supports some methods to export charts |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
51 * into specific formats. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
52 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
53 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a> |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
54 */ |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
55 public class ChartExportHelper { |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
56 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
57 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
58 * Constant field to define A4 as default page size. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
59 */ |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
60 private static final String DEFAULT_PAGE_SIZE = "A4"; |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
61 |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
62 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
63 * Constant field to define UTF-8 as default encoding. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
64 */ |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
65 private static final String DEFAULT_ENCODING = "UTF-8"; |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
66 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
67 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
68 * Logger used for logging with log4j. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
69 */ |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
70 private static Logger log = Logger.getLogger(ChartExportHelper.class); |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
71 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
72 |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
73 /** |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
771
diff
changeset
|
74 * A method to export a <code>JFreeChart</code> as image to an |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
75 * <code>OutputStream</code> with a given format, width and height. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
76 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
77 * @param out OutputStream |
794
d0967fdee36f
Repaired JavaDoc in Export package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
778
diff
changeset
|
78 * @param chart JFreeChart object to be exported. |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
79 * @param format Format (e.g. png, gif, jpg) |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
80 * @param width Width, the image used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
81 * @param height Height, the image used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
82 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
83 * @throws IOException if writing image to OutputStream failed. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
84 */ |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
85 public static void exportImage( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
86 OutputStream out, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
87 JFreeChart chart, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
88 String format, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
89 int width, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
90 int height |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
91 ) |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
92 throws IOException |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
93 { |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
94 log.info("export chart as png"); |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
95 |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
96 ImageIO.write( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
97 chart.createBufferedImage( |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
98 width, height, Transparency.BITMASK, null |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
99 ), |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
100 format, |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
101 out |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
102 ); |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
103 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
104 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
105 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
106 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
107 * A method to export a <code>JFreeChart</code> histogram as image to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
108 * <code>OutputStream</code> with a given format, width and height. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
109 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
110 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
111 * @param histograms Array of {@link de.intevation.gnv.chart.Chart} objects |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
112 * @param format A format (e.g. png, gif, jpg) |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
113 * @param width Width the image used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
114 * @param height Height the image used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
115 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
116 * @throws IOException if writing image to OutputStream failed. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
117 */ |
617
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
118 public static void exportHistograms( |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
119 OutputStream out, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
120 Chart[] histograms, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
121 String format, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
122 int width, |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
123 int height) |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
124 throws IOException |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
125 { |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
126 log.info("export histograms"); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
127 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
128 int size = histograms.length; |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
129 BufferedImage image = new BufferedImage( |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
130 width, height*size, BufferedImage.TYPE_INT_RGB); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
131 Graphics2D g = image.createGraphics(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
132 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
133 for (int i = 0; i < size; i++) { |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
134 JFreeChart chart = histograms[i].generateChart(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
135 chart.draw(g, new Rectangle2D.Double(0.0D, i*height, width, height)); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
136 } |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
137 g.finalize(); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
138 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
139 ImageIO.write(image, format, out); |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
140 } |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
141 |
3d13fa281a7e
Added new ouput mode: histogram.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
323
diff
changeset
|
142 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
143 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
144 * A method to export a <code>JFreeChart</code> histogram as SVG to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
145 * <code>OutputStream</code>. |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
771
diff
changeset
|
146 * |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
147 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
148 * @param histograms Array of {@link de.intevation.gnv.chart.Chart} |
815
22c18083225e
Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
794
diff
changeset
|
149 * @param encoding Encoding, defaults to {@link #DEFAULT_ENCODING} if null |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
150 * @param width Width the svg used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
151 * @param height Height the svg used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
152 */ |
639
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
153 public static void exportHistogramsAsSVG( |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
154 OutputStream out, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
155 Chart[] histograms, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
156 String encoding, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
157 int width, |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
158 int height |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
159 ) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
160 log.info("export histograms as svg"); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
161 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
162 if (encoding == null) |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
163 encoding = DEFAULT_ENCODING; |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
164 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
165 org.w3c.dom.Document document = XMLUtils.newDocument(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
166 SVGGraphics2D graphics = new SVGGraphics2D(document); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
167 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
168 int size = histograms.length; |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
169 for (int i = 0; i < size; i++) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
170 JFreeChart chart = histograms[i].generateChart(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
171 chart.draw(graphics, new Rectangle2D.Double( |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
172 0.0D, i*height,width,height)); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
173 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
174 graphics.finalize(); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
175 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
176 try { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
177 graphics.stream(new OutputStreamWriter(out, encoding)); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
178 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
179 catch (SVGGraphics2DIOException svge) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
180 log.error("Error while writing svg export to output stream.", svge); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
181 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
182 catch (UnsupportedEncodingException uee) { |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
183 log.error("Unsupported encoding: " + encoding, uee); |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
184 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
185 } |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
186 |
a94ed2755480
Implemented SVG export for histograms.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
623
diff
changeset
|
187 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
188 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
189 * A method to export a <code>JFreeChart</code> as SVG to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
190 * <code>OutputStream</code>. |
778
9a828e5a2390
Removed trailing whitespace
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
771
diff
changeset
|
191 * |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
192 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
193 * @param chart JFreeChart to be exported |
815
22c18083225e
Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
794
diff
changeset
|
194 * @param encoding Encoding, defaults to {@link #DEFAULT_ENCODING} if null |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
195 * @param width Width the svg used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
196 * @param height Height the svg used to be |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
197 */ |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
198 public static void exportSVG( |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
199 OutputStream out, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
200 JFreeChart chart, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
201 String encoding, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
202 int width, |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
203 int height |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
204 ) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
205 log.info("export chart as svg"); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
206 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
207 if (encoding == null) |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
208 encoding = DEFAULT_ENCODING; |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
209 |
323
a88e15972c72
Updated Batik library to 1.7
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
321
diff
changeset
|
210 org.w3c.dom.Document document = XMLUtils.newDocument(); |
321
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
211 SVGGraphics2D graphics = new SVGGraphics2D(document); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
212 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
213 chart.draw(graphics, new Rectangle2D.Double(0.0D, 0.0D,width,height)); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
214 |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
215 try { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
216 graphics.stream(new OutputStreamWriter(out, encoding)); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
217 } |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
218 catch (SVGGraphics2DIOException svge) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
219 log.error("Error while writing svg export to output stream.", svge); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
220 } |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
221 catch (UnsupportedEncodingException uee) { |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
222 log.error("Unsupported encoding: " + encoding, uee); |
a4376fd23f99
Implemented svg export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
320
diff
changeset
|
223 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
224 } |
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
225 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
226 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
227 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
228 * A method to export a <code>JFreeChart</code> as PDF to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
229 * <code>OutputStream</code>. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
230 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
231 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
232 * @param chart JFreeChart |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
233 * @param pageFormat String to specify a page format, {@link |
815
22c18083225e
Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
794
diff
changeset
|
234 * #DEFAULT_PAGE_SIZE} is used if no pageFormat is given |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
235 * @param landscape If this is true, the pdf is delivered in landscape |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
236 * format |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
237 * @param marginLeft Space to left border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
238 * @param marginRight Space to right border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
239 * @param marginTop Space to upper border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
240 * @param marginBottom Space to lower border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
241 */ |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
242 public static void exportPDF( |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
243 OutputStream out, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
244 JFreeChart chart, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
245 String pageFormat, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
246 float marginLeft, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
247 float marginRight, |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
248 float marginTop, |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
249 float marginBottom, |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
250 CallContext context |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
251 ) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
252 log.info("export chart as pdf."); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
253 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
254 if (pageFormat == null) |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
255 pageFormat = DEFAULT_PAGE_SIZE; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
256 |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
257 // max size of the chart |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
258 Rectangle page = PageSize.getRectangle(pageFormat); |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
259 float pageWidth = page.getWidth(); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
260 float pageHeight = page.getHeight(); |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
261 |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
262 // the chart width |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
263 int chartWidth = (Integer) context.getContextValue("chart.width"); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
264 int chartHeight = (Integer) context.getContextValue("chart.height"); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
265 |
1052
b30361464775
The pdf format depends on the chart's aspect ratio (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1050
diff
changeset
|
266 boolean landscape = chartWidth > chartHeight ? true : false; |
b30361464775
The pdf format depends on the chart's aspect ratio (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1050
diff
changeset
|
267 |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
268 float width = 0; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
269 float height = 0; |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
270 if (landscape) { |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
271 width = pageHeight; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
272 height = pageWidth; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
273 } |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
274 else { |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
275 width = pageWidth; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
276 height = pageHeight; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
277 } |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
278 |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
279 float spaceX = width - marginLeft - marginRight; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
280 if (chartWidth > spaceX) { |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
281 log.warn("Width of the chart is too big for pdf -> resize it now."); |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
282 double ratio = ((double)spaceX) / chartWidth; |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
283 chartWidth *= ratio; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
284 chartHeight *= ratio; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
285 log.debug("Resized chart to " + chartWidth + "x" + chartHeight); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
286 } |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
287 |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
288 float spaceY = height - marginTop - marginBottom; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
289 if (chartHeight > spaceY) { |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
290 log.warn("Height of the chart is too big for pdf -> resize it now."); |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
291 double ratio = ((double)spaceY) / chartHeight; |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
292 chartWidth *= ratio; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
293 chartHeight *= ratio; |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
294 log.debug("Resized chart to " + chartWidth + "x" + chartHeight); |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
295 } |
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
296 |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
297 Document document = null; |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
298 if (landscape) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
299 document = new Document(page.rotate()); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
300 log.debug("Create landscape pdf."); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
301 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
302 else |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
303 document = new Document(page); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
304 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
305 try { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
306 PdfWriter writer = PdfWriter.getInstance(document, out); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
307 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
308 document.addSubject(chart.getTitle().getText()); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
309 document.addCreationDate(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
310 document.open(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
311 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
312 PdfContentByte content = writer.getDirectContent(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
313 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
314 PdfTemplate template = content.createTemplate(width, height); |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
315 Graphics2D graphics = template.createGraphics(width, height); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
316 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
317 double[] origin = getCenteredAnchor( |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
318 marginLeft, marginRight, marginBottom, marginTop, |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
319 width, height, |
1056
0318fda0001e
Fixed a bug in the pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1053
diff
changeset
|
320 chartWidth, chartHeight); |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
321 |
1050
7f3154331bc1
Use the chart size/height to export it to pdf. The chart's aspect ratio keeps alive if the size exceeds the maximum page size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
815
diff
changeset
|
322 Rectangle2D area = new Rectangle2D.Double( |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
323 origin[0], origin[1], chartWidth, chartHeight); |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
324 |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
325 chart.draw(graphics, area); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
326 graphics.dispose(); |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
327 content.addTemplate(template, 0f, 0f); |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
328 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
329 catch (DocumentException de) { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
330 log.error("Error while exporting chart to pdf.", de); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
331 } |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
332 finally { |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
333 document.close(); |
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
334 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
335 } |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
336 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
337 |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
338 /** |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
339 * A method to export <code>JFreeChart</code> histograms as PDF to an |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
340 * <code>OutputStream</code>. Each histogram contained in histograms is |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
341 * drawn to an own page in the resulting pdf. |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
342 * |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
343 * @param out OutputStream |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
344 * @param histograms JFreeChart histograms |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
345 * @param pageFormat String to specify a page format, {@link |
815
22c18083225e
Removed compiler warnings while JavaDoc generation.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
794
diff
changeset
|
346 * #DEFAULT_PAGE_SIZE} is used if no pageFormat is given |
771
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
347 * @param landscape If this is true, the pdf is delivered in landscape |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
348 * format |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
349 * @param marginLeft Space to left border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
350 * @param marginRight Space to right border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
351 * @param marginTop Space to upper border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
352 * @param marginBottom Space to lower border |
a0e63136954e
Added and repaired javadoc in de.intevation.gnv.exports package.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
640
diff
changeset
|
353 */ |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
354 public static void exportHistogramsAsPDF( |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
355 OutputStream out, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
356 Chart[] histograms, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
357 String pageFormat, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
358 float marginLeft, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
359 float marginRight, |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
360 float marginTop, |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
361 float marginBottom, |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
362 CallContext context |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
363 ) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
364 log.info("export histogram as pdf."); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
365 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
366 if (pageFormat == null) |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
367 pageFormat = DEFAULT_PAGE_SIZE; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
368 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
369 Rectangle page = PageSize.getRectangle(pageFormat); |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
370 float pageWidth = page.getWidth(); |
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
371 float pageHeight = page.getHeight(); |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
372 |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
373 // the chart width |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
374 int chartWidth = (Integer) context.getContextValue("chart.width"); |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
375 int chartHeight = (Integer) context.getContextValue("chart.height"); |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
376 |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
377 boolean landscape = chartWidth > chartHeight ? true : false; |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
378 |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
379 float width = 0; |
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
380 float height = 0; |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
381 if (landscape) { |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
382 width = pageHeight; |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
383 height = pageWidth; |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
384 } |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
385 else { |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
386 width = pageWidth; |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
387 height = pageHeight; |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
388 } |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
389 |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
390 float spaceX = width - marginLeft - marginRight; |
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
391 if (chartWidth > spaceX) { |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
392 log.warn("Histogram width is too big for pdf -> resize it now."); |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
393 double ratio = ((double)spaceX) / chartWidth; |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
394 chartWidth *= ratio; |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
395 chartHeight *= ratio; |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
396 log.debug("Resized chart to " + chartWidth + "x" + chartHeight); |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
397 } |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
398 |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
399 float spaceY = height - marginTop - marginBottom; |
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
400 if (chartHeight > spaceY) { |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
401 log.warn("Histogram height is too big for pdf -> resize it now."); |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
402 double ratio = ((double)spaceY) / chartHeight; |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
403 chartWidth *= ratio; |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
404 chartHeight *= ratio; |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
405 log.debug("Resized chart to " + chartWidth + "x" + chartHeight); |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
406 } |
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
407 |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
408 Document document = null; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
409 if (landscape) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
410 document = new Document(page.rotate()); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
411 log.debug("Create landscape pdf."); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
412 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
413 else |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
414 document = new Document(page); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
415 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
416 try { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
417 PdfWriter writer = PdfWriter.getInstance(document, out); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
418 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
419 document.addCreationDate(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
420 document.open(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
421 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
422 PdfContentByte content = writer.getDirectContent(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
423 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
424 int size = histograms.length; |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
425 for (int i = 0; i < size; i++) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
426 if (i > 0) { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
427 document.newPage(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
428 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
429 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
430 JFreeChart chart = histograms[i].generateChart(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
431 PdfTemplate template = content.createTemplate(width, height); |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
432 Graphics2D graphics = template.createGraphics(width, height); |
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
433 |
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
434 double[] origin = getCenteredAnchor( |
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
435 marginLeft, marginRight, marginBottom, marginTop, |
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
436 width, height, |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
437 chartWidth, chartHeight); |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
438 |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
439 Rectangle2D area = new Rectangle2D.Double( |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
440 origin[0], origin[1], chartWidth, chartHeight); |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
441 |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
442 chart.draw(graphics, area); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
443 graphics.dispose(); |
1087
92fce3b3d07f
Centered histograms in pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1086
diff
changeset
|
444 content.addTemplate(template, 0f, 0f); |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
445 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
446 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
447 catch (DocumentException de) { |
1053
6169ddc827ac
The format of a histogram pdf depends on the width and height specified by the user - or the default size (issue290).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1052
diff
changeset
|
448 log.error("Error while exporting histogram to pdf.", de); |
640
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
449 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
450 finally { |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
451 document.close(); |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
452 } |
e5f1e868ee3e
Implementedr histogram pdf export.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
639
diff
changeset
|
453 } |
1086
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
454 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
455 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
456 /** |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
457 * This method returns the anchor of the chart so that the chart is centered |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
458 * according to the given parameters. |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
459 * |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
460 * @param mLeft Left margin |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
461 * @param mRight Right margin |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
462 * @param mBottom Bottom margin |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
463 * @param mTop Top margin |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
464 * @param width The complete width of the drawing area. |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
465 * @param height The complete height of the drawing area. |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
466 * @param chartWidth The width of the chart. |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
467 * @param chartHeight The height of the chart. |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
468 * |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
469 * @return an array that contains the anchor for a chart with the given |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
470 * parameters. The first value is the x point, the second value is the y |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
471 * point. |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
472 */ |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
473 public static double[] getCenteredAnchor( |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
474 double mLeft, double mRight, double mBottom, double mTop, |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
475 double width, double height, |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
476 double chartWidth, double chartHeight |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
477 ) { |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
478 if (log.isDebugEnabled()) { |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
479 log.debug("Calculate centered origin..."); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
480 log.debug("-> PDF width : " + width); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
481 log.debug("-> PDF height : " + height); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
482 log.debug("-> Chart width : " + chartWidth); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
483 log.debug("-> Chart height : " + chartHeight); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
484 log.debug("-> margin left : " + mLeft); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
485 log.debug("-> margin right : " + mRight); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
486 log.debug("-> margin bottom: " + mBottom); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
487 log.debug("-> margin top : " + mTop); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
488 } |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
489 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
490 double[] origin = new double[2]; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
491 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
492 double centerX = width / 2; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
493 double centerY = height / 2; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
494 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
495 origin[0] = centerX - chartWidth / 2; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
496 origin[1] = centerY - chartHeight / 2; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
497 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
498 origin[0] = origin[0] >= mLeft ? origin[0] : mLeft; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
499 origin[1] = origin[1] >= mTop ? origin[1] : mTop; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
500 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
501 if (log.isDebugEnabled()) { |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
502 log.debug("==> centered left origin: " + origin[0]); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
503 log.debug("==> centered top origin: " + origin[1]); |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
504 } |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
505 |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
506 return origin; |
f2127cd0fe31
Centered charts in a pdf exports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
1056
diff
changeset
|
507 } |
318
5f2820e821e0
Implemented a helper class for exporting charts. Adapted code.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff
changeset
|
508 } |
320
18302372703f
Implemented pdf export of charts.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
318
diff
changeset
|
509 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 : |