From eaa84772fccb480664d1a6fd8f57b99c77e6e708 Mon Sep 17 00:00:00 2001 From: Damien Date: Sun, 2 Dec 2012 23:05:35 +0100 Subject: [PATCH] Add shaded power zones for watt per kilogram series in histogram --- src/PowerHist.cpp | 4 ++-- src/PowerHist.h | 30 ++++++++++++++++++++++++------ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/PowerHist.cpp b/src/PowerHist.cpp index dcf1e62e8a..a4fb18453a 100644 --- a/src/PowerHist.cpp +++ b/src/PowerHist.cpp @@ -211,7 +211,7 @@ PowerHist::refreshZoneLabels() if (!rideItem) return; - if (series == RideFile::watts) { + if (series == RideFile::watts || series == RideFile::wattsKg) { const Zones *zones = rideItem->zones; int zone_range = rideItem->zoneRange(); @@ -964,7 +964,7 @@ PowerHist::setSeries(RideFile::SeriesType x) { bool PowerHist::shadeZones() const { - return (rideItem && rideItem->ride() && series == RideFile::watts && !zoned && shade == true); + return (rideItem && rideItem->ride() && (series == RideFile::watts || series == RideFile::wattsKg) && !zoned && shade == true); } bool PowerHist::shadeHRZones() const diff --git a/src/PowerHist.h b/src/PowerHist.h index 170e04bf03..7d83e50be4 100644 --- a/src/PowerHist.h +++ b/src/PowerHist.h @@ -262,9 +262,21 @@ class PowerHistBackground: public QwtPlotItem shading_color.saturation() / 4, shading_color.value() ); - r.setLeft(xMap.transform(zone_lows[z])); - if (z + 1 < num_zones) - r.setRight(xMap.transform(zone_lows[z + 1])); + + double wattsLeft = zone_lows[z]; + if (parent->series == RideFile::wattsKg) { + wattsLeft = wattsLeft / rideItem->ride()->getWeight(); + } + r.setLeft(xMap.transform(wattsLeft)); + + if (z + 1 < num_zones) { + double wattsRight = zone_lows[z + 1]; + if (parent->series == RideFile::wattsKg) { + wattsRight = wattsRight / rideItem->ride()->getWeight(); + } + r.setRight(xMap.transform(wattsRight)); + } + if (r.right() >= r.left()) painter->fillRect(r, shading_color); } @@ -316,7 +328,7 @@ class PowerHistZoneLabel: public QwtPlotItem (1.5 * zone_lows[zone_number] - 0.5 * zone_lows[zone_number - 1]) : 2.0 * zone_lows[zone_number] ) - ); + ); text = QwtText(zone_names[zone_number]); text.setFont(QFont("Helvetica",24, QFont::Bold)); @@ -337,8 +349,14 @@ class PowerHistZoneLabel: public QwtPlotItem const QwtScaleMap &xMap, const QwtScaleMap &, const QRectF &rect) const { - if (parent->shadeZones()) { - int x = xMap.transform(watts); + RideItem *rideItem = parent->rideItem; + + if (parent->shadeZones()) { + double position = watts; + if (parent->series == RideFile::wattsKg) { + position = watts / rideItem->ride()->getWeight(); + } + int x = xMap.transform(position); int y = (rect.bottom() + rect.top()) / 2; // the following code based on source for QwtPlotMarker::draw()