diff options
author | Jan Mulder <jlmulder@xs4all.nl> | 2017-03-25 11:15:13 +0100 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-03-28 11:17:03 -0700 |
commit | 5a235aea12681796a59ce5c001707c4c7ed206df (patch) | |
tree | 9f0c991ac6e1565e5a7da186a9b2f8c469aa8341 /profile-widget/diveprofileitem.cpp | |
parent | bb31c77597f28976eb4784318fa7b01a28f3942b (diff) | |
download | subsurface-5a235aea12681796a59ce5c001707c4c7ed206df.tar.gz |
minimal pO2 threshold: color the p02 graph also for minumum
Color the p02 graph also in red for going under the minumum p02 value as
set in the Preferences.
Signed-off-by: Jan Mulder <jlmulder@xs4all.nl>
Diffstat (limited to 'profile-widget/diveprofileitem.cpp')
-rw-r--r-- | profile-widget/diveprofileitem.cpp | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/profile-widget/diveprofileitem.cpp b/profile-widget/diveprofileitem.cpp index ad3bb151e..d8e6fd4b1 100644 --- a/profile-widget/diveprofileitem.cpp +++ b/profile-widget/diveprofileitem.cpp @@ -970,16 +970,28 @@ void PartialPressureGasItem::modelDataChanged(const QModelIndex &topLeft, const QPolygonF poly; QPolygonF alertpoly; alertPolygons.clear(); - double threshold = 0.0; - if (thresholdPtr) - threshold = *thresholdPtr; + double threshold_min = 100.0; // yes, a ridiculous high partial pressure + double threshold_max = 0.0; + if (thresholdPtrMax) + threshold_max = *thresholdPtrMax; + if (thresholdPtrMin) + threshold_min = *thresholdPtrMin; bool inAlertFragment = false; for (int i = 0; i < dataModel->rowCount(); i++, entry++) { double value = dataModel->index(i, vDataColumn).data().toDouble(); int time = dataModel->index(i, hDataColumn).data().toInt(); QPointF point(hAxis->posAtValue(time), vAxis->posAtValue(value)); poly.push_back(point); - if (value >= threshold) { + if (thresholdPtrMax && value >= threshold_max) { + if (inAlertFragment) { + alertPolygons.back().push_back(point); + } else { + alertpoly.clear(); + alertpoly.push_back(point); + alertPolygons.append(alertpoly); + inAlertFragment = true; + } + } else if (thresholdPtrMin && value <= threshold_min) { if (inAlertFragment) { alertPolygons.back().push_back(point); } else { @@ -1015,13 +1027,15 @@ void PartialPressureGasItem::paint(QPainter *painter, const QStyleOptionGraphics painter->restore(); } -void PartialPressureGasItem::setThreshouldSettingsKey(double *prefPointer) +void PartialPressureGasItem::setThreshouldSettingsKey(double *prefPointerMin, double *prefPointerMax) { - thresholdPtr = prefPointer; + thresholdPtrMin = prefPointerMin; + thresholdPtrMax = prefPointerMax; } PartialPressureGasItem::PartialPressureGasItem() : - thresholdPtr(NULL) + thresholdPtrMin(NULL), + thresholdPtrMax(NULL) { } |