]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Fix drawing artifacts with dives that have samples past the dive duration
authorDirk Hohndel <dirk@hohndel.org>
Tue, 6 Sep 2011 23:44:20 +0000 (16:44 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 7 Sep 2011 01:37:57 +0000 (18:37 -0700)
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 <dirk@hohndel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
profile.c

index 3fb0735baa8da53a6bfb6327d074dc00ae565dea..b1c98bcd5f837e6204b73a465b2d3784dd3ec131 100644 (file)
--- 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