]> git.street.me.uk Git - andy/viking.git/commitdiff
Add function to merge segments of a track.
authorRob Norris <rw_norris@hotmail.com>
Sun, 26 Aug 2012 11:10:42 +0000 (12:10 +0100)
committerRob Norris <rw_norris@hotmail.com>
Sun, 26 Aug 2012 11:17:25 +0000 (12:17 +0100)
src/viktrack.c
src/viktrack.h

index 0071a8a42bd2e60dc1dee7bb08d48830f7386230..ae3110c58fe52efd17eec6aded1e15041aaa1699 100644 (file)
@@ -342,6 +342,30 @@ VikTrack **vik_track_split_into_segments(VikTrack *t, guint *ret_len)
   return rv;
 }
 
+/*
+ * Simply remove any subsequent segment markers in a track to form one continuous track
+ * Return the number of segments merged
+ */
+guint vik_track_merge_segments(VikTrack *tr)
+{
+  guint num = 0;
+  GList *iter = tr->trackpoints;
+  if ( !iter )
+    return num;
+
+  // Always skip the first point as this should be the first segment
+  iter = iter->next;
+
+  while ( (iter = iter->next) )
+  {
+    if ( VIK_TRACKPOINT(iter->data)->newsegment ) {
+      VIK_TRACKPOINT(iter->data)->newsegment = FALSE;
+      num++;
+    }
+  }
+  return num;
+}
+
 void vik_track_reverse ( VikTrack *tr )
 {
   GList *iter;
index db9894199cdb68b63c85981a618bdb7d4c8dbf4c..cba01f6e482c4f3cd77a8097a342614ca45cab66 100644 (file)
@@ -78,6 +78,7 @@ gdouble vik_track_get_length_including_gaps(const VikTrack *tr);
 gulong vik_track_get_tp_count(const VikTrack *tr);
 guint vik_track_get_segment_count(const VikTrack *tr);
 VikTrack **vik_track_split_into_segments(VikTrack *tr, guint *ret_len);
+guint vik_track_merge_segments(VikTrack *tr);
 void vik_track_reverse(VikTrack *tr);
 
 gulong vik_track_get_dup_point_count ( const VikTrack *vt );