summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine/abstract3dcontroller.cpp
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2014-05-14 11:19:28 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2014-05-14 11:27:55 +0300
commit824cf363f6ab999d2fc38ebdab1f7faae5559ad0 (patch)
tree7e86d13dae8619bffb2a22bd56a07de538d2f0ca /src/datavisualization/engine/abstract3dcontroller.cpp
parent5f9be2bd06a3f0f8286325ad1eb323aa692126eb (diff)
Added option to use orthographic projection
Task-number: QTRD-3078 Change-Id: I07ebc2b7edd542cd28e405dfc80282f18b7a7314 Reviewed-by: Mika Salmela <mika.salmela@digia.com> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine/abstract3dcontroller.cpp')
-rw-r--r--src/datavisualization/engine/abstract3dcontroller.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp
index 7c30f1c0..6b6f154d 100644
--- a/src/datavisualization/engine/abstract3dcontroller.cpp
+++ b/src/datavisualization/engine/abstract3dcontroller.cpp
@@ -43,6 +43,7 @@ Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scen
m_themeManager(new ThemeManager(this)),
m_selectionMode(QAbstract3DGraph::SelectionItem),
m_shadowQuality(QAbstract3DGraph::ShadowQualityMedium),
+ m_useOrthoProjection(false),
m_scene(scene),
m_activeInputHandler(0),
m_axisX(0),
@@ -189,6 +190,11 @@ void Abstract3DController::synchDataToRenderer()
m_changeTracker.selectionModeChanged = false;
}
+ if (m_changeTracker.projectionChanged) {
+ m_renderer->m_useOrthoProjection = m_useOrthoProjection;
+ m_changeTracker.projectionChanged = false;
+ }
+
if (m_changeTracker.axisXFormatterChanged) {
m_changeTracker.axisXFormatterChanged = false;
if (m_axisX->type() & QAbstract3DAxis::AxisTypeValue) {
@@ -795,6 +801,12 @@ QAbstract3DGraph::SelectionFlags Abstract3DController::selectionMode() const
void Abstract3DController::setShadowQuality(QAbstract3DGraph::ShadowQuality quality)
{
+ if (!m_useOrthoProjection)
+ doSetShadowQuality(quality);
+}
+
+void Abstract3DController::doSetShadowQuality(QAbstract3DGraph::ShadowQuality quality)
+{
if (quality != m_shadowQuality) {
m_shadowQuality = quality;
m_changeTracker.shadowQualityChanged = true;
@@ -1313,4 +1325,22 @@ QCustom3DItem *Abstract3DController::selectedCustomItem() const
return item;
}
+void Abstract3DController::setOrthoProjection(bool enable)
+{
+ if (enable != m_useOrthoProjection) {
+ m_useOrthoProjection = enable;
+ m_changeTracker.projectionChanged = true;
+ emit orthoProjectionChanged(m_useOrthoProjection);
+ // If changed to ortho, disable shadows
+ if (m_useOrthoProjection)
+ doSetShadowQuality(QAbstract3DGraph::ShadowQualityNone);
+ emitNeedRender();
+ }
+}
+
+bool Abstract3DController::isOrthoProjection() const
+{
+ return m_useOrthoProjection;
+}
+
QT_END_NAMESPACE_DATAVISUALIZATION