diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-17 08:13:45 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-17 08:28:38 +0300 |
commit | 15006b2c224f6c7a5cd57d0c7365a1352f488479 (patch) | |
tree | 4a0fc8a40cdfbaab653abdf954255afaa9c25f09 /src/datavisualization/engine | |
parent | be09f1707bf7f53bf6f49d724e7820aea0918e8d (diff) |
Axis title overlap fix
Task-number: QTRD-2263
Change-Id: I3428109e591f299600b29c3fa558d5db4afc4b87
Change-Id: I3428109e591f299600b29c3fa558d5db4afc4b87
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavisualization/engine')
-rw-r--r-- | src/datavisualization/engine/bars3drenderer.cpp | 24 | ||||
-rw-r--r-- | src/datavisualization/engine/drawer.cpp | 15 |
2 files changed, 22 insertions, 17 deletions
diff --git a/src/datavisualization/engine/bars3drenderer.cpp b/src/datavisualization/engine/bars3drenderer.cpp index 7db22dc1..673f2045 100644 --- a/src/datavisualization/engine/bars3drenderer.cpp +++ b/src/datavisualization/engine/bars3drenderer.cpp @@ -224,6 +224,11 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, GLint stopBar = m_sliceSelection->size(); GLint stepBar = 1; QVector3D lightPos; + GLfloat negativesComp = 1.0f; + + // Compensate bar scaling a bit to avoid drawing on axis titles when we have negative values + if (m_cachedScene->isUnderSideCameraEnabled()) + negativesComp = 0.67f; // Specify viewport glViewport(m_sliceViewPort.x(), m_sliceViewPort.y(), @@ -266,14 +271,14 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, QMatrix4x4 MVPMatrix; QMatrix4x4 itModelMatrix; - GLfloat barPosY = item->translation().y() - m_yAdjustment / 2.0f + 0.2f; // we need some room for labels underneath; add +0.2f + GLfloat barPosY = negativesComp * item->translation().y() - m_yAdjustment / 2.0f + 0.2f; // we need some room for labels underneath; add +0.2f if (QDataVis::ModeSliceRow == m_cachedSelectionMode) barPosX = item->translation().x(); else barPosX = -(item->translation().z() - zComp); // flip z; frontmost bar to the left modelMatrix.translate(barPosX, barPosY, zComp); - modelMatrix.scale(QVector3D(m_scaleX, item->height(), m_scaleZ)); - itModelMatrix.scale(QVector3D(m_scaleX, item->height(), m_scaleZ)); + modelMatrix.scale(QVector3D(m_scaleX, negativesComp * item->height(), m_scaleZ)); + itModelMatrix.scale(QVector3D(m_scaleX, negativesComp * item->height(), m_scaleZ)); MVPMatrix = projectionMatrix * viewMatrix * modelMatrix; @@ -335,32 +340,32 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, if (QDataVis::ModeSliceRow == m_cachedSelectionMode) { if (m_sliceTitleItem) { m_drawer->drawLabel(*dummyItem, sliceSelectionLabel, viewMatrix, projectionMatrix, - QVector3D(0.0f, m_yAdjustment, zComp), + QVector3D(0.0f, m_autoScaleAdjustment, zComp), QVector3D(0.0f, 0.0f, 0.0f), 0, m_cachedSelectionMode, m_labelShader, m_labelObj, m_cachedScene->camera(), false, false, Drawer::LabelTop); } m_drawer->drawLabel(*dummyItem, zLabel, viewMatrix, projectionMatrix, - QVector3D(0.0f, m_yAdjustment, zComp), + QVector3D(0.0f, m_autoScaleAdjustment, zComp), QVector3D(0.0f, 0.0f, 0.0f), 0, m_cachedSelectionMode, m_labelShader, m_labelObj, m_cachedScene->camera(), false, false, Drawer::LabelBottom); } else { m_drawer->drawLabel(*dummyItem, xLabel, viewMatrix, projectionMatrix, - QVector3D(0.0f, m_yAdjustment, zComp), + QVector3D(0.0f, m_autoScaleAdjustment, zComp), QVector3D(0.0f, 0.0f, 0.0f), 0, m_cachedSelectionMode, m_labelShader, m_labelObj, m_cachedScene->camera(), false, false, Drawer::LabelBottom); if (m_sliceTitleItem) { m_drawer->drawLabel(*dummyItem, sliceSelectionLabel, viewMatrix, projectionMatrix, - QVector3D(0.0f, m_yAdjustment, zComp), + QVector3D(0.0f, m_autoScaleAdjustment, zComp), QVector3D(0.0f, 0.0f, 0.0f), 0, m_cachedSelectionMode, m_labelShader, m_labelObj, m_cachedScene->camera(), false, false, Drawer::LabelTop); } } m_drawer->drawLabel(*dummyItem, yLabel, viewMatrix, projectionMatrix, - QVector3D(0.0f, m_yAdjustment, zComp), + QVector3D(0.0f, m_autoScaleAdjustment, zComp), QVector3D(0.0f, 0.0f, 90.0f), 0, m_cachedSelectionMode, m_labelShader, m_labelObj, m_cachedScene->camera(), false, false, Drawer::LabelLeft); @@ -371,7 +376,8 @@ void Bars3DRenderer::drawSlicedScene(const LabelItem &xLabel, // Draw values m_drawer->drawLabel(*item, item->sliceLabelItem(), viewMatrix, projectionMatrix, QVector3D(0.0f, m_yAdjustment, zComp), - QVector3D(0.0f, 0.0f, 0.0f), item->height(), + QVector3D(0.0f, 0.0f, 0.0f), + negativesComp * negativesComp * item->height(), m_cachedSelectionMode, m_labelShader, m_labelObj, m_cachedScene->camera()); diff --git a/src/datavisualization/engine/drawer.cpp b/src/datavisualization/engine/drawer.cpp index 284d57c5..75c434cb 100644 --- a/src/datavisualization/engine/drawer.cpp +++ b/src/datavisualization/engine/drawer.cpp @@ -216,31 +216,30 @@ void Drawer::drawLabel(const AbstractRenderItem &item, const LabelItem &labelIte break; } case LabelOver: { - float mod = 0.1f; + float mod = 0.3f; if (itemHeight < 0) - mod = -0.1f; - yPosition = item.translation().y() - (positionComp.y() / 2.0f - 0.2f) - + itemHeight + mod; + mod = 0.15f; + yPosition = item.translation().y() - (positionComp.y() / 2.0f) + itemHeight + mod; break; } case LabelBottom: { - yPosition = -1.95f; // TODO: Calculate from scene + yPosition = -2.95f + positionComp.y(); xPosition = 0.0f; break; } case LabelTop: { - yPosition = 1.95f; // TODO: Calculate from scene + yPosition = 2.95f - positionComp.y(); xPosition = 0.0f; break; } case LabelLeft: { yPosition = 0.0f; - xPosition = -2.5f; // TODO: Calculate from scene + xPosition = -2.95f; break; } case LabelRight: { yPosition = 0.0f; - xPosition = 2.5f; // TODO: Calculate from scene + xPosition = 2.95f; break; } } |