annotate artifacts/src/main/java/org/dive4elements/river/jfree/StyledAreaSeriesCollection.java @ 9186:eec4df8165a1

Implemented 'ShowLineLabel' for area themes.
author gernotbelger
date Thu, 28 Jun 2018 10:47:04 +0200
parents 77eb4553245b
children d8e753d0fdb9
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: 4686
diff changeset
9 package org.dive4elements.river.jfree;
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
3227
ed07dd55f487 Fixed various bugs (package declarations, moved classes to correct places).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3076
diff changeset
11 import java.awt.BasicStroke;
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 import java.awt.Color;
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
13 import java.awt.Paint;
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 import java.awt.Stroke;
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
15 import java.awt.TexturePaint;
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
16 import java.awt.geom.Ellipse2D;
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
17 import java.awt.geom.Rectangle2D;
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
18 import java.awt.image.BufferedImage;
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
20 import org.dive4elements.river.themes.ThemeDocument;
3227
ed07dd55f487 Fixed various bugs (package declarations, moved classes to correct places).
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3076
diff changeset
21 import org.jfree.data.xy.XYSeriesCollection;
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 /**
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 * One or more dataseries to draw a polygon (either "open up/downwards", or
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 * the area between two curves), a theme-document and further display options.
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 * The theme-document will later "style" the graphical representation.
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2667
diff changeset
27 * The display options can be used to control the z-order and the axis of the
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28 * dataset.
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 */
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
30 // FIXME: bad abstraction: the only purpose of this derivation is to apply specific styles. This should rather be solved similar to the XYSTyle.
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31 public class StyledAreaSeriesCollection extends XYSeriesCollection {
3889
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
32 private static final long serialVersionUID = 5274940965666948237L;
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
33
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 /** Mode, how to draw/which areas to fill. */
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
35 public enum FILL_MODE {UNDER, ABOVE, BETWEEN}
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37 /** MODE in use. */
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
38 private FILL_MODE mode;
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 7119
diff changeset
40 /** Theme-document with attributes about actual visual representation. */
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
41 private final ThemeDocument theme;
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 /**
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44 * @param theme the theme-document.
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 */
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
46 public StyledAreaSeriesCollection(final ThemeDocument theme) {
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47 this.theme = theme;
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 this.mode = FILL_MODE.BETWEEN;
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
49 }
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 /** Gets the Fill mode. */
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 public FILL_MODE getMode() {
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 return this.mode;
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 /** Sets the Fill mode. */
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
59 public void setMode(final FILL_MODE fMode) {
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 this.mode = fMode;
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
61 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
62
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
63
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
64 /**
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
65 * Applies line color, size and type attributes to renderer, also
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
66 * whether to draw lines and/or points.
3395
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
67 * @param renderer Renderer to apply theme to.
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
68 * @return \param renderer
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
69 */
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
70 public StableXYDifferenceRenderer applyTheme(
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
71 final StableXYDifferenceRenderer renderer
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
72 ) {
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
73 applyFillColor(renderer);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
74 applyShowBorder(renderer);
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
75 applyShowArea(renderer);
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
76 applyOutlineColor(renderer);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
77 applyOutlineStyle(renderer);
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
78 applyShowLine(renderer);
7119
988dde49ae65 Fix area label rendering.
Andre Heinecke <aheinecke@intevation.de>
parents: 6908
diff changeset
79 applyShowAreaLabel(renderer);
9186
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
80 applyShowLineLabel(renderer);
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
81 applyPointStyle(renderer);
9186
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
82 applyShowMinimumMaximum(renderer);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
83 if (this.mode == FILL_MODE.UNDER) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 7119
diff changeset
84 renderer.setAreaCalculationMode(
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
85 StableXYDifferenceRenderer.CALCULATE_NEGATIVE_AREA);
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
86 }
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
87 else if (this.mode == FILL_MODE.ABOVE) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 7119
diff changeset
88 renderer.setAreaCalculationMode(
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
89 StableXYDifferenceRenderer.CALCULATE_POSITIVE_AREA);
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
90 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
91 else {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 7119
diff changeset
92 renderer.setAreaCalculationMode(
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
93 StableXYDifferenceRenderer.CALCULATE_ALL_AREA);
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
94 }
2667
b75681c09ef8 Respect area label bg text style, draw label roughly at centroid of polygons (sofar, better but not yet good).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2666
diff changeset
95
b75681c09ef8 Respect area label bg text style, draw label roughly at centroid of polygons (sofar, better but not yet good).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2666
diff changeset
96 // Apply text style.
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
97 this.theme.parseComplexTextStyle().apply(renderer);
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98 return renderer;
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
99 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
100
9186
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
101 private void applyShowMinimumMaximum(final StableXYDifferenceRenderer renderer) {
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
102
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
103 // TODO: nice to have
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
104
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
105 // final boolean minimumVisible = this.theme.parseShowMinimum();
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
106 // renderer.setIsMinimumShapeVisible(minimumVisible);
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
107 //
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
108 // final boolean maximumVisible = this.theme.parseShowMaximum();
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
109 // renderer.setIsMaximumShapeVisible(maximumVisible);
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
110 }
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
111
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
112 private void applyFillColor(final StableXYDifferenceRenderer renderer) {
3889
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
113
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
114 Paint paint = parseFillPaint();
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
115
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
116 if (paint != null && this.getMode() == FILL_MODE.ABOVE) {
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
117 renderer.setPositivePaint(paint);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 renderer.setNegativePaint(new Color(0,0,0,0));
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
120 else if (paint != null && this.getMode() == FILL_MODE.UNDER) {
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
121 renderer.setNegativePaint(paint);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
122 renderer.setPositivePaint(new Color(0,0,0,0));
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
123 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
124 else {
3889
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
125 if (paint == null)
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
126 paint = new Color(177, 117, 102);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
127
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
128 renderer.setPositivePaint(paint);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
129 renderer.setNegativePaint(paint);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
130 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
131 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
132
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
133 private Paint parseFillPaint() {
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
134 final Color paint = this.theme.parseAreaBackgroundColor();
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
135 final int transparency = this.theme.parseAreaTransparency();
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
136
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
137 final Color alphaPaint = withAlpha(paint, transparency);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
138
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
139 final AreaFillPattern pattern = this.theme.parseAreaBackgroundPattern();
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
140
8913
924cd9943337 Configured some real fill patterns
gernotbelger
parents: 8910
diff changeset
141 if( pattern == null || pattern == AreaFillPattern.patternFill )
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
142 return alphaPaint;
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
143
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
144 final BufferedImage image = pattern.getImage(alphaPaint);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
145
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
146 final Rectangle2D anchor = new Rectangle2D.Double(0,0, image.getWidth(), image.getHeight());
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
147 return new TexturePaint(image, anchor);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
148 }
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
149
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
150 private Color withAlpha(final Color color, final int transparency) {
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
151
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
152 if (transparency <= 0 || color == null)
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
153 return color;
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
154
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
155 return new Color(
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
156 color.getRed(),
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
157 color.getGreen(),
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
158 color.getBlue(),
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
159 (int)((100 - transparency) * 2.55f));
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
160 }
3889
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
161
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
162 private void applyShowBorder(final StableXYDifferenceRenderer renderer) {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
163 final boolean show = this.theme.parseAreaShowBorder();
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
164 renderer.setDrawOutline(show);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
165 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
166
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
167 private void applyShowArea(final StableXYDifferenceRenderer renderer) {
3395
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
168
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
169 final boolean showArea = this.theme.parseShowArea();
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
170 renderer.setDrawArea(showArea);
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
171 }
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
172
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
173 private void applyShowLine(final StableXYDifferenceRenderer renderer) {
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
174 /* FIXME: strange: this will enable/disable showing the 'point' shapes at each vertex. */
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
175 /* FIXME: this will also now be overridden by the option 'showpoints' */
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
176 final boolean show = this.theme.parseShowLine();
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
177 renderer.setShapesVisible(show);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
178 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
179
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
180 private void applyOutlineColor(final StableXYDifferenceRenderer renderer) {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
181 final Color c = this.theme.parseLineColorField();
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
182 renderer.setOutlinePaint(c);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
183 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
184
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
185 private void applyShowAreaLabel(final StableXYDifferenceRenderer renderer) {
9186
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
186 renderer.setShowAreaLabel(this.theme.parseShowAreaLabel());
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
187 }
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
188
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
189 private void applyShowLineLabel(final StableXYDifferenceRenderer renderer) {
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
190 // REMARK: using 'showlinelabel' to activate labeling the line with the title of the theme. This is the same behaviour
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
191 // as for line-themes.
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
192 final boolean showLabelLine = this.theme.parseShowLineLabel();
eec4df8165a1 Implemented 'ShowLineLabel' for area themes.
gernotbelger
parents: 9182
diff changeset
193 renderer.setShowTitleLabel(showLabelLine);
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
194 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
195
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
196 private void applyOutlineStyle(final StableXYDifferenceRenderer renderer) {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
197 final float[] dashes = this.theme.parseLineStyle();
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
198 final int size = this.theme.parseLineWidth();
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
199
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
200 Stroke stroke = null;
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
201
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
202 if (dashes.length <= 1) {
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
203 stroke = new BasicStroke(Integer.valueOf(size));
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
204 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
205 else {
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
206 stroke = new BasicStroke(Integer.valueOf(size),
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
207 BasicStroke.CAP_BUTT,
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
208 BasicStroke.JOIN_ROUND,
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
209 1.0f,
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
210 dashes,
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
211 0.0f);
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
212 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
213
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
214 renderer.setOutlineStroke(stroke);
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
215 }
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
216
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
217 private void applyPointStyle(final StableXYDifferenceRenderer renderer) {
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
218
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
219 final boolean showPoints = this.theme.parseShowPoints();
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
220 renderer.setShapesVisible(showPoints);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
221
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
222 if( showPoints )
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
223 {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
224 final int size = this.theme.parsePointWidth();
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
225 final int dim = 2 * size;
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
226
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
227 final Ellipse2D pointShape = new Ellipse2D.Double(-size, -size, dim, dim);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
228 final Color pointColor = this.theme.parsePointColor();
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
229
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
230 renderer.setSeriesPaint(0, pointColor);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
231 renderer.setSeriesPaint(1, pointColor);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
232
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
233 renderer.setSeriesShape(0, pointShape);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
234 renderer.setSeriesShape(1, pointShape);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
235 }
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
236 }
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
237
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
238 public boolean shouldCalculateRange() {
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
239 return this.theme.parseCalculateRange();
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
240 }
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
241 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
242 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org