summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@digia.com>2014-08-22 16:40:52 +0300
committerMiikka Heikkinen <miikka.heikkinen@digia.com>2014-08-25 08:17:45 +0300
commitf9bb71fd11cce59d74e78202a1117c8abb3a2e44 (patch)
tree3fcc832dfece19f6158b8b56e395a6c289e26bbe /tests
parentae411d84b9eac08c217bdda3aa5fbc6f39d03d85 (diff)
Implement API function for rendering volume slice to an image.
Change-Id: Iea18967c3b525a8d4507a06e6541c85ed3abb470 Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/volumetrictest/main.cpp23
-rw-r--r--tests/volumetrictest/volumetrictest.cpp25
-rw-r--r--tests/volumetrictest/volumetrictest.h4
3 files changed, 48 insertions, 4 deletions
diff --git a/tests/volumetrictest/main.cpp b/tests/volumetrictest/main.cpp
index a15caf88..e838c43a 100644
--- a/tests/volumetrictest/main.cpp
+++ b/tests/volumetrictest/main.cpp
@@ -77,16 +77,37 @@ int main(int argc, char **argv)
QLabel *fpsLabel = new QLabel(QStringLiteral("Fps: "), widget);
+ QLabel *sliceImageXLabel = new QLabel(widget);
+ QLabel *sliceImageYLabel = new QLabel(widget);
+ QLabel *sliceImageZLabel = new QLabel(widget);
+ sliceImageXLabel->setMinimumSize(QSize(200, 100));
+ sliceImageYLabel->setMinimumSize(QSize(200, 200));
+ sliceImageZLabel->setMinimumSize(QSize(200, 100));
+ sliceImageXLabel->setMaximumSize(QSize(200, 100));
+ sliceImageYLabel->setMaximumSize(QSize(200, 200));
+ sliceImageZLabel->setMaximumSize(QSize(200, 100));
+ sliceImageXLabel->setFrameShape(QFrame::Box);
+ sliceImageYLabel->setFrameShape(QFrame::Box);
+ sliceImageZLabel->setFrameShape(QFrame::Box);
+ sliceImageXLabel->setScaledContents(true);
+ sliceImageYLabel->setScaledContents(true);
+ sliceImageZLabel->setScaledContents(true);
+
vLayout->addWidget(fpsLabel);
vLayout->addWidget(sliceXCheckBox);
vLayout->addWidget(sliceXSlider);
+ vLayout->addWidget(sliceImageXLabel);
vLayout->addWidget(sliceYCheckBox);
vLayout->addWidget(sliceYSlider);
+ vLayout->addWidget(sliceImageYLabel);
vLayout->addWidget(sliceZCheckBox);
- vLayout->addWidget(sliceZSlider, 1, Qt::AlignTop);
+ vLayout->addWidget(sliceZSlider);
+ vLayout->addWidget(sliceImageZLabel, 1, Qt::AlignTop);
+
VolumetricModifier *modifier = new VolumetricModifier(graph);
modifier->setFpsLabel(fpsLabel);
+ modifier->setSliceLabels(sliceImageXLabel, sliceImageYLabel, sliceImageZLabel);
QObject::connect(sliceXCheckBox, &QCheckBox::stateChanged, modifier,
&VolumetricModifier::sliceX);
diff --git a/tests/volumetrictest/volumetrictest.cpp b/tests/volumetrictest/volumetrictest.cpp
index 701cfc04..3485dd24 100644
--- a/tests/volumetrictest/volumetrictest.cpp
+++ b/tests/volumetrictest/volumetrictest.cpp
@@ -66,6 +66,8 @@ VolumetricModifier::VolumetricModifier(Q3DScatter *scatter)
m_graph->addCustomItem(m_plainItem);
//m_graph->setMeasureFps(true);
+
+
QObject::connect(m_graph, &QAbstract3DGraph::currentFpsChanged, this,
&VolumetricModifier::handleFpsChange);
// QObject::connect(m_graph->scene(), &Q3DScene::viewportChanged, this,
@@ -110,6 +112,9 @@ void VolumetricModifier::adjustSliceX(int value)
m_volumeItem->setSliceIndexX(m_sliceIndexX);
m_volumeItem2->setSliceIndexX(m_sliceIndexX);
}
+ m_sliceLabelX->setPixmap(QPixmap::fromImage(
+ m_volumeItem2->renderSlice(Qt::XAxis, m_sliceIndexX)));
+
}
void VolumetricModifier::adjustSliceY(int value)
@@ -122,6 +127,8 @@ void VolumetricModifier::adjustSliceY(int value)
m_volumeItem->setSliceIndexY(m_sliceIndexY);
m_volumeItem2->setSliceIndexY(m_sliceIndexY);
}
+ m_sliceLabelY->setPixmap(QPixmap::fromImage(
+ m_volumeItem2->renderSlice(Qt::YAxis, m_sliceIndexY)));
}
void VolumetricModifier::adjustSliceZ(int value)
@@ -134,6 +141,8 @@ void VolumetricModifier::adjustSliceZ(int value)
m_volumeItem->setSliceIndexZ(m_sliceIndexZ);
m_volumeItem2->setSliceIndexZ(m_sliceIndexZ);
}
+ m_sliceLabelZ->setPixmap(QPixmap::fromImage(
+ m_volumeItem2->renderSlice(Qt::ZAxis, m_sliceIndexZ)));
}
void VolumetricModifier::handleFpsChange()
@@ -208,8 +217,8 @@ void VolumetricModifier::createVolume()
uchar *p = data;
// Change one picture using subtexture replacement
-// QImage flipped = logo.mirrored();
-// m_volumeItem->setSubTextureData(101, flipped);
+ QImage flipped = logo.mirrored();
+ m_volumeItem->setSubTextureData(100, flipped);
// Clean up the two extra pixels
p = data + width - 1;
@@ -337,7 +346,7 @@ void VolumetricModifier::createAnotherVolume()
// Change one picture using subtexture replacement
QImage flipped = logo.mirrored();
- m_volumeItem2->setSubTextureData(101, flipped);
+ m_volumeItem2->setSubTextureData(100, flipped);
}
void VolumetricModifier::createYetAnotherVolume()
@@ -485,3 +494,13 @@ void VolumetricModifier::createYetAnotherVolume()
}
+void VolumetricModifier::setSliceLabels(QLabel *xLabel, QLabel *yLabel, QLabel *zLabel)
+{
+ m_sliceLabelX = xLabel;
+ m_sliceLabelY = yLabel;
+ m_sliceLabelZ = zLabel;
+
+ adjustSliceX(512);
+ adjustSliceY(512);
+ adjustSliceZ(512);
+}
diff --git a/tests/volumetrictest/volumetrictest.h b/tests/volumetrictest/volumetrictest.h
index 40d88192..f21fd528 100644
--- a/tests/volumetrictest/volumetrictest.h
+++ b/tests/volumetrictest/volumetrictest.h
@@ -35,6 +35,7 @@ public:
~VolumetricModifier();
void setFpsLabel(QLabel *fpsLabel);
+ void setSliceLabels(QLabel *xLabel, QLabel *yLabel, QLabel *zLabel);
public slots:
void sliceX(int enabled);
@@ -59,6 +60,9 @@ private:
int m_sliceIndexY;
int m_sliceIndexZ;
QLabel *m_fpsLabel;
+ QLabel *m_sliceLabelX;
+ QLabel *m_sliceLabelY;
+ QLabel *m_sliceLabelZ;
};
#endif