summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-09-23 13:12:50 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-09-23 13:28:57 +0300
commit5261fd6733ab7080989112e08057632dd76f22b3 (patch)
tree242153eac6a4ff415e103051c043f5a0aa258849 /src/datavisualization/engine
parent9f8f25a8b526d636fccf70c9f782b714da865983 (diff)
Label "skewing" fixed
Task-number: QTRD-2322 Change-Id: Ie4bb95dc4f62bad1fef605461452168ea260fa26 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r--src/datavisualization/engine/axisrendercache.cpp2
-rw-r--r--src/datavisualization/engine/bars3drenderer.cpp20
-rw-r--r--src/datavisualization/engine/drawer.cpp3
-rw-r--r--src/datavisualization/engine/scatter3drenderer.cpp14
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp11
5 files changed, 20 insertions, 30 deletions
diff --git a/src/datavisualization/engine/axisrendercache.cpp b/src/datavisualization/engine/axisrendercache.cpp
index c525c777..55ac0765 100644
--- a/src/datavisualization/engine/axisrendercache.cpp
+++ b/src/datavisualization/engine/axisrendercache.cpp
@@ -173,7 +173,7 @@ int AxisRenderCache::maxLabelWidth(const QStringList &labels) const
{
int labelWidth = 0;
QFont labelFont = m_font;
- labelFont.setPointSize(50);
+ labelFont.setPointSize(textureFontSize);
QFontMetrics labelFM(labelFont);
for (int i = 0; i < labels.size(); i++) {
int newWidth = labelFM.width(labels.at(i));
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp
index bf57f21f..b2f3bd41 100644
--- a/src/datavisualization/engine/bars3drenderer.cpp
+++ b/src/datavisualization/engine/bars3drenderer.cpp
@@ -216,7 +216,7 @@ void Bars3DRenderer::updateScene(Q3DScene *scene)
scene->setUnderSideCameraEnabled(m_hasNegativeValues);
if (m_hasHeightAdjustmentChanged) {
// Set initial camera position. Also update if height adjustment has changed.
- scene->activeCamera()->setBaseOrientation(QVector3D(0.0f, 0.0f, 6.0f + zComp),
+ scene->activeCamera()->setBaseOrientation(QVector3D(0.0f, 0.0f, cameraDistance + zComp),
QVector3D(0.0f, -m_yAdjustment, zComp),
QVector3D(0.0f, 1.0f, 0.0f));
m_hasHeightAdjustmentChanged = false;
@@ -363,10 +363,8 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel,
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glCullFace(GL_BACK);
- if (m_cachedLabelTransparency > QDataVis::TransparencyNone) {
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Draw labels for axes
BarRenderItem *dummyItem(0);
@@ -439,8 +437,7 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel,
}
glDisable(GL_TEXTURE_2D);
- if (m_cachedLabelTransparency > QDataVis::TransparencyNone)
- glDisable(GL_BLEND);
+ glDisable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
// Release label shader
@@ -1233,10 +1230,8 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
m_labelShader->bind();
glEnable(GL_TEXTURE_2D);
- if (m_cachedLabelTransparency > QDataVis::TransparencyNone) {
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Calculate the positions for row and column labels and store them
for (int row = 0; row != m_cachedRowCount; row++) {
@@ -1472,8 +1467,7 @@ void Bars3DRenderer::drawScene(GLuint defaultFboHandle)
}
glDisable(GL_TEXTURE_2D);
- if (m_cachedLabelTransparency > QDataVis::TransparencyNone)
- glDisable(GL_BLEND);
+ glDisable(GL_BLEND);
// Release label shader
m_labelShader->release();
diff --git a/src/datavisualization/engine/drawer.cpp b/src/datavisualization/engine/drawer.cpp
index 7fcf581f..307dd63e 100644
--- a/src/datavisualization/engine/drawer.cpp
+++ b/src/datavisualization/engine/drawer.cpp
@@ -309,10 +309,11 @@ void Drawer::drawLabel(const AbstractRenderItem &item, const LabelItem &labelIte
modelMatrix.rotate(rotation.x(), 1.0f, 0.0f, 0.0f);
if (useDepth && !rotateAlong) {
+ qreal yComp = qreal(qRadiansToDegrees(qTan(positionComp.y() / cameraDistance)));
// Apply negative camera rotations to keep labels facing camera
QPointF camRotations = camera->rotations();
modelMatrix.rotate(-camRotations.x(), 0.0f, 1.0f, 0.0f);
- modelMatrix.rotate(-camRotations.y(), 1.0f, 0.0f, 0.0f);
+ modelMatrix.rotate(-camRotations.y() - yComp, 1.0f, 0.0f, 0.0f);
}
// Scale label based on text size
diff --git a/src/datavisualization/engine/scatter3drenderer.cpp b/src/datavisualization/engine/scatter3drenderer.cpp
index 38044bbe..5c643bb2 100644
--- a/src/datavisualization/engine/scatter3drenderer.cpp
+++ b/src/datavisualization/engine/scatter3drenderer.cpp
@@ -170,7 +170,7 @@ void Scatter3DRenderer::updateScene(Q3DScene *scene)
if (m_hasHeightAdjustmentChanged) {
// Set initial m_cachedScene->activeCamera() position. Also update if height adjustment has changed.
- scene->activeCamera()->setBaseOrientation(QVector3D(0.0f, 0.0f, 6.0f + zComp),
+ scene->activeCamera()->setBaseOrientation(QVector3D(0.0f, 0.0f, cameraDistance + zComp),
QVector3D(0.0f, 0.0f, zComp),
QVector3D(0.0f, 1.0f, 0.0f));
m_hasHeightAdjustmentChanged = false;
@@ -1071,10 +1071,8 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
m_labelShader->bind();
glEnable(GL_TEXTURE_2D);
- if (m_cachedLabelTransparency > QDataVis::TransparencyNone) {
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Z Labels
if (m_axisCacheZ.segmentCount() > 0) {
@@ -1333,7 +1331,8 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
QVector3D(0.0f, 0.0f, zComp),
QVector3D(0.0f, 0.0f, 0.0f), 0,
m_cachedSelectionMode, m_labelShader,
- m_labelObj, m_cachedScene->activeCamera(), true, false, Drawer::LabelMid);
+ m_labelObj, m_cachedScene->activeCamera(), true, false,
+ Drawer::LabelMid);
// Reset label update flag; they should have been updated when we get here
m_updateLabels = false;
@@ -1341,8 +1340,7 @@ void Scatter3DRenderer::drawScene(const GLuint defaultFboHandle)
}
glDisable(GL_TEXTURE_2D);
- if (m_cachedLabelTransparency > QDataVis::TransparencyNone)
- glDisable(GL_BLEND);
+ glDisable(GL_BLEND);
// Release label shader
m_labelShader->release();
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 656d469a..9fea6ddb 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -281,7 +281,7 @@ void Surface3DRenderer::updateScene(Q3DScene *scene)
// Set initial camera position
// X must be 0 for rotation to work - we can use "setCameraRotation" for setting it later
if (m_hasHeightAdjustmentChanged) {
- scene->activeCamera()->setBaseOrientation(QVector3D(0.0f, 0.0f, 6.0f + zComp),
+ scene->activeCamera()->setBaseOrientation(QVector3D(0.0f, 0.0f, cameraDistance + zComp),
QVector3D(0.0f, 0.0f, zComp),
QVector3D(0.0f, 1.0f, 0.0f));
// For now this is used just to make things once. Proper use will come
@@ -1006,10 +1006,8 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
// Draw axis labels
m_labelShader->bind();
- if (m_cachedLabelTransparency > QDataVis::TransparencyNone) {
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- }
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// Z Labels
QVector3D positionZComp(0.0f, 0.0f, zComp);
@@ -1179,8 +1177,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
glDisable(GL_TEXTURE_2D);
- if (m_cachedLabelTransparency > QDataVis::TransparencyNone)
- glDisable(GL_BLEND);
+ glDisable(GL_BLEND);
// Release label shader
m_labelShader->release();