diff options
Diffstat (limited to 'src/datavisualization/engine/abstract3dcontroller.cpp')
-rw-r--r-- | src/datavisualization/engine/abstract3dcontroller.cpp | 30 |
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 |