summaryrefslogtreecommitdiffstats
path: root/src/datavis3d
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-04-26 12:58:17 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-04-26 13:31:44 +0300
commitf5ea9177d146f17329d104fa61d606bfc7eeb2dc (patch)
treeb80b0f786178a4724e25aeb0f610d8300f4e5c32 /src/datavis3d
parent8de575f99afac171f656fc5ebba4febaeac9c373 (diff)
Crash fix
Row/column labeling crashed when there were no label items for them. Added a check. Change-Id: Ia49d823e3e95869858b2691410ad4fbf95200373 Change-Id: Ia49d823e3e95869858b2691410ad4fbf95200373 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'src/datavis3d')
-rw-r--r--src/datavis3d/engine/q3dbars.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp
index 536502e7..1a5332a6 100644
--- a/src/datavis3d/engine/q3dbars.cpp
+++ b/src/datavis3d/engine/q3dbars.cpp
@@ -800,6 +800,8 @@ void Q3DBars::drawScene()
// Release bar shader
d_ptr->m_barShader->release();
+ // TODO: Grid lines to background
+
// Bind background shader
d_ptr->m_backgroundShader->bind();
@@ -954,6 +956,8 @@ void Q3DBars::drawScene()
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
}
+ // TODO: Handle issues with long labels being covered by bars (align left or right side of label instead of center, depending on flip direction)
+ // TODO: -> add alignment enum to drawLabel
// Calculate the positions for row and column labels and store them into QDataItems (and QDataRows?)
for (int row = 0; row != d_ptr->m_sampleCount.second; row += 1) {
// Go through all rows and get position of max+1 or min-1 column, depending on x flip
@@ -976,8 +980,10 @@ void Q3DBars::drawScene()
// Create a data item
QDataItem *label = new QDataItem();
label->d_ptr->setTranslation(labelPos);
- label->d_ptr->setLabel(d_ptr->m_dataSet->d_ptr->rowLabelItems().at(
- d_ptr->m_dataSet->d_ptr->rowLabelItems().size() - row - 1));
+ if (d_ptr->m_dataSet->d_ptr->rowLabelItems().size() > row) {
+ label->d_ptr->setLabel(d_ptr->m_dataSet->d_ptr->rowLabelItems().at(
+ d_ptr->m_dataSet->d_ptr->rowLabelItems().size() - row - 1));
+ }
//qDebug() << "labelPos, row" << row + 1 << ":" << labelPos << d_ptr->m_dataSet->d_ptr->rowLabels().at(row);
@@ -1007,8 +1013,11 @@ void Q3DBars::drawScene()
// Create a data item
QDataItem *label = new QDataItem();
label->d_ptr->setTranslation(labelPos);
- label->d_ptr->setLabel(d_ptr->m_dataSet->d_ptr->columnLabelItems().at(
- d_ptr->m_dataSet->d_ptr->columnLabelItems().size() - bar - 1));
+ if (d_ptr->m_dataSet->d_ptr->columnLabelItems().size() > bar) {
+ label->d_ptr->setLabel(d_ptr->m_dataSet->d_ptr->columnLabelItems().at(
+ d_ptr->m_dataSet->d_ptr->columnLabelItems().size()
+ - bar - 1));
+ }
//qDebug() << "labelPos, col" << bar + 1 << ":" << labelPos << d_ptr->m_dataSet->d_ptr->columnLabels().at(bar);