annotate artifacts/src/main/java/org/dive4elements/river/exports/InfoGeneratorHelper.java @ 5838:5aa05a7a34b7

Rename modules to more fitting names.
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 15:23:37 +0200
parents flys-artifacts/src/main/java/org/dive4elements/river/exports/InfoGeneratorHelper.java@bd047b71ab37
children 4897a58c8746
rev   line source
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
1 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
2
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
3 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
4 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
5 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
6
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
7 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
8
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
9 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
10 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
11
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import org.apache.log4j.Logger;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 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
15 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
16 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
17 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
18 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
19 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
20 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
21 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
22
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
23 import org.dive4elements.artifacts.common.ArtifactNamespaceContext;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
24 import org.dive4elements.artifacts.common.utils.XMLUtils;
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
25 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
26
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5335
diff changeset
27 import org.dive4elements.river.jfree.Bounds;
2330
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
28
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 * 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
32 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 * @author <a href="mailto:ingo.weinzierl@intevation.de">Ingo Weinzierl</a>
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 */
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 public class InfoGeneratorHelper {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36
5335
05eeedc5b156 Doc, cosmetic and TODO fixes, renamed field in WQTimeRange.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 4433
diff changeset
37 /** Private logging instance. */
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 private static final Logger logger =
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 Logger.getLogger(InfoGeneratorHelper.class);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40
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
41 protected ChartGenerator 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
42
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
43
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
44 public InfoGeneratorHelper(ChartGenerator 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
45 this.generator = generator;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50 * 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
51 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 * @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
53 * @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
54 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 * @return the info document.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56 */
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
57 public Document createInfoDocument(
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 JFreeChart chart,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 ChartRenderingInfo info)
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 logger.debug("InfoGeneratorHelper.createInfoDocument");
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63 Document doc = XMLUtils.newDocument();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 ElementCreator cr = new ElementCreator(
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 doc,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
67 ArtifactNamespaceContext.NAMESPACE_URI,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
68 ArtifactNamespaceContext.NAMESPACE_PREFIX);
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 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
71
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
72 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
73 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
74
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
75 doc.appendChild(chartinfo);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 return doc;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
78 }
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
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
81 /**
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
82 * 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
83 * 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
84 *
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
85 * @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
86 * @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
87 *
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
88 * @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
89 */
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
90 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
91 ElementCreator cr,
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
92 JFreeChart chart)
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
93 {
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
94 logger.debug("InfoGeneratorHelper.createRangeElements");
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
95
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
96 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
97
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
98 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
99
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
100 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
101 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
102 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
103 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
104
663
51172d56e8bc Only generate an axis element if a axis really exists.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 659
diff changeset
105 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
106 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
107 axes.appendChild(e);
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
108 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
109 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
110
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
111 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
112 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
113 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
114 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
115
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
116 if (axis == null || data == 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
117 logger.warn("Axis or dataset is empty at pos: " + 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
118 continue;
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
119 }
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
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 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
122 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
123 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
124
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
125 return axes;
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
126 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
127
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 * 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
131 * <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
132 *
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
133 * @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
134 * @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
135 * @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
136 * @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
137 * @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
138 *
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
139 * @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
140 */
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
141 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
142 ElementCreator cr,
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
143 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
144 XYDataset dataset,
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
145 String type,
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
146 int pos)
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
147 {
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1684
diff changeset
148 logger.debug("createAxisElement " + pos);
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
149 logger.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
150
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
151 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
152 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
153
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
154 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
155 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
156 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
157 }
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 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
159 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
160 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
161 }
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
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
163 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
164 }
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
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
166
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
167 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
168 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
169 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
170 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
171 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
172 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
173 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
174 ) {
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 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
176
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 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
178 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
179 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
180
1944
21a4d2c677a1 Changed doOut signature, side effect from blackboard feature (to come).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1684
diff changeset
181 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
182 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
183
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
184 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
185 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
186 }
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 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
188 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
189 }
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
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 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
192 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
193
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
194 return e;
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
195 }
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
196
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
197
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
198 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
199 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
200 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
201 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
202 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
203 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
204 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
205 ) {
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 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
207 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
208
2330
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
209 Bounds bounds = null;
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
210 if (type.equals("range")) {
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
211 bounds = generator.getYBounds(pos);
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
212 }
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
213 else {
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
214 bounds = generator.getXBounds(pos);
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
215 }
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
216
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
217 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
218 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
219 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
220
2330
594885703687 Picked changes r4015:4026 from trunk.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 2273
diff changeset
221 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
222 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
223
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 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
225 }
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
226
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
227
659
ab43f36f4af6 The ChartInfoGenerator appends axes range information to the document now.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 657
diff changeset
228 /**
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
229 * 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
230 * 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
231 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
232 * @param cr The ElementCreator.
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
233 * @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
234 * @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
235 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
236 * @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
237 */
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
238 protected Element createTransformationElements(
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
239 ElementCreator cr,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
240 JFreeChart chart,
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241 ChartRenderingInfo info)
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 logger.debug("InfoGeneratorHelper.createTransformationElements");
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
244
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
245 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
246
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
247 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
248
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
249 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
250 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
251
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
252 if (xAxis == 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
253 logger.error("There is no x axis in the chart!");
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
254 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
255 }
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
256
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 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
258 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
259
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 if (yAxis == 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
261 logger.warn("No y axis at pos " + i + " existing.");
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 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
263 }
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 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
266 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
267
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 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
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
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 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
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
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 * 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
277 * 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
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 * @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
280 * @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
281 * @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
282 * @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
283 * @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
284 *
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 * @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
286 */
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 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
288 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
289 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
290 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
291 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
292 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
293 {
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
294 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
295
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
296 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
297
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
298 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
299 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
300 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
301 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
302 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
303
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
304 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
305 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
306 }
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
307 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
308 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
309 }
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
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 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
312 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
313 }
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 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
315 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
316 }
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
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
318 return matrix;
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
319 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
320
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
321
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
322 /**
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
323 * 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
324 * 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
325 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
326 * @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
327 * @param xAxis The x axis.
4ac581062c40 Fix various documentation issues.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2330
diff changeset
328 * @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
329 *
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
330 * @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
331 */
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
332 protected static double[] createTransformationMatrix(
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
333 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
334 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
335 ValueAxis yAxis)
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
336 {
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
337 logger.debug("InfoGeneratorHelper.createTransformationMatrix");
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
338
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
339 double offsetX = dataArea.getX();
657
ac1399d325e9 Removed asymmetrical "- 1" from width calculation.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 648
diff changeset
340 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
341 double offsetY = dataArea.getY();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
342 double height = dataArea.getHeight();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
343
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
344 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
345 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
346
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
347 double lowerX = xRange.getLowerBound();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
348 double upperX = xRange.getUpperBound();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
349 double lowerY = yRange.getLowerBound();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
350 double upperY = yRange.getUpperBound();
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
351
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
352 if (xAxis.isInverted()) {
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
353 logger.info("X-Axis is inverted!");
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
354
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
355 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
356 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
357 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
358 }
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
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
360 double dMoveX = upperX - lowerX;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
361 double fMoveX = width * lowerX;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
362 double dMoveY = lowerY - upperY;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
363 double fMoveY = height * upperY;
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
364
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
365 AffineTransform t1 = AffineTransform.getTranslateInstance(
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
366 offsetX - ( fMoveX / dMoveX ),
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
367 offsetY - ( fMoveY / dMoveY ) );
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
368
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
369 AffineTransform t2 = AffineTransform.getScaleInstance(
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
370 width / (upperX - lowerX),
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
371 height / (lowerY - upperY));
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
372
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
373 t1.concatenate(t2);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
374
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
375 try {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
376 t1.invert();
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 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
379 t1.getMatrix(c);
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
380
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
381 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
382 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
383 catch (NoninvertibleTransformException e) {
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
384 // do nothing
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
385 logger.warn("Matrix is not invertible.");
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
386 }
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 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
389 }
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
390
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
391
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
392 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
393 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
394 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
395 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
396 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
397
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 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
399 }
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 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
401 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
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 }
647
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
404 }
bb484489d3df Introduced a new output generators for creating chart info documents.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
405 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org