From 5a235aea12681796a59ce5c001707c4c7ed206df Mon Sep 17 00:00:00 2001 From: Jan Mulder Date: Sat, 25 Mar 2017 11:15:13 +0100 Subject: 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 --- profile-widget/diveprofileitem.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'profile-widget/diveprofileitem.cpp') 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) { } -- cgit v1.2.3-70-g09d2