diff options
Diffstat (limited to 'src/datavisualization/engine/abstract3dcontroller.cpp')
-rw-r--r-- | src/datavisualization/engine/abstract3dcontroller.cpp | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/datavisualization/engine/abstract3dcontroller.cpp b/src/datavisualization/engine/abstract3dcontroller.cpp index 838d6926..98b0c792 100644 --- a/src/datavisualization/engine/abstract3dcontroller.cpp +++ b/src/datavisualization/engine/abstract3dcontroller.cpp @@ -58,7 +58,8 @@ Abstract3DController::Abstract3DController(QRect initialViewport, Q3DScene *scen m_renderPending(false), m_measureFps(false), m_numFrames(0), - m_currentFps(0.0) + m_currentFps(0.0), + m_aspectRatio(2.0f) { if (!m_scene) m_scene = new Q3DScene; @@ -197,6 +198,11 @@ void Abstract3DController::synchDataToRenderer() m_changeTracker.projectionChanged = false; } + if (m_changeTracker.aspectRatioChanged) { + m_renderer->updateAspectRatio(m_aspectRatio); + m_changeTracker.aspectRatioChanged = false; + } + if (m_changeTracker.axisXFormatterChanged) { m_changeTracker.axisXFormatterChanged = false; if (m_axisX->type() & QAbstract3DAxis::AxisTypeValue) { @@ -1416,4 +1422,20 @@ bool Abstract3DController::isOrthoProjection() const return m_useOrthoProjection; } +void Abstract3DController::setAspectRatio(float ratio) +{ + if (m_aspectRatio != ratio) { + m_aspectRatio = ratio; + m_changeTracker.aspectRatioChanged = true; + emit aspectRatioChanged(m_aspectRatio); + m_isDataDirty = true; + emitNeedRender(); + } +} + +float Abstract3DController::aspectRatio() +{ + return m_aspectRatio; +} + QT_END_NAMESPACE_DATAVISUALIZATION |