diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-04-26 12:58:17 +0300 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-04-26 13:31:44 +0300 |
commit | f5ea9177d146f17329d104fa61d606bfc7eeb2dc (patch) | |
tree | b80b0f786178a4724e25aeb0f610d8300f4e5c32 /src/datavis3d | |
parent | 8de575f99afac171f656fc5ebba4febaeac9c373 (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.cpp | 17 |
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); |