]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/data/Track.java
Version 18, July 2015
[GpsPrune.git] / tim / prune / data / Track.java
index c56f9f5bcc08cba3c65096fca6299c3aafb1f103..4ae47ff03e78bc794bcb89cfd289e30006bfa5e9 100644 (file)
@@ -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;
                        }
                }
 
@@ -552,8 +561,8 @@ public class Track
                        meanAltitude = new Altitude((int) (totalAltitude / numAltitudes), altUnit);
                }
 
-               DataPoint insertedPoint = new DataPoint(new Latitude(meanLatitude, Coordinate.FORMAT_NONE),
-                       new Longitude(meanLongitude, Coordinate.FORMAT_NONE), meanAltitude);
+               DataPoint insertedPoint = new DataPoint(new Latitude(meanLatitude, Coordinate.FORMAT_DECIMAL_FORCE_POINT),
+                       new Longitude(meanLongitude, Coordinate.FORMAT_DECIMAL_FORCE_POINT), meanAltitude);
                // Make into singleton
                insertedPoint.setSegmentStart(true);
                DataPoint nextPoint = getNextTrackPoint(inEndIndex+1);
@@ -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));
        }