]> git.tdb.fi Git - ext/subsurface.git/blobdiff - profile.c
Fix the Windows preferences support
[ext/subsurface.git] / profile.c
index 47e12ba66352421b6cc36790ba1b293f43edf52f..b01514a574be3001aa80d3f5ee3cff96d846c614 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -622,12 +622,16 @@ static void set_sac_color(struct graphics_context *gc, int sac, int avg_sac)
        int sac_index = 0;
        int delta = sac - avg_sac + 7000;
 
-       sac_index = delta / 2000;
-       if (sac_index < 0)
-               sac_index = 0;
-       if (sac_index > SAC_COLORS - 1)
-               sac_index = SAC_COLORS - 1;
-       set_source_rgb_struct(gc, &sac_color[sac_index]);
+       if (!gc->printer) {
+               sac_index = delta / 2000;
+               if (sac_index < 0)
+                       sac_index = 0;
+               if (sac_index > SAC_COLORS - 1)
+                       sac_index = SAC_COLORS - 1;
+               set_source_rgb_struct(gc, &sac_color[sac_index]);
+       } else {
+               set_source_rgb(gc, 1.0, 1.0, 1.0);
+       }
 }
 
 /* calculate the current SAC in ml/min and convert to int */
@@ -714,7 +718,7 @@ static void plot_pressure_value(struct graphics_context *gc, int mbar, int sec,
        plot_text(gc, &tro, sec, mbar, "%d %s", pressure, unit);
 }
 
-static void plot_cylinder_pressure_text(struct graphics_context *gc, struct plot_info *pi, struct dive *dive)
+static void plot_cylinder_pressure_text(struct graphics_context *gc, struct plot_info *pi)
 {
        int i;
        int mbar, cyl;
@@ -760,10 +764,7 @@ static void plot_cylinder_pressure_text(struct graphics_context *gc, struct plot
 
        for (cyl = 0; cyl < MAX_CYLINDERS; cyl++) {
                if (last_time[cyl]) {
-                       if (dive->cylinder[cyl].end.mbar)
-                               plot_pressure_value(gc, dive->cylinder[cyl].end.mbar, last_time[cyl], CENTER, TOP);
-                       else
-                               plot_pressure_value(gc, last_pressure[cyl], last_time[cyl], CENTER, TOP);
+                       plot_pressure_value(gc, last_pressure[cyl], last_time[cyl], CENTER, TOP);
                }
        }
 }
@@ -949,6 +950,21 @@ static void list_free(pr_track_t *list)
        free(list);
 }
 
+static void dump_pr_track(pr_track_t **track_pr)
+{
+       int cyl;
+       pr_track_t *list;
+
+       for (cyl = 0; cyl < MAX_CYLINDERS; cyl++) {
+               list = track_pr[cyl];
+               while (list) {
+                       printf("cyl%d: start %d end %d t_start %d t_end %d pt %6.3f\n", cyl,
+                               list->start, list->end, list->t_start, list->t_end, list->pressure_time);
+                       list = list->next;
+               }
+       }
+}
+
 static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi,
                                        pr_track_t **track_pr)
 {
@@ -959,6 +975,10 @@ static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi,
        struct plot_data *entry;
        int cur_pr[MAX_CYLINDERS];
 
+       if (0) {
+               /* another great debugging tool */
+               dump_pr_track(track_pr);
+       }
        for (cyl = 0; cyl < MAX_CYLINDERS; cyl++) {
                cur_pr[cyl] = track_pr[cyl]->start;
        }
@@ -1004,7 +1024,7 @@ static void fill_missing_tank_pressures(struct dive *dive, struct plot_info *pi,
                                double cur_pt = (entry->sec - (entry-1)->sec) *
                                        (1 + (entry->depth + (entry-1)->depth) / 20000.0);
                                INTERPOLATED_PRESSURE(entry) =
-                                       cur_pr[entry->cylinderindex] + cur_pt * magic;
+                                       cur_pr[entry->cylinderindex] + cur_pt * magic + 0.5;
                                cur_pr[entry->cylinderindex] = INTERPOLATED_PRESSURE(entry);
                        } else
                                INTERPOLATED_PRESSURE(entry) = cur_pr[entry->cylinderindex];
@@ -1327,7 +1347,7 @@ void plot(struct graphics_context *gc, cairo_rectangle_int_t *drawing_area, stru
        /* Text on top of all graphs.. */
        plot_temperature_text(gc, pi);
        plot_depth_text(gc, pi);
-       plot_cylinder_pressure_text(gc, pi, dive);
+       plot_cylinder_pressure_text(gc, pi);
 
        /* Bounding box last */
        gc->leftx = 0; gc->rightx = 1.0;