diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-10-30 13:22:05 +0200 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-10-31 08:05:46 +0200 |
commit | 23c544c4881a5b72fef9d02c40a81cf894ac3309 (patch) | |
tree | 38b1771c44d057a553cc4c808f9237f11c6d434e /src/datavisualization/engine/scatter3drenderer.cpp | |
parent | 1eefb471180746dda5882344deecd750305fea21 (diff) |
Cleaning controller callbacks from renderers, part 1
Input state and position via synchronization
Task-number: QTRD-2216
Change-Id: If53530aa9f65a8668fb628ba86d367149a62e64f
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavisualization/engine/scatter3drenderer.cpp')
-rw-r--r-- | src/datavisualization/engine/scatter3drenderer.cpp | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp index 75440cdc..ed69d88d 100644 --- a/src/datavisualization/engine/scatter3drenderer.cpp +++ b/src/datavisualization/engine/scatter3drenderer.cpp @@ -80,8 +80,7 @@ Scatter3DRenderer::Scatter3DRenderer(Scatter3DController *controller) m_clickedColor(invalidColorVector), m_areaSize(QSizeF(0.0, 0.0)), m_dotSizeScale(1.0f), - m_hasHeightAdjustmentChanged(true), - m_cachedInputState(QDataVis::InputStateNone) + m_hasHeightAdjustmentChanged(true) { initializeOpenGLFunctions(); initializeOpenGL(); @@ -192,17 +191,19 @@ void Scatter3DRenderer::updateScene(Q3DScene *scene) Abstract3DRenderer::updateScene(scene); } -void Scatter3DRenderer::render(GLuint defaultFboHandle) +void Scatter3DRenderer::updateInputState(QDataVis::InputState state) { - // TODO: Can't call back to controller here! (QTRD-2216) - // TODO: Needs to be added to synchronization - QDataVis::InputState currentInputState = m_controller->inputState(); - if (currentInputState != m_cachedInputState) { - if (currentInputState == QDataVis::InputStateOnScene) - m_clickedColor = invalidColorVector; - m_cachedInputState = currentInputState; - } + QDataVis::InputState oldInputState = m_inputState; + + Abstract3DRenderer::updateInputState(state); + // Clear clicked color on input state change + if (oldInputState != m_inputState && m_inputState == QDataVis::InputStateOnScene) + m_clickedColor = invalidColorVector; +} + +void Scatter3DRenderer::render(GLuint defaultFboHandle) +{ // Handle GL state setup for FBO buffers and clearing of the render surface Abstract3DRenderer::render(defaultFboHandle); @@ -386,7 +387,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) // Skip selection mode drawing if we have no selection mode // TODO: Can't call back to controller here! (QTRD-2216) if (m_cachedSelectionMode > QDataVis::SelectionNone - && QDataVis::InputStateOnScene == m_controller->inputState()) { + && QDataVis::InputStateOnScene == m_inputState) { // Bind selection shader m_selectionShader->bind(); @@ -444,7 +445,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle) // Read color under cursor // TODO: Can't call back to controller here! (QTRD-2216) - QVector3D clickedColor = Utils::getSelection(m_controller->inputPosition(), + QVector3D clickedColor = Utils::getSelection(m_inputPosition, m_cachedBoundingRect.height()); if (m_clickedColor == invalidColorVector) { m_clickedColor = clickedColor; |