aboutsummaryrefslogtreecommitdiffstats
path: root/profile.c
diff options
context:
space:
mode:
Diffstat (limited to 'profile.c')
-rw-r--r--profile.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/profile.c b/profile.c
index 9443130d2..12e648be9 100644
--- 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);
}
+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;
@@ -279,6 +320,9 @@ static void plot_depth_profile(struct dive *dive, struct graphics_context *gc, s
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;