diff options
author | Rick Walsh <rickmwalsh@gmail.com> | 2015-07-26 17:45:47 +1000 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-07-26 09:14:06 -0700 |
commit | 4f056228465717d04ec6712f129bddad56f21323 (patch) | |
tree | c51b3e5e9e1022640a068821b7827ab809745b99 /planner.c | |
parent | 1885eccc4911e8a634bb2c1cc89500429d5cfc0f (diff) | |
download | subsurface-4f056228465717d04ec6712f129bddad56f21323.tar.gz |
Planner: Hide unwanted transition between deco stops
If display transitions in deco isn't selected, then we shouldn't show the
transition segment between two deco stops, even if there is a gas change. We
should still show the ascent segment up to the first deco stop. The
(gaschange_after && !isascent) condition is necessary to pick up backgas breaks.
An example plan is shown below.
Previously:
depth duration runtime gas
40m 1min 1min air
40m 34min 35min
21m 2min 37min <--meaningful ascent segment
21m 1min 38min EAN50
18m 1min 39min
15m 3min 42min
12m 4min 46min
9m 5min 51min
6m 0min 51min <--unnecessary ascent segment
6m 13min 64min oxygen
6m 6min 70min air
6m 2min 72min oxygen
0m 1min 73min
depth duration runtime gas
40m 1min 1min air
40m 34min 35min
21m 2min 37min <--meaningful ascent segment
21m 1min 38min EAN50
18m 1min 39min
15m 3min 42min
12m 4min 46min
9m 5min 51min
6m 13min 64min oxygen
6m 6min 70min air
6m 2min 72min oxygen
0m 1min 73min
Signed-off-by: Rick Walsh <rickmwalsh@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'planner.c')
-rw-r--r-- | planner.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -505,6 +505,7 @@ static void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool struct divedatapoint *dp = diveplan->dp; bool gaschange_after = !plan_verbatim; bool gaschange_before; + bool lastentered; struct divedatapoint *nextdp = NULL; plan_verbatim = prefs.verbatim_plan; @@ -639,7 +640,8 @@ static void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool } else { if (plan_display_transitions || dp->entered || !dp->next || (nextdp && dp->depth != nextdp->depth) || - (!isascent && gaschange_before && nextdp && dp->depth != nextdp->depth) || gaschange_after || + (!isascent && gaschange_before && nextdp && dp->depth != nextdp->depth) || + gaschange_after && lastentered || gaschange_after && !isascent || (isascent && gaschange_after && nextdp && dp->depth != nextdp->depth )) { snprintf(temp, sizeof(temp), translate("gettextFromC", "%3.0f%s"), depthvalue, depth_unit); len += snprintf(buffer + len, sizeof(buffer) - len, "<tr><td style='padding-left: 10px; float: right;'>%s</td>", temp); @@ -700,6 +702,7 @@ static void add_plan_to_notes(struct diveplan *diveplan, struct dive *dive, bool lastprintdepth = newdepth; lastdepth = dp->depth; lastsetpoint = dp->setpoint; + lastentered = dp->entered; } while ((dp = nextdp) != NULL); len += snprintf(buffer + len, sizeof(buffer) - len, "</tbody></table></div>"); |