diff options
author | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-08-05 14:00:08 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2014-08-06 08:39:25 +0300 |
commit | dd99eb73740ad015a2a2d28481e5a2ca8ab1d7b1 (patch) | |
tree | bcbbd462e547cd958b1343412d0a14e920b5c453 /tests/scattertest | |
parent | 73f127d8ef1937aa77ba0ec0be63f0bfd6cf92ab (diff) |
Enable camera targeting.
Also fix custom item positioning in absolute mode as it was completely
broken in bars and z-coord was flipped in others.
Clarified Q3DObject::position property usage, namely that it is reserved
for internal use for now.
Some refactoring also done.
Task-number: QTRD-2567
Change-Id: I5da65b83a2f8ecf20f8fd054e59748278ef1a714
Reviewed-by: Titta Heikkala <titta.heikkala@digia.com>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@digia.com>
Diffstat (limited to 'tests/scattertest')
-rw-r--r-- | tests/scattertest/main.cpp | 47 | ||||
-rw-r--r-- | tests/scattertest/scatterchart.cpp | 24 | ||||
-rw-r--r-- | tests/scattertest/scatterchart.h | 5 |
3 files changed, 67 insertions, 9 deletions
diff --git a/tests/scattertest/main.cpp b/tests/scattertest/main.cpp index 55515cb0..116a4dc2 100644 --- a/tests/scattertest/main.cpp +++ b/tests/scattertest/main.cpp @@ -41,6 +41,7 @@ int main(int argc, char **argv) QHBoxLayout *hLayout = new QHBoxLayout(widget); QVBoxLayout *vLayout = new QVBoxLayout(); QVBoxLayout *vLayout2 = new QVBoxLayout(); + QVBoxLayout *vLayout3 = new QVBoxLayout(); Q3DScatter *chart = new Q3DScatter(); QSize screenSize = chart->screen()->size(); @@ -56,6 +57,7 @@ int main(int argc, char **argv) hLayout->addWidget(container, 1); hLayout->addLayout(vLayout); hLayout->addLayout(vLayout2); + hLayout->addLayout(vLayout3); QPushButton *themeButton = new QPushButton(widget); themeButton->setText(QStringLiteral("Change theme")); @@ -276,6 +278,22 @@ int main(int argc, char **argv) radialLabelSlider->setValue(100); radialLabelSlider->setMaximum(150); + QSlider *cameraTargetSliderX = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderX->setTickInterval(1); + cameraTargetSliderX->setMinimum(-100); + cameraTargetSliderX->setValue(0); + cameraTargetSliderX->setMaximum(100); + QSlider *cameraTargetSliderY = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderY->setTickInterval(1); + cameraTargetSliderY->setMinimum(-100); + cameraTargetSliderY->setValue(0); + cameraTargetSliderY->setMaximum(100); + QSlider *cameraTargetSliderZ = new QSlider(Qt::Horizontal, widget); + cameraTargetSliderZ->setTickInterval(1); + cameraTargetSliderZ->setMinimum(-100); + cameraTargetSliderZ->setValue(0); + cameraTargetSliderZ->setMaximum(100); + vLayout->addWidget(themeButton, 0, Qt::AlignTop); vLayout->addWidget(labelButton, 0, Qt::AlignTop); vLayout->addWidget(styleButton, 0, Qt::AlignTop); @@ -326,15 +344,20 @@ int main(int argc, char **argv) vLayout2->addWidget(aspectRatioSlider); vLayout2->addWidget(new QLabel(QStringLiteral("Adjust horizontal aspect ratio"))); vLayout2->addWidget(horizontalAspectRatioSlider, 1, Qt::AlignTop); - vLayout2->addWidget(optimizationStaticCB); - vLayout2->addWidget(orthoCB); - vLayout2->addWidget(polarCB); - vLayout2->addWidget(axisTitlesVisibleCB); - vLayout2->addWidget(axisTitlesFixedCB); - vLayout2->addWidget(new QLabel(QStringLiteral("Axis label rotation"))); - vLayout2->addWidget(axisLabelRotationSlider); - vLayout2->addWidget(new QLabel(QStringLiteral("Radial label offset"))); - vLayout2->addWidget(radialLabelSlider, 1, Qt::AlignTop); + + vLayout3->addWidget(optimizationStaticCB); + vLayout3->addWidget(orthoCB); + vLayout3->addWidget(polarCB); + vLayout3->addWidget(axisTitlesVisibleCB); + vLayout3->addWidget(axisTitlesFixedCB); + vLayout3->addWidget(new QLabel(QStringLiteral("Axis label rotation"))); + vLayout3->addWidget(axisLabelRotationSlider); + vLayout3->addWidget(new QLabel(QStringLiteral("Radial label offset"))); + vLayout3->addWidget(radialLabelSlider, 0, Qt::AlignTop); + vLayout3->addWidget(new QLabel(QStringLiteral("Camera target")), 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderX, 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderY, 0, Qt::AlignTop); + vLayout3->addWidget(cameraTargetSliderZ, 1, Qt::AlignTop); ScatterDataModifier *modifier = new ScatterDataModifier(chart); @@ -440,6 +463,12 @@ int main(int argc, char **argv) &ScatterDataModifier::setHorizontalAspectRatio); QObject::connect(radialLabelSlider, &QSlider::valueChanged, modifier, &ScatterDataModifier::changeRadialLabelOffset); + QObject::connect(cameraTargetSliderX, &QSlider::valueChanged, modifier, + &ScatterDataModifier::setCameraTargetX); + QObject::connect(cameraTargetSliderY, &QSlider::valueChanged, modifier, + &ScatterDataModifier::setCameraTargetY); + QObject::connect(cameraTargetSliderZ, &QSlider::valueChanged, modifier, + &ScatterDataModifier::setCameraTargetZ); modifier->setFpsLabel(fpsLabel); diff --git a/tests/scattertest/scatterchart.cpp b/tests/scattertest/scatterchart.cpp index 5db772b5..35d56236 100644 --- a/tests/scattertest/scatterchart.cpp +++ b/tests/scattertest/scatterchart.cpp @@ -993,6 +993,30 @@ void ScatterDataModifier::toggleOrtho(bool enable) m_chart->setOrthoProjection(enable); } +void ScatterDataModifier::setCameraTargetX(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setX(float(value) / 100.0f); + m_chart->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + +void ScatterDataModifier::setCameraTargetY(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setY(float(value) / 100.0f); + m_chart->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + +void ScatterDataModifier::setCameraTargetZ(int value) +{ + // Value is (-100, 100), normalize + m_cameraTarget.setZ(float(value) / 100.0f); + m_chart->scene()->activeCamera()->setTarget(m_cameraTarget); + qDebug() << "m_cameraTarget:" << m_cameraTarget; +} + void ScatterDataModifier::changeShadowQuality(int quality) { QAbstract3DGraph::ShadowQuality sq = QAbstract3DGraph::ShadowQuality(quality); diff --git a/tests/scattertest/scatterchart.h b/tests/scattertest/scatterchart.h index df2494b6..1a97c5f0 100644 --- a/tests/scattertest/scatterchart.h +++ b/tests/scattertest/scatterchart.h @@ -98,6 +98,9 @@ public slots: void togglePolar(bool enable); void toggleStatic(bool enable); void toggleOrtho(bool enable); + void setCameraTargetX(int value); + void setCameraTargetY(int value); + void setCameraTargetZ(int value); signals: void shadowQualityChanged(int quality); @@ -118,6 +121,8 @@ private: QScatter3DSeries *m_targetSeries; QScatterDataArray m_massiveTestCacheArray; QLabel *m_fpsLabel; + QVector3D m_cameraTarget; + }; #endif |