# HG changeset patch # User Sascha L. Teichmann # Date 1401100819 -7200 # Node ID 64930ceebac05ac312aaa95d8e22df079e542cd9 # Parent af34cfbd7abcdad21e184f9312a28c383b1b7c3f Fix for flys/issue1670: Introduce 100m gaps in single bed width. diff -r af34cfbd7abc -r 64930ceebac0 artifacts/src/main/java/org/dive4elements/river/exports/process/BedWidthProcessor.java --- a/artifacts/src/main/java/org/dive4elements/river/exports/process/BedWidthProcessor.java Wed May 21 17:26:12 2014 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/exports/process/BedWidthProcessor.java Mon May 26 12:40:19 2014 +0200 @@ -18,6 +18,7 @@ import org.dive4elements.river.artifacts.model.FacetTypes; import org.dive4elements.river.exports.DiagramGenerator; import org.dive4elements.river.exports.StyledSeriesBuilder; +import org.dive4elements.river.jfree.GapInserter; import org.dive4elements.river.jfree.StyledXYSeries; import org.dive4elements.river.themes.ThemeDocument; @@ -37,6 +38,8 @@ public static final String I18N_AXIS_LABEL = "chart.beddifference.yaxis.label.morph"; + public static final double GAP_WIDTH = 100.0; + @Override public void doOut( DiagramGenerator generator, @@ -73,8 +76,10 @@ double[] width = bData.getSoundingWidths(); double[] stations = bData.getStations().toNativeArray(); + GapInserter gi = new GapInserter(series, GAP_WIDTH); + for (int i = 0; i < width.length; i++) { - series.add(stations[i], width[i], false); + gi.add(stations[i], width[i]); } } else if (data instanceof List) { List bData = (List)data; diff -r af34cfbd7abc -r 64930ceebac0 artifacts/src/main/java/org/dive4elements/river/jfree/GapInserter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/jfree/GapInserter.java Mon May 26 12:40:19 2014 +0200 @@ -0,0 +1,27 @@ +package org.dive4elements.river.jfree; + +import org.jfree.data.xy.XYSeries; + +public class GapInserter { + + private XYSeries series; + private double gap; + private double lastX; + + public GapInserter() { + } + + public GapInserter(XYSeries series, double gap) { + lastX = Double.NaN; + this.series = series; + this.gap = Math.abs(gap); + } + + public void add(double x, double y) { + if (!Double.isNaN(lastX) && !Double.isNaN(x) && Math.abs(x - lastX) > gap) { + series.add((x + lastX)/2.0, Double.NaN, false); + } + series.add(x, y, false); + lastX = x; + } +}