diff artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java @ 9347:08f46ccd37ba

salix.regional refactoring
author gernotbelger
date Tue, 31 Jul 2018 16:04:01 +0200
parents 3ac9cb0029b2
children 3f0803009a8f
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java	Tue Jul 31 15:48:35 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/StyledSeriesBuilder.java	Tue Jul 31 16:04:01 2018 +0200
@@ -63,17 +63,26 @@
         }
         double [] xPoints = points[0];
         double [] yPoints = points[1];
+        
+        Integer lastNonNaNIndex = null;
+        
         for (int i = 0; i < xPoints.length; i++) {
             if (skipNANs &&
                 (Double.isNaN(xPoints[i]) || Double.isNaN(yPoints[i]))) {
                 continue;
             }
+
             // Create gap if distance between points > distance.
-            if (i > 0 && Math.abs(xPoints[i-1] - xPoints[i]) > distance &&
-                !Double.isNaN(yPoints[i-1]) && !Double.isNaN(yPoints[i])) {
-                series.add((xPoints[i-1] + xPoints[i])/2, Double.NaN, false);
+            if (i > 0 && lastNonNaNIndex != null) 
+            {
+                double distanceToLastNonNan = Math.abs(xPoints[lastNonNaNIndex] - xPoints[i] );
+                if (distanceToLastNonNan > distance && !Double.isNaN(yPoints[lastNonNaNIndex]) && !Double.isNaN(yPoints[i]))
+                    series.add((xPoints[i-1] + xPoints[i])/2, Double.NaN, false);
             }
             series.add(xPoints[i], yPoints[i], false);
+            
+            if (skipNANs && !Double.isNaN(xPoints[i]) && !Double.isNaN(yPoints[i])) 
+                    lastNonNaNIndex = i;
         }
     }
 

http://dive4elements.wald.intevation.org