[PATCH 2 of 3] StyledSeriesBuilder: Added new method to add points with a scane factor
Wald Commits
scm-commit at wald.intevation.org
Mon Aug 19 12:33:16 CEST 2013
# HG changeset patch
# User Felix Wolfsteller <felix.wolfsteller at intevation.de>
# Date 1376908947 -7200
# Node ID 590d420ed382ffcb02988dd39fc92d3a6341c84b
# Parent fb9babfa2aa3e21f1ba65a571f5a20bd1a91d42b
StyledSeriesBuilder: Added new method to add points with a scane factor.
diff -r fb9babfa2aa3 -r 590d420ed382 artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java
--- a/artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java Mon Aug 19 12:22:31 2013 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java Mon Aug 19 12:42:27 2013 +0200
@@ -40,6 +40,53 @@
/**
+ * Add points to series, create gaps if certain distance between
+ * points is met and scale the Y value.
+ *
+ * @param series Series to add points to.
+ * @param points Points to add to series, points[0] to 1st dim, points[1]
+ * to 2nd dim.
+ * @param skipNANs if true, skip NAN values in points parameter. Otherwise,
+ * the NaNs lead to gaps in graph.
+ * @param distance if two consecutive entries in points[0] are more
+ * than distance apart, create a NaN value to skip in display.
+ * Still, create a line segment.
+ * @param factor Factor by which to scale the y value (points[1]).
+ */
+ public static void addPointsFactorY(XYSeries series,
+ double[][] points,
+ boolean skipNANs,
+ double distance,
+ double factor
+ ) {
+ if (points == null || points.length <= 1) {
+ return;
+ }
+ double [] xPoints = points[0];
+ double [] yPoints = points[1];
+ for (int i = 0; i < xPoints.length; i++) {
+ if (skipNANs &&
+ (Double.isNaN(xPoints[i]) || Double.isNaN(yPoints[i]))) {
+ logger.warn ("Skipping NaN in StyledSeriesBuilder.");
+ continue;
+ }
+ // Create gap if distance >= distance.
+ if (i != 0 && Math.abs(xPoints[i-1] - xPoints[i]) >= distance) {
+ // Create at least a small segment for last point.
+ if (!Double.isNaN(yPoints[i-1])) {
+ series.add(xPoints[i-1]+0.99d*(distance)/2.d, yPoints[i-1]*factor, false);
+ }
+
+ if (!Double.isNaN(yPoints[i-1]) && !Double.isNaN(yPoints[i])) {
+ series.add((xPoints[i-1]+xPoints[i])/2.d, Double.NaN, false);
+ }
+ }
+ series.add(xPoints[i], yPoints[i]*factor, false);
+ }
+ }
+
+
+ /**
* Add points to series, create gaps if certain distance between points is met.
*
* @param series Series to add points to.
More information about the Dive4elements-commits
mailing list