Mercurial > dive4elements > river
annotate artifacts/src/main/java/org/dive4elements/river/jfree/StableXYDifferenceRenderer.java @ 9602:6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
author | gernotbelger |
---|---|
date | Tue, 12 Feb 2019 14:08:16 +0100 |
parents | eec4df8165a1 |
children |
rev | line source |
---|---|
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
2 * Software engineering by Intevation GmbH |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
3 * |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
4 * This file is Free Software under the GNU AGPL (>=v3) |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the |
5994
af13ceeba52a
Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5863
diff
changeset
|
6 * documentation coming with Dive4Elements River for details. |
5863
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
7 */ |
4897a58c8746
River artifacts: Added new copyright headers.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
5838
diff
changeset
|
8 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
9 /* =========================================================== |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
10 * JFreeChart : a free chart library for the Java(tm) platform |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
11 * =========================================================== |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
12 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
13 * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
14 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
15 * Project Info: http://www.jfree.org/jfreechart/index.html |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
16 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
17 * This library is free software; you can redistribute it and/or modify it |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
18 * under the terms of the GNU Lesser General Public License as published by |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
19 * the Free Software Foundation; either version 2.1 of the License, or |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
20 * (at your option) any later version. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
21 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
22 * This library is distributed in the hope that it will be useful, but |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
23 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
24 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
25 * License for more details. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
26 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
27 * You should have received a copy of the GNU Lesser General Public |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
28 * License along with this library; if not, write to the Free Software |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
29 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
30 * USA. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
31 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
32 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
33 * in the United States and other countries.] |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
34 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
35 * ------------------------- |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
36 * StableXYDifferenceRenderer.java |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
37 * ------------------------- |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
38 * (C) Copyright 2003-2008, by Object Refinery Limited and Contributors. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
39 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
40 * Original Author: David Gilbert (for Object Refinery Limited); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
41 * Contributor(s): Richard West, Advanced Micro Devices, Inc. (major rewrite |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
42 * of difference drawing algorithm); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
43 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
44 * Changes: |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
45 * -------- |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
46 * 30-Apr-2003 : Version 1 (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
47 * 30-Jul-2003 : Modified entity constructor (CZ); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
48 * 20-Aug-2003 : Implemented Cloneable and PublicCloneable (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
49 * 16-Sep-2003 : Changed ChartRenderingInfo --> PlotRenderingInfo (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
50 * 09-Feb-2004 : Updated to support horizontal plot orientation (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
51 * 10-Feb-2004 : Added default constructor, setter methods and updated |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
52 * Javadocs (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
53 * 25-Feb-2004 : Replaced CrosshairInfo with CrosshairState (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
54 * 30-Mar-2004 : Fixed bug in getNegativePaint() method (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
55 * 15-Jul-2004 : Switched getX() with getXValue() and getY() with |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
56 * getYValue() (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
57 * 25-Aug-2004 : Fixed a bug preventing the use of crosshairs (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
58 * 11-Nov-2004 : Now uses ShapeUtilities to translate shapes (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
59 * 19-Jan-2005 : Now accesses only primitive values from dataset (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
60 * 22-Feb-2005 : Override getLegendItem(int, int) to return "line" items (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
61 * 13-Apr-2005 : Fixed shape positioning bug (id = 1182062) (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
62 * 20-Apr-2005 : Use generators for legend tooltips and URLs (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
63 * 04-May-2005 : Override equals() method, renamed get/setPlotShapes() --> |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
64 * get/setShapesVisible (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
65 * 09-Jun-2005 : Updated equals() to handle GradientPaint (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
66 * 16-Jun-2005 : Fix bug (1221021) affecting stroke used for each series (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
67 * ------------- JFREECHART 1.0.x --------------------------------------------- |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
68 * 24-Jan-2007 : Added flag to allow rounding of x-coordinates, and fixed |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
69 * bug in clone() (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
70 * 05-Feb-2007 : Added an extra call to updateCrosshairValues() in |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
71 * drawItemPass1(), to fix bug 1564967 (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
72 * 06-Feb-2007 : Fixed bug 1086307, crosshairs with multiple axes (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
73 * 08-Mar-2007 : Fixed entity generation (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
74 * 20-Apr-2007 : Updated getLegendItem() for renderer change (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
75 * 23-Apr-2007 : Rewrite of difference drawing algorithm to allow use of |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
76 * series with disjoint x-values (RW); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
77 * 04-May-2007 : Set processVisibleItemsOnly flag to false (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
78 * 17-May-2007 : Set datasetIndex and seriesIndex in getLegendItem() (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
79 * 18-May-2007 : Set dataset and seriesKey for LegendItem (DG); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
80 * 05-Nov-2007 : Draw item labels if visible (RW); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
81 * 17-Jun-2008 : Apply legend shape, font and paint attributes (DG); |
2021
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
82 */ |
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
83 /* |
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
84 * For further changes within the FLYS project, refer to the ChangeLog. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
85 */ |
5831
bd047b71ab37
Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents:
4704
diff
changeset
|
86 package org.dive4elements.river.jfree; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
87 |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
88 import java.awt.BasicStroke; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
89 import java.awt.Color; |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
90 import java.awt.Font; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
91 import java.awt.Graphics2D; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
92 import java.awt.Paint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
93 import java.awt.Shape; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
94 import java.awt.Stroke; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
95 import java.awt.geom.GeneralPath; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
96 import java.awt.geom.Line2D; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
97 import java.awt.geom.Point2D; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
98 import java.awt.geom.Rectangle2D; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
99 import java.io.IOException; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
100 import java.io.ObjectInputStream; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
101 import java.io.ObjectOutputStream; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
102 import java.text.NumberFormat; |
1883
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
103 import java.util.ArrayList; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
104 import java.util.Collections; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
105 import java.util.LinkedList; |
1883
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
106 import java.util.List; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
107 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
108 import org.apache.log4j.Logger; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
109 import org.dive4elements.river.artifacts.math.Linear; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
110 import org.jfree.chart.LegendItem; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
111 import org.jfree.chart.axis.ValueAxis; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
112 import org.jfree.chart.entity.EntityCollection; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
113 import org.jfree.chart.entity.XYItemEntity; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
114 import org.jfree.chart.event.RendererChangeEvent; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
115 import org.jfree.chart.labels.XYToolTipGenerator; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
116 import org.jfree.chart.plot.CrosshairState; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
117 import org.jfree.chart.plot.PlotOrientation; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
118 import org.jfree.chart.plot.PlotRenderingInfo; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
119 import org.jfree.chart.plot.XYPlot; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
120 import org.jfree.chart.renderer.xy.AbstractXYItemRenderer; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
121 import org.jfree.chart.renderer.xy.XYItemRendererState; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
122 import org.jfree.chart.urls.XYURLGenerator; |
9602
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
123 import org.jfree.data.Range; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
124 import org.jfree.data.xy.DefaultXYDataset; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
125 import org.jfree.data.xy.XYDataset; |
9186 | 126 import org.jfree.data.xy.XYSeries; |
127 import org.jfree.data.xy.XYSeriesCollection; | |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
128 import org.jfree.io.SerialUtilities; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
129 import org.jfree.ui.RectangleEdge; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
130 import org.jfree.util.PaintUtilities; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
131 import org.jfree.util.PublicCloneable; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
132 import org.jfree.util.ShapeUtilities; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
133 |
1883
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
134 import gnu.trove.TDoubleArrayList; |
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
135 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
136 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
137 * A renderer for an {@link XYPlot} that highlights the differences between two |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
138 * series. The example shown here is generated by the |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
139 * <code>DifferenceChartDemo1.java</code> program included in the JFreeChart |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
140 * demo collection: |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
141 * <br> |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
142 * <br> |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
143 * <img src="../../../../../images/StableXYDifferenceRendererSample.png" |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
144 * alt="StableXYDifferenceRendererSample.png" /> |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
145 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
146 public class StableXYDifferenceRenderer extends AbstractXYItemRenderer implements PublicCloneable { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
147 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
148 private static Logger log = Logger.getLogger(StableXYDifferenceRenderer.class); |
2107
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
149 |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
150 public static final int CALCULATE_POSITIVE_AREA = 1; |
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
151 public static final int CALCULATE_NEGATIVE_AREA = 2; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
152 public static final int CALCULATE_ALL_AREA = CALCULATE_POSITIVE_AREA | CALCULATE_NEGATIVE_AREA; |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
153 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
154 /** For serialization. */ |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
155 private static final long serialVersionUID = -8447915602375584857L; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
156 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
157 private boolean drawArea = true; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
158 |
7910
432addd00687
Added text color for annotation labels.
Sascha L. Teichmann <teichmann@intevation.de>
parents:
7721
diff
changeset
|
159 /** The paint used to highlight positive differences (y(0) > y(1)). */ |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
160 private transient Paint positivePaint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
161 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
162 /** The paint used to highlight negative differences (y(0) < y(1)). */ |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
163 private transient Paint negativePaint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
164 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
165 /** Display shapes at each point? */ |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
166 private boolean shapesVisible; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
167 |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
168 /** Display shapes at each point? */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
169 private boolean drawOutline; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
170 |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
171 /** Which stroke to draw outline with? */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
172 private Stroke outlineStroke; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
173 |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
174 /** Which paint to draw outline with? */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
175 private Paint outlinePaint; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
176 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
177 /** The shape to display in the legend item. */ |
2021
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
178 private transient Shape legendShape; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
179 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
180 private final boolean drawOriginalSeries; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
181 |
9186 | 182 /** NumberFormat to use for area. */ |
183 private NumberFormat areaLabelNumberFormat; | |
184 | |
185 private int areaCalculationMode; | |
186 | |
187 private double positiveArea; | |
188 | |
189 private double negativeArea; | |
190 | |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
191 /** The color of the label showing the calculated area. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
192 private Color labelColor; |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
193 |
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
|
194 /** The background color of the label showing the calculated area. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
195 private Color labelBGColor; |
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
|
196 |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
197 /** Font to draw label of calculated area with. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
198 private Font labelFont; |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
199 |
9602
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
200 private Color baseLineColor = null; |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
201 |
9186 | 202 /** Whether or not to draw a label that shows the title of the theme. */ |
203 private boolean drawTitleLabel = false; | |
204 | |
205 /** Whether or not to draw a label that shows the area of the polygon. */ | |
206 private boolean drawAreaLabel = false; | |
207 | |
3785
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
208 /** Template to create i18ned label for area. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
209 private String areaLabelTamplate; |
3785
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
210 |
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
|
211 /** Arithmetic centroid of drawn polygons. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
212 private Point2D.Double centroid; |
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
|
213 |
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
|
214 /** Number of points that contributed to the centroid. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
215 private int centroidNPoints = 0; |
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
|
216 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
217 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
218 * This flag controls whether or not the x-coordinates (in Java2D space) |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
219 * are rounded to integers. When set to true, this can avoid the vertical |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
220 * striping that anti-aliasing can generate. However, the rounding may not |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
221 * be appropriate for output in high resolution formats (for example, |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
222 * vector graphics formats such as SVG and PDF). |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
223 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
224 * @since 1.0.4 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
225 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
226 private final boolean roundXCoordinates; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
227 |
9186 | 228 /** Holds the minimal x value in screen coordinates, will updated during the draw operation */ |
229 private transient double minimumScreenX = Double.POSITIVE_INFINITY; | |
230 | |
231 /** Holds the y value in screen coordinates at the minimum x value **/ | |
232 private transient double minimumScreenX_Y = Double.POSITIVE_INFINITY; | |
233 | |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
234 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
235 * Creates a new renderer with default attributes. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
236 */ |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
237 public StableXYDifferenceRenderer() { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
238 this(Color.green, Color.red, false, CALCULATE_ALL_AREA); |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
239 } |
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
240 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
241 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
242 * Creates a new renderer. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
243 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
244 * @param positivePaint |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
245 * the highlight color for positive differences |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
246 * (<code>null</code> not permitted). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
247 * @param negativePaint |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
248 * the highlight color for negative differences |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
249 * (<code>null</code> not permitted). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
250 * @param shapes |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
251 * draw shapes? |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
252 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
253 private StableXYDifferenceRenderer(final Paint positivePaint, final Paint negativePaint, final boolean shapes, final int areaCalculationMode) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
254 if (positivePaint == null) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
255 throw new IllegalArgumentException("Null 'positivePaint' argument."); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
256 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
257 if (negativePaint == null) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
258 throw new IllegalArgumentException("Null 'negativePaint' argument."); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
259 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
260 this.positivePaint = positivePaint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
261 this.negativePaint = negativePaint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
262 this.shapesVisible = shapes; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
263 this.legendShape = new Rectangle2D.Double(-3.0, -3.0, 10.0, 10.0); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
264 this.roundXCoordinates = false; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
265 this.drawOutline = true; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
266 this.outlineStroke = new BasicStroke(1); |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
267 this.outlinePaint = Color.black; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
268 this.drawOriginalSeries = false; |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
269 this.areaCalculationMode = areaCalculationMode; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
270 this.labelBGColor = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
271 this.centroid = new Point2D.Double(0, 0); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
272 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
273 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
274 public void setAreaCalculationMode(final int areaCalculationMode) { |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
275 this.areaCalculationMode = areaCalculationMode; |
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
276 } |
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
277 |
3785
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
278 /** Set template to use to create area label (e.g. 'Area=%dm2'). */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
279 public void setAreaLabelTemplate(final String areaTemplate) { |
3785
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
280 this.areaLabelTamplate = areaTemplate; |
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
281 } |
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
282 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
283 public void setAreaLabelNumberFormat(final NumberFormat nf) { |
3785
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
284 this.areaLabelNumberFormat = nf; |
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
285 } |
a5f65e8983be
Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
3395
diff
changeset
|
286 |
9186 | 287 public void setShowAreaLabel(final boolean doDrawAreaLabel) { |
288 this.drawAreaLabel = doDrawAreaLabel; | |
289 } | |
290 | |
291 public void setShowTitleLabel(final boolean doDrawTitleLabel) { | |
292 this.drawTitleLabel = doDrawTitleLabel; | |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
293 } |
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
294 |
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
295 /** Set font to paint label with. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
296 public void setLabelFont(final Font font) { |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
297 this.labelFont = font; |
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
298 } |
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
299 |
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
300 /** Set color with which to paint label. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
301 public void setLabelColor(final Color color) { |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
302 this.labelColor = color; |
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
303 } |
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
304 |
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
|
305 /** Set color with which to paint label bg. */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
306 public void setLabelBGColor(final Color color) { |
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
|
307 this.labelBGColor = color; |
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
|
308 } |
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
|
309 |
9602
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
310 public void setBaseLineColor(final Color baseLineColor) { |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
311 this.baseLineColor = baseLineColor; |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
312 } |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
313 |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
314 /** |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
315 * Sets color that is used if drawOutline is true. |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
316 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
317 @Override |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
318 public void setOutlinePaint(final Paint outlinePaint) { |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
319 this.outlinePaint = outlinePaint; |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
320 } |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
321 |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
322 /** |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
323 * Sets Stroke that is used if drawOutline is true. |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
324 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
325 @Override |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
326 public void setOutlineStroke(final Stroke stroke) { |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
327 this.outlineStroke = stroke; |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
328 } |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
329 |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
330 /** |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
331 * Whether or not to draw the 'Shape' of the area (in contrast to |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
332 * shapes at data items). |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
333 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
334 public void setDrawOutline(final boolean doDrawOutline) { |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
335 this.drawOutline = doDrawOutline; |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
336 } |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
337 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
338 public void setDrawArea(final boolean doDrawArea) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
339 this.drawArea = doDrawArea; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
340 } |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
341 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
342 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
343 * Returns the paint used to highlight positive differences. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
344 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
345 * @return The paint (never <code>null</code>). |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
346 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
347 * @see #setPositivePaint(Paint) |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
348 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
349 private Paint getPositivePaint() { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
350 return this.positivePaint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
351 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
352 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
353 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
354 * Sets the paint used to highlight positive differences and sends a |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
355 * {@link RendererChangeEvent} to all registered listeners. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
356 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
357 * @param paint |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
358 * the paint (<code>null</code> not permitted). |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
359 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
360 * @see #getPositivePaint() |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
361 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
362 public void setPositivePaint(final Paint paint) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
363 this.positivePaint = paint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
364 fireChangeEvent(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
365 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
366 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
367 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
368 * Returns the paint used to highlight negative differences. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
369 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
370 * @return The paint (never <code>null</code>). |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
371 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
372 * @see #setNegativePaint(Paint) |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
373 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
374 private Paint getNegativePaint() { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
375 return this.negativePaint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
376 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
377 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
378 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
379 * Sets the paint used to highlight negative differences. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
380 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
381 * @param paint |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
382 * the paint (<code>null</code> not permitted). |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
383 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
384 * @see #getNegativePaint() |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
385 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
386 public void setNegativePaint(final Paint paint) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
387 this.negativePaint = paint; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
388 notifyListeners(new RendererChangeEvent(this)); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
389 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
390 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
391 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
392 * Returns a flag that controls whether or not shapes are drawn for each |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
393 * data value. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
394 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
395 * @return A boolean. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
396 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
397 * @see #setShapesVisible(boolean) |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
398 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
399 private boolean getShapesVisible() { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
400 return this.shapesVisible; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
401 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
402 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
403 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
404 * Sets a flag that controls whether or not shapes are drawn for each |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
405 * data value, and sends a {@link RendererChangeEvent} to all registered |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
406 * listeners. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
407 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
408 * @param flag |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
409 * the flag. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
410 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
411 * @see #getShapesVisible() |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
412 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
413 public void setShapesVisible(final boolean flag) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
414 this.shapesVisible = flag; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
415 fireChangeEvent(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
416 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
417 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
418 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
419 * Returns the shape used to represent a line in the legend. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
420 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
421 * @return The legend line (never <code>null</code>). |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
422 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
423 * @see #setLegendLine(Shape) |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
424 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
425 private Shape getLegendLine() { |
2021
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
426 return this.legendShape; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
427 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
428 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
429 /** |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
430 * Initializes the renderer and returns a state object that should be |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
431 * passed to subsequent calls to the drawItem() method. This method will |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
432 * be called before the first item is rendered, giving the renderer an |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
433 * opportunity to initialize any state information it wants to maintain. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
434 * The renderer can do nothing if it chooses. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
435 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
436 * @param g2 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
437 * the graphics device. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
438 * @param dataArea |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
439 * the (visible) area inside the axes. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
440 * @param plot |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
441 * the plot. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
442 * @param data |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
443 * the data. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
444 * @param info |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
445 * an optional info collection object to return data back to |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
446 * the caller. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
447 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
448 * @return A state object. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
449 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
450 @Override |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
451 public XYItemRendererState initialise(final Graphics2D g2, final Rectangle2D dataArea, final XYPlot plot, final XYDataset data, |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
452 final PlotRenderingInfo info) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
453 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
454 final XYItemRendererState state = super.initialise(g2, dataArea, plot, data, info); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
455 state.setProcessVisibleItemsOnly(false); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
456 return state; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
457 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
458 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
459 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
460 * Returns <code>2</code>, the number of passes required by the renderer. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
461 * The {@link XYPlot} will run through the dataset this number of times. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
462 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
463 * @return The number of passes required by the renderer. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
464 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
465 @Override |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
466 public int getPassCount() { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
467 return 2; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
468 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
469 |
3395
2a8919e0ed28
Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3240
diff
changeset
|
470 /** |
2a8919e0ed28
Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3240
diff
changeset
|
471 * Adds x/y data to series. |
2a8919e0ed28
Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
3240
diff
changeset
|
472 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
473 private static final void addSeries(final DefaultXYDataset ds, final Comparable key, final TDoubleArrayList xs, final TDoubleArrayList ys) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
474 ds.addSeries(key, new double[][] { xs.toNativeArray(), ys.toNativeArray() }); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
475 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
476 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
477 private static List<XYDataset> splitByNaNsOneSeries(final XYDataset dataset) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
478 final List<XYDataset> datasets = new ArrayList<>(); |
1883
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
479 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
480 final int N = dataset.getItemCount(0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
481 final TDoubleArrayList xs = new TDoubleArrayList(N); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
482 final TDoubleArrayList ys = new TDoubleArrayList(N); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
483 for (int i = 0; i < N; ++i) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
484 final double x = dataset.getXValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
485 final double y = dataset.getYValue(0, i); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
486 if (Double.isNaN(x) || Double.isNaN(y)) { |
1883
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
487 if (!xs.isEmpty()) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
488 final DefaultXYDataset ds = new DefaultXYDataset(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
489 addSeries(ds, dataset.getSeriesKey(0), xs, ys); |
1883
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
490 datasets.add(ds); |
1885
110dd067bb8f
StableXYDifferenceRenderer: More efficient use of TDoubleArrayList
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1884
diff
changeset
|
491 xs.resetQuick(); |
110dd067bb8f
StableXYDifferenceRenderer: More efficient use of TDoubleArrayList
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1884
diff
changeset
|
492 ys.resetQuick(); |
1883
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
493 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
494 } else { |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
495 xs.add(x); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
496 ys.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
497 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
498 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
499 if (!xs.isEmpty()) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
500 final DefaultXYDataset ds = new DefaultXYDataset(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
501 addSeries(ds, dataset.getSeriesKey(0), xs, ys); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
502 datasets.add(ds); |
1883
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
503 } |
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
504 |
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
505 return datasets; |
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
506 } |
eb671699fbc2
CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1881
diff
changeset
|
507 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
508 private static final boolean add(final TDoubleArrayList xs, final double x) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
509 final int N = xs.size(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
510 if (N == 0 || xs.getQuick(N - 1) < x) { |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
511 xs.add(x); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
512 return true; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
513 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
514 return false; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
515 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
516 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
517 private static boolean hasNaN(final XYDataset dataset) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
518 final int N = dataset.getItemCount(0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
519 final int M = dataset.getItemCount(1); |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
520 |
8749
c4654863108d
Remove unused variable and microoptimize loop variables.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8748
diff
changeset
|
521 for (int i = 0; i < N; ++i) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
522 final double x = dataset.getXValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
523 final double y = dataset.getYValue(0, i); |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
524 if (Double.isNaN(x) || Double.isNaN(y)) { |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
525 return true; |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
526 } |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
527 } |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
528 |
8749
c4654863108d
Remove unused variable and microoptimize loop variables.
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8748
diff
changeset
|
529 for (int j = 0; j < M; ++j) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
530 final double x = dataset.getXValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
531 final double y = dataset.getYValue(1, j); |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
532 if (Double.isNaN(x) || Double.isNaN(y)) { |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
533 return true; |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
534 } |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
535 } |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
536 return false; |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
537 } |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
538 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
539 private static List<XYDataset> splitByNaNsTwoSeries(final XYDataset dataset) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
540 final boolean debug = log.isDebugEnabled(); |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
541 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
542 final List<XYDataset> datasets = new ArrayList<>(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
543 |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
544 if (!hasNaN(dataset)) { |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
545 datasets.add(dataset); |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
546 return datasets; |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
547 } |
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
548 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
549 final int N = dataset.getItemCount(0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
550 final int M = dataset.getItemCount(1); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
551 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
552 int i = 0, j = 0; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
553 // ignore leading NaNs |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
554 for (; i < N; ++i) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
555 final double x = dataset.getXValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
556 final double y = dataset.getYValue(0, i); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
557 if (!Double.isNaN(x) && !Double.isNaN(y)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
558 break; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
559 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
560 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
561 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
562 for (; j < M; ++j) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
563 final double x = dataset.getXValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
564 final double y = dataset.getYValue(1, j); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
565 if (!Double.isNaN(x) && !Double.isNaN(y)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
566 break; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
567 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
568 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
569 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
570 final TDoubleArrayList six = new TDoubleArrayList(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
571 final TDoubleArrayList siy = new TDoubleArrayList(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
572 final TDoubleArrayList sjx = new TDoubleArrayList(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
573 final TDoubleArrayList sjy = new TDoubleArrayList(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
574 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
575 while (i < N && j < M) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
576 int ni = i + 1; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
577 for (; ni < N && !Double.isNaN(dataset.getXValue(0, ni)); ++ni) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
578 ; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
579 for (; ni < N && Double.isNaN(dataset.getXValue(0, ni)); ++ni) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
580 ; |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
581 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
582 int nj = j + 1; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
583 for (; nj < M && !Double.isNaN(dataset.getXValue(1, nj)); ++nj) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
584 ; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
585 for (; nj < M && Double.isNaN(dataset.getXValue(1, nj)); ++nj) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
586 ; |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
587 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
588 if (ni == N && nj == M) { // no more splits |
2107
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
589 log.debug("no more splits ...."); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
590 for (; i < ni; ++i) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
591 final double x = dataset.getXValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
592 final double y = dataset.getYValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
593 if (!Double.isNaN(x) && !Double.isNaN(y) && add(six, x)) { |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
594 siy.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
595 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
596 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
597 for (; j < nj; ++j) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
598 final double x = dataset.getXValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
599 final double y = dataset.getYValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
600 if (!Double.isNaN(x) && !Double.isNaN(y) && add(sjx, x)) { |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
601 sjy.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
602 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
603 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
604 if (!six.isEmpty() && !sjx.isEmpty()) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
605 final DefaultXYDataset ds = new DefaultXYDataset(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
606 addSeries(ds, dataset.getSeriesKey(0), six, siy); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
607 addSeries(ds, dataset.getSeriesKey(1), sjx, sjy); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
608 datasets.add(ds); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
609 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
610 break; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
611 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
612 |
2107
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
613 if (debug) { |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
614 log.debug("ni: " + ni + " " + N); |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
615 log.debug("nj: " + nj + " " + M); |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
616 } |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
617 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
618 final double xni = ni < N ? dataset.getXValue(0, ni) : Double.MAX_VALUE; |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
619 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
620 final double xnj = nj < M ? dataset.getXValue(1, nj) : Double.MAX_VALUE; |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
621 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
622 final double xns = Math.min(xni, xnj); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
623 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
624 double pushxi = Double.NaN; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
625 double pushyi = Double.NaN; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
626 double pushxj = Double.NaN; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
627 double pushyj = Double.NaN; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
628 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
629 for (; i < ni; ++i) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
630 final double x = dataset.getXValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
631 final double y = dataset.getYValue(0, i); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
632 if (Double.isNaN(x) || Double.isNaN(y)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
633 continue; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
634 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
635 if (x < xns) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
636 if (add(six, x)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
637 siy.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
638 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
639 continue; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
640 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
641 if (x == xns) { // exact match |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
642 if (add(six, x)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
643 siy.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
644 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
645 pushxi = x; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
646 pushyi = y; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
647 } else { // x > xns: intersection |
2107
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
648 if (debug) { |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
649 log.debug("xns: " + xns); |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
650 log.debug("x/y: " + x + " / " + y); |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
651 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
652 final int SIX = six.size(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
653 if (SIX > 0) { // should always be true |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
654 final double yns = Linear.linear(xns, six.getQuick(SIX - 1), x, siy.getQuick(SIX - 1), y); |
2107
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
655 if (debug) { |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
656 log.debug("intersection at: " + yns); |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
657 } |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
658 if (add(six, xns)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
659 siy.add(yns); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
660 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
661 pushxi = xns; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
662 pushyi = yns; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
663 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
664 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
665 break; // Split point reached. |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
666 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
667 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
668 for (; j < nj; ++j) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
669 final double x = dataset.getXValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
670 final double y = dataset.getYValue(1, j); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
671 if (Double.isNaN(x) || Double.isNaN(y)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
672 continue; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
673 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
674 if (x < xns) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
675 if (add(sjx, x)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
676 sjy.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
677 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
678 continue; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
679 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
680 if (x == xns) { // exact match |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
681 if (add(sjx, x)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
682 sjy.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
683 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
684 pushxj = x; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
685 pushyj = y; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
686 } else { // x > xns: intersection |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
687 final int SJX = sjx.size(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
688 if (SJX > 0) { // should always be true |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
689 final double yns = Linear.linear(xns, sjx.getQuick(SJX - 1), x, sjy.getQuick(SJX - 1), y); |
2107
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
690 if (debug) { |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
691 log.debug("intersection at: " + yns); |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
692 } |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
693 if (add(sjx, xns)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
694 sjy.add(yns); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
695 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
696 pushxj = xns; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
697 pushyj = yns; |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
698 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
699 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
700 break; // Split point reached. |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
701 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
702 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
703 if (!six.isEmpty() && !sjx.isEmpty()) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
704 final DefaultXYDataset ds = new DefaultXYDataset(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
705 addSeries(ds, dataset.getSeriesKey(0), six, siy); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
706 addSeries(ds, dataset.getSeriesKey(1), sjx, sjy); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
707 datasets.add(ds); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
708 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
709 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
710 six.resetQuick(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
711 siy.resetQuick(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
712 sjx.resetQuick(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
713 sjy.resetQuick(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
714 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
715 // Push split points. |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
716 if (!Double.isNaN(pushxi)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
717 six.add(pushxi); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
718 siy.add(pushyi); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
719 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
720 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
721 if (!Double.isNaN(pushxj)) { |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
722 sjx.add(pushxj); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
723 sjy.add(pushyj); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
724 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
725 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
726 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
727 // Copy the rest. |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
728 for (; i < N; ++i) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
729 final double x = dataset.getXValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
730 final double y = dataset.getXValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
731 if (!Double.isNaN(x) && !Double.isNaN(y) && add(six, x)) { |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
732 siy.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
733 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
734 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
735 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
736 for (; j < M; ++j) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
737 final double x = dataset.getXValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
738 final double y = dataset.getXValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
739 if (!Double.isNaN(x) && !Double.isNaN(y) && add(sjx, x)) { |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
740 sjy.add(y); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
741 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
742 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
743 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
744 // Build final dataset. |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
745 if (!six.isEmpty() && !sjx.isEmpty()) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
746 final DefaultXYDataset ds = new DefaultXYDataset(); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
747 addSeries(ds, dataset.getSeriesKey(0), six, siy); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
748 addSeries(ds, dataset.getSeriesKey(1), sjx, sjy); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
749 datasets.add(ds); |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
750 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
751 |
2107
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
752 if (debug) { |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
753 log.debug("datasets after split: " + datasets.size()); |
51b9899f819d
StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2071
diff
changeset
|
754 } |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
755 |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
756 /* |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
757 * log.debug("Begin dump datasets: "); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
758 * log.debug("Original"); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
759 * i=0; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
760 * dumpDataset(dataset, "Original" ); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
761 * for (XYDataset set: datasets) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
762 * dumpDataset(dataset, "New: " + i++); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
763 * } |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
764 * log.debug("End dump datasets: "); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
765 */ |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
766 |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
767 return datasets; |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
768 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
769 |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
770 /* |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
771 * public static void dumpDataset(XYDataset dataset, String msg) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
772 * log.debug("Begin dump Dataset: " + msg); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
773 * int N = dataset.getItemCount(0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
774 * int M = dataset.getItemCount(1); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
775 * int i = 0, j = 0; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
776 * for (; i < N; ++i) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
777 * double x = dataset.getXValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
778 * double y = dataset.getYValue(0, i); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
779 * log.debug("0 " + i + " X: "+ x + "Y: "+ y); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
780 * } |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
781 * for (; j < M; ++j) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
782 * double x = dataset.getXValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
783 * double y = dataset.getYValue(1, j); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
784 * log.debug("1 " + i + " X: "+ x + "Y: "+ y); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
785 * } |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
786 * log.debug("End dump Dataset: " + msg); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
787 * } |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
788 */ |
8748
36d7bda0b47a
(issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents:
8530
diff
changeset
|
789 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
790 private static List<XYDataset> splitByNaNs(final XYDataset dataset) { |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
791 |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
792 switch (dataset.getSeriesCount()) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
793 case 0: |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
794 return Collections.<XYDataset>emptyList(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
795 case 1: |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
796 return splitByNaNsOneSeries(dataset); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
797 default: // two or more |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
798 return splitByNaNsTwoSeries(dataset); |
1884
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
799 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
800 } |
4ae9c92feb8c
StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1883
diff
changeset
|
801 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
802 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
803 * Draws the visual representation of a single data item. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
804 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
805 * @param g2 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
806 * the graphics device. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
807 * @param state |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
808 * the renderer state. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
809 * @param dataArea |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
810 * the area within which the data is being drawn. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
811 * @param info |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
812 * collects information about the drawing. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
813 * @param plot |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
814 * the plot (can be used to obtain standard color |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
815 * information etc). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
816 * @param domainAxis |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
817 * the domain (horizontal) axis. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
818 * @param rangeAxis |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
819 * the range (vertical) axis. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
820 * @param dataset |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
821 * the dataset. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
822 * @param series |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
823 * the series index (zero-based). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
824 * @param item |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
825 * the item index (zero-based). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
826 * @param crosshairState |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
827 * crosshair information for the plot |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
828 * (<code>null</code> permitted). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
829 * @param pass |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
830 * the pass index. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
831 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
832 @Override |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
833 public void drawItem(final Graphics2D g2, final XYItemRendererState state, final Rectangle2D dataArea, final PlotRenderingInfo info, final XYPlot plot, |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
834 final ValueAxis domainAxis, final ValueAxis rangeAxis, final XYDataset dataset, final int series, final int item, |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
835 final CrosshairState crosshairState, final int pass) { |
9186 | 836 |
1881
0e9c0b49b4ef
CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
1824
diff
changeset
|
837 switch (pass) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
838 case 0: |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
839 for (final XYDataset ds : splitByNaNs(dataset)) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
840 drawItemPass0(g2, dataArea, info, plot, domainAxis, rangeAxis, ds, series, item, crosshairState); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
841 } |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
842 break; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
843 case 1: |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
844 drawItemPass1(g2, dataArea, info, plot, domainAxis, rangeAxis, dataset, series, item, crosshairState); |
9186 | 845 break; |
2666
6da7e064ae90
Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2108
diff
changeset
|
846 } |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
847 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
848 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
849 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
850 * Draws the visual representation of a single data item, first pass. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
851 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
852 * @param x_graphics |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
853 * the graphics device. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
854 * @param x_dataArea |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
855 * the area within which the data is being drawn. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
856 * @param x_info |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
857 * collects information about the drawing. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
858 * @param x_plot |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
859 * the plot (can be used to obtain standard color |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
860 * information etc). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
861 * @param x_domainAxis |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
862 * the domain (horizontal) axis. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
863 * @param x_rangeAxis |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
864 * the range (vertical) axis. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
865 * @param x_dataset |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
866 * the dataset. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
867 * @param x_series |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
868 * the series index (zero-based). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
869 * @param x_item |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
870 * the item index (zero-based). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
871 * @param x_crosshairState |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
872 * crosshair information for the plot |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
873 * (<code>null</code> permitted). |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
874 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
875 private void drawItemPass0(final Graphics2D x_graphics, final Rectangle2D x_dataArea, final PlotRenderingInfo x_info, final XYPlot x_plot, |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
876 final ValueAxis x_domainAxis, final ValueAxis x_rangeAxis, final XYDataset x_dataset, final int x_series, final int x_item, |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
877 final CrosshairState x_crosshairState) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
878 |
9186 | 879 if (x_series != 0 || x_item != 0) |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
880 return; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
881 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
882 final boolean b_impliedZeroSubtrahend = (1 == x_dataset.getSeriesCount()); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
883 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
884 // check if either series is a degenerate case (i.e. less than 2 points) |
9186 | 885 if (isEitherSeriesDegenerate(x_dataset, b_impliedZeroSubtrahend)) |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
886 return; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
887 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
888 // check if series are disjoint (i.e. domain-spans do not overlap) |
9186 | 889 if (!b_impliedZeroSubtrahend && areSeriesDisjoint(x_dataset)) |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
890 return; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
891 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
892 // polygon definitions |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
893 final List<Double> l_minuendXs = new LinkedList<>(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
894 final List<Double> l_minuendYs = new LinkedList<>(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
895 final List<Double> l_subtrahendXs = new LinkedList<>(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
896 final List<Double> l_subtrahendYs = new LinkedList<>(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
897 final List<Double> l_polygonXs = new LinkedList<>(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
898 final List<Double> l_polygonYs = new LinkedList<>(); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
899 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
900 // state |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
901 int l_minuendItem = 0; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
902 final int l_minuendItemCount = x_dataset.getItemCount(0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
903 Double l_minuendCurX = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
904 Double l_minuendNextX = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
905 Double l_minuendCurY = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
906 Double l_minuendNextY = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
907 double l_minuendMaxY = Double.NEGATIVE_INFINITY; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
908 double l_minuendMinY = Double.POSITIVE_INFINITY; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
909 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
910 int l_subtrahendItem = 0; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
911 int l_subtrahendItemCount = 0; // actual value set below |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
912 Double l_subtrahendCurX = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
913 Double l_subtrahendNextX = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
914 Double l_subtrahendCurY = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
915 Double l_subtrahendNextY = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
916 double l_subtrahendMaxY = Double.NEGATIVE_INFINITY; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
917 double l_subtrahendMinY = Double.POSITIVE_INFINITY; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
918 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
919 // if a subtrahend is not specified, assume it is zero |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
920 if (b_impliedZeroSubtrahend) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
921 l_subtrahendItem = 0; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
922 l_subtrahendItemCount = 2; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
923 l_subtrahendCurX = new Double(x_dataset.getXValue(0, 0)); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
924 l_subtrahendNextX = new Double(x_dataset.getXValue(0, (l_minuendItemCount - 1))); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
925 l_subtrahendCurY = new Double(0.0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
926 l_subtrahendNextY = new Double(0.0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
927 l_subtrahendMaxY = 0.0; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
928 l_subtrahendMinY = 0.0; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
929 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
930 l_subtrahendXs.add(l_subtrahendCurX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
931 l_subtrahendYs.add(l_subtrahendCurY); |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
932 } else { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
933 l_subtrahendItemCount = x_dataset.getItemCount(1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
934 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
935 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
936 boolean b_minuendDone = false; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
937 boolean b_minuendAdvanced = true; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
938 boolean b_minuendAtIntersect = false; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
939 boolean b_minuendFastForward = false; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
940 boolean b_subtrahendDone = false; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
941 boolean b_subtrahendAdvanced = true; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
942 boolean b_subtrahendAtIntersect = false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
943 boolean b_subtrahendFastForward = false; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
944 boolean b_colinear = false; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
945 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
946 boolean b_positive; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
947 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
948 // coordinate pairs |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
949 double l_x1 = 0.0, l_y1 = 0.0; // current minuend point |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
950 double l_x2 = 0.0, l_y2 = 0.0; // next minuend point |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
951 double l_x3 = 0.0, l_y3 = 0.0; // current subtrahend point |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
952 double l_x4 = 0.0, l_y4 = 0.0; // next subtrahend point |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
953 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
954 // fast-forward through leading tails |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
955 boolean b_fastForwardDone = false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
956 while (!b_fastForwardDone) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
957 // get the x and y coordinates |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
958 l_x1 = x_dataset.getXValue(0, l_minuendItem); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
959 l_y1 = x_dataset.getYValue(0, l_minuendItem); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
960 l_x2 = x_dataset.getXValue(0, l_minuendItem + 1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
961 l_y2 = x_dataset.getYValue(0, l_minuendItem + 1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
962 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
963 l_minuendCurX = new Double(l_x1); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
964 l_minuendCurY = new Double(l_y1); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
965 l_minuendNextX = new Double(l_x2); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
966 l_minuendNextY = new Double(l_y2); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
967 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
968 if (b_impliedZeroSubtrahend) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
969 l_x3 = l_subtrahendCurX.doubleValue(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
970 l_y3 = l_subtrahendCurY.doubleValue(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
971 l_x4 = l_subtrahendNextX.doubleValue(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
972 l_y4 = l_subtrahendNextY.doubleValue(); |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
973 } else { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
974 l_x3 = x_dataset.getXValue(1, l_subtrahendItem); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
975 l_y3 = x_dataset.getYValue(1, l_subtrahendItem); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
976 l_x4 = x_dataset.getXValue(1, l_subtrahendItem + 1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
977 l_y4 = x_dataset.getYValue(1, l_subtrahendItem + 1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
978 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
979 l_subtrahendCurX = new Double(l_x3); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
980 l_subtrahendCurY = new Double(l_y3); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
981 l_subtrahendNextX = new Double(l_x4); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
982 l_subtrahendNextY = new Double(l_y4); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
983 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
984 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
985 if (l_x2 <= l_x3) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
986 // minuend needs to be fast forwarded |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
987 l_minuendItem++; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
988 b_minuendFastForward = true; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
989 continue; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
990 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
991 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
992 if (l_x4 <= l_x1) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
993 // subtrahend needs to be fast forwarded |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
994 l_subtrahendItem++; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
995 b_subtrahendFastForward = true; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
996 continue; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
997 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
998 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
999 // check if initial polygon needs to be clipped |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1000 if ((l_x3 < l_x1) && (l_x1 < l_x4)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1001 // project onto subtrahend |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1002 final double l_slope = (l_y4 - l_y3) / (l_x4 - l_x3); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1003 l_subtrahendCurX = l_minuendCurX; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1004 l_subtrahendCurY = new Double((l_slope * l_x1) + (l_y3 - (l_slope * l_x3))); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1005 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1006 l_subtrahendXs.add(l_subtrahendCurX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1007 l_subtrahendYs.add(l_subtrahendCurY); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1008 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1009 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1010 if ((l_x1 < l_x3) && (l_x3 < l_x2)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1011 // project onto minuend |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1012 final double l_slope = (l_y2 - l_y1) / (l_x2 - l_x1); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1013 l_minuendCurX = l_subtrahendCurX; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1014 l_minuendCurY = new Double((l_slope * l_x3) + (l_y1 - (l_slope * l_x1))); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1015 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1016 l_minuendXs.add(l_minuendCurX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1017 l_minuendYs.add(l_minuendCurY); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1018 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1019 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1020 l_minuendMaxY = l_minuendCurY.doubleValue(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1021 l_minuendMinY = l_minuendCurY.doubleValue(); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1022 l_subtrahendMaxY = l_subtrahendCurY.doubleValue(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1023 l_subtrahendMinY = l_subtrahendCurY.doubleValue(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1024 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1025 b_fastForwardDone = true; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1026 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1027 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1028 // start of algorithm |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1029 while (!b_minuendDone && !b_subtrahendDone) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1030 if (!b_minuendDone && !b_minuendFastForward && b_minuendAdvanced) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1031 l_x1 = x_dataset.getXValue(0, l_minuendItem); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1032 l_y1 = x_dataset.getYValue(0, l_minuendItem); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1033 l_minuendCurX = new Double(l_x1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1034 l_minuendCurY = new Double(l_y1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1035 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1036 if (!b_minuendAtIntersect) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1037 l_minuendXs.add(l_minuendCurX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1038 l_minuendYs.add(l_minuendCurY); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1039 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1040 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1041 l_minuendMaxY = Math.max(l_minuendMaxY, l_y1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1042 l_minuendMinY = Math.min(l_minuendMinY, l_y1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1043 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1044 l_x2 = x_dataset.getXValue(0, l_minuendItem + 1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1045 l_y2 = x_dataset.getYValue(0, l_minuendItem + 1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1046 l_minuendNextX = new Double(l_x2); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1047 l_minuendNextY = new Double(l_y2); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1048 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1049 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1050 // never updated the subtrahend if it is implied to be zero |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1051 if (!b_impliedZeroSubtrahend && !b_subtrahendDone && !b_subtrahendFastForward && b_subtrahendAdvanced) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1052 l_x3 = x_dataset.getXValue(1, l_subtrahendItem); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1053 l_y3 = x_dataset.getYValue(1, l_subtrahendItem); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1054 l_subtrahendCurX = new Double(l_x3); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1055 l_subtrahendCurY = new Double(l_y3); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1056 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1057 if (!b_subtrahendAtIntersect) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1058 l_subtrahendXs.add(l_subtrahendCurX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1059 l_subtrahendYs.add(l_subtrahendCurY); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1060 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1061 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1062 l_subtrahendMaxY = Math.max(l_subtrahendMaxY, l_y3); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1063 l_subtrahendMinY = Math.min(l_subtrahendMinY, l_y3); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1064 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1065 l_x4 = x_dataset.getXValue(1, l_subtrahendItem + 1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1066 l_y4 = x_dataset.getYValue(1, l_subtrahendItem + 1); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1067 l_subtrahendNextX = new Double(l_x4); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1068 l_subtrahendNextY = new Double(l_y4); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1069 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1070 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1071 // deassert b_*FastForward (only matters for 1st time through loop) |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1072 b_minuendFastForward = false; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1073 b_subtrahendFastForward = false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1074 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1075 Double l_intersectX = null; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1076 Double l_intersectY = null; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1077 boolean b_intersect = false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1078 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1079 b_minuendAtIntersect = false; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1080 b_subtrahendAtIntersect = false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1081 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1082 // check for intersect |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1083 if ((l_x2 == l_x4) && (l_y2 == l_y4)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1084 // check if line segments are colinear |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1085 if ((l_x1 == l_x3) && (l_y1 == l_y3)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1086 b_colinear = true; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1087 } else { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1088 // the intersect is at the next point for both the minuend |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1089 // and subtrahend |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1090 l_intersectX = new Double(l_x2); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1091 l_intersectY = new Double(l_y2); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1092 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1093 b_intersect = true; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1094 b_minuendAtIntersect = true; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1095 b_subtrahendAtIntersect = true; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1096 } |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1097 } else { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1098 // compute common denominator |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1099 final double l_denominator = ((l_y4 - l_y3) * (l_x2 - l_x1)) - ((l_x4 - l_x3) * (l_y2 - l_y1)); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1100 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1101 // compute common deltas |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1102 final double l_deltaY = l_y1 - l_y3; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1103 final double l_deltaX = l_x1 - l_x3; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1104 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1105 // compute numerators |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1106 final double l_numeratorA = ((l_x4 - l_x3) * l_deltaY) - ((l_y4 - l_y3) * l_deltaX); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1107 final double l_numeratorB = ((l_x2 - l_x1) * l_deltaY) - ((l_y2 - l_y1) * l_deltaX); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1108 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1109 // check if line segments are colinear |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1110 if ((0 == l_numeratorA) && (0 == l_numeratorB) && (0 == l_denominator)) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1111 b_colinear = true; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1112 } else { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1113 // check if previously colinear |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1114 if (b_colinear) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1115 // clear colinear points and flag |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1116 l_minuendXs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1117 l_minuendYs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1118 l_subtrahendXs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1119 l_subtrahendYs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1120 l_polygonXs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1121 l_polygonYs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1122 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1123 b_colinear = false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1124 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1125 // set new starting point for the polygon |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1126 final boolean b_useMinuend = ((l_x3 <= l_x1) && (l_x1 <= l_x4)); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1127 l_polygonXs.add(b_useMinuend ? l_minuendCurX : l_subtrahendCurX); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1128 l_polygonYs.add(b_useMinuend ? l_minuendCurY : l_subtrahendCurY); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1129 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1130 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1131 // compute slope components |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1132 final double l_slopeA = l_numeratorA / l_denominator; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1133 final double l_slopeB = l_numeratorB / l_denominator; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1134 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1135 // check if the line segments intersect |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1136 if ((0 < l_slopeA) && (l_slopeA <= 1) && (0 < l_slopeB) && (l_slopeB <= 1)) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1137 // compute the point of intersection |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1138 final double l_xi = l_x1 + (l_slopeA * (l_x2 - l_x1)); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1139 final double l_yi = l_y1 + (l_slopeA * (l_y2 - l_y1)); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1140 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1141 l_intersectX = new Double(l_xi); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1142 l_intersectY = new Double(l_yi); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1143 b_intersect = true; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1144 b_minuendAtIntersect = ((l_xi == l_x2) && (l_yi == l_y2)); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1145 b_subtrahendAtIntersect = ((l_xi == l_x4) && (l_yi == l_y4)); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1146 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1147 // advance minuend and subtrahend to intesect |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1148 l_minuendCurX = l_intersectX; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1149 l_minuendCurY = l_intersectY; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1150 l_subtrahendCurX = l_intersectX; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1151 l_subtrahendCurY = l_intersectY; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1152 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1153 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1154 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1155 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1156 if (b_intersect) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1157 // create the polygon |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1158 // add the minuend's points to polygon |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1159 l_polygonXs.addAll(l_minuendXs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1160 l_polygonYs.addAll(l_minuendYs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1161 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1162 // add intersection point to the polygon |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1163 l_polygonXs.add(l_intersectX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1164 l_polygonYs.add(l_intersectY); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1165 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1166 // add the subtrahend's points to the polygon in reverse |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1167 Collections.reverse(l_subtrahendXs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1168 Collections.reverse(l_subtrahendYs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1169 l_polygonXs.addAll(l_subtrahendXs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1170 l_polygonYs.addAll(l_subtrahendYs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1171 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1172 // create an actual polygon |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1173 b_positive = (l_subtrahendMaxY <= l_minuendMaxY) && (l_subtrahendMinY <= l_minuendMinY); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1174 createPolygon(x_graphics, x_dataArea, x_plot, x_domainAxis, x_rangeAxis, b_positive, l_polygonXs, l_polygonYs); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1175 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1176 // clear the point vectors |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1177 l_minuendXs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1178 l_minuendYs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1179 l_subtrahendXs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1180 l_subtrahendYs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1181 l_polygonXs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1182 l_polygonYs.clear(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1183 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1184 // set the maxY and minY values to intersect y-value |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1185 final double l_y = l_intersectY.doubleValue(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1186 l_minuendMaxY = l_y; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1187 l_subtrahendMaxY = l_y; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1188 l_minuendMinY = l_y; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1189 l_subtrahendMinY = l_y; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1190 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1191 // add interection point to new polygon |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1192 l_polygonXs.add(l_intersectX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1193 l_polygonYs.add(l_intersectY); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1194 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1195 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1196 // advance the minuend if needed |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1197 if (l_x2 <= l_x4) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1198 l_minuendItem++; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1199 b_minuendAdvanced = true; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1200 } else { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1201 b_minuendAdvanced = false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1202 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1203 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1204 // advance the subtrahend if needed |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1205 if (l_x4 <= l_x2) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1206 l_subtrahendItem++; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1207 b_subtrahendAdvanced = true; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1208 } else { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1209 b_subtrahendAdvanced = false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1210 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1211 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1212 b_minuendDone = (l_minuendItem == (l_minuendItemCount - 1)); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1213 b_subtrahendDone = (l_subtrahendItem == (l_subtrahendItemCount - 1)); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1214 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1215 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1216 // check if the final polygon needs to be clipped |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1217 if (b_minuendDone && (l_x3 < l_x2) && (l_x2 < l_x4)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1218 // project onto subtrahend |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1219 final double l_slope = (l_y4 - l_y3) / (l_x4 - l_x3); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1220 l_subtrahendNextX = l_minuendNextX; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1221 l_subtrahendNextY = new Double((l_slope * l_x2) + (l_y3 - (l_slope * l_x3))); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1222 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1223 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1224 if (b_subtrahendDone && (l_x1 < l_x4) && (l_x4 < l_x2)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1225 // project onto minuend |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1226 final double l_slope = (l_y2 - l_y1) / (l_x2 - l_x1); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1227 l_minuendNextX = l_subtrahendNextX; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1228 l_minuendNextY = new Double((l_slope * l_x4) + (l_y1 - (l_slope * l_x1))); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1229 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1230 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1231 // consider last point of minuend and subtrahend for determining |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1232 // positivity |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1233 l_minuendMaxY = Math.max(l_minuendMaxY, l_minuendNextY.doubleValue()); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1234 l_subtrahendMaxY = Math.max(l_subtrahendMaxY, l_subtrahendNextY.doubleValue()); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1235 l_minuendMinY = Math.min(l_minuendMinY, l_minuendNextY.doubleValue()); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1236 l_subtrahendMinY = Math.min(l_subtrahendMinY, l_subtrahendNextY.doubleValue()); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1237 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1238 // add the last point of the minuned and subtrahend |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1239 l_minuendXs.add(l_minuendNextX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1240 l_minuendYs.add(l_minuendNextY); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1241 l_subtrahendXs.add(l_subtrahendNextX); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1242 l_subtrahendYs.add(l_subtrahendNextY); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1243 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1244 // create the polygon |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1245 // add the minuend's points to polygon |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1246 l_polygonXs.addAll(l_minuendXs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1247 l_polygonYs.addAll(l_minuendYs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1248 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1249 // add the subtrahend's points to the polygon in reverse |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1250 Collections.reverse(l_subtrahendXs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1251 Collections.reverse(l_subtrahendYs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1252 l_polygonXs.addAll(l_subtrahendXs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1253 l_polygonYs.addAll(l_subtrahendYs); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1254 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1255 // create an actual polygon |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1256 b_positive = (l_subtrahendMaxY <= l_minuendMaxY) && (l_subtrahendMinY <= l_minuendMinY); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1257 createPolygon(x_graphics, x_dataArea, x_plot, x_domainAxis, x_rangeAxis, b_positive, l_polygonXs, l_polygonYs); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1258 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1259 |
9186 | 1260 private void drawItemPass1(final Graphics2D g2, final Rectangle2D dataArea, final PlotRenderingInfo info, final XYPlot plot, final ValueAxis domainAxis, |
1261 final ValueAxis rangeAxis, final XYDataset dataset, final int series, final int item, final CrosshairState crosshairState) { | |
1262 | |
1263 doDrawItemPass1(g2, dataArea, info, plot, domainAxis, rangeAxis, dataset, series, item, crosshairState); | |
1264 | |
1265 final int lastSeries = dataset.getSeriesCount() - 1; | |
1266 final int lastItem = dataset.getItemCount(series) - 1; | |
1267 if (series == lastSeries && item == lastItem) { | |
1268 // draw labels: only once per theme! | |
1269 drawAreaLabel(g2, dataArea, plot, domainAxis, rangeAxis); | |
1270 drawTitleLabel(g2, dataArea, info.getOwner().getEntityCollection(), dataset); | |
9602
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1271 |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1272 drawZeroBaseline(g2, dataArea, plot, domainAxis, rangeAxis); |
9186 | 1273 } |
1274 } | |
1275 | |
1276 private void drawAreaLabel(final Graphics2D g2, final Rectangle2D dataArea, final XYPlot plot, final ValueAxis domainAxis, final ValueAxis rangeAxis) { | |
1277 | |
1278 if (!this.drawAreaLabel) | |
1279 return; | |
1280 | |
1281 if (this.areaLabelNumberFormat == null || this.areaLabelTamplate == null || this.centroid == null) | |
1282 return; | |
1283 | |
1284 // Respect text-extend if text should appear really centered. | |
1285 float area = 0f; | |
1286 if (this.areaCalculationMode == CALCULATE_POSITIVE_AREA || this.areaCalculationMode == CALCULATE_ALL_AREA) | |
1287 area += Math.abs(this.positiveArea); | |
1288 if (this.areaCalculationMode == CALCULATE_NEGATIVE_AREA || this.areaCalculationMode == CALCULATE_ALL_AREA) | |
1289 area += Math.abs(this.negativeArea); | |
1290 | |
1291 if (area != 0f) { | |
1292 | |
1293 final String labelText = String.format(this.areaLabelTamplate, this.areaLabelNumberFormat.format(area)); | |
1294 | |
1295 final double center_x = this.centroid.getX(); | |
1296 final double center_y = this.centroid.getY(); | |
1297 | |
1298 final double screenX = domainAxis.valueToJava2D(center_x, dataArea, plot.getDomainAxisEdge()); | |
1299 final double screenY = rangeAxis.valueToJava2D(center_y, dataArea, plot.getRangeAxisEdge()); | |
1300 | |
1301 drawLabel(g2, labelText, screenX, screenY); | |
1302 } | |
1303 } | |
1304 | |
1305 private void drawTitleLabel(final Graphics2D g2, final Rectangle2D dataArea, final EntityCollection entities, final XYDataset dataset) { | |
1306 | |
1307 if (!this.drawTitleLabel) | |
1308 return; | |
1309 | |
1310 if (Double.isInfinite(this.minimumScreenX)) | |
1311 return; | |
1312 | |
1313 if (dataset instanceof XYSeriesCollection) { | |
1314 final XYSeries xYSeries = ((XYSeriesCollection) dataset).getSeries(0); | |
1315 final String label = (xYSeries instanceof HasLabel) ? ((HasLabel) xYSeries).getLabel() : xYSeries.getKey().toString(); | |
1316 | |
1317 EnhancedLineAndShapeRenderer.drawLineLabel(g2, dataArea, entities, this.minimumScreenX, this.minimumScreenX_Y, this.labelFont, this.labelColor, | |
1318 this.labelBGColor != null, this.labelBGColor, label); | |
1319 } | |
1320 } | |
1321 | |
9602
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1322 private void drawZeroBaseline(final Graphics2D g2, final Rectangle2D dataArea, final XYPlot plot, final ValueAxis domainAxis, final ValueAxis rangeAxis) { |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1323 |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1324 if (this.baseLineColor == null) |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1325 return; |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1326 |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1327 final PlotOrientation orientation = plot.getOrientation(); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1328 final RectangleEdge domainAxisLocation = plot.getDomainAxisEdge(); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1329 final RectangleEdge rangeAxisLocation = plot.getRangeAxisEdge(); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1330 |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1331 final Range domainRange = domainAxis.getRange(); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1332 final double x0 = domainRange.getLowerBound(); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1333 final double x1 = domainRange.getUpperBound(); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1334 |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1335 final double screenX0 = domainAxis.valueToJava2D(x0, dataArea, domainAxisLocation); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1336 final double screenX1 = domainAxis.valueToJava2D(x1, dataArea, domainAxisLocation); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1337 final double screenY = rangeAxis.valueToJava2D(0.0, dataArea, rangeAxisLocation); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1338 |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1339 Shape baseLine; |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1340 if (PlotOrientation.HORIZONTAL == orientation) |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1341 baseLine = new Line2D.Double(screenY, screenX0, screenY, screenX1); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1342 else |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1343 baseLine = new Line2D.Double(screenX0, screenY, screenX1, screenY); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1344 |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1345 if (baseLine.intersects(dataArea)) { |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1346 g2.setPaint(this.baseLineColor); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1347 g2.setStroke(new BasicStroke(2)); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1348 |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1349 g2.draw(baseLine); |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1350 } |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1351 } |
6b2496d71936
Reimplemented baseline for tkh. Extended area-dataset to be able to draw baseline.
gernotbelger
parents:
9186
diff
changeset
|
1352 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1353 /** |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1354 * Draws the visual representation of a single data item, second pass. In |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1355 * the second pass, the renderer draws the lines and shapes for the |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1356 * individual points in the two series. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1357 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1358 * @param x_graphics |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1359 * the graphics device. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1360 * @param x_dataArea |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1361 * the area within which the data is being drawn. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1362 * @param x_info |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1363 * collects information about the drawing. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1364 * @param x_plot |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1365 * the plot (can be used to obtain standard color |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1366 * information etc). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1367 * @param x_domainAxis |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1368 * the domain (horizontal) axis. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1369 * @param x_rangeAxis |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1370 * the range (vertical) axis. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1371 * @param x_dataset |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1372 * the dataset. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1373 * @param x_series |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1374 * the series index (zero-based). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1375 * @param x_item |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1376 * the item index (zero-based). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1377 * @param x_crosshairState |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1378 * crosshair information for the plot |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1379 * (<code>null</code> permitted). |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1380 */ |
9186 | 1381 private void doDrawItemPass1(final Graphics2D x_graphics, final Rectangle2D x_dataArea, final PlotRenderingInfo x_info, final XYPlot x_plot, |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1382 final ValueAxis x_domainAxis, final ValueAxis x_rangeAxis, final XYDataset x_dataset, final int x_series, final int x_item, |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1383 final CrosshairState x_crosshairState) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1384 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1385 Shape l_entityArea = null; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1386 EntityCollection l_entities = null; |
9186 | 1387 if (x_info != null) |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1388 l_entities = x_info.getOwner().getEntityCollection(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1389 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1390 final Paint l_seriesPaint = getItemPaint(x_series, x_item); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1391 final Stroke l_seriesStroke = getItemStroke(x_series, x_item); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1392 x_graphics.setPaint(l_seriesPaint); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1393 x_graphics.setStroke(l_seriesStroke); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1394 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1395 final PlotOrientation l_orientation = x_plot.getOrientation(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1396 final RectangleEdge l_domainAxisLocation = x_plot.getDomainAxisEdge(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1397 final RectangleEdge l_rangeAxisLocation = x_plot.getRangeAxisEdge(); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1398 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1399 final double l_x0 = x_dataset.getXValue(x_series, x_item); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1400 final double l_y0 = x_dataset.getYValue(x_series, x_item); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1401 final double l_x1 = x_domainAxis.valueToJava2D(l_x0, x_dataArea, l_domainAxisLocation); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1402 final double l_y1 = x_rangeAxis.valueToJava2D(l_y0, x_dataArea, l_rangeAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1403 |
9186 | 1404 /* update minimumScreenX -> used to position title */ |
1405 // REMARK: ignore points with y == 0.0 --> else the label sticks on the zero-line, becaue most area themes start at 0.0 | |
1406 if (l_x1 < this.minimumScreenX && Math.abs(l_y1) > 0.01) { | |
1407 this.minimumScreenX = l_x1; | |
1408 this.minimumScreenX_Y = l_y1; | |
1409 } | |
1410 | |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1411 // These are the shapes of the series items. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1412 if (getShapesVisible()) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1413 Shape l_shape = getItemShape(x_series, x_item); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1414 if (l_orientation == PlotOrientation.HORIZONTAL) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1415 l_shape = ShapeUtilities.createTranslatedShape(l_shape, l_y1, l_x1); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1416 } else { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1417 l_shape = ShapeUtilities.createTranslatedShape(l_shape, l_x1, l_y1); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1418 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1419 if (l_shape.intersects(x_dataArea)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1420 x_graphics.setPaint(getItemPaint(x_series, x_item)); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1421 x_graphics.fill(l_shape); |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1422 /* |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1423 * TODO We could draw the shapes of single items here. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1424 * if (drawOutline) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1425 * x_graphics.setPaint(this.outlinePaint); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1426 * x_graphics.setStroke(this.outlineStroke); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1427 * x_graphics.draw(l_shape); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1428 * } |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1429 */ |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1430 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1431 l_entityArea = l_shape; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1432 } // if (getShapesVisible()) |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1433 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1434 // add an entity for the item... |
9186 | 1435 if (l_entities != null) { |
1436 if (l_entityArea == null) | |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1437 l_entityArea = new Rectangle2D.Double((l_x1 - 2), (l_y1 - 2), 4, 4); |
9186 | 1438 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1439 String l_tip = null; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1440 final XYToolTipGenerator l_tipGenerator = getToolTipGenerator(x_series, x_item); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1441 if (null != l_tipGenerator) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1442 l_tip = l_tipGenerator.generateToolTip(x_dataset, x_series, x_item); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1443 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1444 String l_url = null; |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1445 final XYURLGenerator l_urlGenerator = getURLGenerator(); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1446 if (null != l_urlGenerator) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1447 l_url = l_urlGenerator.generateURL(x_dataset, x_series, x_item); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1448 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1449 final XYItemEntity l_entity = new XYItemEntity(l_entityArea, x_dataset, x_series, x_item, l_tip, l_url); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1450 l_entities.add(l_entity); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1451 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1452 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1453 // draw the item label if there is one... |
9186 | 1454 if (isItemLabelVisible(x_series, x_item)) |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1455 drawItemLabel(x_graphics, l_orientation, x_dataset, x_series, x_item, l_x1, l_y1, (l_y1 < 0.0)); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1456 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1457 final int l_domainAxisIndex = x_plot.getDomainAxisIndex(x_domainAxis); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1458 final int l_rangeAxisIndex = x_plot.getRangeAxisIndex(x_rangeAxis); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1459 updateCrosshairValues(x_crosshairState, l_x0, l_y0, l_domainAxisIndex, l_rangeAxisIndex, l_x1, l_y1, l_orientation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1460 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1461 if (0 == x_item) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1462 return; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1463 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1464 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1465 final double l_x2 = x_domainAxis.valueToJava2D(x_dataset.getXValue(x_series, (x_item - 1)), x_dataArea, l_domainAxisLocation); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1466 final double l_y2 = x_rangeAxis.valueToJava2D(x_dataset.getYValue(x_series, (x_item - 1)), x_dataArea, l_rangeAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1467 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1468 Line2D l_line = null; |
9186 | 1469 if (PlotOrientation.HORIZONTAL == l_orientation) |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1470 l_line = new Line2D.Double(l_y1, l_x1, l_y2, l_x2); |
9186 | 1471 else if (PlotOrientation.VERTICAL == l_orientation) |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1472 l_line = new Line2D.Double(l_x1, l_y1, l_x2, l_y2); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1473 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1474 if ((null != l_line) && l_line.intersects(x_dataArea)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1475 x_graphics.setPaint(getItemPaint(x_series, x_item)); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1476 x_graphics.setStroke(getItemStroke(x_series, x_item)); |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1477 if (this.drawOriginalSeries) { |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1478 x_graphics.setPaint(this.outlinePaint); |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1479 x_graphics.setStroke(this.outlineStroke); |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1480 x_graphics.draw(l_line); |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1481 } |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1482 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1483 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1484 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1485 /** |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1486 * Determines if a dataset is degenerate. A degenerate dataset is a |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1487 * dataset where either series has less than two (2) points. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1488 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1489 * @param x_dataset |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1490 * the dataset. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1491 * @param x_impliedZeroSubtrahend |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1492 * if false, do not check the subtrahend |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1493 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1494 * @return true if the dataset is degenerate. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1495 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1496 private boolean isEitherSeriesDegenerate(final XYDataset x_dataset, final boolean x_impliedZeroSubtrahend) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1497 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1498 if (x_impliedZeroSubtrahend) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1499 return (x_dataset.getItemCount(0) < 2); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1500 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1501 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1502 return ((x_dataset.getItemCount(0) < 2) || (x_dataset.getItemCount(1) < 2)); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1503 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1504 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1505 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1506 * Determines if the two (2) series are disjoint. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1507 * Disjoint series do not overlap in the domain space. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1508 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1509 * @param x_dataset |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1510 * the dataset. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1511 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1512 * @return true if the dataset is degenerate. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1513 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1514 private boolean areSeriesDisjoint(final XYDataset x_dataset) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1515 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1516 final int l_minuendItemCount = x_dataset.getItemCount(0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1517 final double l_minuendFirst = x_dataset.getXValue(0, 0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1518 final double l_minuendLast = x_dataset.getXValue(0, l_minuendItemCount - 1); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1519 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1520 final int l_subtrahendItemCount = x_dataset.getItemCount(1); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1521 final double l_subtrahendFirst = x_dataset.getXValue(1, 0); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1522 final double l_subtrahendLast = x_dataset.getXValue(1, l_subtrahendItemCount - 1); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1523 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1524 return ((l_minuendLast < l_subtrahendFirst) || (l_subtrahendLast < l_minuendFirst)); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1525 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1526 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1527 private void updateCentroid(final Object[] xValues, final Object[] yValues) { |
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
|
1528 double x = 0d, y = 0d; |
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
|
1529 |
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
|
1530 for (int i = 0, N = xValues.length; i < N; ++i) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1531 x += ((Double) xValues[i]).doubleValue(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1532 y += ((Double) yValues[i]).doubleValue(); |
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
|
1533 } |
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
|
1534 |
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
|
1535 x /= xValues.length; |
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
|
1536 y /= yValues.length; |
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
|
1537 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1538 this.centroidNPoints++; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1539 final double factorNew = 1d / this.centroidNPoints; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1540 final double factorOld = 1d - factorNew; |
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
|
1541 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1542 this.centroid = new Point2D.Double((factorNew * x + factorOld * this.centroid.x), (factorNew * y + factorOld * this.centroid.y)); |
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
|
1543 } |
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
|
1544 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1545 private static double calculateArea(final Object[] xValues, final Object[] yValues) { |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1546 double area = 0d; |
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1547 |
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1548 for (int i = 0, N = xValues.length; i < N; ++i) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1549 final int k = (i + 1) % N; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1550 final double xi = ((Double) xValues[i]).doubleValue(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1551 final double yi = ((Double) yValues[i]).doubleValue(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1552 final double xk = ((Double) xValues[k]).doubleValue(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1553 final double yk = ((Double) yValues[k]).doubleValue(); |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1554 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1555 area += xi * yk; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1556 area -= xk * yi; |
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
|
1557 // TODO centroid calculation here? |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1558 } |
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1559 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1560 return 0.5d * area; |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1561 } |
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1562 |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1563 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1564 * Draws the visual representation of a polygon |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1565 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1566 * @param x_graphics |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1567 * the graphics device. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1568 * @param x_dataArea |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1569 * the area within which the data is being drawn. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1570 * @param x_plot |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1571 * the plot (can be used to obtain standard color |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1572 * information etc). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1573 * @param x_domainAxis |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1574 * the domain (horizontal) axis. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1575 * @param x_rangeAxis |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1576 * the range (vertical) axis. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1577 * @param x_positive |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1578 * indicates if the polygon is positive (true) or |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1579 * negative (false). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1580 * @param x_xValues |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1581 * a linked list of the x values (expects values to be |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1582 * of type Double). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1583 * @param x_yValues |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1584 * a linked list of the y values (expects values to be |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1585 * of type Double). |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1586 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1587 private void createPolygon(final Graphics2D x_graphics, final Rectangle2D x_dataArea, final XYPlot x_plot, final ValueAxis x_domainAxis, |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1588 final ValueAxis x_rangeAxis, final boolean x_positive, final List<Double> x_xValues, final List<Double> x_yValues) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1589 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1590 final PlotOrientation l_orientation = x_plot.getOrientation(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1591 final RectangleEdge l_domainAxisLocation = x_plot.getDomainAxisEdge(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1592 final RectangleEdge l_rangeAxisLocation = x_plot.getRangeAxisEdge(); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1593 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1594 final Object[] l_xValues = x_xValues.toArray(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1595 final Object[] l_yValues = x_yValues.toArray(); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1596 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1597 final double area = calculateArea(l_xValues, l_yValues); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1598 if (x_positive) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1599 this.positiveArea += area; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1600 else |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1601 this.negativeArea += area; |
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
|
1602 updateCentroid(l_xValues, l_yValues); |
2108
b5cc53a84b66
StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
2107
diff
changeset
|
1603 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1604 final GeneralPath l_path = new GeneralPath(); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1605 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1606 if (PlotOrientation.VERTICAL == l_orientation) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1607 double l_x = x_domainAxis.valueToJava2D(((Double) l_xValues[0]).doubleValue(), x_dataArea, l_domainAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1608 if (this.roundXCoordinates) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1609 l_x = Math.rint(l_x); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1610 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1611 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1612 double l_y = x_rangeAxis.valueToJava2D(((Double) l_yValues[0]).doubleValue(), x_dataArea, l_rangeAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1613 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1614 l_path.moveTo((float) l_x, (float) l_y); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1615 for (int i = 1; i < l_xValues.length; i++) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1616 l_x = x_domainAxis.valueToJava2D(((Double) l_xValues[i]).doubleValue(), x_dataArea, l_domainAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1617 if (this.roundXCoordinates) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1618 l_x = Math.rint(l_x); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1619 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1620 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1621 l_y = x_rangeAxis.valueToJava2D(((Double) l_yValues[i]).doubleValue(), x_dataArea, l_rangeAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1622 l_path.lineTo((float) l_x, (float) l_y); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1623 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1624 l_path.closePath(); |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1625 } else { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1626 double l_x = x_domainAxis.valueToJava2D(((Double) l_xValues[0]).doubleValue(), x_dataArea, l_domainAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1627 if (this.roundXCoordinates) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1628 l_x = Math.rint(l_x); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1629 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1630 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1631 double l_y = x_rangeAxis.valueToJava2D(((Double) l_yValues[0]).doubleValue(), x_dataArea, l_rangeAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1632 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1633 l_path.moveTo((float) l_y, (float) l_x); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1634 for (int i = 1; i < l_xValues.length; i++) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1635 l_x = x_domainAxis.valueToJava2D(((Double) l_xValues[i]).doubleValue(), x_dataArea, l_domainAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1636 if (this.roundXCoordinates) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1637 l_x = Math.rint(l_x); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1638 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1639 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1640 l_y = x_rangeAxis.valueToJava2D(((Double) l_yValues[i]).doubleValue(), x_dataArea, l_rangeAxisLocation); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1641 l_path.lineTo((float) l_y, (float) l_x); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1642 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1643 l_path.closePath(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1644 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1645 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1646 if (l_path.intersects(x_dataArea)) { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1647 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1648 final Paint paint = x_positive ? getPositivePaint() : getNegativePaint(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1649 if (this.drawArea && paint != null) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1650 x_graphics.setPaint(paint); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1651 x_graphics.fill(l_path); |
8910
d9c89651bd67
Area chart layers may now have an 'arebgpattern'. Real pattern yet to be defined.
gernotbelger
parents:
8856
diff
changeset
|
1652 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1653 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1654 if (this.drawOutline) { |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1655 x_graphics.setStroke(this.outlineStroke); |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1656 x_graphics.setPaint(this.outlinePaint); |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1657 x_graphics.draw(l_path); |
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1658 } |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1659 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1660 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1661 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1662 /** |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1663 * Returns a default legend item for the specified series. Subclasses |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1664 * should override this method to generate customised items. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1665 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1666 * @param datasetIndex |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1667 * the dataset index (zero-based). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1668 * @param series |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1669 * the series index (zero-based). |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1670 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1671 * @return A legend item for the series. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1672 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1673 @Override |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1674 public LegendItem getLegendItem(final int datasetIndex, final int series) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1675 final XYPlot p = getPlot(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1676 if (p == null) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1677 return null; |
2021
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
1678 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1679 final XYDataset dataset = p.getDataset(datasetIndex); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1680 if (dataset == null) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1681 return null; |
2071
fd95bfbb2ec2
Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
2021
diff
changeset
|
1682 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1683 if (!getItemVisible(series, 0)) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1684 return null; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1685 |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1686 final String label = getLegendItemLabelGenerator().generateLabel(dataset, series); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1687 final String description = label; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1688 String toolTipText = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1689 if (getLegendItemToolTipGenerator() != null) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1690 toolTipText = getLegendItemToolTipGenerator().generateLabel(dataset, series); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1691 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1692 String urlText = null; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1693 if (getLegendItemURLGenerator() != null) { |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1694 urlText = getLegendItemURLGenerator().generateLabel(dataset, series); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1695 } |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1696 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1697 // "Area-Style"- Paint. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1698 final Paint paint = getPositivePaint(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1699 final Shape line = getLegendLine(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1700 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1701 // Filled Shape ("Area-Style"). |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1702 final BasicStroke NULL_STROKE = new BasicStroke(0.0f); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1703 final Shape NULL_SHAPE = new Line2D.Float(); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1704 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1705 final Paint outlPaint = this.drawOutline ? this.outlinePaint : Color.black; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1706 final Stroke outlStroke = this.drawOutline ? this.outlineStroke : NULL_STROKE; |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1707 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1708 final LegendItem result = new LegendItem(label, description, toolTipText, urlText, true, line, this.drawArea, paint, this.drawOutline, outlPaint, |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1709 outlStroke, false, NULL_SHAPE, NULL_STROKE, Color.black); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1710 |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1711 result.setLabelFont(lookupLegendTextFont(series)); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1712 final Paint labelPaint = lookupLegendTextPaint(series); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1713 if (labelPaint != null) |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1714 result.setLabelPaint(labelPaint); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1715 result.setDataset(dataset); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1716 result.setDatasetIndex(datasetIndex); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1717 result.setSeriesKey(dataset.getSeriesKey(series)); |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1718 result.setSeriesIndex(series); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1719 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1720 return result; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1721 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1722 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1723 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1724 * Tests this renderer for equality with an arbitrary object. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1725 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1726 * @param obj |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1727 * the object (<code>null</code> permitted). |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1728 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1729 * @return A boolean. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1730 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1731 @Override |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1732 public boolean equals(final Object obj) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1733 if (obj == this) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1734 return true; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1735 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1736 if (!(obj instanceof StableXYDifferenceRenderer)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1737 return false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1738 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1739 if (!super.equals(obj)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1740 return false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1741 } |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1742 final StableXYDifferenceRenderer that = (StableXYDifferenceRenderer) obj; |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1743 if (!PaintUtilities.equal(this.positivePaint, that.positivePaint)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1744 return false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1745 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1746 if (!PaintUtilities.equal(this.negativePaint, that.negativePaint)) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1747 return false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1748 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1749 if (this.shapesVisible != that.shapesVisible) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1750 return false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1751 } |
2021
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
1752 if (!ShapeUtilities.equal(this.legendShape, that.legendShape)) { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1753 return false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1754 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1755 if (this.roundXCoordinates != that.roundXCoordinates) { |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1756 return false; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1757 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1758 return true; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1759 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1760 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1761 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1762 * Returns a clone of the renderer. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1763 * |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1764 * @return A clone. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1765 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1766 * @throws CloneNotSupportedException |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1767 * if the renderer cannot be cloned. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1768 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1769 @Override |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1770 public Object clone() throws CloneNotSupportedException { |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1771 final StableXYDifferenceRenderer clone = (StableXYDifferenceRenderer) super.clone(); |
2021
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
1772 clone.legendShape = ShapeUtilities.clone(this.legendShape); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1773 return clone; |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1774 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1775 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1776 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1777 * Provides serialization support. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1778 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1779 * @param stream |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1780 * the output stream. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1781 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1782 * @throws IOException |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1783 * if there is an I/O error. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1784 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1785 private void writeObject(final ObjectOutputStream stream) throws IOException { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1786 stream.defaultWriteObject(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1787 SerialUtilities.writePaint(this.positivePaint, stream); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1788 SerialUtilities.writePaint(this.negativePaint, stream); |
2021
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
1789 SerialUtilities.writeShape(this.legendShape, stream); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1790 } |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1791 |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1792 /** |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1793 * Provides serialization support. |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1794 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1795 * @param stream |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1796 * the input stream. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1797 * |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1798 * @throws IOException |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1799 * if there is an I/O error. |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1800 * @throws ClassNotFoundException |
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1801 * if there is a classpath problem. |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1802 */ |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1803 private void readObject(final ObjectInputStream stream) throws IOException, ClassNotFoundException { |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1804 stream.defaultReadObject(); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1805 this.positivePaint = SerialUtilities.readPaint(stream); |
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1806 this.negativePaint = SerialUtilities.readPaint(stream); |
2021
1ae17b100973
Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents:
1885
diff
changeset
|
1807 this.legendShape = SerialUtilities.readShape(stream); |
1823
7a11b37d8594
Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff
changeset
|
1808 } |
9186 | 1809 |
1810 private void drawLabel(final Graphics2D g2, final String labelText, final double screenX, final double screenY) { | |
1811 | |
1812 final Color oldColor = g2.getColor(); | |
1813 final Font oldFont = g2.getFont(); | |
1814 | |
1815 g2.setFont(this.labelFont); | |
1816 if (this.labelBGColor != null) | |
1817 EnhancedLineAndShapeRenderer.drawTextBox(g2, labelText, (float) screenX, (float) screenY, this.labelBGColor); | |
1818 | |
1819 g2.setColor(this.labelColor); | |
1820 g2.drawString(labelText, (float) screenX, (float) screenY); | |
1821 | |
1822 g2.setFont(oldFont); | |
1823 g2.setColor(oldColor); | |
1824 } | |
9182
77eb4553245b
Fixed: waterlevels could not show a band any more
gernotbelger
parents:
8910
diff
changeset
|
1825 } |