summaryrefslogtreecommitdiffstats
path: root/src/graphs2d/qsgrenderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/graphs2d/qsgrenderer')
-rw-r--r--src/graphs2d/qsgrenderer/arearenderer.cpp10
-rw-r--r--src/graphs2d/qsgrenderer/arearenderer_p.h3
-rw-r--r--src/graphs2d/qsgrenderer/barsrenderer.cpp2
-rw-r--r--src/graphs2d/qsgrenderer/pointrenderer.cpp17
-rw-r--r--src/graphs2d/qsgrenderer/pointrenderer_p.h4
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;