]> git.tdb.fi Git - ext/subsurface.git/blobdiff - profile.c
Fix profile and average depth for freedives
[ext/subsurface.git] / profile.c
index 97ea9077d480f871436e89940838f962f72a1d3e..0039867efc29355737294cb1ac02a0cb85743ce6 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -1,5 +1,5 @@
 /* profile.c */
-/* creates all the necessary data for drawing the dive profile 
+/* creates all the necessary data for drawing the dive profile
  * uses cairo to draw it
  */
 #include <stdio.h>
@@ -498,7 +498,7 @@ static void plot_depth_profile(struct graphics_context *gc, struct plot_info *pi
        if (maxtime < 600) {
                /* Be a bit more verbose with shorter dives */
                for (i = incr; i < maxtime; i += incr)
-                       plot_text(gc, &tro, i, 1, "%d:%d", i/60, i%60);
+                       plot_text(gc, &tro, i, 1, "%02d:%02d", i/60, i%60);
        } else {
                /* Only render the time on every second marker for normal dives */
                for (i = incr; i < maxtime; i += 2 * incr)
@@ -899,7 +899,7 @@ static velocity_t velocity(int speed)
        else if (speed < -25) /* -5ft/min */
                v = SLOW;
        else if (speed < 25) /* very hard to find data, but it appears that the recommendations
-                               for descent are usually about 2x ascent rate; still, we want 
+                               for descent are usually about 2x ascent rate; still, we want
                                stable to mean stable */
                v = STABLE;
        else if (speed < 152) /* between 5 and 30ft/min is considered slow */
@@ -955,7 +955,7 @@ static struct plot_info *analyze_plot_info(struct plot_info *pi)
                                int past = -2;
                                while (i+past > 0 && entry[0].sec - entry[past].sec < 15)
                                        past--;
-                               entry->velocity = velocity((entry[0].depth - entry[past].depth) / 
+                               entry->velocity = velocity((entry[0].depth - entry[past].depth) /
                                                        (entry[0].sec - entry[past].sec));
                        }
                } else
@@ -967,7 +967,7 @@ static struct plot_info *analyze_plot_info(struct plot_info *pi)
                struct plot_data *entry = pi->entry +i;
                analyze_plot_info_minmax(entry, pi->entry, pi->entry+nr);
        }
-       
+
        return pi;
 }
 
@@ -1387,6 +1387,8 @@ void plot(struct graphics_context *gc, cairo_rectangle_int_t *drawing_area, stru
                int duration = dive->duration.seconds;
                int maxdepth = dive->maxdepth.mm;
                int asc_desc_time = dive->maxdepth.mm*60/9000;
+               if (asc_desc_time * 2 >= duration)
+                       asc_desc_time = duration / 2;
                sample = fake;
                fake[1].time.seconds = asc_desc_time;
                fake[1].depth.mm = maxdepth;