diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-09-27 13:10:31 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2013-09-27 17:14:08 +0300 |
commit | 3cba32ca2e0ec2d60b0bc330a3284f646bda8a83 (patch) | |
tree | 73b28231746e073b2313bd3edde8d99186c71b9b /tests/kinectsurface | |
parent | d4d99e49c147f4f61c0d5e84e59c023789fae17d (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.cpp | 25 | ||||
-rw-r--r-- | tests/kinectsurface/surfacedata.h | 5 |
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; }; |