diff options
author | Liang Qi <liang.qi@qt.io> | 2016-08-23 08:23:42 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2016-08-23 09:13:20 +0200 |
commit | d352d707f95c3c4e213585361a3ec737389e301e (patch) | |
tree | 492cd77328b19731cecbd5470d9c667d78d75e79 /src/charts/areachart/areachartitem.cpp | |
parent | a7b80c0b6176692ee2b7abdce7acdc5c37a72d00 (diff) | |
parent | 7a0be48ac39243d139cc4a78423ca033d5d90b3a (diff) |
Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
.qmake.conf
README
src/charts/qchartglobal.h
tests/auto/chartdataset/tst_chartdataset.cpp
tests/auto/domain/tst_domain.cpp
Change-Id: Ib4e01f2646d87b691c7b2f8bee4ed1f5521e4f6d
Diffstat (limited to 'src/charts/areachart/areachartitem.cpp')
-rw-r--r-- | src/charts/areachart/areachartitem.cpp | 63 |
1 files changed, 26 insertions, 37 deletions
diff --git a/src/charts/areachart/areachartitem.cpp b/src/charts/areachart/areachartitem.cpp index d05aa3a3..a51e46ff 100644 --- a/src/charts/areachart/areachartitem.cpp +++ b/src/charts/areachart/areachartitem.cpp @@ -33,6 +33,7 @@ #include <QtCharts/QLineSeries> #include <private/chartpresenter_p.h> #include <private/abstractdomain_p.h> +#include <private/chartdataset_p.h> #include <QtGui/QPainter> #include <QtWidgets/QGraphicsSceneMouseEvent> #include <QtCore/QDebug> @@ -171,18 +172,26 @@ void AreaChartItem::handleUpdated() void AreaChartItem::handleDomainUpdated() { - if (m_upper) { - AbstractDomain* d = m_upper->domain(); - d->setSize(domain()->size()); - d->setRange(domain()->minX(),domain()->maxX(),domain()->minY(),domain()->maxY()); - m_upper->handleDomainUpdated(); - } + fixEdgeSeriesDomain(m_upper); + fixEdgeSeriesDomain(m_lower); +} - if (m_lower) { - AbstractDomain* d = m_lower->domain(); - d->setSize(domain()->size()); - d->setRange(domain()->minX(),domain()->maxX(),domain()->minY(),domain()->maxY()); - m_lower->handleDomainUpdated(); +void AreaChartItem::fixEdgeSeriesDomain(LineChartItem *edgeSeries) +{ + if (edgeSeries) { + AbstractDomain* mainDomain = domain(); + AbstractDomain* edgeDomain = edgeSeries->domain(); + + if (edgeDomain->type() != mainDomain->type()) { + // Change the domain of edge series to the same type as the area series + edgeDomain = dataSet()->createDomain(mainDomain->type()); + edgeSeries->seriesPrivate()->setDomain(edgeDomain); + } + edgeDomain->setSize(mainDomain->size()); + edgeDomain->setRange(mainDomain->minX(), mainDomain->maxX(), mainDomain->minY(), mainDomain->maxY()); + edgeDomain->setReverseX(mainDomain->isReverseX()); + edgeDomain->setReverseY(mainDomain->isReverseY()); + edgeSeries->handleDomainUpdated(); } } @@ -199,8 +208,6 @@ void AreaChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt else painter->setClipRect(clipRect); - reversePainter(painter, clipRect); - painter->drawPath(m_path); if (m_pointsVisible) { painter->setPen(m_pointPen); @@ -209,8 +216,6 @@ void AreaChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt painter->drawPoints(m_lower->geometryPoints()); } - reversePainter(painter, clipRect); - // Draw series point label if (m_pointLabelsVisible) { static const QString xPointTag(QLatin1String("@xPoint")); @@ -239,17 +244,9 @@ void AreaChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt // Position text in relation to the point int pointLabelWidth = fm.width(pointLabel); QPointF position(m_upper->geometryPoints().at(i)); - if (!seriesPrivate()->reverseXAxis()) - position.setX(position.x() - pointLabelWidth / 2); - else - position.setX(domain()->size().width() - position.x() - pointLabelWidth / 2); - if (!seriesPrivate()->reverseYAxis()) { - position.setY(position.y() - m_series->upperSeries()->pen().width() / 2 - - labelOffset); - } else { - position.setY(domain()->size().height() - position.y() - - m_series->upperSeries()->pen().width() / 2 - labelOffset); - } + position.setX(position.x() - pointLabelWidth / 2); + position.setY(position.y() - m_series->upperSeries()->pen().width() / 2 + - labelOffset); painter->drawText(position, pointLabel); } } @@ -265,17 +262,9 @@ void AreaChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt // Position text in relation to the point int pointLabelWidth = fm.width(pointLabel); QPointF position(m_lower->geometryPoints().at(i)); - if (!seriesPrivate()->reverseXAxis()) - position.setX(position.x() - pointLabelWidth / 2); - else - position.setX(domain()->size().width() - position.x() - pointLabelWidth / 2); - if (!seriesPrivate()->reverseYAxis()) { - position.setY(position.y() - m_series->lowerSeries()->pen().width() / 2 - - labelOffset); - } else { - position.setY(domain()->size().height() - position.y() - - m_series->lowerSeries()->pen().width() / 2 - labelOffset); - } + position.setX(position.x() - pointLabelWidth / 2); + position.setY(position.y() - m_series->lowerSeries()->pen().width() / 2 + - labelOffset); painter->drawText(position, pointLabel); } } |