From 98a65b7157933ec7b9c63da70b44d6450f32c38c Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Sun, 14 May 2017 09:26:36 +0200 Subject: Display gas density instead of SAC in planner In the planner, the SAC is prescribed, so there is little use in plotting it (as the color of the cylinder pressure line). Rather use the color to show the density of breathing gas. Signed-off-by: Robert C. Helling --- core/color.cpp | 11 +++++++++++ core/color.h | 1 + profile-widget/diveprofileitem.cpp | 12 ++++++++---- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/core/color.cpp b/core/color.cpp index e63f6e569..e86b9f62b 100644 --- a/core/color.cpp +++ b/core/color.cpp @@ -87,3 +87,14 @@ QColor getSacColor(int sac, int avg_sac) sac_index = SAC_COLORS - 1; return getColor((color_indice_t)(SAC_COLORS_START_IDX + sac_index), false); } + +QColor getPressureColor(double density) +{ + QColor color; + + int h = ((int) (180.0 - 180.0 * density / 8.0)); + while (h < 0) + h += 360; + color.setHsv(h , 255, 255); + return color; +} diff --git a/core/color.h b/core/color.h index bd0dbad3a..ef60d17d3 100644 --- a/core/color.h +++ b/core/color.h @@ -142,6 +142,7 @@ extern QMap > profile_color; void fill_profile_color(); QColor getColor(const color_indice_t i, bool isGrayscale = false); QColor getSacColor(int sac, int diveSac); +QColor getPressureColor(double density); struct text_render_options { double size; color_indice_t color; diff --git a/profile-widget/diveprofileitem.cpp b/profile-widget/diveprofileitem.cpp index 71a965ad8..ee03e9e6e 100644 --- a/profile-widget/diveprofileitem.cpp +++ b/profile-widget/diveprofileitem.cpp @@ -831,10 +831,14 @@ void DiveGasPressureItem::paint(QPainter *painter, const QStyleOptionGraphicsIte Q_FOREACH (const QPolygonF &poly, polygons) { entry = dataModel->data().entry; for (int i = 1, count = poly.count(); i < count; i++, entry++) { - if (entry->sac) - pen.setBrush(getSacColor(entry->sac, displayed_dive.sac)); - else - pen.setBrush(MED_GRAY_HIGH_TRANS); + if (!in_planner()) { + if (entry->sac) + pen.setBrush(getSacColor(entry->sac, displayed_dive.sac)); + else + pen.setBrush(MED_GRAY_HIGH_TRANS); + } else { + pen.setBrush(getPressureColor(entry->density)); + } painter->setPen(pen); painter->drawLine(poly[i - 1], poly[i]); } -- cgit v1.2.3-70-g09d2