annotate artifacts/src/main/java/org/dive4elements/river/jfree/StableXYDifferenceRenderer.java @ 8748:36d7bda0b47a

(issue1788) Fix area split if there are no NaN's in the data The split algorithmn splits in a way that it always creates at least two datasets. One before the NaN, one after the NaN. This is broken in case the dataset does not contain any NaN value as it resulted in two identical datasets. This changed the display and resulted in a broken area calculation. I've also added some commented out debug code that was helpful tracking down this problem.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 08 Jun 2015 16:53:54 +0200
parents 4dd6d89ce95e
children c4654863108d
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;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
90 import java.awt.Graphics2D;
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
91 import java.awt.Font;
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
92 import java.awt.Paint;
2667
b75681c09ef8 Respect area label bg text style, draw label roughly at centroid of polygons (sofar, better but not yet good).
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2666
diff changeset
93 import java.awt.geom.Point2D;
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
94 import java.awt.Shape;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
95 import java.awt.Stroke;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
96 import java.awt.geom.GeneralPath;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
97 import java.awt.geom.Line2D;
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;
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
102 import java.util.ArrayList;
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
103 import java.util.Collections;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
104 import java.util.LinkedList;
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
105 import java.util.List;
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
106
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
107 import org.jfree.chart.LegendItem;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
108 import org.jfree.chart.axis.ValueAxis;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
109 import org.jfree.chart.entity.EntityCollection;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
110 import org.jfree.chart.entity.XYItemEntity;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
111 import org.jfree.chart.event.RendererChangeEvent;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
112 import org.jfree.chart.labels.XYToolTipGenerator;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
113 import org.jfree.chart.plot.CrosshairState;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
114 import org.jfree.chart.plot.PlotOrientation;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
115 import org.jfree.chart.plot.PlotRenderingInfo;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
116 import org.jfree.chart.plot.XYPlot;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
117 import org.jfree.chart.urls.XYURLGenerator;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
118 import org.jfree.data.xy.XYDataset;
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
119 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
120 import org.jfree.io.SerialUtilities;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
121 import org.jfree.ui.RectangleEdge;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
122 import org.jfree.util.PaintUtilities;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
123 import org.jfree.util.PublicCloneable;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
124 import org.jfree.util.ShapeUtilities;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
125
1824
982956bde69e Added a dataset to zero mapper to circumvent shortcommings in XYDifferenceRenderer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1823
diff changeset
126 import org.jfree.chart.renderer.xy.AbstractXYItemRenderer;
982956bde69e Added a dataset to zero mapper to circumvent shortcommings in XYDifferenceRenderer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1823
diff changeset
127 import org.jfree.chart.renderer.xy.XYItemRenderer;
982956bde69e Added a dataset to zero mapper to circumvent shortcommings in XYDifferenceRenderer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1823
diff changeset
128 import org.jfree.chart.renderer.xy.XYItemRendererState;
982956bde69e Added a dataset to zero mapper to circumvent shortcommings in XYDifferenceRenderer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1823
diff changeset
129
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
130 import gnu.trove.TDoubleArrayList;
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
131
5831
bd047b71ab37 Repaired internal references
Sascha L. Teichmann <teichmann@intevation.de>
parents: 4704
diff changeset
132 import org.dive4elements.river.artifacts.math.Linear;
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
133
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
134 import java.text.NumberFormat;
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
135
2107
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
136 import org.apache.log4j.Logger;
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
137
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
138 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
139 * A renderer for an {@link XYPlot} that highlights the differences between two
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
140 * series. The example shown here is generated by the
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
141 * <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
142 * demo collection:
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
143 * <br><br>
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
144 * <img src="../../../../../images/StableXYDifferenceRendererSample.png"
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
145 * alt="StableXYDifferenceRendererSample.png" />
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
146 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
147 public class StableXYDifferenceRenderer extends AbstractXYItemRenderer
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
148 implements XYItemRenderer, PublicCloneable {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
149
2107
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
150 private static Logger log = Logger.getLogger(StableXYDifferenceRenderer.class);
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
151
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
152 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
153 public static final int CALCULATE_NEGATIVE_AREA = 2;
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
154 public static final int CALCULATE_ALL_AREA =
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
155 CALCULATE_POSITIVE_AREA | CALCULATE_NEGATIVE_AREA;
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
156
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
157 /** For serialization. */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
158 private static final long serialVersionUID = -8447915602375584857L;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
159
7910
432addd00687 Added text color for annotation labels.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 7721
diff changeset
160 /** The paint used to highlight positive differences (y(0) &gt; y(1)). */
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
161 private transient Paint positivePaint;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
162
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
163 /** 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
164 private transient Paint negativePaint;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
165
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
166 /** Display shapes at each point? */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
167 private boolean shapesVisible;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
168
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
169 /** Display shapes at each point? */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
170 protected boolean drawOutline;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
171
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
172 /** Which stroke to draw outline with? */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
173 protected Stroke outlineStroke;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
174
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
175 /** Which paint to draw outline with? */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
176 protected Paint outlinePaint;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
177
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
178 /** 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
179 private transient Shape legendShape;
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
180
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
181 protected boolean drawOriginalSeries;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
182
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
183 /** The color of the label showing the calculated area. */
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
184 protected Color labelColor;
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
185
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
186 /** The background color of the label showing the calculated area. */
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
187 protected Color labelBGColor;
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
188
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
189 /** Font to draw label of calculated area with. */
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
190 protected Font labelFont;
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
191
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
192 /** Template to create i18ned label for area. */
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
193 protected String areaLabelTamplate;
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
194
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
195 /** NumberFormat to use for area. */
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
196 protected NumberFormat areaLabelNumberFormat;
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
197
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
198 protected int areaCalculationMode;
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
199
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
200 protected double positiveArea;
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
201 protected double negativeArea;
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
202
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
203 /** Whether or not to draw a label in the area. */
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
204 protected boolean labelArea = true;
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
205
1824
982956bde69e Added a dataset to zero mapper to circumvent shortcommings in XYDifferenceRenderer.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1823
diff changeset
206
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
207 /** Arithmetic centroid of drawn polygons. */
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
208 protected Point2D.Double centroid;
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
209
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
210
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 /** Number of points that contributed to the centroid. */
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
212 protected int centroidNPoints = 0;
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
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
215 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
216 * This flag controls whether or not the x-coordinates (in Java2D space)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
217 * are rounded to integers. When set to true, this can avoid the vertical
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
218 * striping that anti-aliasing can generate. However, the rounding may not
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
219 * 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
220 * 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
221 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
222 * @since 1.0.4
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 private boolean roundXCoordinates;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
225
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
226 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
227 * 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
228 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
229 public StableXYDifferenceRenderer() {
1881
0e9c0b49b4ef CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1824
diff changeset
230 this(Color.green, Color.red, false /*, null */);
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
231 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
232
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
233 public StableXYDifferenceRenderer(Paint positivePaint, Paint negativePaint,
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
234 boolean shapes) {
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
235 this(positivePaint, negativePaint, shapes, 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
236 }
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
237
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
238 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
239 * Creates a new renderer.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
240 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
241 * @param positivePaint the highlight color for positive differences
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
242 * (<code>null</code> not permitted).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
243 * @param negativePaint the highlight color for negative differences
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
244 * (<code>null</code> not permitted).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
245 * @param shapes draw shapes?
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
246 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
247 public StableXYDifferenceRenderer(Paint positivePaint, Paint negativePaint,
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
248 boolean shapes, int areaCalculationMode) {
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
249 if (positivePaint == null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
250 throw new IllegalArgumentException(
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
251 "Null 'positivePaint' argument.");
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
252 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
253 if (negativePaint == null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
254 throw new IllegalArgumentException(
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
255 "Null 'negativePaint' argument.");
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 this.positivePaint = positivePaint;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
258 this.negativePaint = negativePaint;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
259 this.shapesVisible = shapes;
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
260 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
261 this.roundXCoordinates = false;
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
262 this.drawOutline = true;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
263 this.outlineStroke = new BasicStroke(1);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
264 this.outlinePaint = Color.black;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
265 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
266 this.areaCalculationMode = areaCalculationMode;
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
267 this.labelBGColor = null;
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
268 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
269 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
270
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
271 public int getAreaCalculationMode() {
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
272 return areaCalculationMode;
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
273 }
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
274
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
275 public void setAreaCalculationMode(int 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 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
277 }
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
278
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
279
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 /** Set template to use to create area label (e.g. 'Area=%dm2'). */
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 public void setAreaLabelTemplate(String 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
282 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
283 }
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
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 public void setAreaLabelNumberFormat(NumberFormat 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
287 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
288 }
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
289
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
290
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
291 public boolean isLabelArea() {
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
292 return this.labelArea;
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 public void setLabelArea(boolean label) {
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
296 this.labelArea = label;
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
297 }
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 font to paint label with. */
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
301 public void setLabelFont(Font font) {
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.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
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
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
305
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
306 /** Get font with which label is painted. */
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
307 public Font getLabelFont() {
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
308 return this.labelFont;
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
309 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
310
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2667
diff changeset
311
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
312 /** Set color with which to paint label. */
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
313 public void setLabelColor(Color color) {
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
314 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
315 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
316
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
317
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
318 /** Get color with which label is painted. */
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
319 public Color getLabelColor() {
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
320 return this.labelColor;
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
321 }
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
322
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
323
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
324 /** Set color with which to paint label bg. */
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
325 public void setLabelBGColor(Color 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
326 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
327 }
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
328
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
329
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
330 /** Get color with which label is painted. */
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
331 public Color getLabelBGColor() {
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
332 return this.labelBGColor;
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
333 }
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
334
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
335
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
336 public double getCalculatedArea() {
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
337 return positiveArea + negativeArea;
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
338 }
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
339
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 * 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
342 */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
343 public void setOutlinePaint(Paint outlinePaint) {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
344 this.outlinePaint = outlinePaint;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
345 }
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
346
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
347
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
348 /**
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
349 * Gets color which is used if drawOutline is true.
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
350 */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
351 public Paint getOutlinePaint() {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
352 return this.outlinePaint;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
353 }
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
354
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
355
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
356 /**
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
357 * 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
358 */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
359 public void setOutlineStroke(Stroke stroke) {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
360 this.outlineStroke = stroke;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
361 }
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
362
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
363
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
364 /**
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
365 * Returns 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
366 */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
367 public Stroke getOutlineStroke() {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
368 return this.outlineStroke;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
369 }
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
370
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
371
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
372 /**
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
373 * 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
374 * shapes at data items).
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
375 */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
376 public void setDrawOutline(boolean doDrawOutline) {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
377 this.drawOutline = doDrawOutline;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
378 }
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
379
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
380
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
381 /**
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
382 * Returns whether or not to draw the shape of the outline.
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
383 */
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
384 public boolean getDrawOutline() {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
385 return this.drawOutline;
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
386 }
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
387
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
388
1823
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 * 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
391 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
392 * @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
393 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
394 * @see #setPositivePaint(Paint)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
395 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
396 public Paint getPositivePaint() {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
397 return this.positivePaint;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
398 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
399
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
400 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
401 * 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
402 * {@link RendererChangeEvent} to all registered listeners.
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 * @param paint the paint (<code>null</code> not permitted).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
405 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
406 * @see #getPositivePaint()
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
407 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
408 public void setPositivePaint(Paint paint) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
409 if (paint == null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
410 throw new IllegalArgumentException("Null 'paint' argument.");
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
411 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
412 this.positivePaint = paint;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
413 fireChangeEvent();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
414 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
415
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 * 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
418 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
419 * @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
420 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
421 * @see #setNegativePaint(Paint)
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 public Paint getNegativePaint() {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
424 return this.negativePaint;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
425 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
426
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 * 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
429 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
430 * @param paint the paint (<code>null</code> not permitted).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
431 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
432 * @see #getNegativePaint()
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
433 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
434 public void setNegativePaint(Paint paint) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
435 if (paint == null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
436 throw new IllegalArgumentException("Null 'paint' argument.");
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
437 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
438 this.negativePaint = paint;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
439 notifyListeners(new RendererChangeEvent(this));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
440 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
441
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
442 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
443 * 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
444 * data value.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
445 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
446 * @return A boolean.
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 * @see #setShapesVisible(boolean)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
449 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
450 public boolean getShapesVisible() {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
451 return this.shapesVisible;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
452 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
453
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
454 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
455 * 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
456 * 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
457 * listeners.
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 * @param flag the flag.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
460 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
461 * @see #getShapesVisible()
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 public void setShapesVisible(boolean flag) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
464 this.shapesVisible = flag;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
465 fireChangeEvent();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
466 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
467
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 * 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
470 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
471 * @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
472 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
473 * @see #setLegendLine(Shape)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
474 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
475 public Shape getLegendLine() {
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
476 return this.legendShape;
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
477 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
478
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
479 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
480 * Sets the shape used as a line in each legend item and sends a
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
481 * {@link RendererChangeEvent} to all registered listeners.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
482 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
483 * @param line the line (<code>null</code> not permitted).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
484 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
485 * @see #getLegendLine()
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
486 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
487 public void setLegendLine(Shape line) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
488 if (line == null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
489 throw new IllegalArgumentException("Null 'line' argument.");
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
490 }
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
491 this.legendShape = line;
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
492 fireChangeEvent();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
493 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
494
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
495 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
496 * Returns the flag that controls whether or not the x-coordinates (in
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
497 * Java2D space) are rounded to integer values.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
498 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
499 * @return The flag.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
500 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
501 * @since 1.0.4
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
502 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
503 * @see #setRoundXCoordinates(boolean)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
504 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
505 public boolean getRoundXCoordinates() {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
506 return this.roundXCoordinates;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
507 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
508
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
509 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
510 * Sets the flag that controls whether or not the x-coordinates (in
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
511 * Java2D space) are rounded to integer values, and sends a
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
512 * {@link RendererChangeEvent} to all registered listeners.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
513 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
514 * @param round the new flag value.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
515 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
516 * @since 1.0.4
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
517 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
518 * @see #getRoundXCoordinates()
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
519 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
520 public void setRoundXCoordinates(boolean round) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
521 this.roundXCoordinates = round;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
522 fireChangeEvent();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
523 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
524
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
525 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
526 * Initialises the renderer and returns a state object that should be
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
527 * passed to subsequent calls to the drawItem() method. This method will
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
528 * be called before the first item is rendered, giving the renderer an
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
529 * opportunity to initialise any state information it wants to maintain.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
530 * 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
531 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
532 * @param g2 the graphics device.
3395
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3240
diff changeset
533 * @param dataArea the (visible) area inside the axes.
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
534 * @param plot the plot.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
535 * @param data the data.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
536 * @param info an optional info collection object to return data back to
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
537 * the caller.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
538 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
539 * @return A state object.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
540 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
541 public XYItemRendererState initialise(Graphics2D g2,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
542 Rectangle2D dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
543 XYPlot plot,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
544 XYDataset data,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
545 PlotRenderingInfo info) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
546
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
547 XYItemRendererState state = super.initialise(g2, dataArea, plot, data,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
548 info);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
549 state.setProcessVisibleItemsOnly(false);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
550 return state;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
551 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
552
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
553 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
554 * 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
555 * 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
556 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
557 * @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
558 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
559 public int getPassCount() {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
560 return 2;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
561 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
562
3395
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3240
diff changeset
563
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3240
diff changeset
564 /**
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3240
diff changeset
565 * Adds x/y data to series.
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3240
diff changeset
566 */
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
567 private static final void addSeries(
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
568 DefaultXYDataset ds,
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
569 Comparable key,
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
570 TDoubleArrayList xs,
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
571 TDoubleArrayList ys
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
572 ) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
573 ds.addSeries(
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
574 key,
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
575 new double [][] {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
576 xs.toNativeArray(),
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
577 ys.toNativeArray()
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
578 });
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
579 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
580
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
581 protected static List<XYDataset> splitByNaNsOneSeries(
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
582 XYDataset dataset
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
583 ) {
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
584 List<XYDataset> datasets = new ArrayList<XYDataset>();
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
585
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
586 int N = dataset.getItemCount(0);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
587 TDoubleArrayList xs = new TDoubleArrayList(N);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
588 TDoubleArrayList ys = new TDoubleArrayList(N);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
589 for (int i = 0; i < N; ++i) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
590 double x = dataset.getXValue(0, i);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
591 double y = dataset.getYValue(0, i);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
592 if (Double.isNaN(x) || Double.isNaN(y)) {
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
593 if (!xs.isEmpty()) {
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
594 DefaultXYDataset ds = new DefaultXYDataset();
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
595 addSeries(ds, dataset.getSeriesKey(0), xs, ys);
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
596 datasets.add(ds);
1885
110dd067bb8f StableXYDifferenceRenderer: More efficient use of TDoubleArrayList
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1884
diff changeset
597 xs.resetQuick();
110dd067bb8f StableXYDifferenceRenderer: More efficient use of TDoubleArrayList
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1884
diff changeset
598 ys.resetQuick();
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
599 }
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
600 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
601 else {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
602 xs.add(x);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
603 ys.add(y);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
604 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
605 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
606 if (!xs.isEmpty()) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
607 DefaultXYDataset ds = new DefaultXYDataset();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
608 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
609 datasets.add(ds);
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
610 }
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
611
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
612 return datasets;
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
613 }
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
614
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
615 private static final boolean add(TDoubleArrayList xs, double x) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
616 int N = xs.size();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
617 if (N == 0 || xs.getQuick(N-1) < x) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
618 xs.add(x);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
619 return true;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
620 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
621 return false;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
622 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
623
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
624 protected static boolean hasNaN(XYDataset 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
625 int N = dataset.getItemCount(0);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
626 int M = dataset.getItemCount(1);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
627
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
628 int i = 0, j = 0;
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
629 boolean haveNaN = 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
630 for (; i < N; ++i) {
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
631 double x = dataset.getXValue(0, i);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
632 double y = dataset.getYValue(0, i);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
633 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
634 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
635 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
636 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
637
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
638 for (; j < M; ++j) {
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
639 double x = dataset.getXValue(1, j);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
640 double y = dataset.getYValue(1, j);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
641 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
642 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
643 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
644 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
645 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
646 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
647
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
648
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
649 protected static List<XYDataset> splitByNaNsTwoSeries(
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
650 XYDataset dataset
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
651 ) {
2107
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
652 boolean debug = log.isDebugEnabled();
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
653
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
654 List<XYDataset> datasets = new ArrayList<XYDataset>();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
655
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
656 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
657 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
658 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
659 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
660
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
661 int N = dataset.getItemCount(0);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
662 int M = dataset.getItemCount(1);
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 int i = 0, j = 0;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
665 // ignore leading NaNs
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
666 for (; i < N; ++i) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
667 double x = dataset.getXValue(0, i);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
668 double y = dataset.getYValue(0, i);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
669 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
670 break;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
671 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
672 }
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 for (; j < M; ++j) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
675 double x = dataset.getXValue(1, j);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
676 double y = dataset.getYValue(1, j);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
677 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
678 break;
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 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
681
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
682 TDoubleArrayList six = new TDoubleArrayList();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
683 TDoubleArrayList siy = new TDoubleArrayList();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
684 TDoubleArrayList sjx = new TDoubleArrayList();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
685 TDoubleArrayList sjy = new TDoubleArrayList();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
686
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
687 while (i < N && j < M) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
688 int ni = i+1;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
689 for (; ni < N && !Double.isNaN(dataset.getXValue(0, ni)); ++ni);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
690 for (; ni < N && Double.isNaN(dataset.getXValue(0, ni)); ++ni);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
691
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
692 int nj = j+1;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
693 for (; nj < M && !Double.isNaN(dataset.getXValue(1, nj)); ++nj);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
694 for (; nj < M && Double.isNaN(dataset.getXValue(1, nj)); ++nj);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
695
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
696 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
697 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
698 for (; i < ni; ++i) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
699 double x = dataset.getXValue(0, i);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
700 double y = dataset.getYValue(0, i);
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2667
diff changeset
701 if (!Double.isNaN(x)
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
702 && !Double.isNaN(y)
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
703 && add(six, x)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
704 siy.add(y);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
705 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
706 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
707 for (; j < nj; ++j) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
708 double x = dataset.getXValue(1, j);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
709 double y = dataset.getYValue(1, j);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
710 if (!Double.isNaN(x)
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
711 && !Double.isNaN(y)
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
712 && add(sjx, x)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
713 sjy.add(y);
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 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
716 if (!six.isEmpty() && !sjx.isEmpty()) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
717 DefaultXYDataset ds = new DefaultXYDataset();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
718 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
719 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
720 datasets.add(ds);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
721 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
722 break;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
723 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
724
2107
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
725 if (debug) {
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
726 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
727 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
728 }
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
729
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
730 double xni = ni < N
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
731 ? dataset.getXValue(0, ni)
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
732 : Double.MAX_VALUE;
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 double xnj = nj < M
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
735 ? dataset.getXValue(1, nj)
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
736 : Double.MAX_VALUE;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
737
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
738 double xns = Math.min(xni, xnj);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
739
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
740 double pushxi = Double.NaN;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
741 double pushyi = Double.NaN;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
742 double pushxj = Double.NaN;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
743 double pushyj = Double.NaN;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
744
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
745 for (; i < ni; ++i) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
746 double x = dataset.getXValue(0, i);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
747 double y = dataset.getYValue(0, i);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
748 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
749 continue;
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 if (x < xns) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
752 if (add(six, x)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
753 siy.add(y);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
754 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
755 continue;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
756 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
757 if (x == xns) { // exact match
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
758 if (add(six, x)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
759 siy.add(y);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
760 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
761 pushxi = x; pushyi = y;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
762 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
763 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
764 if (debug) {
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
765 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
766 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
767 }
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
768 int SIX = six.size();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
769 if (SIX > 0) { // should always be true
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
770 double yns = Linear.linear(
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
771 xns,
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2667
diff changeset
772 six.getQuick(SIX-1), x,
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
773 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
774 if (debug) {
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
775 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
776 }
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
777 if (add(six, xns)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
778 siy.add(yns);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
779 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
780 pushxi = xns;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
781 pushyi = yns;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
782 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
783 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
784 break; // Split point reached.
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
785 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
786
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
787 for (; j < nj; ++j) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
788 double x = dataset.getXValue(1, j);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
789 double y = dataset.getYValue(1, j);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
790 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
791 continue;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
792 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
793 if (x < xns) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
794 if (add(sjx, x)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
795 sjy.add(y);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
796 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
797 continue;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
798 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
799 if (x == xns) { // exact match
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
800 if (add(sjx, x)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
801 sjy.add(y);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
802 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
803 pushxj = x; pushyj = y;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
804 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
805 else { // x > xns: intersection
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
806 int SJX = sjx.size();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
807 if (SJX > 0) { // should always be true
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
808 double yns = Linear.linear(
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
809 xns,
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
810 sjx.getQuick(SJX-1), x,
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
811 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
812 if (debug) {
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
813 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
814 }
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
815 if (add(sjx, xns)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
816 sjy.add(yns);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
817 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
818 pushxj = xns; pushyj = yns;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
819 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
820 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
821 break; // Split point reached.
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
822 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
823
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
824 if (!six.isEmpty() && !sjx.isEmpty()) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
825 DefaultXYDataset ds = new DefaultXYDataset();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
826 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
827 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
828 datasets.add(ds);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
829 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
830
1885
110dd067bb8f StableXYDifferenceRenderer: More efficient use of TDoubleArrayList
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1884
diff changeset
831 six.resetQuick(); siy.resetQuick();
110dd067bb8f StableXYDifferenceRenderer: More efficient use of TDoubleArrayList
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1884
diff changeset
832 sjx.resetQuick(); sjy.resetQuick();
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
833
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
834 // Push split points.
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
835 if (!Double.isNaN(pushxi)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
836 six.add(pushxi);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
837 siy.add(pushyi);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
838 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
839
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
840 if (!Double.isNaN(pushxj)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
841 sjx.add(pushxj);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
842 sjy.add(pushyj);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
843 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
844 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
845
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
846 // Copy the rest.
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
847 for (; i < N; ++i) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
848 double x = dataset.getXValue(0, i);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
849 double y = dataset.getXValue(0, i);
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2667
diff changeset
850 if (!Double.isNaN(x)
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
851 && !Double.isNaN(y)
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
852 && add(six, x)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
853 siy.add(y);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
854 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
855 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
856
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
857 for (; j < M; ++j) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
858 double x = dataset.getXValue(1, j);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
859 double y = dataset.getXValue(1, j);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
860 if (!Double.isNaN(x)
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
861 && !Double.isNaN(y)
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
862 && add(sjx, x)) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
863 sjy.add(y);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
864 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
865 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
866
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
867 // Build final dataset.
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
868 if (!six.isEmpty() && !sjx.isEmpty()) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
869 DefaultXYDataset ds = new DefaultXYDataset();
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
870 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
871 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
872 datasets.add(ds);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
873 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
874
2107
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
875 if (debug) {
51b9899f819d StableXYDifferenceRenderer: Replaced System.err.println()s with proper logging.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2071
diff changeset
876 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
877 }
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
878
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
879 /*
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
880 log.debug("Begin dump 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
881 log.debug("Original");
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
882 i=0;
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
883 dumpDataset(dataset, "Original" );
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
884 for (XYDataset set: 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
885 dumpDataset(dataset, "New: " + i++);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
886 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
887 log.debug("End dump 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
888 */
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
889
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
890 return datasets;
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
891 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
892
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
893 /*
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
894 public static void dumpDataset(XYDataset dataset, String msg) {
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
895 log.debug("Begin dump Dataset: " + msg);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
896
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
897 int N = dataset.getItemCount(0);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
898 int M = dataset.getItemCount(1);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
899
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
900 int i = 0, j = 0;
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
901 for (; i < N; ++i) {
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
902 double x = dataset.getXValue(0, i);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
903 double y = dataset.getYValue(0, i);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
904 log.debug("0 " + i + " X: "+ x + "Y: "+ 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
905 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
906
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
907 for (; j < M; ++j) {
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
908 double x = dataset.getXValue(1, j);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
909 double y = dataset.getYValue(1, j);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
910 log.debug("1 " + i + " X: "+ x + "Y: "+ 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
911 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
912 log.debug("End dump Dataset: " + msg);
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
913 }
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
914 */
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
915
36d7bda0b47a (issue1788) Fix area split if there are no NaN's in the data
Andre Heinecke <andre.heinecke@intevation.de>
parents: 8530
diff changeset
916
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
917 public static List<XYDataset> splitByNaNs(XYDataset dataset) {
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
918
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
919 switch (dataset.getSeriesCount()) {
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2667
diff changeset
920 case 0:
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
921 return Collections.<XYDataset>emptyList();
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
922 case 1:
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
923 return splitByNaNsOneSeries(dataset);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
924 default: // two or more
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
925 return splitByNaNsTwoSeries(dataset);
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
926 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
927 }
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
928
3395
2a8919e0ed28 Cosmetics, doc.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3240
diff changeset
929
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
930 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
931 * 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
932 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
933 * @param g2 the graphics device.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
934 * @param state the renderer state.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
935 * @param dataArea the area within which the data is being drawn.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
936 * @param info collects information about the drawing.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
937 * @param plot the plot (can be used to obtain standard color
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
938 * information etc).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
939 * @param domainAxis the domain (horizontal) axis.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
940 * @param rangeAxis the range (vertical) axis.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
941 * @param dataset the dataset.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
942 * @param series the series index (zero-based).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
943 * @param item the item index (zero-based).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
944 * @param crosshairState crosshair information for the plot
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
945 * (<code>null</code> permitted).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
946 * @param pass the pass index.
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 public void drawItem(Graphics2D g2,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
949 XYItemRendererState state,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
950 Rectangle2D dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
951 PlotRenderingInfo info,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
952 XYPlot plot,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
953 ValueAxis domainAxis,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
954 ValueAxis rangeAxis,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
955 XYDataset dataset,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
956 int series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
957 int item,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
958 CrosshairState crosshairState,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
959 int pass) {
1881
0e9c0b49b4ef CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1824
diff changeset
960 switch (pass) {
0e9c0b49b4ef CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1824
diff changeset
961 case 0:
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
962 for (XYDataset ds: splitByNaNs(dataset)) {
3076
5642a83420f2 FLYS artifacts: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2667
diff changeset
963 drawItemPass0(g2, dataArea, info,
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
964 plot, domainAxis, rangeAxis,
1884
4ae9c92feb8c StableXYDifferenceRenderer: Make rendering work with definition holes.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1883
diff changeset
965 ds, series, item, crosshairState);
1883
eb671699fbc2 CrossSectionApp: Draw water, too.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1881
diff changeset
966 }
1881
0e9c0b49b4ef CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1824
diff changeset
967 break;
0e9c0b49b4ef CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1824
diff changeset
968 case 1:
0e9c0b49b4ef CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1824
diff changeset
969 drawItemPass1(g2, dataArea, info,
0e9c0b49b4ef CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1824
diff changeset
970 plot, domainAxis, rangeAxis,
0e9c0b49b4ef CrossSectionApp: draw ground with StableXYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1824
diff changeset
971 dataset, series, item, crosshairState);
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
972 }
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
973
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
974 // Find geometric middle, calculate area and paint a string with it here.
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
975 if (pass == 1 && this.labelArea && areaLabelNumberFormat != null && areaLabelTamplate != null) {
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
976 double center_x = centroid.getX();
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
977 double center_y = centroid.getY();
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
978 center_x = domainAxis.valueToJava2D(center_x, dataArea,
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
979 plot.getDomainAxisEdge());
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
980 center_y = rangeAxis.valueToJava2D(center_y, dataArea,
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
981 plot.getRangeAxisEdge());
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
982
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
983 // Respect text-extend if text should appear really centered.
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
984
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
985 float area = 0f;
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
986 if (areaCalculationMode == CALCULATE_POSITIVE_AREA
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
987 || areaCalculationMode == CALCULATE_ALL_AREA) {
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
988 area += Math.abs(positiveArea);
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
989 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
990 if (areaCalculationMode == CALCULATE_NEGATIVE_AREA
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
991 || areaCalculationMode == CALCULATE_ALL_AREA) {
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
992 area += Math.abs(negativeArea);
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
993 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
994 if (area != 0f) {
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
995 Color oldColor = g2.getColor();
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
996 Font oldFont = g2.getFont();
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
997 g2.setFont(labelFont);
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
998 String labelText = String.format(this.areaLabelTamplate,
a5f65e8983be Merged revisions 5501-5502,5504-5508,5511-5513,5516-5519 via svnmerge from
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents: 3395
diff changeset
999 areaLabelNumberFormat.format(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
1000 if (labelBGColor != null) {
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
1001 EnhancedLineAndShapeRenderer.drawTextBox(g2, labelText,
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
1002 (float)center_x, (float)center_y, labelBGColor);
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
1003 }
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
1004 g2.setColor(labelColor);
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
1005 g2.drawString(labelText, (float)center_x, (float)center_y);
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
1006 g2.setFont(oldFont);
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
1007 g2.setColor(oldColor);
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
1008 }
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
1009 }
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1010 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1011
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1012 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1013 * 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
1014 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1015 * @param x_graphics the graphics device.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1016 * @param x_dataArea the area within which the data is being drawn.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1017 * @param x_info collects information about the drawing.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1018 * @param x_plot the plot (can be used to obtain standard color
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1019 * information etc).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1020 * @param x_domainAxis the domain (horizontal) axis.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1021 * @param x_rangeAxis the range (vertical) axis.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1022 * @param x_dataset the dataset.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1023 * @param x_series the series index (zero-based).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1024 * @param x_item the item index (zero-based).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1025 * @param x_crosshairState crosshair information for the plot
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1026 * (<code>null</code> permitted).
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 protected void drawItemPass0(Graphics2D x_graphics,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1029 Rectangle2D x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1030 PlotRenderingInfo x_info,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1031 XYPlot x_plot,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1032 ValueAxis x_domainAxis,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1033 ValueAxis x_rangeAxis,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1034 XYDataset x_dataset,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1035 int x_series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1036 int x_item,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1037 CrosshairState x_crosshairState) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1038
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1039 if (!((0 == x_series) && (0 == x_item))) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1040 return;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1041 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1042
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1043 boolean b_impliedZeroSubtrahend = (1 == x_dataset.getSeriesCount());
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1044
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1045 // check if either series is a degenerate case (i.e. less than 2 points)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1046 if (isEitherSeriesDegenerate(x_dataset, b_impliedZeroSubtrahend)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1047 return;
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 // check if series are disjoint (i.e. domain-spans do not overlap)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1051 if (!b_impliedZeroSubtrahend && areSeriesDisjoint(x_dataset)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1052 return;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1053 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1054
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1055 // polygon definitions
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1056 LinkedList l_minuendXs = new LinkedList();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1057 LinkedList l_minuendYs = new LinkedList();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1058 LinkedList l_subtrahendXs = new LinkedList();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1059 LinkedList l_subtrahendYs = new LinkedList();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1060 LinkedList l_polygonXs = new LinkedList();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1061 LinkedList l_polygonYs = new LinkedList();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1062
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1063 // state
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1064 int l_minuendItem = 0;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1065 int l_minuendItemCount = x_dataset.getItemCount(0);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1066 Double l_minuendCurX = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1067 Double l_minuendNextX = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1068 Double l_minuendCurY = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1069 Double l_minuendNextY = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1070 double l_minuendMaxY = Double.NEGATIVE_INFINITY;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1071 double l_minuendMinY = Double.POSITIVE_INFINITY;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1072
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1073 int l_subtrahendItem = 0;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1074 int l_subtrahendItemCount = 0; // actual value set below
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1075 Double l_subtrahendCurX = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1076 Double l_subtrahendNextX = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1077 Double l_subtrahendCurY = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1078 Double l_subtrahendNextY = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1079 double l_subtrahendMaxY = Double.NEGATIVE_INFINITY;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1080 double l_subtrahendMinY = Double.POSITIVE_INFINITY;
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 // 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
1083 if (b_impliedZeroSubtrahend) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1084 l_subtrahendItem = 0;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1085 l_subtrahendItemCount = 2;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1086 l_subtrahendCurX = new Double(x_dataset.getXValue(0, 0));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1087 l_subtrahendNextX = new Double(x_dataset.getXValue(0,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1088 (l_minuendItemCount - 1)));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1089 l_subtrahendCurY = new Double(0.0);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1090 l_subtrahendNextY = new Double(0.0);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1091 l_subtrahendMaxY = 0.0;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1092 l_subtrahendMinY = 0.0;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1093
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1094 l_subtrahendXs.add(l_subtrahendCurX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1095 l_subtrahendYs.add(l_subtrahendCurY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1096 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1097 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1098 l_subtrahendItemCount = x_dataset.getItemCount(1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1099 }
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 boolean b_minuendDone = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1102 boolean b_minuendAdvanced = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1103 boolean b_minuendAtIntersect = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1104 boolean b_minuendFastForward = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1105 boolean b_subtrahendDone = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1106 boolean b_subtrahendAdvanced = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1107 boolean b_subtrahendAtIntersect = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1108 boolean b_subtrahendFastForward = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1109 boolean b_colinear = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1110
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1111 boolean b_positive;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1112
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1113 // coordinate pairs
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1114 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
1115 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
1116 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
1117 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
1118
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1119 // fast-forward through leading tails
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1120 boolean b_fastForwardDone = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1121 while (!b_fastForwardDone) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1122 // get the x and y coordinates
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1123 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
1124 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
1125 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
1126 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
1127
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1128 l_minuendCurX = new Double(l_x1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1129 l_minuendCurY = new Double(l_y1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1130 l_minuendNextX = new Double(l_x2);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1131 l_minuendNextY = new Double(l_y2);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1132
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1133 if (b_impliedZeroSubtrahend) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1134 l_x3 = l_subtrahendCurX.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1135 l_y3 = l_subtrahendCurY.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1136 l_x4 = l_subtrahendNextX.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1137 l_y4 = l_subtrahendNextY.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1138 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1139 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1140 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
1141 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
1142 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
1143 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
1144
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1145 l_subtrahendCurX = new Double(l_x3);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1146 l_subtrahendCurY = new Double(l_y3);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1147 l_subtrahendNextX = new Double(l_x4);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1148 l_subtrahendNextY = new Double(l_y4);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1149 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1150
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1151 if (l_x2 <= l_x3) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1152 // minuend needs to be fast forwarded
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1153 l_minuendItem++;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1154 b_minuendFastForward = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1155 continue;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1156 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1157
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1158 if (l_x4 <= l_x1) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1159 // subtrahend needs to be fast forwarded
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1160 l_subtrahendItem++;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1161 b_subtrahendFastForward = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1162 continue;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1163 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1164
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1165 // 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
1166 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
1167 // project onto subtrahend
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1168 double l_slope = (l_y4 - l_y3) / (l_x4 - l_x3);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1169 l_subtrahendCurX = l_minuendCurX;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1170 l_subtrahendCurY = new Double((l_slope * l_x1)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1171 + (l_y3 - (l_slope * l_x3)));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1172
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1173 l_subtrahendXs.add(l_subtrahendCurX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1174 l_subtrahendYs.add(l_subtrahendCurY);
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
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1177 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
1178 // project onto minuend
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1179 double l_slope = (l_y2 - l_y1) / (l_x2 - l_x1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1180 l_minuendCurX = l_subtrahendCurX;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1181 l_minuendCurY = new Double((l_slope * l_x3)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1182 + (l_y1 - (l_slope * l_x1)));
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 l_minuendXs.add(l_minuendCurX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1185 l_minuendYs.add(l_minuendCurY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1186 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1187
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1188 l_minuendMaxY = l_minuendCurY.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1189 l_minuendMinY = l_minuendCurY.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1190 l_subtrahendMaxY = l_subtrahendCurY.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1191 l_subtrahendMinY = l_subtrahendCurY.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1192
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1193 b_fastForwardDone = true;
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 // start of algorithm
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1197 while (!b_minuendDone && !b_subtrahendDone) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1198 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
1199 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
1200 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
1201 l_minuendCurX = new Double(l_x1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1202 l_minuendCurY = new Double(l_y1);
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 if (!b_minuendAtIntersect) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1205 l_minuendXs.add(l_minuendCurX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1206 l_minuendYs.add(l_minuendCurY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1207 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1208
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1209 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
1210 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
1211
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1212 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
1213 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
1214 l_minuendNextX = new Double(l_x2);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1215 l_minuendNextY = new Double(l_y2);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1216 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1217
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1218 // never updated the subtrahend if it is implied to be zero
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1219 if (!b_impliedZeroSubtrahend && !b_subtrahendDone
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1220 && !b_subtrahendFastForward && b_subtrahendAdvanced) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1221 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
1222 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
1223 l_subtrahendCurX = new Double(l_x3);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1224 l_subtrahendCurY = new Double(l_y3);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1225
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1226 if (!b_subtrahendAtIntersect) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1227 l_subtrahendXs.add(l_subtrahendCurX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1228 l_subtrahendYs.add(l_subtrahendCurY);
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 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
1232 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
1233
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1234 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
1235 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
1236 l_subtrahendNextX = new Double(l_x4);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1237 l_subtrahendNextY = new Double(l_y4);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1238 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1239
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1240 // deassert b_*FastForward (only matters for 1st time through loop)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1241 b_minuendFastForward = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1242 b_subtrahendFastForward = false;
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 Double l_intersectX = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1245 Double l_intersectY = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1246 boolean b_intersect = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1247
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1248 b_minuendAtIntersect = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1249 b_subtrahendAtIntersect = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1250
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1251 // check for intersect
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1252 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
1253 // check if line segments are colinear
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1254 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
1255 b_colinear = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1256 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1257 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1258 // 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
1259 // and subtrahend
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1260 l_intersectX = new Double(l_x2);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1261 l_intersectY = new Double(l_y2);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1262
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1263 b_intersect = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1264 b_minuendAtIntersect = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1265 b_subtrahendAtIntersect = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1266 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1267 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1268 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1269 // compute common denominator
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1270 double l_denominator = ((l_y4 - l_y3) * (l_x2 - l_x1))
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1271 - ((l_x4 - l_x3) * (l_y2 - l_y1));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1272
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1273 // compute common deltas
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1274 double l_deltaY = l_y1 - l_y3;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1275 double l_deltaX = l_x1 - l_x3;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1276
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1277 // compute numerators
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1278 double l_numeratorA = ((l_x4 - l_x3) * l_deltaY)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1279 - ((l_y4 - l_y3) * l_deltaX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1280 double l_numeratorB = ((l_x2 - l_x1) * l_deltaY)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1281 - ((l_y2 - l_y1) * l_deltaX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1282
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1283 // check if line segments are colinear
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1284 if ((0 == l_numeratorA) && (0 == l_numeratorB)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1285 && (0 == l_denominator)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1286 b_colinear = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1287 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1288 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1289 // check if previously colinear
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1290 if (b_colinear) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1291 // clear colinear points and flag
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1292 l_minuendXs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1293 l_minuendYs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1294 l_subtrahendXs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1295 l_subtrahendYs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1296 l_polygonXs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1297 l_polygonYs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1298
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1299 b_colinear = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1300
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1301 // set new starting point for the polygon
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1302 boolean b_useMinuend = ((l_x3 <= l_x1)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1303 && (l_x1 <= l_x4));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1304 l_polygonXs.add(b_useMinuend ? l_minuendCurX
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1305 : l_subtrahendCurX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1306 l_polygonYs.add(b_useMinuend ? l_minuendCurY
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1307 : l_subtrahendCurY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1308 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1309
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1310 // compute slope components
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1311 double l_slopeA = l_numeratorA / l_denominator;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1312 double l_slopeB = l_numeratorB / l_denominator;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1313
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1314 // check if the line segments intersect
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1315 if ((0 < l_slopeA) && (l_slopeA <= 1) && (0 < l_slopeB)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1316 && (l_slopeB <= 1)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1317 // compute the point of intersection
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1318 double l_xi = l_x1 + (l_slopeA * (l_x2 - l_x1));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1319 double l_yi = l_y1 + (l_slopeA * (l_y2 - l_y1));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1320
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1321 l_intersectX = new Double(l_xi);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1322 l_intersectY = new Double(l_yi);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1323 b_intersect = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1324 b_minuendAtIntersect = ((l_xi == l_x2)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1325 && (l_yi == l_y2));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1326 b_subtrahendAtIntersect = ((l_xi == l_x4)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1327 && (l_yi == l_y4));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1328
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1329 // advance minuend and subtrahend to intesect
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1330 l_minuendCurX = l_intersectX;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1331 l_minuendCurY = l_intersectY;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1332 l_subtrahendCurX = l_intersectX;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1333 l_subtrahendCurY = l_intersectY;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1334 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1335 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1336 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1337
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1338 if (b_intersect) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1339 // create the polygon
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1340 // 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
1341 l_polygonXs.addAll(l_minuendXs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1342 l_polygonYs.addAll(l_minuendYs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1343
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1344 // add intersection point to the polygon
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1345 l_polygonXs.add(l_intersectX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1346 l_polygonYs.add(l_intersectY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1347
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1348 // 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
1349 Collections.reverse(l_subtrahendXs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1350 Collections.reverse(l_subtrahendYs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1351 l_polygonXs.addAll(l_subtrahendXs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1352 l_polygonYs.addAll(l_subtrahendYs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1353
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1354 // create an actual polygon
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1355 b_positive = (l_subtrahendMaxY <= l_minuendMaxY)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1356 && (l_subtrahendMinY <= l_minuendMinY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1357 createPolygon(x_graphics, x_dataArea, x_plot, x_domainAxis,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1358 x_rangeAxis, b_positive, l_polygonXs, l_polygonYs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1359
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1360 // clear the point vectors
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1361 l_minuendXs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1362 l_minuendYs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1363 l_subtrahendXs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1364 l_subtrahendYs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1365 l_polygonXs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1366 l_polygonYs.clear();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1367
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1368 // set the maxY and minY values to intersect y-value
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1369 double l_y = l_intersectY.doubleValue();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1370 l_minuendMaxY = l_y;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1371 l_subtrahendMaxY = l_y;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1372 l_minuendMinY = l_y;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1373 l_subtrahendMinY = l_y;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1374
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1375 // add interection point to new polygon
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1376 l_polygonXs.add(l_intersectX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1377 l_polygonYs.add(l_intersectY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1378 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1379
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1380 // advance the minuend if needed
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1381 if (l_x2 <= l_x4) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1382 l_minuendItem++;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1383 b_minuendAdvanced = true;
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 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1386 b_minuendAdvanced = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1387 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1388
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1389 // advance the subtrahend if needed
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1390 if (l_x4 <= l_x2) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1391 l_subtrahendItem++;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1392 b_subtrahendAdvanced = true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1393 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1394 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1395 b_subtrahendAdvanced = false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1396 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1397
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1398 b_minuendDone = (l_minuendItem == (l_minuendItemCount - 1));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1399 b_subtrahendDone = (l_subtrahendItem == (l_subtrahendItemCount
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1400 - 1));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1401 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1402
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1403 // 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
1404 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
1405 // project onto subtrahend
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1406 double l_slope = (l_y4 - l_y3) / (l_x4 - l_x3);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1407 l_subtrahendNextX = l_minuendNextX;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1408 l_subtrahendNextY = new Double((l_slope * l_x2)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1409 + (l_y3 - (l_slope * l_x3)));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1410 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1411
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1412 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
1413 // project onto minuend
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1414 double l_slope = (l_y2 - l_y1) / (l_x2 - l_x1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1415 l_minuendNextX = l_subtrahendNextX;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1416 l_minuendNextY = new Double((l_slope * l_x4)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1417 + (l_y1 - (l_slope * l_x1)));
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
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1420 // 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
1421 // positivity
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1422 l_minuendMaxY = Math.max(l_minuendMaxY,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1423 l_minuendNextY.doubleValue());
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1424 l_subtrahendMaxY = Math.max(l_subtrahendMaxY,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1425 l_subtrahendNextY.doubleValue());
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1426 l_minuendMinY = Math.min(l_minuendMinY,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1427 l_minuendNextY.doubleValue());
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1428 l_subtrahendMinY = Math.min(l_subtrahendMinY,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1429 l_subtrahendNextY.doubleValue());
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 // 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
1432 l_minuendXs.add(l_minuendNextX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1433 l_minuendYs.add(l_minuendNextY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1434 l_subtrahendXs.add(l_subtrahendNextX);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1435 l_subtrahendYs.add(l_subtrahendNextY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1436
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1437 // create the polygon
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1438 // 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
1439 l_polygonXs.addAll(l_minuendXs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1440 l_polygonYs.addAll(l_minuendYs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1441
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1442 // 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
1443 Collections.reverse(l_subtrahendXs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1444 Collections.reverse(l_subtrahendYs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1445 l_polygonXs.addAll(l_subtrahendXs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1446 l_polygonYs.addAll(l_subtrahendYs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1447
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1448 // create an actual polygon
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1449 b_positive = (l_subtrahendMaxY <= l_minuendMaxY)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1450 && (l_subtrahendMinY <= l_minuendMinY);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1451 createPolygon(x_graphics, x_dataArea, x_plot, x_domainAxis,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1452 x_rangeAxis, b_positive, l_polygonXs, l_polygonYs);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1453 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1454
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1455 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1456 * Draws the visual representation of a single data item, second pass. In
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1457 * 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
1458 * individual points in the two series.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1459 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1460 * @param x_graphics the graphics device.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1461 * @param x_dataArea the area within which the data is being drawn.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1462 * @param x_info collects information about the drawing.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1463 * @param x_plot the plot (can be used to obtain standard color
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1464 * information etc).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1465 * @param x_domainAxis the domain (horizontal) axis.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1466 * @param x_rangeAxis the range (vertical) axis.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1467 * @param x_dataset the dataset.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1468 * @param x_series the series index (zero-based).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1469 * @param x_item the item index (zero-based).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1470 * @param x_crosshairState crosshair information for the plot
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1471 * (<code>null</code> permitted).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1472 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1473 protected void drawItemPass1(Graphics2D x_graphics,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1474 Rectangle2D x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1475 PlotRenderingInfo x_info,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1476 XYPlot x_plot,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1477 ValueAxis x_domainAxis,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1478 ValueAxis x_rangeAxis,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1479 XYDataset x_dataset,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1480 int x_series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1481 int x_item,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1482 CrosshairState x_crosshairState) {
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 Shape l_entityArea = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1485 EntityCollection l_entities = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1486 if (null != x_info) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1487 l_entities = x_info.getOwner().getEntityCollection();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1488 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1489
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1490 Paint l_seriesPaint = getItemPaint(x_series, x_item);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1491 Stroke l_seriesStroke = getItemStroke(x_series, x_item);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1492 x_graphics.setPaint(l_seriesPaint);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1493 x_graphics.setStroke(l_seriesStroke);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1494
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1495 PlotOrientation l_orientation = x_plot.getOrientation();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1496 RectangleEdge l_domainAxisLocation = x_plot.getDomainAxisEdge();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1497 RectangleEdge l_rangeAxisLocation = x_plot.getRangeAxisEdge();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1498
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1499 double l_x0 = x_dataset.getXValue(x_series, x_item);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1500 double l_y0 = x_dataset.getYValue(x_series, x_item);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1501 double l_x1 = x_domainAxis.valueToJava2D(l_x0, x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1502 l_domainAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1503 double l_y1 = x_rangeAxis.valueToJava2D(l_y0, x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1504 l_rangeAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1505
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1506 // 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
1507 if (getShapesVisible()) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1508 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
1509 if (l_orientation == PlotOrientation.HORIZONTAL) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1510 l_shape = ShapeUtilities.createTranslatedShape(l_shape,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1511 l_y1, l_x1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1512 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1513 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1514 l_shape = ShapeUtilities.createTranslatedShape(l_shape,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1515 l_x1, l_y1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1516 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1517 if (l_shape.intersects(x_dataArea)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1518 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
1519 x_graphics.fill(l_shape);
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1520 /* TODO We could draw the shapes of single items here.
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1521 if (drawOutline) {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1522 x_graphics.setPaint(this.outlinePaint);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1523 x_graphics.setStroke(this.outlineStroke);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1524 x_graphics.draw(l_shape);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1525 }
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1526 */
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1527 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1528 l_entityArea = l_shape;
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1529 } // if (getShapesVisible())
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1530
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1531 // add an entity for the item...
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1532 if (null != l_entities) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1533 if (null == l_entityArea) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1534 l_entityArea = new Rectangle2D.Double((l_x1 - 2), (l_y1 - 2),
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1535 4, 4);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1536 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1537 String l_tip = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1538 XYToolTipGenerator l_tipGenerator = getToolTipGenerator(x_series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1539 x_item);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1540 if (null != l_tipGenerator) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1541 l_tip = l_tipGenerator.generateToolTip(x_dataset, x_series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1542 x_item);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1543 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1544 String l_url = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1545 XYURLGenerator l_urlGenerator = getURLGenerator();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1546 if (null != l_urlGenerator) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1547 l_url = l_urlGenerator.generateURL(x_dataset, x_series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1548 x_item);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1549 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1550 XYItemEntity l_entity = new XYItemEntity(l_entityArea, x_dataset,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1551 x_series, x_item, l_tip, l_url);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1552 l_entities.add(l_entity);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1553 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1554
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1555 // draw the item label if there is one...
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1556 if (isItemLabelVisible(x_series, x_item)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1557 drawItemLabel(x_graphics, l_orientation, x_dataset, x_series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1558 x_item, l_x1, l_y1, (l_y1 < 0.0));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1559 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1560
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1561 int l_domainAxisIndex = x_plot.getDomainAxisIndex(x_domainAxis);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1562 int l_rangeAxisIndex = x_plot.getRangeAxisIndex(x_rangeAxis);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1563 updateCrosshairValues(x_crosshairState, l_x0, l_y0, l_domainAxisIndex,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1564 l_rangeAxisIndex, l_x1, l_y1, l_orientation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1565
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1566 if (0 == x_item) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1567 return;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1568 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1569
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1570 double l_x2 = x_domainAxis.valueToJava2D(x_dataset.getXValue(x_series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1571 (x_item - 1)), x_dataArea, l_domainAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1572 double l_y2 = x_rangeAxis.valueToJava2D(x_dataset.getYValue(x_series,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1573 (x_item - 1)), x_dataArea, l_rangeAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1574
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1575 Line2D l_line = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1576 if (PlotOrientation.HORIZONTAL == l_orientation) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1577 l_line = new Line2D.Double(l_y1, l_x1, l_y2, l_x2);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1578 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1579 else if (PlotOrientation.VERTICAL == l_orientation) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1580 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
1581 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1582
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1583 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
1584 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
1585 x_graphics.setStroke(getItemStroke(x_series, x_item));
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1586 if (drawOriginalSeries) {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1587 x_graphics.setPaint(this.outlinePaint);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1588 x_graphics.setStroke(this.outlineStroke);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1589 x_graphics.draw(l_line);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1590 }
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1591 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1592 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1593
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1594 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1595 * Determines if a dataset is degenerate. A degenerate dataset is a
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1596 * 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
1597 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1598 * @param x_dataset the dataset.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1599 * @param x_impliedZeroSubtrahend if false, do not check the subtrahend
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1600 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1601 * @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
1602 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1603 private boolean isEitherSeriesDegenerate(XYDataset x_dataset,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1604 boolean x_impliedZeroSubtrahend) {
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 (x_impliedZeroSubtrahend) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1607 return (x_dataset.getItemCount(0) < 2);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1608 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1609
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1610 return ((x_dataset.getItemCount(0) < 2)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1611 || (x_dataset.getItemCount(1) < 2));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1612 }
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 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1615 * 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
1616 * 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
1617 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1618 * @param x_dataset the dataset.
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 * @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
1621 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1622 private boolean areSeriesDisjoint(XYDataset x_dataset) {
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 int l_minuendItemCount = x_dataset.getItemCount(0);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1625 double l_minuendFirst = x_dataset.getXValue(0, 0);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1626 double l_minuendLast = x_dataset.getXValue(0, l_minuendItemCount - 1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1627
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1628 int l_subtrahendItemCount = x_dataset.getItemCount(1);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1629 double l_subtrahendFirst = x_dataset.getXValue(1, 0);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1630 double l_subtrahendLast = x_dataset.getXValue(1,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1631 l_subtrahendItemCount - 1);
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 return ((l_minuendLast < l_subtrahendFirst)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1634 || (l_subtrahendLast < l_minuendFirst));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1635 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1636
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
1637
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
1638 public void updateCentroid(Object [] xValues, Object [] yValues) {
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
1639 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
1640
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
1641 for (int i = 0, N = xValues.length; i < N; ++i) {
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
1642 x += ((Double)xValues[i]).doubleValue();
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
1643 y += ((Double)yValues[i]).doubleValue();
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
1644 }
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
1645
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
1646 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
1647 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
1648
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
1649 centroidNPoints++;
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
1650 double factorNew = 1d / centroidNPoints;
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
1651 double factorOld = 1d - factorNew;
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
1652
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
1653 centroid = new Point2D.Double((factorNew * x + factorOld * centroid.x),
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
1654 (factorNew * y + factorOld * centroid.y));
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
1655 }
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
1656
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
1657
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1658 public static double calculateArea(Object [] xValues, Object [] yValues) {
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1659 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
1660
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1661 for (int i = 0, N = xValues.length; i < N; ++i) {
4704
115afdaf3e85 Changed naming of variables (i & j -> i & k) for readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3974
diff changeset
1662 int k = (i + 1) % N;
2108
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1663 double xi = ((Double)xValues[i]).doubleValue();
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1664 double yi = ((Double)yValues[i]).doubleValue();
4704
115afdaf3e85 Changed naming of variables (i & j -> i & k) for readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3974
diff changeset
1665 double xk = ((Double)xValues[k]).doubleValue();
115afdaf3e85 Changed naming of variables (i & j -> i & k) for readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3974
diff changeset
1666 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
1667
4704
115afdaf3e85 Changed naming of variables (i & j -> i & k) for readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3974
diff changeset
1668 area += xi*yk;
115afdaf3e85 Changed naming of variables (i & j -> i & k) for readability.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 3974
diff changeset
1669 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
1670 // 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
1671 }
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1672
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1673 return 0.5d*area;
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1674 }
b5cc53a84b66 StableXYDifferenceRenderer: Added code to calculate the area of the generated polygons.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2107
diff changeset
1675
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1676 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1677 * 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
1678 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1679 * @param x_graphics the graphics device.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1680 * @param x_dataArea the area within which the data is being drawn.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1681 * @param x_plot the plot (can be used to obtain standard color
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1682 * information etc).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1683 * @param x_domainAxis the domain (horizontal) axis.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1684 * @param x_rangeAxis the range (vertical) axis.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1685 * @param x_positive indicates if the polygon is positive (true) or
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1686 * negative (false).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1687 * @param x_xValues a linked list of the x values (expects values to be
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1688 * of type Double).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1689 * @param x_yValues a linked list of the y values (expects values to be
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1690 * of type Double).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1691 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1692 private void createPolygon (Graphics2D x_graphics,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1693 Rectangle2D x_dataArea,
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1694 XYPlot x_plot,
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1695 ValueAxis x_domainAxis,
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1696 ValueAxis x_rangeAxis,
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1697 boolean x_positive,
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1698 LinkedList x_xValues,
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1699 LinkedList x_yValues) {
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1700
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1701 PlotOrientation l_orientation = x_plot.getOrientation();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1702 RectangleEdge l_domainAxisLocation = x_plot.getDomainAxisEdge();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1703 RectangleEdge l_rangeAxisLocation = x_plot.getRangeAxisEdge();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1704
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1705 Object[] l_xValues = x_xValues.toArray();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1706 Object[] l_yValues = x_yValues.toArray();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1707
8530
4dd6d89ce95e (issue1788) Do not divide area by two.
Andre Heinecke <andre.heinecke@intevation.de>
parents: 7910
diff changeset
1708 double area = calculateArea(l_xValues, l_yValues);
2666
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
1709 if (x_positive) positiveArea += area;
6da7e064ae90 Allow basic and styled area labels, yet on static position within plot.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2108
diff changeset
1710 else 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
1711 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
1712
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1713 GeneralPath l_path = new GeneralPath();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1714
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1715 if (PlotOrientation.VERTICAL == l_orientation) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1716 double l_x = x_domainAxis.valueToJava2D((
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1717 (Double) l_xValues[0]).doubleValue(), x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1718 l_domainAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1719 if (this.roundXCoordinates) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1720 l_x = Math.rint(l_x);
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 double l_y = x_rangeAxis.valueToJava2D((
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1724 (Double) l_yValues[0]).doubleValue(), x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1725 l_rangeAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1726
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1727 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
1728 for (int i = 1; i < l_xValues.length; i++) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1729 l_x = x_domainAxis.valueToJava2D((
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1730 (Double) l_xValues[i]).doubleValue(), x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1731 l_domainAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1732 if (this.roundXCoordinates) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1733 l_x = Math.rint(l_x);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1734 }
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 l_y = x_rangeAxis.valueToJava2D((
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1737 (Double) l_yValues[i]).doubleValue(), x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1738 l_rangeAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1739 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
1740 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1741 l_path.closePath();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1742 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1743 else {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1744 double l_x = x_domainAxis.valueToJava2D((
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1745 (Double) l_xValues[0]).doubleValue(), x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1746 l_domainAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1747 if (this.roundXCoordinates) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1748 l_x = Math.rint(l_x);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1749 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1750
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1751 double l_y = x_rangeAxis.valueToJava2D((
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1752 (Double) l_yValues[0]).doubleValue(), x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1753 l_rangeAxisLocation);
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 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
1756 for (int i = 1; i < l_xValues.length; i++) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1757 l_x = x_domainAxis.valueToJava2D((
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1758 (Double) l_xValues[i]).doubleValue(), x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1759 l_domainAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1760 if (this.roundXCoordinates) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1761 l_x = Math.rint(l_x);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1762 }
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 l_y = x_rangeAxis.valueToJava2D((
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1765 (Double) l_yValues[i]).doubleValue(), x_dataArea,
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1766 l_rangeAxisLocation);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1767 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
1768 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1769 l_path.closePath();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1770 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1771
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1772 if (l_path.intersects(x_dataArea)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1773 x_graphics.setPaint(x_positive ? getPositivePaint()
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1774 : getNegativePaint());
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1775 x_graphics.fill(l_path);
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1776 if (drawOutline) {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1777 x_graphics.setStroke(this.outlineStroke);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1778 x_graphics.setPaint(this.outlinePaint);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1779 x_graphics.draw(l_path);
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1780 }
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1781 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1782 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1783
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1784 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1785 * Returns a default legend item for the specified series. Subclasses
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1786 * 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
1787 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1788 * @param datasetIndex the dataset index (zero-based).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1789 * @param series the series index (zero-based).
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 * @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
1792 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1793 public LegendItem getLegendItem(int datasetIndex, int series) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1794 LegendItem result = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1795 XYPlot p = getPlot();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1796 if (p != null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1797 XYDataset dataset = p.getDataset(datasetIndex);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1798 if (dataset != null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1799 if (getItemVisible(series, 0)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1800 String label = getLegendItemLabelGenerator().generateLabel(
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1801 dataset, series);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1802 String description = label;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1803 String toolTipText = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1804 if (getLegendItemToolTipGenerator() != null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1805 toolTipText
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1806 = getLegendItemToolTipGenerator().generateLabel(
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1807 dataset, series);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1808 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1809 String urlText = null;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1810 if (getLegendItemURLGenerator() != null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1811 urlText = getLegendItemURLGenerator().generateLabel(
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1812 dataset, series);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1813 }
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1814 // Individualized Paints:
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1815 //Paint paint = lookupSeriesPaint(series);
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1816
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1817 // "Area-Style"- Paint.
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1818 Paint paint = getPositivePaint();
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1819 Stroke stroke = lookupSeriesStroke(series);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1820 Shape line = getLegendLine();
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1821 // Not-filled Shape:
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1822 //result = new LegendItem(label, description,
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1823 // toolTipText, urlText, line, stroke, paint);
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1824
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1825 if (drawOutline) {
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1826 // TODO Include outline style in legenditem (there is a constructor for that)
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1827 }
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1828
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1829 // Filled Shape ("Area-Style").
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1830 result = new LegendItem(label, description,
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1831 toolTipText, urlText, line, paint);
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1832 result.setLabelFont(lookupLegendTextFont(series));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1833 Paint labelPaint = lookupLegendTextPaint(series);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1834 if (labelPaint != null) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1835 result.setLabelPaint(labelPaint);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1836 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1837 result.setDataset(dataset);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1838 result.setDatasetIndex(datasetIndex);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1839 result.setSeriesKey(dataset.getSeriesKey(series));
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1840 result.setSeriesIndex(series);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1841 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1842 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1843
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1844 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1845
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1846 return result;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1847 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1848
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1849 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1850 * 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
1851 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1852 * @param obj the object (<code>null</code> permitted).
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1853 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1854 * @return A boolean.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1855 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1856 public boolean equals(Object obj) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1857 if (obj == this) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1858 return true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1859 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1860 if (!(obj instanceof StableXYDifferenceRenderer)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1861 return false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1862 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1863 if (!super.equals(obj)) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1864 return false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1865 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1866 StableXYDifferenceRenderer that = (StableXYDifferenceRenderer) obj;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1867 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
1868 return false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1869 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1870 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
1871 return false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1872 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1873 if (this.shapesVisible != that.shapesVisible) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1874 return false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1875 }
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1876 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
1877 return false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1878 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1879 if (this.roundXCoordinates != that.roundXCoordinates) {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1880 return false;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1881 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1882 return true;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1883 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1884
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1885 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1886 * Returns a clone of the renderer.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1887 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1888 * @return A clone.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1889 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1890 * @throws CloneNotSupportedException if the renderer cannot be cloned.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1891 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1892 public Object clone() throws CloneNotSupportedException {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1893 StableXYDifferenceRenderer clone = (StableXYDifferenceRenderer) super.clone();
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1894 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
1895 return clone;
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1896 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1897
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1898 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1899 * Provides serialization support.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1900 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1901 * @param stream the output stream.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1902 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1903 * @throws IOException if there is an I/O error.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1904 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1905 private void writeObject(ObjectOutputStream stream) throws IOException {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1906 stream.defaultWriteObject();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1907 SerialUtilities.writePaint(this.positivePaint, stream);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1908 SerialUtilities.writePaint(this.negativePaint, stream);
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1909 SerialUtilities.writeShape(this.legendShape, stream);
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1910 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1911
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1912 /**
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1913 * Provides serialization support.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1914 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1915 * @param stream the input stream.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1916 *
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1917 * @throws IOException if there is an I/O error.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1918 * @throws ClassNotFoundException if there is a classpath problem.
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1919 */
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1920 private void readObject(ObjectInputStream stream)
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1921 throws IOException, ClassNotFoundException {
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1922 stream.defaultReadObject();
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1923 this.positivePaint = SerialUtilities.readPaint(stream);
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1924 this.negativePaint = SerialUtilities.readPaint(stream);
2021
1ae17b100973 Let StableDifferenceRenderer create a rectangular legenditem.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1885
diff changeset
1925 this.legendShape = SerialUtilities.readShape(stream);
1823
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1926 }
7a11b37d8594 Added a copy of JFreeChart's XYDifferenceRenderer
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents:
diff changeset
1927 }
2071
fd95bfbb2ec2 Allow styling of outline of areas.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 2021
diff changeset
1928 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org