diff options
-rw-r--r-- | core/profile.c | 8 | ||||
-rw-r--r-- | core/profile.h | 2 | ||||
-rw-r--r-- | profile-widget/profilewidget2.cpp | 2 | ||||
-rw-r--r-- | profile-widget/ruleritem.cpp | 5 | ||||
-rw-r--r-- | profile-widget/ruleritem.h | 3 |
5 files changed, 11 insertions, 9 deletions
diff --git a/core/profile.c b/core/profile.c index 2cd34f2a0..2670cf03f 100644 --- a/core/profile.c +++ b/core/profile.c @@ -1585,7 +1585,7 @@ int get_plot_details_new(const struct dive *d, const struct plot_info *pi, int t } /* Compare two plot_data entries and writes the results into a string */ -void compare_samples(struct plot_info *pi, int idx1, int idx2, char *buf, int bufsize, bool sum) +void compare_samples(const struct dive *d, const struct plot_info *pi, int idx1, int idx2, char *buf, int bufsize, bool sum) { struct plot_data *start, *stop, *data; const char *depth_unit, *pressure_unit, *vertical_speed_unit; @@ -1691,11 +1691,11 @@ void compare_samples(struct plot_info *pi, int idx1, int idx2, char *buf, int bu memcpy(buf2, buf, bufsize); /* Only print if gas has been used */ - if (bar_used) { + if (bar_used && d->cylinders.nr > 0) { pressurevalue = get_pressure_units(bar_used, &pressure_unit); memcpy(buf2, buf, bufsize); snprintf_loc(buf, bufsize, translate("gettextFromC", "%s ΔP:%d%s"), buf2, pressurevalue, pressure_unit); - cylinder_t *cyl = get_cylinder(&displayed_dive, 0); + cylinder_t *cyl = get_cylinder(d, 0); /* if we didn't cross a tank change and know the cylidner size as well, show SAC rate */ if (!crossed_tankchange && cyl->type.size.mliter) { double volume_value; @@ -1713,7 +1713,7 @@ void compare_samples(struct plot_info *pi, int idx1, int idx2, char *buf, int bu int volume_used = gas_volume(cyl, first_pressure) - gas_volume(cyl, stop_pressure); /* Mean pressure in ATM */ - double atm = depth_to_atm(avg_depth, &displayed_dive); + double atm = depth_to_atm(avg_depth, d); /* milliliters per minute */ int sac = lrint(volume_used / atm * 60 / delta_time); diff --git a/core/profile.h b/core/profile.h index 725bbae18..67e7791fc 100644 --- a/core/profile.h +++ b/core/profile.h @@ -80,7 +80,7 @@ struct plot_data { bool icd_warning; }; -extern void compare_samples(struct plot_info *p1, int idx1, int idx2, char *buf, int bufsize, bool sum); +extern void compare_samples(const struct dive *d, const struct plot_info *pi, int idx1, int idx2, char *buf, int bufsize, bool sum); extern void init_plot_info(struct plot_info *pi); /* when planner_dc is non-null, this is called in planner mode. */ extern void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plot_info *pi, bool fast, const struct deco_state *planner_ds); diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp index 49f99d20c..90638649d 100644 --- a/profile-widget/profilewidget2.cpp +++ b/profile-widget/profilewidget2.cpp @@ -691,7 +691,7 @@ void ProfileWidget2::plotDive(const struct dive *d, bool force, bool doClearPict cylinderPressureAxis->setMinimum(plotInfo.minpressure); cylinderPressureAxis->setMaximum(plotInfo.maxpressure); #ifndef SUBSURFACE_MOBILE - rulerItem->setPlotInfo(plotInfo); + rulerItem->setPlotInfo(&displayed_dive, plotInfo); #endif #ifdef SUBSURFACE_MOBILE diff --git a/profile-widget/ruleritem.cpp b/profile-widget/ruleritem.cpp index 4cf766130..e5a420d34 100644 --- a/profile-widget/ruleritem.cpp +++ b/profile-widget/ruleritem.cpp @@ -113,7 +113,7 @@ void RulerItem2::recalculate() } QLineF line(startPoint, endPoint); setLine(line); - compare_samples(&pInfo, source->idx, dest->idx, buffer, 500, 1); + compare_samples(dive, &pInfo, source->idx, dest->idx, buffer, 500, 1); text = QString(buffer); // draw text @@ -148,8 +148,9 @@ RulerNodeItem2 *RulerItem2::destNode() const return dest; } -void RulerItem2::setPlotInfo(const plot_info &info) +void RulerItem2::setPlotInfo(const struct dive *d, const plot_info &info) { + dive = d; pInfo = info; dest->setPlotInfo(info); source->setPlotInfo(info); diff --git a/profile-widget/ruleritem.h b/profile-widget/ruleritem.h index 14cdbe36f..182303c17 100644 --- a/profile-widget/ruleritem.h +++ b/profile-widget/ruleritem.h @@ -36,7 +36,7 @@ public: explicit RulerItem2(); void recalculate(); - void setPlotInfo(const struct plot_info &pInfo); + void setPlotInfo(const struct dive *d, const struct plot_info &pInfo); RulerNodeItem2 *sourceNode() const; RulerNodeItem2 *destNode() const; void setAxis(DiveCartesianAxis *time, DiveCartesianAxis *depth); @@ -47,6 +47,7 @@ slots: void settingsChanged(bool toggled); private: + const struct dive *dive; struct plot_info pInfo; QPointF startPoint, endPoint; RulerNodeItem2 *source, *dest; |