summaryrefslogtreecommitdiffstats
path: root/src/charts/areachart/areachartitem.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2016-08-23 08:23:42 +0200
committerLiang Qi <liang.qi@qt.io>2016-08-23 09:13:20 +0200
commitd352d707f95c3c4e213585361a3ec737389e301e (patch)
tree492cd77328b19731cecbd5470d9c667d78d75e79 /src/charts/areachart/areachartitem.cpp
parenta7b80c0b6176692ee2b7abdce7acdc5c37a72d00 (diff)
parent7a0be48ac39243d139cc4a78423ca033d5d90b3a (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.cpp63
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);
}
}