summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/profile.c8
-rw-r--r--core/profile.h2
-rw-r--r--profile-widget/profilewidget2.cpp2
-rw-r--r--profile-widget/ruleritem.cpp5
-rw-r--r--profile-widget/ruleritem.h3
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;