diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-12-12 12:17:50 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-12-12 16:19:40 +0000 |
commit | 5404d930276c61a9da11485fc935f76f57d1647a (patch) | |
tree | 67f5208ee714edad91722628b917877d405aad46 /src | |
parent | 903e09edb107afa12909629ba7a865435cd293cf (diff) |
Fix QXYSeries's best fit line not showing in some coordinate ranges
Use the bottom left point of the domain as a starting point.
Amends 28e2fb5a2891bcfb94cee288ec10909a1de29b10.
Fixes: QTBUG-108090
Task-number: QTBUG-89453
Change-Id: I28e948373106fa4d00ed132a6dd11afb7ef2ea6f
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi>
(cherry picked from commit 2672db21a846c071cb31cfcfb974db5d837cfc42)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/charts/xychart/qxyseries.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/charts/xychart/qxyseries.cpp b/src/charts/xychart/qxyseries.cpp index fc04e0f0..e01bf017 100644 --- a/src/charts/xychart/qxyseries.cpp +++ b/src/charts/xychart/qxyseries.cpp @@ -1907,13 +1907,18 @@ void QXYSeriesPrivate::drawBestFitLine(QPainter *painter, const QRectF &clipRect if (!ok) return; - const qreal x1 = clipRect.x(); + auto *domain = this->domain(); + const auto clipOriginX = domain->isReverseX() ? clipRect.right() : clipRect.left(); + const auto clipOriginY = domain->isReverseY() ? clipRect.top() : clipRect.bottom(); + const auto domainOrigin = domain->calculateDomainPoint({clipOriginX, clipOriginY}); + + const qreal x1 = domainOrigin.x(); const qreal y1 = bestFitLineParams.first * x1 + bestFitLineParams.second; - QPointF p1 = domain()->calculateGeometryPoint(QPointF(x1, y1), ok); + QPointF p1 = domain->calculateGeometryPoint(QPointF(x1, y1), ok); - const qreal x2 = clipRect.x() + 1; + const qreal x2 = domainOrigin.x() + 1; const qreal y2 = bestFitLineParams.first * x2 + bestFitLineParams.second; - QPointF p2 = domain()->calculateGeometryPoint(QPointF(x2, y2), ok); + QPointF p2 = domain->calculateGeometryPoint(QPointF(x2, y2), ok); if (ok) { QLineF bestFitLine { p1, p2 }; |