summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-03-12 10:06:26 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-03-12 10:06:26 +0200
commitc9a68b2add928cd6622a4b048fb76f0458c21cac (patch)
treea81e4083c52def38f9c2e0cf0d23d77775246e77 /src
parente4155708608a605e44c46af23cc38fa04a1128dc (diff)
Data set size check added.
Fixed a bug.
Diffstat (limited to 'src')
-rw-r--r--src/datavis3d/engine/q3dbars.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/datavis3d/engine/q3dbars.cpp b/src/datavis3d/engine/q3dbars.cpp
index a35e291b..12574439 100644
--- a/src/datavis3d/engine/q3dbars.cpp
+++ b/src/datavis3d/engine/q3dbars.cpp
@@ -426,8 +426,16 @@ void Q3DBars::addDataRow(const QVector<float> &dataRow)
void Q3DBars::addDataSet(const QVector<QVector<float>> &data)
{
d_ptr->m_dataSet.clear();
- // TODO: Check sizes
+ // Check sizes
+ if (data.at(0).size() > d_ptr->m_sampleCount.x()) {
+ qCritical("Too much data per row, aborting");
+ return;
+ }
d_ptr->m_dataSet = data;
+ if (d_ptr->m_dataSet.size() > d_ptr->m_sampleCount.y()) {
+ qWarning("Data set too large for sample space. Cropping it to fit.");
+ d_ptr->m_dataSet.resize(d_ptr->m_sampleCount.y());
+ }
}
void Q3DBars::setBarSpecs(QPointF thickness, QPointF spacing, bool relative)
@@ -508,8 +516,8 @@ void Q3DBars::setupSampleSpace(QPoint sampleCount)
}
// TODO: Invent "idiotproof" max scene size formula..
// This seems to work ok if spacing is not negative
- m_maxSceneSize = 2 * qSqrt(sampleCount.x() * sampleCount.y());
- //qDebug() << "maxSceneSize" << m_maxSceneSize;
+ d_ptr->m_maxSceneSize = 2 * qSqrt(sampleCount.x() * sampleCount.y());
+ //qDebug() << "maxSceneSize" << d_ptr->m_maxSceneSize;
// Calculate here and at setting bar specs
d_ptr->calculateSceneScalingFactors();
}