summaryrefslogtreecommitdiffstats
path: root/tests/kinectsurface/main.cpp
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-09-27 11:24:42 +0300
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-09-27 11:39:16 +0300
commit2d9dbd6bcb2c1a75f0a4230868854c495b2d530a (patch)
tree1642a0c311805ed6235c04c025f8a417fd4792d2 /tests/kinectsurface/main.cpp
parent1628d6a96629ccb99c57f14131e5188ae2488347 (diff)
Kinect demo update
+ visualization type can be selected on run-time Change-Id: I2f57ad18a261b264b3b0b958d2d367a1fd2795ef Change-Id: I2f57ad18a261b264b3b0b958d2d367a1fd2795ef Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'tests/kinectsurface/main.cpp')
-rw-r--r--tests/kinectsurface/main.cpp62
1 files changed, 40 insertions, 22 deletions
diff --git a/tests/kinectsurface/main.cpp b/tests/kinectsurface/main.cpp
index bc82a38e..f428ba2d 100644
--- a/tests/kinectsurface/main.cpp
+++ b/tests/kinectsurface/main.cpp
@@ -37,25 +37,37 @@ int main(int argc, char **argv)
QHBoxLayout *hLayout = new QHBoxLayout(widget);
QVBoxLayout *vLayout = new QVBoxLayout();
-#if defined(USE_SCATTER)
- Q3DScatter *surface = new Q3DScatter();
-#elif defined(USE_BARS)
- Q3DBars *surface = new Q3DBars();
-#else
Q3DSurface *surface = new Q3DSurface();
-#endif
+ Q3DScatter *scatter = new Q3DScatter();
+ Q3DBars *bars = new Q3DBars();
QSize screenSize = surface->screen()->size();
- QWidget *container = QWidget::createWindowContainer(surface);
- container->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2));
- container->setMaximumSize(screenSize);
- container->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
- container->setFocusPolicy(Qt::StrongFocus);
-
- widget->setWindowTitle(QStringLiteral("Surface mapping from Kinect depth data"));
-
- hLayout->addWidget(container, 1);
+ QWidget *containerSurface = QWidget::createWindowContainer(surface);
+ containerSurface->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2));
+ containerSurface->setMaximumSize(screenSize);
+ containerSurface->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ containerSurface->setFocusPolicy(Qt::StrongFocus);
+
+ QWidget *containerScatter = QWidget::createWindowContainer(scatter);
+ containerScatter->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2));
+ containerScatter->setMaximumSize(screenSize);
+ containerScatter->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ containerScatter->setFocusPolicy(Qt::StrongFocus);
+ containerScatter->setVisible(false);
+
+ QWidget *containerBars = QWidget::createWindowContainer(bars);
+ containerBars->setMinimumSize(QSize(screenSize.width() / 2, screenSize.height() / 2));
+ containerBars->setMaximumSize(screenSize);
+ containerBars->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ containerBars->setFocusPolicy(Qt::StrongFocus);
+ containerBars->setVisible(false);
+
+ widget->setWindowTitle(QStringLiteral("Visualization from Kinect depth data"));
+
+ hLayout->addWidget(containerSurface, 1);
+ hLayout->addWidget(containerScatter, 1);
+ hLayout->addWidget(containerBars, 1);
hLayout->addLayout(vLayout);
QPushButton *startButton = new QPushButton(widget);
@@ -71,6 +83,12 @@ int main(int argc, char **argv)
resolutionBox->addItem(QStringLiteral("Max")); // Comment this out if demo machine is low-perf
resolutionBox->setCurrentIndex(0);
+ QComboBox *modeBox = new QComboBox(widget);
+ modeBox->addItem(QStringLiteral("Surface Plot"));
+ modeBox->addItem(QStringLiteral("Scatter Chart"));
+ modeBox->addItem(QStringLiteral("Bar Chart"));
+ modeBox->setCurrentIndex(0);
+
QSlider *distanceSlider = new QSlider(Qt::Horizontal, widget);
distanceSlider->setTickInterval(10);
distanceSlider->setTickPosition(QSlider::TicksBelow);
@@ -78,7 +96,6 @@ int main(int argc, char **argv)
distanceSlider->setValue(50);
distanceSlider->setMaximum(200);
-#if !defined(USE_SCATTER) && !defined(USE_BARS)
QLinearGradient gradientOne(0, 0, 200, 1);
gradientOne.setColorAt(0.0, Qt::black);
gradientOne.setColorAt(0.33, Qt::blue);
@@ -109,7 +126,6 @@ int main(int argc, char **argv)
gradientTwoButton->setIcon(QIcon(pm));
gradientTwoButton->setIconSize(QSize(200, 24));
gradientTwoButton->setToolTip(QStringLiteral("Colors: Highlight Foreground"));
-#endif
QTextEdit *status = new QTextEdit(QStringLiteral("<b>Ready</b><br>"), widget);
status->setReadOnly(true);
@@ -118,30 +134,32 @@ int main(int argc, char **argv)
vLayout->addWidget(stopButton);
vLayout->addWidget(new QLabel(QStringLiteral("Change resolution")));
vLayout->addWidget(resolutionBox);
+ vLayout->addWidget(new QLabel(QStringLiteral("Change visualization type")));
+ vLayout->addWidget(modeBox);
vLayout->addWidget(new QLabel(QStringLiteral("Adjust far distance")));
vLayout->addWidget(distanceSlider);
-#if !defined(USE_SCATTER) && !defined(USE_BARS)
vLayout->addWidget(new QLabel(QStringLiteral("Change color scheme")));
vLayout->addWidget(gradientOneButton);
vLayout->addWidget(gradientTwoButton);
-#endif
vLayout->addWidget(status, 1, Qt::AlignBottom);
widget->show();
- SurfaceData *datagen = new SurfaceData(surface, status);
+ SurfaceData *datagen = new SurfaceData(surface, scatter, bars, status);
+ ContainerChanger changer(containerSurface, containerScatter, containerBars,
+ gradientOneButton, gradientTwoButton);
QObject::connect(startButton, &QPushButton::clicked, datagen, &SurfaceData::start);
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(modeBox, SIGNAL(activated(int)), &changer, SLOT(changeContainer(int)));
+ QObject::connect(modeBox, SIGNAL(activated(int)), datagen, SLOT(changeMode(int)));
QObject::connect(status, &QTextEdit::textChanged, datagen, &SurfaceData::scrollDown);
-#if !defined(USE_SCATTER) && !defined(USE_BARS)
QObject::connect(gradientOneButton, &QPushButton::clicked, datagen,
&SurfaceData::useGradientOne);
QObject::connect(gradientTwoButton, &QPushButton::clicked, datagen,
&SurfaceData::useGradientTwo);
-#endif
datagen->setDistance(distanceSlider->value());