summaryrefslogtreecommitdiffstats
path: root/tests/kinectsurface
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-09-26 13:30:08 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-09-26 13:31:31 +0300
commit48f8fc6a63a25970c2fac66ae6a201d67fed2f9d (patch)
treea492e6fd338dd1b519cf3fcd020704a2e4c9bcca /tests/kinectsurface
parent037d0960a2bde8ad310a9917055c7c0c3488152a (diff)
Kinect demo updated
Change-Id: Ide3da14d644bd5a88414a82a0fcdb52eb4ead3cc Change-Id: Ide3da14d644bd5a88414a82a0fcdb52eb4ead3cc Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'tests/kinectsurface')
-rw-r--r--tests/kinectsurface/main.cpp47
-rw-r--r--tests/kinectsurface/surfacedata.cpp74
-rw-r--r--tests/kinectsurface/surfacedata.h9
3 files changed, 105 insertions, 25 deletions
diff --git a/tests/kinectsurface/main.cpp b/tests/kinectsurface/main.cpp
index 0f9b9731..b9469c8b 100644
--- a/tests/kinectsurface/main.cpp
+++ b/tests/kinectsurface/main.cpp
@@ -26,6 +26,7 @@
#include <QLabel>
#include <QComboBox>
#include <QSlider>
+#include <QTextEdit>
#include <QScreen>
int main(int argc, char **argv)
@@ -70,8 +71,39 @@ int main(int argc, char **argv)
distanceSlider->setValue(50);
distanceSlider->setMaximum(200);
- QLabel *status = new QLabel(widget);
- status->setText(QStringLiteral("Stopped"));
+ QLinearGradient gradientOne(0, 0, 200, 1);
+ gradientOne.setColorAt(0.0, Qt::black);
+ gradientOne.setColorAt(0.33, Qt::blue);
+ gradientOne.setColorAt(0.67, Qt::red);
+ gradientOne.setColorAt(1.0, Qt::yellow);
+
+ QPixmap pm(200, 24);
+ QPainter pmp(&pm);
+ pmp.setBrush(QBrush(gradientOne));
+ pmp.setPen(Qt::NoPen);
+ pmp.drawRect(0, 0, 200, 24);
+
+ QPushButton *gradientOneButton = new QPushButton(widget);
+ gradientOneButton->setIcon(QIcon(pm));
+ gradientOneButton->setIconSize(QSize(200, 24));
+ gradientOneButton->setToolTip(QStringLiteral("Colors: Thermal Imitation"));
+
+ QLinearGradient gradientTwo(0, 0, 200, 1);
+ gradientTwo.setColorAt(0.0, Qt::white);
+ gradientTwo.setColorAt(0.8, Qt::red);
+ gradientTwo.setColorAt(1.0, Qt::green);
+
+ pmp.setBrush(QBrush(gradientTwo));
+ pmp.setPen(Qt::NoPen);
+ pmp.drawRect(0, 0, 200, 24);
+
+ QPushButton *gradientTwoButton = new QPushButton(widget);
+ gradientTwoButton->setIcon(QIcon(pm));
+ gradientTwoButton->setIconSize(QSize(200, 24));
+ gradientTwoButton->setToolTip(QStringLiteral("Colors: Highlight Foreground"));
+
+ QTextEdit *status = new QTextEdit(QStringLiteral("<b>Ready</b><br>"), widget);
+ status->setReadOnly(true);
vLayout->addWidget(startButton);
vLayout->addWidget(stopButton);
@@ -79,8 +111,10 @@ int main(int argc, char **argv)
vLayout->addWidget(resolutionBox);
vLayout->addWidget(new QLabel(QStringLiteral("Adjust far distance")));
vLayout->addWidget(distanceSlider);
- vLayout->addWidget(new QLabel(QStringLiteral("Kinect state:")), 1, Qt::AlignBottom);
- vLayout->addWidget(status, 0, Qt::AlignBottom);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change color scheme")));
+ vLayout->addWidget(gradientOneButton);
+ vLayout->addWidget(gradientTwoButton);
+ vLayout->addWidget(status, 1, Qt::AlignBottom);
widget->show();
@@ -90,6 +124,11 @@ int main(int argc, char **argv)
QObject::connect(stopButton, &QPushButton::clicked, datagen, &SurfaceData::stop);
QObject::connect(distanceSlider, &QSlider::valueChanged, datagen, &SurfaceData::setDistance);
QObject::connect(resolutionBox, SIGNAL(activated(int)), datagen, SLOT(setResolution(int)));
+ QObject::connect(status, &QTextEdit::textChanged, datagen, &SurfaceData::scrollDown);
+ QObject::connect(gradientOneButton, &QPushButton::clicked, datagen,
+ &SurfaceData::useGradientOne);
+ QObject::connect(gradientTwoButton, &QPushButton::clicked, datagen,
+ &SurfaceData::useGradientTwo);
datagen->setDistance(distanceSlider->value());
diff --git a/tests/kinectsurface/surfacedata.cpp b/tests/kinectsurface/surfacedata.cpp
index d635f954..1b19d136 100644
--- a/tests/kinectsurface/surfacedata.cpp
+++ b/tests/kinectsurface/surfacedata.cpp
@@ -20,20 +20,23 @@
#include "surfacedata.h"
#include "QKinectWrapper.h"
-#include <QHeightMapSurfaceDataProxy>
-#include <Q3DValueAxis>
+#include <QtDataVisualization/QHeightMapSurfaceDataProxy>
+#include <QtDataVisualization/Q3DValueAxis>
+#include <QScrollBar>
+#include <QSize>
#include <QDebug>
QT_DATAVISUALIZATION_USE_NAMESPACE
-SurfaceData::SurfaceData(Q3DSurface *surface, QLabel *statusLabel) :
+SurfaceData::SurfaceData(Q3DSurface *surface, QTextEdit *statusArea) :
m_surface(surface),
- m_statusLabel(statusLabel),
+ m_statusArea(statusArea),
m_resize(true),
m_resolution(QSize(320, 240))
{
// Initialize surface
+ m_surface->setTheme(QDataVis::ThemeIsabelle);
QLinearGradient gradient;
gradient.setColorAt(0.0, Qt::black);
gradient.setColorAt(0.33, Qt::blue);
@@ -47,6 +50,9 @@ SurfaceData::SurfaceData(Q3DSurface *surface, QLabel *statusLabel) :
m_surface->setSmoothSurfaceEnabled(false);
m_surface->setActiveDataProxy(new QHeightMapSurfaceDataProxy());
+ // Hide scroll bar
+ m_statusArea->verticalScrollBar()->setVisible(false);
+
// Connect Kinect signals
connect(&m_kinect, &QKinect::QKinectWrapper::dataNotification, this, &SurfaceData::updateData);
connect(&m_kinect, &QKinect::QKinectWrapper::statusNotification, this,
@@ -70,19 +76,22 @@ void SurfaceData::updateStatus(QKinect::KinectStatus status)
{
switch (status) {
case QKinect::Idle: {
- m_statusLabel->setText(QStringLiteral("Stopped"));
+ m_statusArea->append(QStringLiteral("<b>Kinect:</b> Stopped"));
+ m_statusArea->append(QStringLiteral("<br><b>Ready</b><br>"));
break;
}
case QKinect::Initializing: {
- m_statusLabel->setText(QStringLiteral("Initializing"));
+ m_statusArea->append(QStringLiteral("<b>Kinect:</b> Initializing"));
break;
}
case QKinect::OkRun: {
- m_statusLabel->setText(QStringLiteral("Ok"));
+ m_statusArea->append(QStringLiteral("<b>Kinect:</b> Running"));
+ m_statusArea->append(QString(QStringLiteral("<i> - resolution: %1 x %2</i>")).arg(
+ m_resolution.width()).arg(m_resolution.height()));
break;
}
default: {
- m_statusLabel->setText(QStringLiteral("Error"));
+ m_statusArea->append(QStringLiteral("<b>Kinect:</b> Error"));
break;
}
};
@@ -90,22 +99,18 @@ void SurfaceData::updateStatus(QKinect::KinectStatus status)
void SurfaceData::start()
{
- if (m_kinect.isStopped()) {
+ if (m_kinect.isStopped())
m_kinect.start();
-#ifdef USE_TIMER_UPDATE
- m_updateTimer.start();
-#endif
- }
+ else
+ m_statusArea->append(QStringLiteral("<b>Kinect:</b> Already running"));
}
void SurfaceData::stop()
{
- if (m_kinect.isRunning()) {
+ if (m_kinect.isRunning())
m_kinect.stop();
-#ifdef USE_TIMER_UPDATE
- m_updateTimer.stop();
-#endif
- }
+ else
+ m_statusArea->append(QStringLiteral("<b>Kinect:</b> Already stopped"));
}
void SurfaceData::setDistance(int distance)
@@ -137,4 +142,37 @@ void SurfaceData::setResolution(int selection)
break;
}
};
+ m_statusArea->append(QString(QStringLiteral("<b>Resolution:</b> %1 x %2")).arg(
+ m_resolution.width()).arg(m_resolution.height()));
+ if (m_kinect.isStopped())
+ m_statusArea->append(QStringLiteral("<i> - change takes effect once Kinect is running</i>"));
+}
+
+void SurfaceData::scrollDown()
+{
+ QScrollBar *scrollbar = m_statusArea->verticalScrollBar();
+ scrollbar->setValue(scrollbar->maximum());
+}
+
+void SurfaceData::useGradientOne()
+{
+ m_surface->setTheme(QDataVis::ThemeIsabelle);
+ QLinearGradient gradient;
+ gradient.setColorAt(0.0, Qt::black);
+ gradient.setColorAt(0.33, Qt::blue);
+ gradient.setColorAt(0.67, Qt::red);
+ gradient.setColorAt(1.0, Qt::yellow);
+ m_surface->setGradient(gradient);
+ m_statusArea->append(QStringLiteral("<b>Colors:</b> Thermal image imitation"));
+}
+
+void SurfaceData::useGradientTwo()
+{
+ m_surface->setTheme(QDataVis::ThemeQt);
+ QLinearGradient gradient;
+ gradient.setColorAt(0.0, Qt::white);
+ gradient.setColorAt(0.8, Qt::red);
+ gradient.setColorAt(1.0, Qt::green);
+ m_surface->setGradient(gradient);
+ m_statusArea->append(QStringLiteral("<b>Colors:</b> Highlight foreground"));
}
diff --git a/tests/kinectsurface/surfacedata.h b/tests/kinectsurface/surfacedata.h
index 2c59206b..24b92fad 100644
--- a/tests/kinectsurface/surfacedata.h
+++ b/tests/kinectsurface/surfacedata.h
@@ -21,7 +21,7 @@
#include "QKinectWrapper.h"
#include <QtDataVisualization/q3dsurface.h>
-#include <QLabel>
+#include <QTextEdit>
using namespace QtDataVisualization;
@@ -30,7 +30,7 @@ class SurfaceData : public QObject
Q_OBJECT
public:
- explicit SurfaceData(Q3DSurface *surface, QLabel *statusLabel);
+ explicit SurfaceData(Q3DSurface *surface, QTextEdit *statusLabel);
~SurfaceData();
void start();
@@ -40,13 +40,16 @@ public:
void updateStatus(QKinect::KinectStatus status);
void setDistance(int distance);
+ void scrollDown();
+ void useGradientOne();
+ void useGradientTwo();
public slots:
void setResolution(int selection);
private:
Q3DSurface *m_surface;
- QLabel *m_statusLabel;
+ QTextEdit *m_statusArea;
bool m_resize;
QSize m_resolution;
QKinect::QKinectWrapper m_kinect;