From f41c73bd69dba80d9434eee048bc371edc7a6ce9 Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Tue, 2 Dec 2014 20:49:36 +0000 Subject: [PATCH] Improve potential statusbar message of a selected trackpoint. Actually supply the previous trackpoint so some interpolated values (such as speed) can be calculated. --- src/viktrack.c | 21 +++++++++++++++++++++ src/viktrack.h | 1 + src/viktrwlayer.c | 4 ++++ 3 files changed, 26 insertions(+) diff --git a/src/viktrack.c b/src/viktrack.c index 2c25f061..cd621fe1 100644 --- a/src/viktrack.c +++ b/src/viktrack.c @@ -1412,6 +1412,27 @@ VikTrackpoint *vik_track_get_tp_last ( const VikTrack *tr ) return (VikTrackpoint*)g_list_last(tr->trackpoints)->data; } +VikTrackpoint *vik_track_get_tp_prev ( const VikTrack *tr, VikTrackpoint *tp ) +{ + if ( !tr->trackpoints ) + return NULL; + + GList *iter = tr->trackpoints; + VikTrackpoint *tp_prev = NULL; + + while (iter) { + if (iter->prev) { + if ( VIK_TRACKPOINT(iter->data) == tp ) { + tp_prev = VIK_TRACKPOINT(iter->prev->data); + break; + } + } + iter = iter->next; + } + + return tp_prev; +} + gboolean vik_track_get_minmax_alt ( const VikTrack *tr, gdouble *min_alt, gdouble *max_alt ) { *min_alt = 25000; diff --git a/src/viktrack.h b/src/viktrack.h index ef9d1101..d2de2a9b 100644 --- a/src/viktrack.h +++ b/src/viktrack.h @@ -137,6 +137,7 @@ VikTrackpoint *vik_track_get_tp_by_max_alt ( const VikTrack *tr ); VikTrackpoint *vik_track_get_tp_by_min_alt ( const VikTrack *tr ); VikTrackpoint *vik_track_get_tp_first ( const VikTrack *tr ); VikTrackpoint *vik_track_get_tp_last ( const VikTrack *tr ); +VikTrackpoint *vik_track_get_tp_prev ( const VikTrack *tr, VikTrackpoint *tp ); gdouble *vik_track_make_gradient_map ( const VikTrack *tr, guint16 num_chunks ); gdouble *vik_track_make_speed_map ( const VikTrack *tr, guint16 num_chunks ); gdouble *vik_track_make_distance_map ( const VikTrack *tr, guint16 num_chunks ); diff --git a/src/viktrwlayer.c b/src/viktrwlayer.c index 3b33acba..552d5c97 100644 --- a/src/viktrwlayer.c +++ b/src/viktrwlayer.c @@ -3005,6 +3005,10 @@ static void set_statusbar_msg_info_trkpt ( VikTrwLayer *vtl, VikTrackpoint *trkp statusbar_format_code = g_strdup ( "KEATDN" ); need2free = TRUE; } + else { + // Format code may want to show speed - so may need previous trkpt to work it out + trkpt_prev = vik_track_get_tp_prev ( vtl->current_tp_track, trkpt ); + } gchar *msg = vu_trackpoint_formatted_message ( statusbar_format_code, trkpt, trkpt_prev, vtl->current_tp_track, NAN ); vik_statusbar_set_message ( vik_window_get_statusbar (VIK_WINDOW(VIK_GTK_WINDOW_FROM_LAYER(vtl))), VIK_STATUSBAR_INFO, msg ); -- 2.39.5