summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@qt.io>2017-11-14 18:22:19 +0200
committerMika Salmela <mika.salmela@qt.io>2017-11-16 07:49:06 +0000
commit34b202cf744bf7a5d076634ae2f64921ed3bc7e8 (patch)
tree7706fe4d9fb16e1a0097b4101ca82afbd3e0f420
parent32fc1c7d360fe2eff44666fb1a8c4fb7d538ddc7 (diff)
Render custom items at insertion order
Changes the rendering order of custom items to insertion order. Task-number: QTBUG-64312 Change-Id: I1ce865a3492c145ffa269cd12baa15ffff8d6a59 Reviewed-by: Andy Shaw <andy.shaw@qt.io> Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp6
-rw-r--r--src/datavisualization/engine/abstract3drenderer_p.h1
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.cpp3
3 files changed, 9 insertions, 1 deletions
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index dd3212ac..417be0e8 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -755,6 +755,9 @@ void Abstract3DRenderer::updateCustomData(const QList<QCustom3DItem *> &customIt
delete renderItem;
}
}
+
+ m_customItemDrawOrder.clear();
+ m_customItemDrawOrder = QList<QCustom3DItem *>(customItems);
}
void Abstract3DRenderer::updateCustomItems()
@@ -1436,7 +1439,8 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
bool volumeDetected = false;
int loopCount = 0;
while (loopCount < 2) {
- foreach (CustomRenderItem *item, m_customRenderCache) {
+ for (QCustom3DItem *customItem : qAsConst(m_customItemDrawOrder)) {
+ CustomRenderItem *item = m_customRenderCache.value(customItem);
// Check that the render item is visible, and skip drawing if not
// Also check if reflected item is on the "wrong" side, and skip drawing if it is
if (!item->isVisible() || ((m_reflectionEnabled && reflection < 0.0f)
diff --git a/src/datavisualization/engine/abstract3drenderer_p.h b/src/datavisualization/engine/abstract3drenderer_p.h
index bf64bc6d..c312b771 100644
--- a/src/datavisualization/engine/abstract3drenderer_p.h
+++ b/src/datavisualization/engine/abstract3drenderer_p.h
@@ -267,6 +267,7 @@ protected:
QPoint m_inputPosition;
QHash<QAbstract3DSeries *, SeriesRenderCache *> m_renderCacheList;
CustomRenderItemArray m_customRenderCache;
+ QList<QCustom3DItem *> m_customItemDrawOrder;
QRect m_primarySubViewport;
QRect m_secondarySubViewport;
float m_devicePixelRatio;
diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp
index cb09082e..284ab408 100644
--- a/src/datavisualization/engine/qabstract3dgraph.cpp
+++ b/src/datavisualization/engine/qabstract3dgraph.cpp
@@ -442,6 +442,9 @@ void QAbstract3DGraph::clearSelection()
* if trying to add a null item, and the index of the item if trying to add an
* already added item.
*
+ * Items are rendered in the order they have been inserted. The rendering order needs to
+ * be taken into account when having solid and transparent items.
+ *
* \sa removeCustomItems(), removeCustomItem(), removeCustomItemAt(), customItems()
*
* \since QtDataVisualization 1.1