From 344870fb79e647b87aa79b9433eef8237c901e10 Mon Sep 17 00:00:00 2001 From: Mika Salmela Date: Tue, 3 Dec 2013 14:00:23 +0200 Subject: Better proxy API for surface Part 2, item change. More is on the way. Change-Id: Ic41f3a90b5a47502b741391ace990117ef2eaf80 Reviewed-by: Miikka Heikkinen --- tests/surfacetest/graphmodifier.cpp | 39 ++++++++++++++++++++++++++++++++++++- tests/surfacetest/graphmodifier.h | 3 +++ tests/surfacetest/main.cpp | 26 +++++++++++++++++++++++-- 3 files changed, 65 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/surfacetest/graphmodifier.cpp b/tests/surfacetest/graphmodifier.cpp index 666f4741..11e651a3 100644 --- a/tests/surfacetest/graphmodifier.cpp +++ b/tests/surfacetest/graphmodifier.cpp @@ -427,7 +427,7 @@ void GraphModifier::changeRow() void GraphModifier::changeRows() { if (m_activeSample == GraphModifier::SqrtSin) { - qDebug() << "Generating new values to 3 rows from randon pos"; + qDebug() << "Generating new values to 3 rows from random pos"; float minX = -10.0f; float maxX = 10.0f; @@ -457,6 +457,43 @@ void GraphModifier::changeRows() } } +void GraphModifier::changeItem() +{ + if (m_activeSample == GraphModifier::SqrtSin) { + qDebug() << "Generating new values for an item at random pos"; + float minX = -10.0f; + float maxX = 10.0f; + float minZ = -10.0f; + float maxZ = 10.0f; + float stepX = (maxX - minX) / float(m_xCount - 1); + float stepZ = (maxZ - minZ) / float(m_zCount - 1); + float i = float(rand() % m_zCount); + float j = float(rand() % m_xCount); + + float x = qMin(maxX, (j * stepX + minX)); + float z = qMin(maxZ, (i * stepZ + minZ)); + float R = qSqrt(x * x + z * z) + 0.01f; + float y = (qSin(R) / R + 0.24f) * 1.61f + 1.2f; + QSurfaceDataItem newItem(QVector3D(x, y, z)); + + m_theSeries->dataProxy()->setItem(int(i), int(j), newItem); + } else { + qDebug() << "Change row function active only for SqrtSin"; + } +} + +void GraphModifier::changeMultipleRows() +{ + for (int i = 0; i < 3; i++) + changeRow(); +} + +void GraphModifier::changeMultipleItem() +{ + for (int i = 0; i < 3; i++) + changeItem(); +} + void GraphModifier::changeMesh() { static int model = 0; diff --git a/tests/surfacetest/graphmodifier.h b/tests/surfacetest/graphmodifier.h index d3e5ce68..be1f6de7 100644 --- a/tests/surfacetest/graphmodifier.h +++ b/tests/surfacetest/graphmodifier.h @@ -70,6 +70,9 @@ public: void changeRow(); void changeRows(); void changeMesh(); + void changeItem(); + void changeMultipleItem(); + void changeMultipleRows(); public slots: void changeShadowQuality(int quality); diff --git a/tests/surfacetest/main.cpp b/tests/surfacetest/main.cpp index aac4b8e2..6db05718 100644 --- a/tests/surfacetest/main.cpp +++ b/tests/surfacetest/main.cpp @@ -44,7 +44,9 @@ int main(int argc, char *argv[]) QWidget *widget = new QWidget; QHBoxLayout *hLayout = new QHBoxLayout(widget); QVBoxLayout *vLayout = new QVBoxLayout(); + QVBoxLayout *vLayout2 = new QVBoxLayout(); vLayout->setAlignment(Qt::AlignTop); + vLayout2->setAlignment(Qt::AlignTop); Q3DSurface *surfaceGraph = new Q3DSurface(); QSize screenSize = surfaceGraph->screen()->size(); @@ -62,6 +64,7 @@ int main(int argc, char *argv[]) hLayout->addWidget(container, 1); hLayout->addLayout(vLayout); + hLayout->addLayout(vLayout2); QCheckBox *smoothCB = new QCheckBox(widget); smoothCB->setText(QStringLiteral("Flat Surface")); @@ -216,6 +219,15 @@ int main(int argc, char *argv[]) QPushButton *changeRowsButton = new QPushButton(widget); changeRowsButton->setText(QStringLiteral("Change 3 rows")); + QPushButton *changeItemButton = new QPushButton(widget); + changeItemButton->setText(QStringLiteral("Change item")); + + QPushButton *changeMultipleItemButton = new QPushButton(widget); + changeMultipleItemButton->setText(QStringLiteral("Change many items")); + + QPushButton *changeMultipleRowsButton = new QPushButton(widget); + changeMultipleRowsButton->setText(QStringLiteral("Change many rows")); + // Add controls to the layout vLayout->addWidget(smoothCB); vLayout->addWidget(surfaceGridCB); @@ -248,8 +260,12 @@ int main(int argc, char *argv[]) vLayout->addWidget(selectButton); vLayout->addWidget(selectionInfoLabel); vLayout->addWidget(flipViewsButton); - vLayout->addWidget(changeRowButton); - vLayout->addWidget(changeRowsButton); + + vLayout2->addWidget(changeRowButton); + vLayout2->addWidget(changeRowsButton); + vLayout2->addWidget(changeMultipleRowsButton); + vLayout2->addWidget(changeItemButton); + vLayout2->addWidget(changeMultipleItemButton); widget->show(); @@ -304,6 +320,12 @@ int main(int argc, char *argv[]) modifier, &GraphModifier::changeRow); QObject::connect(changeRowsButton,&QPushButton::clicked, modifier, &GraphModifier::changeRows); + QObject::connect(changeItemButton,&QPushButton::clicked, + modifier, &GraphModifier::changeItem); + QObject::connect(changeMultipleItemButton,&QPushButton::clicked, + modifier, &GraphModifier::changeMultipleItem); + QObject::connect(changeMultipleRowsButton,&QPushButton::clicked, + modifier, &GraphModifier::changeMultipleRows); modifier->setGridSliderZ(gridSliderZ); modifier->setGridSliderX(gridSliderX); -- cgit v1.2.3