]> git.tdb.fi Git - ext/subsurface.git/blobdiff - profile.c
Fix default size for scrollable notebook
[ext/subsurface.git] / profile.c
index 5d5aff5187776971f53331d023937438444b5b67..d3362432effe11b1e0680e9e131d6f457aa5560d 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -14,6 +14,7 @@
 #include "color.h"
 
 int selected_dive = 0;
+int *selectiontracker;
 
 typedef enum { STABLE, SLOW, MODERATE, FAST, CRAZY } velocity_t;
 
@@ -168,9 +169,10 @@ static void dump_pi (struct plot_info *pi)
                pi->maxpressure, pi->mintemp, pi->maxtemp);
        for (i = 0; i < pi->nr; i++)
                printf("    entry[%d]:{same_cylinder:%d cylinderindex:%d sec:%d pressure:{%d,%d}\n"
-                       "                temperature:%d depth:%d smoothed:%d}\n",
+                       "                time:%d:%02d temperature:%d depth:%d smoothed:%d}\n",
                        i, pi->entry[i].same_cylinder, pi->entry[i].cylinderindex, pi->entry[i].sec,
                        pi->entry[i].pressure[0], pi->entry[i].pressure[1],
+                       pi->entry[i].sec / 60, pi->entry[i].sec % 60,
                        pi->entry[i].temperature, pi->entry[i].depth, pi->entry[i].smoothed);
        printf("   }\n");
 }
@@ -1013,8 +1015,7 @@ static void dump_pr_track(pr_track_t **track_pr)
        }
 }
 
-static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi,
-                                       pr_track_t **track_pr)
+static void fill_missing_tank_pressures(struct plot_info *pi, pr_track_t **track_pr)
 {
        pr_track_t *list = NULL;
        pr_track_t *nlist = NULL;
@@ -1048,16 +1049,18 @@ static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi,
                                /* 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
@@ -1337,7 +1340,7 @@ static struct plot_info *create_plot_info(struct dive *dive, int nr_samples, str
        pi->meandepth = dive->meandepth.mm;
 
        if (missing_pr) {
-               fill_missing_tank_pressures(dive, pi, track_pr);
+               fill_missing_tank_pressures(pi, track_pr);
        }
        for (cyl = 0; cyl < MAX_CYLINDERS; cyl++)
                list_free(track_pr[cyl]);
@@ -1354,12 +1357,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;