diff options
author | Mika Salmela <mika.salmela@digia.com> | 2013-09-26 14:21:11 +0300 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-09-26 14:22:37 +0300 |
commit | 9d0495cae3181f2caf52235df9a4fb81b48789c1 (patch) | |
tree | 630f86c4e1818b78d76dd195aef8c4517dda432c /src/datavisualization | |
parent | 48f8fc6a63a25970c2fac66ae6a201d67fed2f9d (diff) |
Fixed ball positioning when surface scaled
Scaling taked into account on normalization.
Task-number: QTRD-2330
Change-Id: Ib3cf89693e8aa3a0b939f2974fd74007015090c7
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization')
-rw-r--r-- | src/datavisualization/engine/selectionpointer.cpp | 11 | ||||
-rw-r--r-- | src/datavisualization/engine/selectionpointer_p.h | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 13 |
3 files changed, 9 insertions, 17 deletions
diff --git a/src/datavisualization/engine/selectionpointer.cpp b/src/datavisualization/engine/selectionpointer.cpp index 3178863d..f60b510b 100644 --- a/src/datavisualization/engine/selectionpointer.cpp +++ b/src/datavisualization/engine/selectionpointer.cpp @@ -111,8 +111,6 @@ void SelectionPointer::render(GLuint defaultFboHandle) viewMatrix = camera->viewMatrix(); } - itModelMatrix.scale(m_scale); - // Calculate scale factor to get uniform font size GLfloat scaledFontSize = 0.05f + m_drawer->font().pointSizeF() / 500.0f; GLfloat scaleFactor = scaledFontSize / (GLfloat)textureSize.height(); @@ -126,7 +124,7 @@ void SelectionPointer::render(GLuint defaultFboHandle) QMatrix4x4 MVPMatrix; // Position the pointer ball - modelMatrix.translate(m_position * m_scale + QVector3D(0.0f, 0.0f, zComp)); + modelMatrix.translate(m_position + QVector3D(0.0f, 0.0f, zComp)); // Scale the point with fixed values (at this point) modelMatrix.scale(QVector3D(0.05f, 0.05f, 0.05f)); @@ -163,7 +161,7 @@ void SelectionPointer::render(GLuint defaultFboHandle) // Position label QVector3D labelAlign(0.0f, 1.0f * scaledFontSize + 0.05f, 0.0f); - modelMatrixLabel.translate(m_position * m_scale + labelAlign + QVector3D(0.0f, 0.0f, zComp)); + modelMatrixLabel.translate(m_position + labelAlign + QVector3D(0.0f, 0.0f, zComp)); // Position the label towards the camera QPointF camRotations = camera->rotations(); @@ -210,11 +208,6 @@ void SelectionPointer::setPosition(QVector3D position) m_position = position; } -void SelectionPointer::setScaling(QVector3D scaling) -{ - m_scale = scaling; -} - void SelectionPointer::updateSliceData(bool sliceActivated, GLfloat autoScaleAdjustment) { m_cachedIsSlicingActivated = sliceActivated; diff --git a/src/datavisualization/engine/selectionpointer_p.h b/src/datavisualization/engine/selectionpointer_p.h index c6d2514b..e4c4dab0 100644 --- a/src/datavisualization/engine/selectionpointer_p.h +++ b/src/datavisualization/engine/selectionpointer_p.h @@ -62,7 +62,6 @@ public: void initializeOpenGL(); void render(GLuint defaultFboHandle = 0); void setPosition(QVector3D position); - void setScaling(QVector3D scaling); void setLabel(QString label); void updateLabel(); void updateTheme(Theme theme); @@ -89,7 +88,6 @@ private: Drawer *m_drawer; QRect m_mainViewPort; QVector3D m_position; - QVector3D m_scale; Q3DScene *m_cachedScene; QString m_label; bool m_cachedIsSlicingActivated; diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp index 9a95805f..0c234910 100644 --- a/src/datavisualization/engine/surface3drenderer.cpp +++ b/src/datavisualization/engine/surface3drenderer.cpp @@ -1819,20 +1819,21 @@ void Surface3DRenderer::surfacePointSelected(int id) QVector3D pos; if (m_cachedSelectionMode == QDataVis::ModeSliceRow) { pos = normalize(float(column), value, 0.0f); - pos += QVector3D(m_surfaceOffsetX, 0.0f, -1.0f); - m_selectionPointer->setScaling(QVector3D(m_surfaceScaleX, 1.0f, sliceZScale)); + pos *= QVector3D(m_surfaceScaleX, 1.0f, 0.0f); + pos += QVector3D(m_surfaceOffsetX, 0.0f, 0.0f); m_selectionPointer->updateBoundingRect(m_sliceViewPort); m_selectionPointer->updateSliceData(true, m_autoScaleAdjustment); } else if (m_cachedSelectionMode == QDataVis::ModeSliceColumn) { - pos = normalize(float(row), value, 0.0f); - pos += QVector3D(m_surfaceOffsetZ, 0.0f, -1.0f); - m_selectionPointer->setScaling(QVector3D(m_surfaceScaleZ, 1.0f, sliceZScale)); + pos = normalize(0.0f, value, float(row)); + pos.setX(-pos.z()); + pos *= QVector3D(m_surfaceScaleZ, 1.0f, 0.0f); + pos += QVector3D(-m_surfaceOffsetZ, 0.0f, 0.0f); m_selectionPointer->updateBoundingRect(m_sliceViewPort); m_selectionPointer->updateSliceData(true, m_autoScaleAdjustment); } else { pos = normalize(float(column), value, float(row)); + pos *= QVector3D(m_surfaceScaleX, 1.0f, m_surfaceScaleZ);; pos += QVector3D(m_surfaceOffsetX, 0.0f, m_surfaceOffsetZ); - m_selectionPointer->setScaling(QVector3D(m_surfaceScaleX, 1.0f, m_surfaceScaleZ)); m_selectionPointer->updateBoundingRect(m_mainViewPort); m_selectionPointer->updateSliceData(false, m_autoScaleAdjustment); } |