X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=profile.c;h=3ad11c0d0e97e4273f150ec5190a6ec42753105b;hb=03eb488dd238bcec4b4758eab4559b3c40e6435c;hp=fedc700b4dd1679703e60b33345199bb00c993cb;hpb=2cada118eb515e369ba23b85c8f3fb8c4d100aaa;p=ext%2Fsubsurface.git diff --git a/profile.c b/profile.c index fedc700..3ad11c0 100644 --- a/profile.c +++ b/profile.c @@ -498,7 +498,7 @@ static void plot_depth_profile(struct graphics_context *gc, struct plot_info *pi if (maxtime < 600) { /* Be a bit more verbose with shorter dives */ for (i = incr; i < maxtime; i += incr) - plot_text(gc, &tro, i, 1, "%d:%d", i/60, i%60); + plot_text(gc, &tro, i, 1, "%02d:%02d", i/60, i%60); } else { /* Only render the time on every second marker for normal dives */ for (i = incr; i < maxtime; i += 2 * incr) @@ -1074,16 +1074,18 @@ static void fill_missing_tank_pressures(struct plot_info *pi, pr_track_t **track /* there may be multiple segments - so * let's assemble the length */ nlist = list; - pt = list->pressure_time; - while (!nlist->end) { - nlist = nlist->next; - if (!nlist) { - /* oops - we have no end pressure, - * so this means this is a tank without - * gas consumption information */ - break; + if (list) { + pt = list->pressure_time; + while (!nlist->end) { + nlist = nlist->next; + if (!nlist) { + /* oops - we have no end pressure, + * so this means this is a tank without + * gas consumption information */ + break; + } + pt += nlist->pressure_time; } - pt += nlist->pressure_time; } if (!nlist) { /* just continue without calculating @@ -1380,12 +1382,15 @@ void plot(struct graphics_context *gc, cairo_rectangle_int_t *drawing_area, stru int nr = dive->samples; if (!nr) { + /* The dive has no samples, so create a few fake ones. This assumes an + ascent/descent rate of 9 m/min, which is just below the limit for FAST. */ int duration = dive->duration.seconds; int maxdepth = dive->maxdepth.mm; + int asc_desc_time = dive->maxdepth.mm*60/9000; sample = fake; - fake[1].time.seconds = duration * 0.05; + fake[1].time.seconds = asc_desc_time; fake[1].depth.mm = maxdepth; - fake[2].time.seconds = duration * 0.95; + fake[2].time.seconds = duration - asc_desc_time; fake[2].depth.mm = maxdepth; fake[3].time.seconds = duration * 1.00; nr = 4;