mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-01 04:23:24 +00:00
Instead of the ugly red boxes make the surface come down to ceiling
Based on suggestions from Linus (and a few iterations) we now simply have the surface (i.e., background color / pattern) come down to where the ceiling is. And we only do the angry red shading when the diver violates the ceiling. I think this looks much better. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
097702a392
commit
7db08ae128
1 changed files with 30 additions and 32 deletions
62
profile.c
62
profile.c
|
@ -843,7 +843,6 @@ static void plot_depth_profile(struct graphics_context *gc, struct plot_info *pi
|
|||
struct plot_data *entry;
|
||||
int maxtime, maxdepth, marker;
|
||||
int increments[8] = { 10, 20, 30, 60, 5*60, 10*60, 15*60, 30*60 };
|
||||
gboolean plotting = FALSE;
|
||||
|
||||
/* Get plot scaling limits */
|
||||
maxtime = get_maxtime(pi);
|
||||
|
@ -935,8 +934,37 @@ static void plot_depth_profile(struct graphics_context *gc, struct plot_info *pi
|
|||
move_to(gc, 0, 0);
|
||||
for (i = 0; i < pi->nr; i++, entry++)
|
||||
line_to(gc, entry->sec, entry->depth);
|
||||
cairo_close_path(gc->cr);
|
||||
|
||||
/* Show any ceiling we may have encountered */
|
||||
for (i = pi->nr - 1; i >= 0; i--, entry--) {
|
||||
if (entry->ceiling < entry->depth) {
|
||||
line_to(gc, entry->sec, entry->ceiling);
|
||||
} else {
|
||||
line_to(gc, entry->sec, entry->depth);
|
||||
}
|
||||
}
|
||||
cairo_close_path(gc->cr);
|
||||
cairo_fill(gc->cr);
|
||||
|
||||
/* next show where we have been bad and crossed the 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);
|
||||
cairo_set_source(gc->cr, pat);
|
||||
cairo_pattern_destroy(pat);
|
||||
entry = pi->entry;
|
||||
move_to(gc, 0, 0);
|
||||
for (i = 0; i < pi->nr; i++, entry++)
|
||||
line_to(gc, entry->sec, entry->depth);
|
||||
|
||||
for (i = pi->nr - 1; i >= 0; i--, entry--) {
|
||||
if (entry->ceiling > entry->depth) {
|
||||
line_to(gc, entry->sec, entry->ceiling);
|
||||
} else {
|
||||
line_to(gc, entry->sec, entry->depth);
|
||||
}
|
||||
}
|
||||
cairo_close_path(gc->cr);
|
||||
cairo_fill(gc->cr);
|
||||
|
||||
/* Now do it again for the velocity colors */
|
||||
|
@ -953,36 +981,6 @@ static void plot_depth_profile(struct graphics_context *gc, struct plot_info *pi
|
|||
line_to(gc, sec, depth);
|
||||
cairo_stroke(cr);
|
||||
}
|
||||
|
||||
/* now on top of this the ceiling plot */
|
||||
entry = pi->entry;
|
||||
pat = cairo_pattern_create_linear (0.0, 0.0, 0.0, 256.0 * plot_scale);
|
||||
pattern_add_color_stop_rgba (gc, pat, 0.5, CEILING_DEEP);
|
||||
pattern_add_color_stop_rgba (gc, pat, 0, CEILING_SHALLOW);
|
||||
cairo_set_source(gc->cr, pat);
|
||||
cairo_pattern_destroy(pat);
|
||||
cairo_set_line_width_scaled(gc->cr, 2);
|
||||
for (i = 0; i < pi->nr; i++, entry++) {
|
||||
if (entry->ceiling > 0) {
|
||||
if (!plotting) {
|
||||
move_to(gc, entry->sec, 0);
|
||||
plotting = TRUE;
|
||||
}
|
||||
line_to(gc, entry->sec, entry->ceiling);
|
||||
} else {
|
||||
if (plotting) {
|
||||
line_to(gc, entry->sec, 0);
|
||||
cairo_close_path(gc->cr);
|
||||
cairo_fill(gc->cr);
|
||||
plotting = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (plotting) {
|
||||
line_to(gc, entry->sec, 0);
|
||||
cairo_close_path(gc->cr);
|
||||
cairo_fill(gc->cr);
|
||||
}
|
||||
}
|
||||
|
||||
static int setup_temperature_limits(struct graphics_context *gc, struct plot_info *pi)
|
||||
|
|
Loading…
Add table
Reference in a new issue