diff options
Diffstat (limited to 'src/graphs2d/qsgrenderer')
-rw-r--r-- | src/graphs2d/qsgrenderer/arearenderer.cpp | 10 | ||||
-rw-r--r-- | src/graphs2d/qsgrenderer/arearenderer_p.h | 3 | ||||
-rw-r--r-- | src/graphs2d/qsgrenderer/barsrenderer.cpp | 2 | ||||
-rw-r--r-- | src/graphs2d/qsgrenderer/pointrenderer.cpp | 17 | ||||
-rw-r--r-- | src/graphs2d/qsgrenderer/pointrenderer_p.h | 4 |
5 files changed, 34 insertions, 2 deletions
diff --git a/src/graphs2d/qsgrenderer/arearenderer.cpp b/src/graphs2d/qsgrenderer/arearenderer.cpp index 19ffe7e5..a35e64e5 100644 --- a/src/graphs2d/qsgrenderer/arearenderer.cpp +++ b/src/graphs2d/qsgrenderer/arearenderer.cpp @@ -34,6 +34,11 @@ AreaRenderer::~AreaRenderer() qDeleteAll(m_groups); } +void AreaRenderer::resetShapePathCount() +{ + m_currentShapePathIndex = 0; +} + void AreaRenderer::calculateRenderCoordinates(qreal origX, qreal origY, qreal *renderX, @@ -86,6 +91,11 @@ void AreaRenderer::handlePolish(QAreaSeries *series) auto group = m_groups.value(series); + auto data = m_shape.data(); + group->shapePath = qobject_cast<QQuickShapePath *>(data.at(&data, m_currentShapePathIndex)); + + m_currentShapePathIndex++; + if (upper->points().count() < 2 || (lower && lower->points().count() < 2)) { auto painterPath = group->painterPath; painterPath.clear(); diff --git a/src/graphs2d/qsgrenderer/arearenderer_p.h b/src/graphs2d/qsgrenderer/arearenderer_p.h index ce5dd494..5d299e78 100644 --- a/src/graphs2d/qsgrenderer/arearenderer_p.h +++ b/src/graphs2d/qsgrenderer/arearenderer_p.h @@ -33,6 +33,8 @@ public: AreaRenderer(QGraphsView *graph, bool clipPlotArea); ~AreaRenderer() override; + void resetShapePathCount(); + void handlePolish(QAreaSeries *series); void afterPolish(QList<QAbstractSeries *> &cleanupSeries); void afterUpdate(QList<QAbstractSeries *> &cleanupSeries); @@ -59,6 +61,7 @@ private: QGraphsView *m_graph = nullptr; QQuickShape m_shape; QMap<QAreaSeries *, PointGroup *> m_groups; + qsizetype m_currentShapePathIndex = 0; // Render area variables qreal m_maxVertical = 0; diff --git a/src/graphs2d/qsgrenderer/barsrenderer.cpp b/src/graphs2d/qsgrenderer/barsrenderer.cpp index dd86b360..76c00af7 100644 --- a/src/graphs2d/qsgrenderer/barsrenderer.cpp +++ b/src/graphs2d/qsgrenderer/barsrenderer.cpp @@ -170,6 +170,7 @@ void BarsRenderer::updateComponents(QBarSeries *series) auto &barItem = barItems[barIndex]; barItem->setX(d.rect.x()); barItem->setY(d.rect.y()); + barItem->setZ(series->drawOrder()); barItem->setWidth(d.rect.width()); barItem->setHeight(d.rect.height()); barItem->setVisible(series->isVisible()); @@ -194,6 +195,7 @@ void BarsRenderer::updateComponents(QBarSeries *series) if (barItem) { barItem->setX(d.rect.x()); barItem->setY(d.rect.y()); + barItem->setZ(series->drawOrder()); barItem->setWidth(d.rect.width()); barItem->setHeight(d.rect.height()); barItem->setVisible(series->isVisible()); diff --git a/src/graphs2d/qsgrenderer/pointrenderer.cpp b/src/graphs2d/qsgrenderer/pointrenderer.cpp index 208b84a2..54bdd4a7 100644 --- a/src/graphs2d/qsgrenderer/pointrenderer.cpp +++ b/src/graphs2d/qsgrenderer/pointrenderer.cpp @@ -72,6 +72,11 @@ PointRenderer::~PointRenderer() qDeleteAll(m_groups); } +void PointRenderer::resetShapePathCount() +{ + m_currentShapePathIndex = 0; +} + qreal PointRenderer::defaultSize(QXYSeries *series) { qreal size = 16.0; @@ -513,12 +518,19 @@ void PointRenderer::handlePolish(QXYSeries *series) group->shapePath = new QQuickShapePath(&m_shape); group->shapePath->setAsynchronous(true); auto data = m_shape.data(); - data.append(&data, m_groups.value(series)->shapePath); + data.append(&data, group->shapePath); } } auto group = m_groups.value(series); + if (series->type() != QAbstractSeries::SeriesType::Scatter) { + auto data = m_shape.data(); + group->shapePath = qobject_cast<QQuickShapePath *>(data.at(&data, m_currentShapePathIndex)); + + m_currentShapePathIndex++; + } + qsizetype pointCount = series->points().size(); if ((series->type() == QAbstractSeries::SeriesType::Scatter) && !series->pointDelegate()) @@ -597,6 +609,9 @@ void PointRenderer::handlePolish(QXYSeries *series) group->markers.clear(); } + for (auto &&marker : group->markers) + marker->setZ(group->series->drawOrder()); + if (group->colorIndex < 0) { group->colorIndex = m_graph->graphSeriesCount(); m_graph->setGraphSeriesCount(group->colorIndex + 1); diff --git a/src/graphs2d/qsgrenderer/pointrenderer_p.h b/src/graphs2d/qsgrenderer/pointrenderer_p.h index 34cdbad9..288c007d 100644 --- a/src/graphs2d/qsgrenderer/pointrenderer_p.h +++ b/src/graphs2d/qsgrenderer/pointrenderer_p.h @@ -39,6 +39,8 @@ public: PointRenderer(QGraphsView *graph, bool clipPlotArea); ~PointRenderer() override; + void resetShapePathCount(); + void handlePolish(QXYSeries *series); void afterPolish(QList<QAbstractSeries *> &cleanupSeries); void updateSeries(QXYSeries *series); @@ -67,7 +69,7 @@ private: QGraphsView *m_graph = nullptr; QQuickShape m_shape; QMap<QXYSeries *, PointGroup *> m_groups; - qsizetype m_currentColorIndex = 0; + qsizetype m_currentShapePathIndex = 0; // Point drag variables QPoint m_previousDelta; |