summaryrefslogtreecommitdiffstats
path: root/profile.c
diff options
context:
space:
mode:
authorGravatar Maximilian Güntner <maximilian.guentner@gmail.com>2012-08-22 01:15:41 +0200
committerGravatar Maximilian Güntner <maximilian.guentner@gmail.com>2012-08-22 01:15:41 +0200
commit0c0ec7e4f60d9678c3950757ccb8f791f10d033c (patch)
treec0bc02a006629b9aff242a5ffe08e0d0a16e20b2 /profile.c
parent2cada118eb515e369ba23b85c8f3fb8c4d100aaa (diff)
parent666538ec7739fe839623bd1b6f9f80ff884ad5a9 (diff)
downloadsubsurface-0c0ec7e4f60d9678c3950757ccb8f791f10d033c.tar.gz
Merge branch 'master' into freediving-tweaks
Signed-off-by: Maximilian Güntner <maximilian.guentner@gmail.com>
Diffstat (limited to 'profile.c')
-rw-r--r--profile.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/profile.c b/profile.c
index fedc700b4..97ea9077d 100644
--- a/profile.c
+++ b/profile.c
@@ -1074,16 +1074,18 @@ static void fill_missing_tank_pressures(struct plot_info *pi, pr_track_t **track
/* there may be multiple segments - so
* let's assemble the length */
nlist = list;
- pt = list->pressure_time;
- while (!nlist->end) {
- nlist = nlist->next;
- if (!nlist) {
- /* oops - we have no end pressure,
- * so this means this is a tank without
- * gas consumption information */
- break;
+ if (list) {
+ pt = list->pressure_time;
+ while (!nlist->end) {
+ nlist = nlist->next;
+ if (!nlist) {
+ /* oops - we have no end pressure,
+ * so this means this is a tank without
+ * gas consumption information */
+ break;
+ }
+ pt += nlist->pressure_time;
}
- pt += nlist->pressure_time;
}
if (!nlist) {
/* just continue without calculating
@@ -1380,12 +1382,15 @@ void plot(struct graphics_context *gc, cairo_rectangle_int_t *drawing_area, stru
int nr = dive->samples;
if (!nr) {
+ /* The dive has no samples, so create a few fake ones. This assumes an
+ ascent/descent rate of 9 m/min, which is just below the limit for FAST. */
int duration = dive->duration.seconds;
int maxdepth = dive->maxdepth.mm;
+ int asc_desc_time = dive->maxdepth.mm*60/9000;
sample = fake;
- fake[1].time.seconds = duration * 0.05;
+ fake[1].time.seconds = asc_desc_time;
fake[1].depth.mm = maxdepth;
- fake[2].time.seconds = duration * 0.95;
+ fake[2].time.seconds = duration - asc_desc_time;
fake[2].depth.mm = maxdepth;
fake[3].time.seconds = duration * 1.00;
nr = 4;