Mercurial > dive4elements > river
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 | 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 | 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 | 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 | 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 | 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 : |