diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-03-12 10:06:26 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-03-12 10:06:26 +0200 |
commit | c9a68b2add928cd6622a4b048fb76f0458c21cac (patch) | |
tree | a81e4083c52def38f9c2e0cf0d23d77775246e77 /src | |
parent | e4155708608a605e44c46af23cc38fa04a1128dc (diff) |
Data set size check added.
Fixed a bug.
Diffstat (limited to 'src')
-rw-r--r-- | src/datavis3d/engine/q3dbars.cpp | 14 |
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(); } |