annotate artifacts/src/main/java/org/dive4elements/river/jfree/StyledAreaSeriesCollection.java @ 9182:77eb4553245b

Fixed: waterlevels could not show a band any more Correctly implemented 'showarea' on area themes now
author gernotbelger
date Tue, 26 Jun 2018 20:19:16 +0200
parents 924cd9943337
children eec4df8165a1
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);
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
80 applyPointStyle(renderer);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
81 if (this.mode == FILL_MODE.UNDER) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 7119
diff changeset
82 renderer.setAreaCalculationMode(
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
83 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
84 }
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
85 else if (this.mode == FILL_MODE.ABOVE) {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 7119
diff changeset
86 renderer.setAreaCalculationMode(
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
87 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
88 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
89 else {
8856
5e38e2924c07 Fix code style.
Tom Gottfried <tom@intevation.de>
parents: 7119
diff changeset
90 renderer.setAreaCalculationMode(
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
91 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
92 }
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
93
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
94 // Apply text style.
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
95 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
96 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
97 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
98
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
99 private void applyFillColor(final StableXYDifferenceRenderer renderer) {
3889
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
100
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
101 Paint paint = parseFillPaint();
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
102
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
103 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
104 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
105 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
106 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
107 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
108 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
109 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
110 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
111 else {
3889
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
112 if (paint == null)
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
113 paint = new Color(177, 117, 102);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
114
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
115 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
116 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
117 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
118 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
119
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
120 private Paint parseFillPaint() {
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
121 final Color paint = this.theme.parseAreaBackgroundColor();
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
122 final int transparency = this.theme.parseAreaTransparency();
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
123
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
124 final Color alphaPaint = withAlpha(paint, transparency);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
125
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
126 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
127
8913
924cd9943337 Configured some real fill patterns
gernotbelger
parents: 8910
diff changeset
128 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
129 return alphaPaint;
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
130
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
131 final BufferedImage image = pattern.getImage(alphaPaint);
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
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 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
134 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
135 }
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
136
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
137 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
138
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
139 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
140 return color;
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
141
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
142 return new Color(
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
143 color.getRed(),
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
144 color.getGreen(),
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
145 color.getBlue(),
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
146 (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
147 }
3889
940cd2ef149f Area transparency fix
Christian Lins <christian.lins@intevation.de>
parents: 3442
diff changeset
148
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
149 private void applyShowBorder(final StableXYDifferenceRenderer renderer) {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
150 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
151 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
152 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
153
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
154 private void applyShowArea(final StableXYDifferenceRenderer renderer) {
3395
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3227
diff changeset
155
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
156 final boolean showArea = this.theme.parseShowArea();
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
157 renderer.setDrawArea(showArea);
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
158 }
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
159
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
160 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
161 /* 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
162 /* 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
163 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
164 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
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 applyOutlineColor(final StableXYDifferenceRenderer renderer) {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
168 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
169 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
170 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
171
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
172 /** Inform renderer whether it should draw a label. */
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
173 private void applyShowAreaLabel(final StableXYDifferenceRenderer renderer) {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
174 renderer.setLabelArea(this.theme.parseShowAreaLabel());
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
175 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2074
diff changeset
176
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
177 private void applyOutlineStyle(final StableXYDifferenceRenderer renderer) {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
178 final float[] dashes = this.theme.parseLineStyle();
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
179 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
180
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
181 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
182
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
183 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
184 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
185 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
186 else {
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
187 stroke = new BasicStroke(Integer.valueOf(size),
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
188 BasicStroke.CAP_BUTT,
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
189 BasicStroke.JOIN_ROUND,
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
190 1.0f,
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
191 dashes,
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
192 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
193 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
194
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
195 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
196 }
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
197
8910
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
198 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
199
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
200 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
201 renderer.setShapesVisible(showPoints);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
202
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
203 if( showPoints )
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
204 {
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
205 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
206 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
207
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
208 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
209 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
210
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
211 renderer.setSeriesPaint(0, pointColor);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
212 renderer.setSeriesPaint(1, pointColor);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
213
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
214 renderer.setSeriesShape(0, pointShape);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
215 renderer.setSeriesShape(1, pointShape);
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
216 }
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
217 }
d9c89651bd67 Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents: 8885
diff changeset
218
8885
e5f688820951 Some minor changes on chart: allow area-themes to consider range; allow for axis-margins
gernotbelger
parents: 8856
diff changeset
219 public boolean shouldCalculateRange() {
9182
77eb4553245b Fixed: waterlevels could not show a band any more
gernotbelger
parents: 8913
diff changeset
220 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
221 }
2074
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
222 }
a026d005accd Moved JFreeChart specific classes to de.intevation.flys.jfree and added required imports.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
223 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org