Show Gradient Factors in plot when showing calculated ceilings

This adds the GFlow/high values used to calculate the ceiling (if any).
Right now it shows those numbers even if at no point of the dive there was
an actual ceiling (but only if showing the ceiling itself is enabled).

This should make it easier to for the user to make sense of the calculated
ceiling, especially if posting screen shots.

As an aside - for some dive computers like the OSTC and the Shearwaters we
should be able to also plot the GF used by its calculation which might be
interesting for comparison purposes, as both of them also give us the
ceiling (lowest deco stop) calculated during the dive..

See #13

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2013-01-30 06:22:35 +11:00
parent 3aa41635f0
commit 3ab3e4e892
2 changed files with 18 additions and 3 deletions

View file

@ -526,7 +526,8 @@ static gboolean gflow_edit(GtkWidget *w, GdkEvent *event, gpointer _data)
if (event->type == GDK_FOCUS_CHANGE) {
buf = gtk_entry_get_text(GTK_ENTRY(w));
sscanf(buf, "%lf", &gflow);
set_gf(gflow / 100.0, -1.0);
prefs.gflow = gflow / 100.0;
set_gf(prefs.gflow, -1.0);
update_screen();
}
return FALSE;
@ -539,7 +540,8 @@ static gboolean gfhigh_edit(GtkWidget *w, GdkEvent *event, gpointer _data)
if (event->type == GDK_FOCUS_CHANGE) {
buf = gtk_entry_get_text(GTK_ENTRY(w));
sscanf(buf, "%lf", &gfhigh);
set_gf(-1.0, gfhigh / 100.0);
prefs.gfhigh = gfhigh / 100.0;
set_gf(-1.0, prefs.gfhigh);
update_screen();
}
return FALSE;

View file

@ -822,7 +822,7 @@ static void plot_depth_profile(struct graphics_context *gc, struct plot_info *pi
cairo_close_path(gc->cr);
cairo_fill(gc->cr);
}
/* next show where we have been bad and crossed the ceiling */
/* next show where we have been bad and crossed the dc's ceiling */
pat = cairo_pattern_create_linear (0.0, 0.0, 0.0, 256.0 * plot_scale);
pattern_add_color_stop_rgba (gc, pat, 0, CEILING_SHALLOW);
pattern_add_color_stop_rgba (gc, pat, 1, CEILING_DEEP);
@ -1127,6 +1127,18 @@ static void plot_cylinder_pressure_text(struct graphics_context *gc, struct plot
}
}
static void plot_deco_text(struct graphics_context *gc, struct plot_info *pi)
{
if (prefs.profile_calc_ceiling) {
text_render_options_t tro = {10, PRESSURE_TEXT, CENTER, -0.2};
gc->leftx = 0;
gc->rightx = gc->maxtime = 1.0;
gc->topy = 0;
gc->bottomy = 1.0;
plot_text(gc, &tro, 0.5, 0, "GF %.0f/%.0f", prefs.gflow * 100, prefs.gfhigh * 100);
}
}
static void analyze_plot_info_minmax_minute(struct plot_data *entry, struct plot_data *first, struct plot_data *last, int index)
{
struct plot_data *p = entry;
@ -2028,6 +2040,7 @@ void plot(struct graphics_context *gc, struct dive *dive, scale_mode_t scale)
plot_temperature_text(gc, pi);
plot_depth_text(gc, pi);
plot_cylinder_pressure_text(gc, pi);
plot_deco_text(gc, pi);
/* Bounding box last */
gc->leftx = 0; gc->rightx = 1.0;