summaryrefslogtreecommitdiffstats
path: root/src/datavis3d
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-04-18 12:44:16 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-04-19 06:26:01 +0300
commitf3f8bf7f520dc04e2ae9191f89014304591de9e4 (patch)
treee1f1c64a9c49c1a1f56486bb8055e5f4192bbe77 /src/datavis3d
parentf60da8e83af6ad78bb00513adce12d129c034649 (diff)
Fixed labeling for 0 -valued bars
Change-Id: Ia2a2cbf33374793c256e95f67670b97efd0a1aa2 Reviewed-by: Mika Salmela <mika.salmela@digia.com> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'src/datavis3d')
-rw-r--r--src/datavis3d/engine/q3dbars.cpp70
1 files changed, 40 insertions, 30 deletions
diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp
index a5cf18ee..be61a915 100644
--- a/src/datavis3d/engine/q3dbars.cpp
+++ b/src/datavis3d/engine/q3dbars.cpp
@@ -345,9 +345,12 @@ void Q3DBars::drawZoomScene()
QDataItem *item = d_ptr->m_zoomSelection->d_ptr->getItem(bar);
if (!item)
continue;
+
GLfloat barHeight = item->d_ptr->value() / d_ptr->m_heightNormalizer;
+
QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
+
if (ZoomRow == d_ptr->m_selectionMode)
barPosX = item->d_ptr->translation().x();
else
@@ -408,20 +411,22 @@ void Q3DBars::drawZoomScene()
}
}
#endif
- // Set shader bindings
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightP(), lightPos);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->view(), viewMatrix);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->model(), modelMatrix);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->nModel(),
- modelMatrix.inverted().transposed());
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->MVP(), MVPMatrix);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->color(), barColor);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightS(), lightStrength);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->ambientS(),
- d_ptr->m_theme->m_ambientStrength);
+ if (barHeight > 0) {
+ // Set shader bindings
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightP(), lightPos);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->view(), viewMatrix);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->model(), modelMatrix);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->nModel(),
+ modelMatrix.inverted().transposed());
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->MVP(), MVPMatrix);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->color(), barColor);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightS(), lightStrength);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->ambientS(),
+ d_ptr->m_theme->m_ambientStrength);
- // Draw the object
- d_ptr->m_drawer->drawObject(d_ptr->m_barShader, d_ptr->m_barObj);
+ // Draw the object
+ d_ptr->m_drawer->drawObject(d_ptr->m_barShader, d_ptr->m_barObj);
+ }
}
#if 0
if (!barSelectionFound) {
@@ -476,7 +481,6 @@ void Q3DBars::drawZoomScene()
drawLabel(*item, item->d_ptr->label(), viewMatrix, projectionMatrix, false, 0.0f,
LabelOver);
// Draw labels
- // TODO: If there are 0 -valued bars, labeling goes wrong. Fix it.
LabelItem labelItem;
if (ZoomRow == d_ptr->m_selectionMode) {
if (d_ptr->m_dataSet->d_ptr->columnLabelItems().size() > col) {
@@ -605,11 +609,15 @@ void Q3DBars::drawScene()
QDataItem *item = d_ptr->m_dataSet->d_ptr->getRow(row)->d_ptr->getItem(bar);
if (!item)
continue;
+
GLfloat barHeight = item->d_ptr->value() / d_ptr->m_heightNormalizer;
+
QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
+
barPos = (bar + 1) * (d_ptr->m_barSpacing.x());
rowPos = (row + 1) * (d_ptr->m_barSpacing.y());
+
modelMatrix.translate((d_ptr->m_rowWidth - barPos) / d_ptr->m_scaleFactorX,
barHeight - 1.0f,
(d_ptr->m_columnDepth - rowPos) / d_ptr->m_scaleFactorZ
@@ -760,9 +768,9 @@ void Q3DBars::drawScene()
QDataItem *item = d_ptr->m_dataSet->d_ptr->getRow(row)->d_ptr->getItem(bar);
if (!item)
continue;
+
GLfloat barHeight = item->d_ptr->value() / d_ptr->m_heightNormalizer;
- if (barHeight == 0)
- continue;
+
QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
// TODO: Laske rivi- ja sarakelabelien paikat (sijainnit: min-1 ja max+1) ja pistä johonki talteen?
@@ -858,20 +866,22 @@ void Q3DBars::drawScene()
}
}
- // Set shader bindings
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightP(), lightPos);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->view(), viewMatrix);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->model(), modelMatrix);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->nModel(),
- modelMatrix.inverted().transposed());
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->MVP(), MVPMatrix);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->color(), barColor);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightS(), lightStrength);
- d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->ambientS(),
- d_ptr->m_theme->m_ambientStrength);
-
- // Draw the object
- d_ptr->m_drawer->drawObject(d_ptr->m_barShader, d_ptr->m_barObj);
+ if (barHeight > 0) {
+ // Set shader bindings
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightP(), lightPos);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->view(), viewMatrix);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->model(), modelMatrix);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->nModel(),
+ modelMatrix.inverted().transposed());
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->MVP(), MVPMatrix);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->color(), barColor);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->lightS(), lightStrength);
+ d_ptr->m_barShader->setUniformValue(d_ptr->m_barShader->ambientS(),
+ d_ptr->m_theme->m_ambientStrength);
+
+ // Draw the object
+ d_ptr->m_drawer->drawObject(d_ptr->m_barShader, d_ptr->m_barObj);
+ }
}
}
if (!barSelectionFound) {