summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-09-17 11:25:06 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-09-17 11:31:14 +0300
commit3e795fd544331f4f38bcc667410f9c931f82bdf4 (patch)
tree781c68df8d520df19343cfd77de1590410bb7500 /src/datavisualization
parentabcb511f9ea94a7654a1f27c2215bbf8d9ce9607 (diff)
Fixed custom item wrong side reflection
Task-number: QTRD-3311 Change-Id: Ia5aea90259c249a5ffd48e16fae4e2dc33902afd Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc4
-rw-r--r--src/datavisualization/engine/abstract3drenderer.cpp6
-rw-r--r--src/datavisualization/engine/qabstract3dgraph.cpp4
3 files changed, 12 insertions, 2 deletions
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc
index 5dc7b35c..b1d74dd6 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-abstractdeclarative.qdoc
@@ -357,6 +357,10 @@
*
* \note Affects only Bars3D.
*
+ * \note In Bars3D graphs holding both positive and negative values, reflections are not supported
+ * for custom items that intersect the floor plane. In that case, reflections should be turned off
+ * to avoid incorrect rendering.
+ *
* \sa reflectivity
*/
diff --git a/src/datavisualization/engine/abstract3drenderer.cpp b/src/datavisualization/engine/abstract3drenderer.cpp
index f0f332fe..a0e0bc45 100644
--- a/src/datavisualization/engine/abstract3drenderer.cpp
+++ b/src/datavisualization/engine/abstract3drenderer.cpp
@@ -1291,8 +1291,11 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
while (loopCount < 2) {
foreach (CustomRenderItem *item, m_customRenderCache) {
// Check that the render item is visible, and skip drawing if not
- if (!item->isVisible())
+ // Also check if reflected item is on the "wrong" side, and skip drawing if it is
+ if (!item->isVisible() || ((m_reflectionEnabled && reflection < 0.0f)
+ && (m_yFlipped == item->translation().y() >= 0.0))) {
continue;
+ }
if (loopCount == 0) {
if (item->isVolume()) {
volumeDetected = true;
@@ -1434,7 +1437,6 @@ void Abstract3DRenderer::drawCustomItems(RenderingState state,
shader->setUniformValue(shader->minBounds(), item->minBounds());
shader->setUniformValue(shader->maxBounds(), item->maxBounds());
- QVector3D slices;
if (shader == m_volumeTextureSliceShader) {
shader->setUniformValue(shader->volumeSliceIndices(),
item->sliceFractions());
diff --git a/src/datavisualization/engine/qabstract3dgraph.cpp b/src/datavisualization/engine/qabstract3dgraph.cpp
index a1cd7c56..d906666c 100644
--- a/src/datavisualization/engine/qabstract3dgraph.cpp
+++ b/src/datavisualization/engine/qabstract3dgraph.cpp
@@ -729,6 +729,10 @@ qreal QAbstract3DGraph::horizontalAspectRatio() const
*
* \note Affects only Q3DBars.
*
+ * \note In Q3DBars graphs holding both positive and negative values, reflections are not supported
+ * for custom items that intersect the floor plane. In that case, reflections should be turned off
+ * to avoid incorrect rendering.
+ *
* \sa reflectivity
*/
void QAbstract3DGraph::setReflection(bool enable)