summaryrefslogtreecommitdiffstats
path: root/tests/kinectsurface
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-09-27 13:10:31 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2013-09-27 17:14:08 +0300
commit3cba32ca2e0ec2d60b0bc330a3284f646bda8a83 (patch)
tree73b28231746e073b2313bd3edde8d99186c71b9b /tests/kinectsurface
parentd4d99e49c147f4f61c0d5e84e59c023789fae17d (diff)
Kinect demo update
+ took bar and scatter data array optimization into use Change-Id: I0c5b7a2caf113e916989a97ba4f79d644feacc2b Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'tests/kinectsurface')
-rw-r--r--tests/kinectsurface/surfacedata.cpp25
-rw-r--r--tests/kinectsurface/surfacedata.h5
2 files changed, 18 insertions, 12 deletions
diff --git a/tests/kinectsurface/surfacedata.cpp b/tests/kinectsurface/surfacedata.cpp
index 66fc705b..e2e50ad8 100644
--- a/tests/kinectsurface/surfacedata.cpp
+++ b/tests/kinectsurface/surfacedata.cpp
@@ -20,9 +20,6 @@
#include "surfacedata.h"
#include "QKinectWrapper.h"
-#include <QtDataVisualization/QScatterDataProxy>
-#include <QtDataVisualization/QBarDataProxy>
-#include <QtDataVisualization/QHeightMapSurfaceDataProxy>
#include <QtDataVisualization/Q3DValueAxis>
#include <QScrollBar>
#include <QSize>
@@ -95,7 +92,6 @@ SurfaceData::SurfaceData(Q3DSurface *surface, Q3DScatter *scatter, Q3DBars *bars
SurfaceData::~SurfaceData()
{
- delete m_surface;
}
void SurfaceData::updateData()
@@ -188,9 +184,17 @@ void SurfaceData::setResolution(int selection)
m_scatter->axisX()->setMax(m_resolution.width() / 2);
m_scatter->axisZ()->setMin(-m_resolution.height() / 2);
m_scatter->axisZ()->setMax(m_resolution.height() / 2);
+ m_scatterDataArray = new QScatterDataArray;
+ m_scatterDataArray->resize(m_resolution.width() * m_resolution.height());
} else if (m_mode == Bars) {
m_resize = true;
m_resolution /= 4;
+ m_barDataArray = new QBarDataArray;
+ m_barDataArray->reserve(m_resolution.height());
+ for (int i = 0; i < m_resolution.height(); i++) {
+ QBarDataRow *newProxyRow = new QBarDataRow(m_resolution.width());
+ m_barDataArray->append(newProxyRow);
+ }
}
m_statusArea->append(QString(QStringLiteral("<b>Resolution:</b> %1 x %2")).arg(
@@ -240,8 +244,7 @@ void SurfaceData::setData(const QImage &image)
int widthBits = imageWidth * 4;
if (m_mode == Scatter) {
- QScatterDataArray *dataArray = new QScatterDataArray;
- dataArray->resize(imageHeight * imageWidth);
+ QScatterDataArray *dataArray = m_scatterDataArray;
QScatterDataItem *ptrToDataArray = &dataArray->first();
int limitsX = imageWidth / 2;
@@ -260,13 +263,11 @@ void SurfaceData::setData(const QImage &image)
static_cast<QScatterDataProxy *>(m_scatter->activeDataProxy())->resetArray(dataArray);
} else {
- QBarDataArray *dataArray = new QBarDataArray;
- dataArray->reserve(imageHeight);
- for (int i = imageHeight; i > 0; i--, bitCount -= widthBits) {
- QBarDataRow *newRow = new QBarDataRow(imageWidth);
+ QBarDataArray *dataArray = m_barDataArray;
+ for (int i = 0; i < imageHeight; i++, bitCount -= widthBits) {
+ QBarDataRow &newRow = *dataArray->at(i);
for (int j = 0; j < imageWidth; j++)
- (*newRow)[j] = qreal(bits[bitCount + (j * 4)]);
- *dataArray << newRow;
+ newRow[j] = qreal(bits[bitCount + (j * 4)]);
}
static_cast<QBarDataProxy *>(m_bars->activeDataProxy())->resetArray(dataArray);
diff --git a/tests/kinectsurface/surfacedata.h b/tests/kinectsurface/surfacedata.h
index 0b6b41f9..586fcfb6 100644
--- a/tests/kinectsurface/surfacedata.h
+++ b/tests/kinectsurface/surfacedata.h
@@ -23,6 +23,9 @@
#include <QtDataVisualization/Q3DScatter>
#include <QtDataVisualization/Q3DBars>
#include <QtDataVisualization/Q3DSurface>
+#include <QtDataVisualization/QScatterDataProxy>
+#include <QtDataVisualization/QBarDataProxy>
+#include <QtDataVisualization/QHeightMapSurfaceDataProxy>
#include <QTextEdit>
using namespace QtDataVisualization;
@@ -68,6 +71,8 @@ private:
QSize m_resolution;
int m_resolutionLevel;
VisualizationMode m_mode;
+ QScatterDataArray *m_scatterDataArray;
+ QBarDataArray *m_barDataArray;
QKinect::QKinectWrapper m_kinect;
};