]> git.tdb.fi Git - ext/subsurface.git/commitdiff
Show the min/max data in funky purple shading
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 8 Sep 2011 16:32:08 +0000 (09:32 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 8 Sep 2011 16:32:08 +0000 (09:32 -0700)
Dirk likes purple. I mean - Dirk REALLY likes purple.

And what's better than "purple"? You got it: "funky purple".

So this shows the one- two- and three-minute min/max information in some
seriously funky purple fringing.  It's not really necessarily meant to
be serious, but it's a quick hack to visualize the data until we figure
out what to *really* do with it.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
profile.c

index 9443130d29814f50c53f1ed609eea507f5f790d8..12e648be92abef21933c2ee6efd9e0e595c60ce7 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -234,6 +234,47 @@ static void plot_depth_text(struct dive *dive, struct graphics_context *gc)
        plot_text_samples(gc, sample, end);
 }
 
        plot_text_samples(gc, sample, end);
 }
 
+static void plot_smoothed_profile(struct graphics_context *gc, struct plot_info *pi)
+{
+       int i;
+       struct plot_data *entry = pi->entry;
+
+       cairo_set_source_rgba(gc->cr, 1, 0.2, 0.2, 0.20);
+       move_to(gc, entry->sec, entry->smoothed);
+       for (i = 1; i < pi->nr; i++) {
+               entry++;
+               line_to(gc, entry->sec, entry->smoothed);
+       }
+       cairo_stroke(gc->cr);
+}
+
+static void plot_minmax_profile_minute(struct graphics_context *gc, struct plot_info *pi,
+                               int index, double a)
+{
+       int i;
+       struct plot_data *entry = pi->entry;
+
+       cairo_set_source_rgba(gc->cr, 1, 0.2, 1, a);
+       move_to(gc, entry->sec, entry->min[index]);
+       for (i = 1; i < pi->nr; i++) {
+               entry++;
+               line_to(gc, entry->sec, entry->min[index]);
+       }
+       for (i = 1; i < pi->nr; i++) {
+               line_to(gc, entry->sec, entry->max[index]);
+               entry--;
+       }
+       cairo_close_path(gc->cr);
+       cairo_fill(gc->cr);
+}
+
+static void plot_minmax_profile(struct graphics_context *gc, struct plot_info *pi)
+{
+       plot_minmax_profile_minute(gc, pi, 2, 0.1);
+       plot_minmax_profile_minute(gc, pi, 1, 0.1);
+       plot_minmax_profile_minute(gc, pi, 0, 0.1);
+}
+
 static void plot_depth_profile(struct dive *dive, struct graphics_context *gc, struct plot_info *pi)
 {
        int i;
 static void plot_depth_profile(struct dive *dive, struct graphics_context *gc, struct plot_info *pi)
 {
        int i;
@@ -279,6 +320,9 @@ static void plot_depth_profile(struct dive *dive, struct graphics_context *gc, s
 
        gc->scalex = maxtime;
 
 
        gc->scalex = maxtime;
 
+       plot_smoothed_profile(gc, pi);
+       plot_minmax_profile(gc, pi);
+
        entry = pi->entry;
        cairo_set_source_rgba(cr, 1, 0.2, 0.2, 0.80);
        begins = entry->sec;
        entry = pi->entry;
        cairo_set_source_rgba(cr, 1, 0.2, 0.2, 0.80);
        begins = entry->sec;