From: Dirk Hohndel Date: Tue, 6 Sep 2011 23:44:20 +0000 (-0700) Subject: Fix drawing artifacts with dives that have samples past the dive duration X-Git-Url: http://git.tdb.fi/?a=commitdiff_plain;h=a5a3cba574d5f4a742f57eef590c44da6355d6f6;p=ext%2Fsubsurface.git Fix drawing artifacts with dives that have samples past the dive duration The UEMIS Zurich SDA keeps recording samples for quite a while after the dive ended. These provide no additional information, but confuse our drawing algorithm as they can cause us to draw both the depth and tank pressure plots beyond the right edge of our canvas. Stop drawing if sample->time.seconds is larger than dive->duration.seconds. Signed-off-by: Dirk Hohndel Signed-off-by: Linus Torvalds --- diff --git a/profile.c b/profile.c index 3fb0735..b1c98bc 100644 --- a/profile.c +++ b/profile.c @@ -197,11 +197,13 @@ static void plot_depth_profile(struct dive *dive, cairo_t *cr, for (i = 1; i < dive->samples; i++) { sample++; sec = sample->time.seconds; - depth = to_feet(sample->depth); - cairo_line_to(cr, SCALE(sec, depth)); + if (sec <= maxtime) { + depth = to_feet(sample->depth); + cairo_line_to(cr, SCALE(sec, depth)); + } } scaley = 1.0; - cairo_line_to(cr, SCALE(sec, 0)); + cairo_line_to(cr, SCALE(MIN(sec,maxtime), 0)); cairo_line_to(cr, SCALE(begins, 0)); cairo_close_path(cr); cairo_set_source_rgba(cr, 1, 0.2, 0.2, 0.20); @@ -269,7 +271,8 @@ static void plot_cylinder_pressure(struct dive *dive, cairo_t *cr, if (!mbar) continue; sec = sample->time.seconds; - cairo_line_to(cr, SCALE(sec, mbar)); + if (sec <= dive->duration.seconds) + cairo_line_to(cr, SCALE(sec, mbar)); } /* * We may have "surface time" events, in which case we don't go