diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2016-11-04 10:11:14 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2016-11-04 10:57:43 +0000 |
commit | fd45b70695b0bb98dd516b195dbed3f4682b4110 (patch) | |
tree | 11de0b2a7c9dc0f53c5a3a1839c26c98027f632c /src/charts/areachart/qareaseries.cpp | |
parent | 71ebd6991d00ccfec6d4226ce073658cd5391ad5 (diff) |
Fix domain initialization for area series
If area series didn't have negative values, domain minimum was
initialized incorrectly. Now domain initialization for area series
uses same logic as QXYSeries.
Task-number: QTBUG-56900
Change-Id: I1e269b95f92f9fe6a9f5d9dfd24c1403dda83146
Reviewed-by: Mika Salmela <mika.salmela@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/charts/areachart/qareaseries.cpp')
-rw-r--r-- | src/charts/areachart/qareaseries.cpp | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/src/charts/areachart/qareaseries.cpp b/src/charts/areachart/qareaseries.cpp index c309e305..fb3bd0b1 100644 --- a/src/charts/areachart/qareaseries.cpp +++ b/src/charts/areachart/qareaseries.cpp @@ -643,10 +643,10 @@ void QAreaSeriesPrivate::initializeDomain() { Q_Q(QAreaSeries); - qreal minX(domain()->minX()); - qreal minY(domain()->minY()); - qreal maxX(domain()->maxX()); - qreal maxY(domain()->maxY()); + qreal minX(0.0); + qreal minY(0.0); + qreal maxX(1.0); + qreal maxY(1.0); QLineSeries *upperSeries = q->upperSeries(); QLineSeries *lowerSeries = q->lowerSeries(); @@ -654,25 +654,41 @@ void QAreaSeriesPrivate::initializeDomain() if (upperSeries) { const QVector<QPointF> &points = upperSeries->pointsVector(); - for (int i = 0; i < points.count(); i++) { - qreal x = points[i].x(); - qreal y = points[i].y(); - minX = qMin(minX, x); - minY = qMin(minY, y); - maxX = qMax(maxX, x); - maxY = qMax(maxY, y); + if (!points.isEmpty()) { + minX = points[0].x(); + minY = points[0].y(); + maxX = minX; + maxY = minY; + + for (int i = 0; i < points.count(); i++) { + qreal x = points[i].x(); + qreal y = points[i].y(); + minX = qMin(minX, x); + minY = qMin(minY, y); + maxX = qMax(maxX, x); + maxY = qMax(maxY, y); + } } } if (lowerSeries) { const QVector<QPointF> &points = lowerSeries->pointsVector(); - for (int i = 0; i < points.count(); i++) { - qreal x = points[i].x(); - qreal y = points[i].y(); - minX = qMin(minX, x); - minY = qMin(minY, y); - maxX = qMax(maxX, x); - maxY = qMax(maxY, y); + if (!points.isEmpty()) { + if (!upperSeries) { + minX = points[0].x(); + minY = points[0].y(); + maxX = minX; + maxY = minY; + } + + for (int i = 0; i < points.count(); i++) { + qreal x = points[i].x(); + qreal y = points[i].y(); + minX = qMin(minX, x); + minY = qMin(minY, y); + maxX = qMax(maxX, x); + maxY = qMax(maxY, y); + } } } |