diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-08-22 16:40:52 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-08-25 08:17:45 +0300 |
commit | f9bb71fd11cce59d74e78202a1117c8abb3a2e44 (patch) | |
tree | 3fcc832dfece19f6158b8b56e395a6c289e26bbe /tests | |
parent | ae411d84b9eac08c217bdda3aa5fbc6f39d03d85 (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.cpp | 23 | ||||
-rw-r--r-- | tests/volumetrictest/volumetrictest.cpp | 25 | ||||
-rw-r--r-- | tests/volumetrictest/volumetrictest.h | 4 |
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 |