summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/profile.c4
-rw-r--r--profile-widget/profilewidget2.cpp16
2 files changed, 16 insertions, 4 deletions
diff --git a/core/profile.c b/core/profile.c
index 555f623cf..d9dbfed51 100644
--- a/core/profile.c
+++ b/core/profile.c
@@ -439,7 +439,7 @@ struct plot_info calculate_max_limits_new(struct dive *dive, struct divecomputer
maxpressure = pressure;
if (heartbeat > maxhr)
maxhr = heartbeat;
- if (heartbeat < minhr)
+ if (heartbeat && heartbeat < minhr)
minhr = heartbeat;
if (depth > maxdepth)
@@ -469,7 +469,7 @@ struct plot_info calculate_max_limits_new(struct dive *dive, struct divecomputer
if (minpressure > maxpressure)
minpressure = 0;
if (minhr > maxhr)
- minhr = 0;
+ minhr = maxhr;
memset(&pi, 0, sizeof(pi));
pi.maxdepth = maxdepth;
diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp
index b65e76743..4381e6963 100644
--- a/profile-widget/profilewidget2.cpp
+++ b/profile-widget/profilewidget2.cpp
@@ -644,8 +644,20 @@ void ProfileWidget2::plotDive(struct dive *d, bool force)
#ifndef SUBSURFACE_MOBILE
if (plotInfo.maxhr) {
- heartBeatAxis->setMinimum(plotInfo.minhr);
- heartBeatAxis->setMaximum(plotInfo.maxhr);
+ int heartBeatAxisMin = lrint(plotInfo.minhr / 5.0 - 0.5) * 5;
+ int heartBeatAxisMax, heartBeatAxisTick;
+ if (plotInfo.maxhr - plotInfo.minhr < 40)
+ heartBeatAxisTick = 10;
+ else if (plotInfo.maxhr - plotInfo.minhr < 80)
+ heartBeatAxisTick = 20;
+ else if (plotInfo.maxhr - plotInfo.minhr < 100)
+ heartBeatAxisTick = 25;
+ else
+ heartBeatAxisTick = 50;
+ for (heartBeatAxisMax = heartBeatAxisMin; heartBeatAxisMax < plotInfo.maxhr; heartBeatAxisMax += heartBeatAxisTick);
+ heartBeatAxis->setMinimum(heartBeatAxisMin);
+ heartBeatAxis->setMaximum(heartBeatAxisMax + 1);
+ heartBeatAxis->setTickInterval(heartBeatAxisTick);
heartBeatAxis->updateTicks(HR_AXIS); // this shows the ticks
}
heartBeatAxis->setVisible(prefs.hrgraph && plotInfo.maxhr);