summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-09-26 14:21:11 +0300
committerMika Salmela <mika.salmela@digia.com>2013-09-26 14:22:37 +0300
commit9d0495cae3181f2caf52235df9a4fb81b48789c1 (patch)
tree630f86c4e1818b78d76dd195aef8c4517dda432c /src/datavisualization
parent48f8fc6a63a25970c2fac66ae6a201d67fed2f9d (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.cpp11
-rw-r--r--src/datavisualization/engine/selectionpointer_p.h2
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp13
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);
}