summaryrefslogtreecommitdiffstats
path: root/tests/surfacetest
diff options
context:
space:
mode:
authorMika Salmela <mika.salmela@digia.com>2013-12-03 14:00:23 +0200
committerMika Salmela <mika.salmela@digia.com>2013-12-03 14:06:59 +0200
commit344870fb79e647b87aa79b9433eef8237c901e10 (patch)
treef0ccaa5991d9f0304bc6f6f91ce3ffd45232384d /tests/surfacetest
parent2af35db1a112c49991a80f48e3cd8d8814deb321 (diff)
Better proxy API for surface
Part 2, item change. More is on the way. Change-Id: Ic41f3a90b5a47502b741391ace990117ef2eaf80 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Diffstat (limited to 'tests/surfacetest')
-rw-r--r--tests/surfacetest/graphmodifier.cpp39
-rw-r--r--tests/surfacetest/graphmodifier.h3
-rw-r--r--tests/surfacetest/main.cpp26
3 files changed, 65 insertions, 3 deletions
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);