summaryrefslogtreecommitdiffstats
path: root/profile-widget/diveprofileitem.cpp
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2016-08-28 00:09:22 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-09-17 13:39:54 -0700
commit893bea700c982daacb0af2feec4b2ac98c96424f (patch)
treedb4e73ae6e7ff121b960b7436e6dbc83a39b7015 /profile-widget/diveprofileitem.cpp
parent6f43c16ea9cc2c0323c5ac78059cf3a118c9a528 (diff)
downloadsubsurface-893bea700c982daacb0af2feec4b2ac98c96424f.tar.gz
Introduce heat map
This replaces the tissue percentage graph that probably nobody ever understood with a heat map like the one used in the discussion of bubble model deco. The information shown is the same but the saturation is now in the color while the tissue determines the y position. Signed-off-by: Robert C. Helling <helling@atdotde.de> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'profile-widget/diveprofileitem.cpp')
-rw-r--r--profile-widget/diveprofileitem.cpp36
1 files changed, 23 insertions, 13 deletions
diff --git a/profile-widget/diveprofileitem.cpp b/profile-widget/diveprofileitem.cpp
index 6eb678b3b..ce811f930 100644
--- a/profile-widget/diveprofileitem.cpp
+++ b/profile-widget/diveprofileitem.cpp
@@ -359,13 +359,7 @@ void DiveHeartrateItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
DivePercentageItem::DivePercentageItem(int i)
{
- QPen pen;
- QColor color;
- color.setHsl(100 + 10 * i, 200, 100);
- pen.setBrush(QBrush(color));
- pen.setCosmetic(true);
- pen.setWidth(1);
- setPen(pen);
+ tissueIndex = i;
settingsChanged();
}
@@ -380,11 +374,8 @@ void DivePercentageItem::modelDataChanged(const QModelIndex &topLeft, const QMod
// Ignore empty values. a heartrate of 0 would be a bad sign.
QPolygonF poly;
for (int i = 0, modelDataCount = dataModel->rowCount(); i < modelDataCount; i++) {
- int hr = dataModel->index(i, vDataColumn).data().toInt();
- if (!hr)
- continue;
sec = dataModel->index(i, hDataColumn).data().toInt();
- QPointF point(hAxis->posAtValue(sec), vAxis->posAtValue(hr));
+ QPointF point(hAxis->posAtValue(sec), vAxis->posAtValue(64 - 4 * tissueIndex));
poly.append(point);
}
setPolygon(poly);
@@ -401,8 +392,27 @@ void DivePercentageItem::paint(QPainter *painter, const QStyleOptionGraphicsItem
if (polygon().isEmpty())
return;
painter->save();
- painter->setPen(pen());
- painter->drawPolyline(polygon());
+ QColor color;
+ QPen mypen;
+ mypen.setCosmetic(true);
+ mypen.setWidth(5);
+ QPolygonF poly = polygon();
+ for (int i = 0, modelDataCount = dataModel->rowCount(); i < modelDataCount; i++) {
+ if (i < poly.count()) {
+ double value = dataModel->index(i, vDataColumn).data().toDouble();
+ if (value < 50.0) {
+ value *= 255.0 / 50.0;
+ color.setRgb(rint(value), 255 - rint(value),0);
+ } else {
+ value = (value - 50.0) * 255.0 / 50.0;
+ color.setRgb(255 - rint(value), 0 , rint(value));
+ }
+
+ mypen.setBrush(QBrush(color));
+ painter->setPen(mypen);
+ painter->drawPoint(poly[i]);
+ }
+ }
painter->restore();
connect(SettingsObjectWrapper::instance()->techDetails, &TechnicalDetailsSettings::percentageGraphChanged, this, &DivePercentageItem::setVisible);
}