]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Don't repeat redundant minima or maxima in the profile plot
authorDirk Hohndel <dirk@hohndel.org>
Fri, 4 Nov 2011 21:25:20 +0000 (14:25 -0700)
committerDirk Hohndel <dirk@hohndel.org>
Fri, 4 Nov 2011 21:25:20 +0000 (14:25 -0700)
If we have more than four identical depth readings, the old code would see
those as local maxima and minima and print spurious depth values in the
profile plot.

Yes, in real sample data identical readings won't happen - but in
synthetic data they can and there this looks really bogus.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
profile.c

index 7caa5da9f98eb40071bbc390bef39ab93fc9eaac..ad158fe8a1f9aaafb40b792f31dea13667594f5f 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -276,6 +276,7 @@ static void plot_text_samples(struct graphics_context *gc, struct plot_info *pi)
        static const text_render_options_t deep = {14, 1.0, 0.2, 0.2, CENTER, TOP};
        static const text_render_options_t shallow = {14, 1.0, 0.2, 0.2, CENTER, BOTTOM};
        int i;
+       int last = -1;
 
        for (i = 0; i < pi->nr; i++) {
                struct plot_data *entry = pi->entry + i;
@@ -283,11 +284,18 @@ static void plot_text_samples(struct graphics_context *gc, struct plot_info *pi)
                if (entry->depth < 2000)
                        continue;
 
-               if (entry == entry->max[2])
+               if ((entry == entry->max[2]) && entry->depth != last) {
                        render_depth_sample(gc, entry, &deep);
+                       last = entry->depth;
+               }
 
-               if (entry == entry->min[2])
+               if ((entry == entry->min[2]) && entry->depth != last) {
                        render_depth_sample(gc, entry, &shallow);
+                       last = entry->depth;
+               }
+
+               if (entry->depth != last)
+                       last = -1;
        }
 }