summaryrefslogtreecommitdiffstats
path: root/src/datavisualization/engine
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-09-17 08:13:45 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-09-17 08:28:38 +0300
commit15006b2c224f6c7a5cd57d0c7365a1352f488479 (patch)
tree4a0fc8a40cdfbaab653abdf954255afaa9c25f09 /src/datavisualization/engine
parentbe09f1707bf7f53bf6f49d724e7820aea0918e8d (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.cpp24
-rw-r--r--src/datavisualization/engine/drawer.cpp15
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;
}
}