annotate artifacts/src/main/java/org/dive4elements/river/exports/InfoGeneratorHelper2.java @ 9726:0a5239a1e46e 3.2.x

Upgrade to Log4j 2
author Tom Gottfried <tom@intevation.de>
date Wed, 02 Mar 2022 10:26:50 +0100
parents e4606eae8ea5
children
rev   line source
5863
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
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: 5838
diff changeset
2 * Software engineering by Intevation GmbH
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
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: 5838
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: 5838
diff changeset
7 */
4897a58c8746 River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
9 package org.dive4elements.river.exports;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11 import java.awt.geom.AffineTransform;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import java.awt.geom.NoninvertibleTransformException;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13 import java.awt.geom.Rectangle2D;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
15 import java.util.Date;
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
16
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 import org.w3c.dom.Document;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 import org.w3c.dom.Element;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
20 import org.apache.logging.log4j.Logger;
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
21 import org.apache.logging.log4j.LogManager;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 import org.jfree.chart.ChartRenderingInfo;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 import org.jfree.chart.JFreeChart;
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1944
diff changeset
25 import org.jfree.chart.axis.DateAxis;
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
26 import org.jfree.chart.axis.NumberAxis;
648
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
27 import org.jfree.chart.axis.ValueAxis;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 import org.jfree.chart.plot.XYPlot;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 import org.jfree.data.Range;
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
30 import org.jfree.data.xy.XYDataset;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
32 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
33 import org.dive4elements.artifacts.common.utils.XMLUtils;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
34 import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
36 import org.dive4elements.river.jfree.Bounds;
2330
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
37
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 * This class helps generating chart info documents.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 */
7083
74ebe5e7fa69 Add info generator for refactored generators
Andre Heinecke <aheinecke@intevation.de>
parents: 7082
diff changeset
42 public class InfoGeneratorHelper2 {
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43
5335
05eeedc5b156 Doc, cosmetic and TODO fixes, renamed field in WQTimeRange.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4433
diff changeset
44 /** Private logging instance. */
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
45 private static final Logger log =
9726
0a5239a1e46e Upgrade to Log4j 2
Tom Gottfried <tom@intevation.de>
parents: 8202
diff changeset
46 LogManager.getLogger(InfoGeneratorHelper2.class);
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
7083
74ebe5e7fa69 Add info generator for refactored generators
Andre Heinecke <aheinecke@intevation.de>
parents: 7082
diff changeset
48 protected ChartGenerator2 generator;
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
49
7083
74ebe5e7fa69 Add info generator for refactored generators
Andre Heinecke <aheinecke@intevation.de>
parents: 7082
diff changeset
50 public InfoGeneratorHelper2(ChartGenerator2 generator) {
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
51 this.generator = generator;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 * Triggers the creation of the chart info document.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 * @param chart The JFreeChart chart.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 * @param info An info object that has been created while chart creation.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 * @return the info document.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 */
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
62 public Document createInfoDocument(
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 JFreeChart chart,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 ChartRenderingInfo info)
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
66 log.debug("InfoGeneratorHelper.createInfoDocument");
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 Document doc = XMLUtils.newDocument();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 ElementCreator cr = new ElementCreator(
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
71 doc,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
72 ArtifactNamespaceContext.NAMESPACE_URI,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 ArtifactNamespaceContext.NAMESPACE_PREFIX);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
74
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 Element chartinfo = cr.create("chartinfo");
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
77 chartinfo.appendChild(createAxesElements(cr, chart));
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
78 chartinfo.appendChild(createTransformationElements(cr, chart, info));
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
79
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
80 doc.appendChild(chartinfo);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
82 return doc;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
83 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
84
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
85
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
86 /**
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
87 * This method create a axes element that contains all domain and range
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
88 * axes of the given chart.
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
89 *
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
90 * @param cr The ElementCreator.
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
91 * @param chart The chart that provides range information of its axes.
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
92 *
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
93 * @return an element with axes information.
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
94 */
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
95 protected Element createAxesElements(
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
96 ElementCreator cr,
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
97 JFreeChart chart)
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
98 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
99 log.debug("InfoGeneratorHelper.createRangeElements");
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
100
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
101 Element axes = cr.create("axes");
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
102
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
103 XYPlot plot = (XYPlot) chart.getPlot();
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
104
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
105 int dAxisCount = plot.getDomainAxisCount();
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
106 for (int i = 0; i < dAxisCount; i++) {
663
51172d56e8bc Only generate an axis element if a axis really exists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 659
diff changeset
107 ValueAxis axis = plot.getDomainAxis(i);
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
108 XYDataset data = plot.getDataset(i);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
109
663
51172d56e8bc Only generate an axis element if a axis really exists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 659
diff changeset
110 if (axis != null) {
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
111 Element e = createAxisElement(cr, axis, data, "domain", i);
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
112 axes.appendChild(e);
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
113 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
114 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
115
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
116 int rAxisCount = plot.getRangeAxisCount();
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
117 for (int i = 0; i < rAxisCount; i++) {
663
51172d56e8bc Only generate an axis element if a axis really exists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 659
diff changeset
118 ValueAxis axis = plot.getRangeAxis(i);
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
119 XYDataset data = plot.getDataset(i);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
120
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
121 if (axis == null || data == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
122 log.warn("Axis or dataset is empty at pos: " + i);
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
123 continue;
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
124 }
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
125
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
126 Element e = createAxisElement(cr, axis, data, "range", i);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
127 axes.appendChild(e);
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
128 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
129
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
130 return axes;
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
131 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
132
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
133
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
134 /**
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
135 * This method create a axis element for a given <i>axis</i> and
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
136 * <i>type</i>. Type can be one of 'domain' or 'range'.
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
137 *
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
138 * @param cr The ElementCreator
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
139 * @param axis The axis that provides range information.
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
140 * @param dataset The dataset for min/max determination.
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
141 * @param type The axis type ('domain' or 'range').
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
142 * @param pos The position in the chart.
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
143 *
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
144 * @return An element that contains range information of a given axis.
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
145 */
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
146 protected Element createAxisElement(
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
147 ElementCreator cr,
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
148 ValueAxis axis,
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
149 XYDataset dataset,
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
150 String type,
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
151 int pos)
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
152 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
153 log.debug("createAxisElement " + pos);
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
154 log.debug("Axis is from type: " + axis.getClass());
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
155
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
156 Element e = cr.create(type);
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1684
diff changeset
157 cr.addAttr(e, "pos", String.valueOf(pos), true);
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1944
diff changeset
158
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1944
diff changeset
159 if (axis instanceof DateAxis) {
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
160 prepareDateAxisElement(
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
161 e, cr, (DateAxis) axis, dataset, type, pos);
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1944
diff changeset
162 }
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1944
diff changeset
163 else {
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
164 prepareNumberAxisElement(
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
165 e, cr, (NumberAxis) axis, dataset, type, pos);
2261
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1944
diff changeset
166 }
6aeb71517136 Registered an Info generator for historical discharge curves; made some adaptions in XYChartGenerator, ChartGenerator and TimeseriesChartGenerator.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 1944
diff changeset
167
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
168 return e;
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
169 }
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
170
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
171
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
172 protected Element prepareNumberAxisElement(
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
173 Element e,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
174 ElementCreator cr,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
175 NumberAxis axis,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
176 XYDataset dataset,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
177 String type,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
178 int pos
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
179 ) {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
180 Range range = axis.getRange();
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
181
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
182 cr.addAttr(e, "from", String.valueOf(range.getLowerBound()), true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
183 cr.addAttr(e, "to", String.valueOf(range.getUpperBound()), true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
184 cr.addAttr(e, "axistype", "number", true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
185
7082
3dc740c51f9b Remove generator2 hacks
Andre Heinecke <aheinecke@intevation.de>
parents: 7069
diff changeset
186 Range[] rs = generator.getRangesForAxis(pos);
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
187 Range r = null;
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
188
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
189 if (type.equals("range")) {
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
190 r = rs[1];
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
191 }
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
192 else {
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
193 r = rs[0];
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
194 }
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
195
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
196 cr.addAttr(e, "min", String.valueOf(r.getLowerBound()), true);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
197 cr.addAttr(e, "max", String.valueOf(r.getUpperBound()), true);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
198
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
199 return e;
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
200 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
201
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
202
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
203 protected Element prepareDateAxisElement(
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
204 Element e,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
205 ElementCreator cr,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
206 DateAxis axis,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
207 XYDataset dataset,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
208 String type,
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
209 int pos
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
210 ) {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
211 Date from = axis.getMinimumDate();
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
212 Date to = axis.getMaximumDate();
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
213
2330
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
214 Bounds bounds = null;
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
215 if (type.equals("range")) {
7082
3dc740c51f9b Remove generator2 hacks
Andre Heinecke <aheinecke@intevation.de>
parents: 7069
diff changeset
216 bounds = generator.getYBounds(pos);
2330
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
217 }
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
218 else {
7082
3dc740c51f9b Remove generator2 hacks
Andre Heinecke <aheinecke@intevation.de>
parents: 7069
diff changeset
219 bounds = generator.getXBounds(pos);
2330
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
220 }
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
221
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
222 cr.addAttr(e, "axistype", "date", true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
223 cr.addAttr(e, "from", String.valueOf(from.getTime()), true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
224 cr.addAttr(e, "to", String.valueOf(to.getTime()), true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
225
2330
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
226 cr.addAttr(e, "min", bounds.getLower().toString(), true);
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
227 cr.addAttr(e, "max", bounds.getUpper().toString(), true);
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
228
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
229 return e;
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
230 }
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
231
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
232
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
233 /**
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
234 * This method appends the values of a transformation matrix to transform
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
235 * image pixel coordinates into chart coordinates.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
236 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
237 * @param cr The ElementCreator.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
238 * @param chart The chart object.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
239 * @param info The ChartRenderingInfo that is filled while chart creation.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
240 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241 * @return an element that contains one or more transformation matrix.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242 */
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
243 protected Element createTransformationElements(
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
244 ElementCreator cr,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245 JFreeChart chart,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
246 ChartRenderingInfo info)
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
247 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
248 log.debug("InfoGeneratorHelper.createTransformationElements");
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
249
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
250 Element tf = cr.create("transformation-matrix");
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
251
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
252 Rectangle2D dataArea = info.getPlotInfo().getDataArea();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
253
648
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
254 XYPlot plot = (XYPlot) chart.getPlot();
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
255 ValueAxis xAxis = plot.getDomainAxis();
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
256
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
257 if (xAxis == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
258 log.error("There is no x axis in the chart!");
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
259 return null;
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
260 }
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
261
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
262 for (int i = 0, num = plot.getRangeAxisCount(); i < num; i++) {
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
263 ValueAxis yAxis = plot.getRangeAxis(i);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
264
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
265 if (yAxis == null) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
266 log.warn("No y axis at pos " + i + " existing.");
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
267 continue;
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
268 }
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
269
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
270 Element matrix = createTransformationElement(
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
271 cr, xAxis, yAxis, dataArea, i);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
272
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
273 tf.appendChild(matrix);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
274 }
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
275
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
276 return tf;
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
277 }
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
278
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
279
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
280 /**
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
281 * Creates an element that contains values used to transform coordinates
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
282 * of a coordinate system A into a coordinate system B.
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
283 *
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
284 * @param cr The ElementCreator.
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
285 * @param xAxis The x axis of the target coordinate system.
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
286 * @param yAxis The y axis of the target coordinate system.
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
287 * @param dataArea The pixel coordinates of the chart image.
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
288 * @param pos The dataset position.
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
289 *
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
290 * @return an element that contains transformation matrix values.
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
291 */
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
292 protected Element createTransformationElement(
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
293 ElementCreator cr,
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
294 ValueAxis xAxis,
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
295 ValueAxis yAxis,
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
296 Rectangle2D dataArea,
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
297 int pos)
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
298 {
648
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
299 double[] tm = createTransformationMatrix(dataArea, xAxis, yAxis);
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
300
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
301 Element matrix = cr.create("matrix");
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
302
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
303 cr.addAttr(matrix, "pos", String.valueOf(pos), true);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
304 cr.addAttr(matrix, "sx", String.valueOf(tm[0]), true);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
305 cr.addAttr(matrix, "sy", String.valueOf(tm[1]), true);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
306 cr.addAttr(matrix, "tx", String.valueOf(tm[2]), true);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
307 cr.addAttr(matrix, "ty", String.valueOf(tm[3]), true);
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
308
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
309 if (xAxis instanceof DateAxis) {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
310 cr.addAttr(matrix, "xtype", "date", true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
311 }
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
312 else {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
313 cr.addAttr(matrix, "xtype", "number", true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
314 }
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
315
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
316 if (yAxis instanceof DateAxis) {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
317 cr.addAttr(matrix, "ytype", "date", true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
318 }
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
319 else {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
320 cr.addAttr(matrix, "ytype", "number", true);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
321 }
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
322
673
b22f21b173a7 Changed the zoom process - the values in the chart request document are percentual values that apply to every axis.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 663
diff changeset
323 return matrix;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
324 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
325
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
327 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
328 * This method determines a transformation matrix to transform pixel
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
329 * coordinates of the chart image into chart coordinates.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
330 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
331 * @param dataArea The rectangle that contains the data points of the chart.
3270
4ac581062c40 Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2330
diff changeset
332 * @param xAxis The x axis.
4ac581062c40 Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2330
diff changeset
333 * @param yAxis The y axis.
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
334 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
335 * @return a double array as follows: [sx, sy, tx, ty].
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
336 */
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
337 protected static double[] createTransformationMatrix(
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
338 Rectangle2D dataArea,
648
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
339 ValueAxis xAxis,
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
340 ValueAxis yAxis)
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
341 {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
342 log.debug("InfoGeneratorHelper.createTransformationMatrix");
648
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
343
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
344 double offsetX = dataArea.getX();
657
ac1399d325e9 Removed asymmetrical "- 1" from width calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 648
diff changeset
345 double width = dataArea.getWidth();
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
346 double offsetY = dataArea.getY();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
347 double height = dataArea.getHeight();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
348
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
349 Range xRange = getRangeFromAxis(xAxis);
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
350 Range yRange = getRangeFromAxis(yAxis);
648
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
351
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
352 double lowerX = xRange.getLowerBound();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
353 double upperX = xRange.getUpperBound();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
354 double lowerY = yRange.getLowerBound();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
355 double upperY = yRange.getUpperBound();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
356
648
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
357 if (xAxis.isInverted()) {
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
358 log.info("X-Axis is inverted!");
648
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
359
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
360 double tmp = upperX;
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
361 upperX = lowerX;
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
362 lowerX = tmp;
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
363 }
d4c4fefb095b The matrix that is used to transform chart image coordinates into chart coordinates supports inverted x-axis now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 647
diff changeset
364
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
365 double dMoveX = upperX - lowerX;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
366 double fMoveX = width * lowerX;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
367 double dMoveY = lowerY - upperY;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
368 double fMoveY = height * upperY;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
369
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
370 AffineTransform t1 = AffineTransform.getTranslateInstance(
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
371 offsetX - ( fMoveX / dMoveX ),
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
372 offsetY - ( fMoveY / dMoveY ) );
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
373
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
374 AffineTransform t2 = AffineTransform.getScaleInstance(
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
375 width / (upperX - lowerX),
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
376 height / (lowerY - upperY));
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
377
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
378 t1.concatenate(t2);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
379
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
380 try {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
381 t1.invert();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
382
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
383 double[] c = new double[6];
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
384 t1.getMatrix(c);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
385
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
386 return new double[] { c[0], c[3], c[4], c[5] };
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
387 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
388 catch (NoninvertibleTransformException e) {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
389 // do nothing
8202
e4606eae8ea5 sed src/**/*.java 's/logger/log/g'
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7083
diff changeset
390 log.warn("Matrix is not invertible.");
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
391 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
392
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
393 return new double[] { 1d, 1d, 0d, 0d };
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
394 }
2273
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
395
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
396
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
397 protected static Range getRangeFromAxis(ValueAxis axis) {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
398 if (axis instanceof DateAxis) {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
399 DateAxis dAxis = (DateAxis) axis;
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
400 Date min = dAxis.getMinimumDate();
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
401 Date max = dAxis.getMaximumDate();
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
402
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
403 return new Range(min.getTime(), max.getTime());
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
404 }
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
405 else {
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
406 return axis.getRange();
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
407 }
7b8d59436be3 Set proper bounds for date axes in the chart info document; tell the transformation matrix which type it is (date/number).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2261
diff changeset
408 }
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
409 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
410 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org