summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2011-11-04 14:25:20 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2011-11-04 14:25:20 -0700
commitedbba678b3cdc8f06a84a965b04f13ef1f4ecaab (patch)
treea748e73dd8f7050c13ebc99c95e6c28b70d10278
parentd906c82f31c5406b6debe0df88cb49b916cd6ced (diff)
downloadsubsurface-edbba678b3cdc8f06a84a965b04f13ef1f4ecaab.tar.gz
Don't repeat redundant minima or maxima in the profile plot
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>
-rw-r--r--profile.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/profile.c b/profile.c
index 7caa5da9f..ad158fe8a 100644
--- 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;
}
}