X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fdata%2FTrack.java;h=f45854a0e3d47a1fd5fc0ee6924732b3294decc0;hp=31c9b4edeeaf3cbb04af8468e8f85b8b33932b8d;hb=92dad5df664287acb51728e9ea599f150765d34a;hpb=1ea5817da5381ceebee75ea7294ea78dffff5671 diff --git a/tim/prune/data/Track.java b/tim/prune/data/Track.java index 31c9b4e..f45854a 100644 --- a/tim/prune/data/Track.java +++ b/tim/prune/data/Track.java @@ -178,21 +178,30 @@ public class Track /** * Delete the points marked for deletion + * @param inSplitSegments true to split segments at deleted points * @return number of points deleted */ - public int deleteMarkedPoints() + public int deleteMarkedPoints(boolean inSplitSegments) { int numCopied = 0; - // Copy selected points + // Copy selected points into a new point array DataPoint[] newPointArray = new DataPoint[_numPoints]; + boolean prevPointDeleted = false; for (int i=0; i<_numPoints; i++) { DataPoint point = _dataPoints[i]; // Don't delete photo points if (point.hasMedia() || !point.getDeleteFlag()) { + if (prevPointDeleted && inSplitSegments) { + point.setSegmentStart(true); + } newPointArray[numCopied] = point; numCopied++; + prevPointDeleted = false; + } + else { + prevPointDeleted = true; } } @@ -311,7 +320,7 @@ public class Track * @param inUndo true for undo operation * @return true on success */ - public boolean addTimeOffset(int inStart, int inEnd, long inOffset, boolean inUndo) + public boolean addTimeOffsetSeconds(int inStart, int inEnd, long inOffset, boolean inUndo) { // sanity check if (inStart < 0 || inEnd < 0 || inStart >= inEnd || inEnd >= _numPoints) { @@ -326,7 +335,7 @@ public class Track { // This point has a timestamp so add the offset to it foundTimestamp = true; - p.addTimeOffset(inOffset); + p.addTimeOffsetSeconds(inOffset); p.setModified(inUndo); } } @@ -901,7 +910,7 @@ public class Track */ private static final double getMinXDist(double inX) { - // TODO: Can use some kind of floor here? + // TODO: Should be abs(mod(inX-0.5,1)-0.5) - means two adds, one mod, one abs instead of two adds, 3 abss and two compares return Math.min(Math.min(Math.abs(inX), Math.abs(inX-1.0)), Math.abs(inX+1.0)); }