mirror of https://github.com/qt/qtdatavis3d.git
Kinect demo update
+ took bar and scatter data array optimization into use Change-Id: I0c5b7a2caf113e916989a97ba4f79d644feacc2b Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
This commit is contained in:
parent
d4d99e49c1
commit
3cba32ca2e
|
|
@ -20,9 +20,6 @@
|
||||||
|
|
||||||
#include "surfacedata.h"
|
#include "surfacedata.h"
|
||||||
#include "QKinectWrapper.h"
|
#include "QKinectWrapper.h"
|
||||||
#include <QtDataVisualization/QScatterDataProxy>
|
|
||||||
#include <QtDataVisualization/QBarDataProxy>
|
|
||||||
#include <QtDataVisualization/QHeightMapSurfaceDataProxy>
|
|
||||||
#include <QtDataVisualization/Q3DValueAxis>
|
#include <QtDataVisualization/Q3DValueAxis>
|
||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QSize>
|
#include <QSize>
|
||||||
|
|
@ -95,7 +92,6 @@ SurfaceData::SurfaceData(Q3DSurface *surface, Q3DScatter *scatter, Q3DBars *bars
|
||||||
|
|
||||||
SurfaceData::~SurfaceData()
|
SurfaceData::~SurfaceData()
|
||||||
{
|
{
|
||||||
delete m_surface;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SurfaceData::updateData()
|
void SurfaceData::updateData()
|
||||||
|
|
@ -188,9 +184,17 @@ void SurfaceData::setResolution(int selection)
|
||||||
m_scatter->axisX()->setMax(m_resolution.width() / 2);
|
m_scatter->axisX()->setMax(m_resolution.width() / 2);
|
||||||
m_scatter->axisZ()->setMin(-m_resolution.height() / 2);
|
m_scatter->axisZ()->setMin(-m_resolution.height() / 2);
|
||||||
m_scatter->axisZ()->setMax(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) {
|
} else if (m_mode == Bars) {
|
||||||
m_resize = true;
|
m_resize = true;
|
||||||
m_resolution /= 4;
|
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(
|
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;
|
int widthBits = imageWidth * 4;
|
||||||
|
|
||||||
if (m_mode == Scatter) {
|
if (m_mode == Scatter) {
|
||||||
QScatterDataArray *dataArray = new QScatterDataArray;
|
QScatterDataArray *dataArray = m_scatterDataArray;
|
||||||
dataArray->resize(imageHeight * imageWidth);
|
|
||||||
QScatterDataItem *ptrToDataArray = &dataArray->first();
|
QScatterDataItem *ptrToDataArray = &dataArray->first();
|
||||||
|
|
||||||
int limitsX = imageWidth / 2;
|
int limitsX = imageWidth / 2;
|
||||||
|
|
@ -260,13 +263,11 @@ void SurfaceData::setData(const QImage &image)
|
||||||
|
|
||||||
static_cast<QScatterDataProxy *>(m_scatter->activeDataProxy())->resetArray(dataArray);
|
static_cast<QScatterDataProxy *>(m_scatter->activeDataProxy())->resetArray(dataArray);
|
||||||
} else {
|
} else {
|
||||||
QBarDataArray *dataArray = new QBarDataArray;
|
QBarDataArray *dataArray = m_barDataArray;
|
||||||
dataArray->reserve(imageHeight);
|
for (int i = 0; i < imageHeight; i++, bitCount -= widthBits) {
|
||||||
for (int i = imageHeight; i > 0; i--, bitCount -= widthBits) {
|
QBarDataRow &newRow = *dataArray->at(i);
|
||||||
QBarDataRow *newRow = new QBarDataRow(imageWidth);
|
|
||||||
for (int j = 0; j < imageWidth; j++)
|
for (int j = 0; j < imageWidth; j++)
|
||||||
(*newRow)[j] = qreal(bits[bitCount + (j * 4)]);
|
newRow[j] = qreal(bits[bitCount + (j * 4)]);
|
||||||
*dataArray << newRow;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static_cast<QBarDataProxy *>(m_bars->activeDataProxy())->resetArray(dataArray);
|
static_cast<QBarDataProxy *>(m_bars->activeDataProxy())->resetArray(dataArray);
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,9 @@
|
||||||
#include <QtDataVisualization/Q3DScatter>
|
#include <QtDataVisualization/Q3DScatter>
|
||||||
#include <QtDataVisualization/Q3DBars>
|
#include <QtDataVisualization/Q3DBars>
|
||||||
#include <QtDataVisualization/Q3DSurface>
|
#include <QtDataVisualization/Q3DSurface>
|
||||||
|
#include <QtDataVisualization/QScatterDataProxy>
|
||||||
|
#include <QtDataVisualization/QBarDataProxy>
|
||||||
|
#include <QtDataVisualization/QHeightMapSurfaceDataProxy>
|
||||||
#include <QTextEdit>
|
#include <QTextEdit>
|
||||||
|
|
||||||
using namespace QtDataVisualization;
|
using namespace QtDataVisualization;
|
||||||
|
|
@ -68,6 +71,8 @@ private:
|
||||||
QSize m_resolution;
|
QSize m_resolution;
|
||||||
int m_resolutionLevel;
|
int m_resolutionLevel;
|
||||||
VisualizationMode m_mode;
|
VisualizationMode m_mode;
|
||||||
|
QScatterDataArray *m_scatterDataArray;
|
||||||
|
QBarDataArray *m_barDataArray;
|
||||||
QKinect::QKinectWrapper m_kinect;
|
QKinect::QKinectWrapper m_kinect;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue