]> git.tdb.fi Git - ext/subsurface.git/blobdiff - profile.c
Get rid of timelimit code and corner cases
[ext/subsurface.git] / profile.c
index 6475008c93d44dd2cad224d39f01626aa4b228fb..706f60ba0d6fea984ca9c7bd73109ef6ed96aa7e 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -104,12 +104,11 @@ static struct sample *next_minmax(struct sample *sample, struct sample *end, int
 {
        const int enough = 3000;
        struct sample *result;
-       int timelimit, depthlimit;
+       int depthlimit;
 
        if (sample >= end)
                return 0;
 
-       timelimit = 24*60*60;
        depthlimit = sample->depth.mm;
        result = NULL;
 
@@ -121,8 +120,6 @@ static struct sample *next_minmax(struct sample *sample, struct sample *end, int
                        return NULL;
                time = sample->time.seconds;
                depth = sample->depth.mm;
-               if (time > timelimit)
-                       break;
 
                if (minmax) {
                        if (depth <= depthlimit) {
@@ -140,8 +137,6 @@ static struct sample *next_minmax(struct sample *sample, struct sample *end, int
 
                result = sample;
                depthlimit = depth;
-               /* Look up to ten minutes into the future */
-               timelimit = time + 600;
        }
        return result;
 }
@@ -167,15 +162,13 @@ static void render_depth_sample(struct graphics_context *gc, struct sample *samp
        plot_text(gc, &tro, sec, depth.mm, fmt, d);
 }
 
-
-void plot_text_samples(struct dive *dive, struct graphics_context *gc,
-                       struct sample *a, struct sample *b)
+static void plot_text_samples(struct graphics_context *gc, struct sample *a, struct sample *b)
 {
        struct sample *max, *min;
 
-       if (b < a)
+       if (b <= a)
                return;
-       if (b->time.seconds - a->time.seconds < 3*60)
+       if (b[-1].time.seconds - a->time.seconds < 3*60)
                return;
 
        max = next_minmax(a, b, 1);
@@ -183,7 +176,7 @@ void plot_text_samples(struct dive *dive, struct graphics_context *gc,
                render_depth_sample(gc, max);
                min = next_minmax(max, b, 0);
                if (min) {
-                       plot_text_samples(dive, gc, min, b);
+                       plot_text_samples(gc, min, b);
                        return;
                }
        }
@@ -203,15 +196,10 @@ static void plot_depth_text(struct dive *dive, struct graphics_context *gc)
 
        cairo_set_font_size(gc->cr, 14);
 
-       /*
-        * We never take the last sample into account.
-        * It should be a surface event anyway, although
-        * there are buggy cases where it isn't..
-        */
        sample = dive->sample;
-       end = dive->sample + dive->samples - 1;
+       end = dive->sample + dive->samples;
 
-       plot_text_samples(dive, gc, sample, end);
+       plot_text_samples(gc, sample, end);
 }
 
 static void plot_depth_profile(struct dive *dive, struct graphics_context *gc)