diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-23 13:12:50 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-23 13:28:57 +0300 |
commit | 5261fd6733ab7080989112e08057632dd76f22b3 (patch) | |
tree | 242153eac6a4ff415e103051c043f5a0aa258849 /src/datavisualization/engine | |
parent | 9f8f25a8b526d636fccf70c9f782b714da865983 (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.cpp | 2 | ||||
-rw-r--r-- | src/datavisualization/engine/bars3drenderer.cpp | 20 | ||||
-rw-r--r-- | src/datavisualization/engine/drawer.cpp | 3 | ||||
-rw-r--r-- | src/datavisualization/engine/scatter3drenderer.cpp | 14 | ||||
-rw-r--r-- | src/datavisualization/engine/surface3drenderer.cpp | 11 |
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(); |