summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-11-04 13:40:09 +0200
committerTomi Korpipää <tomi.korpipaa@digia.com>2013-11-04 13:46:52 +0200
commit0d5caf7904098186e50009627996191dc7f8687b (patch)
treeabff5454cd8839e77f6e9484f92556bb733f3cb1
parent9cb3cf372155e2a57c15e4044a3684694ff1b1bd (diff)
Surface toggling API implemented
Task-number: QTRD-2337 Change-Id: I59695a042c864faed90839c4e566fcece5cb94f4 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
-rw-r--r--examples/qmlsurface/qml/qmlsurface/main.qml18
-rw-r--r--src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc6
-rw-r--r--src/datavisualization/engine/q3dsurface.cpp14
-rw-r--r--src/datavisualization/engine/q3dsurface.h4
-rw-r--r--src/datavisualization/engine/surface3dcontroller.cpp18
-rw-r--r--src/datavisualization/engine/surface3dcontroller_p.h6
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp125
-rw-r--r--src/datavisualization/engine/surface3drenderer_p.h2
-rw-r--r--src/datavisualizationqml2/declarativesurface.cpp10
-rw-r--r--src/datavisualizationqml2/declarativesurface_p.h11
-rw-r--r--tests/surfacetest/graphmodifier.cpp6
-rw-r--r--tests/surfacetest/graphmodifier.h1
-rw-r--r--tests/surfacetest/main.cpp7
13 files changed, 168 insertions, 60 deletions
diff --git a/examples/qmlsurface/qml/qmlsurface/main.qml b/examples/qmlsurface/qml/qmlsurface/main.qml
index ab266c56..600d75c1 100644
--- a/examples/qmlsurface/qml/qmlsurface/main.qml
+++ b/examples/qmlsurface/qml/qmlsurface/main.qml
@@ -104,9 +104,25 @@ Item {
}
NewButton {
- id: smoothSurfaceToggle
+ id: surfaceToggle
anchors.top: surfaceGridToggle.bottom
width: surfaceGridToggle.width
+ text: "Hide Surface"
+ onClicked: {
+ if (surfaceplot.surfaceVisible === true) {
+ surfaceplot.surfaceVisible = false;
+ text = "Show Surface"
+ } else {
+ surfaceplot.surfaceVisible = true;
+ text = "Hide Surface"
+ }
+ }
+ }
+
+ NewButton {
+ id: smoothSurfaceToggle
+ anchors.top: surfaceToggle.bottom
+ width: surfaceToggle.width
text: "Show Flat"
//! [2]
onClicked: {
diff --git a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
index 92b0e7d9..55a0d1d1 100644
--- a/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
+++ b/src/datavisualization/doc/src/qtdatavisualization-qml-surface3d.qdoc
@@ -80,6 +80,12 @@
*/
/*!
+ * \qmlproperty bool Surface3D::surfaceVisible
+ * The surface visibility. If false, no surface is drawn. If surface grid is enabled, it is still
+ * drawn.
+ */
+
+/*!
\qmlproperty bool Surface3D::surfaceGridEnabled
The surface grid visibility. If false, no surface grid is drawn.
*/
diff --git a/src/datavisualization/engine/q3dsurface.cpp b/src/datavisualization/engine/q3dsurface.cpp
index 7b9e32bb..a91df086 100644
--- a/src/datavisualization/engine/q3dsurface.cpp
+++ b/src/datavisualization/engine/q3dsurface.cpp
@@ -276,6 +276,20 @@ QDataVis::SelectionFlags Q3DSurface::selectionMode() const
return d_ptr->m_shared->selectionMode();
}
+/*!
+ * \property Q3DSurface::surfaceVisible
+ *
+ * Sets surface to \a visible. It is preset to \c true by default.
+ */
+void Q3DSurface::setSurfaceVisible(bool visible)
+{
+ d_ptr->m_shared->setSurfaceVisible(visible);
+}
+
+bool Q3DSurface::isSurfaceVisible() const
+{
+ return d_ptr->m_shared->surfaceVisible();
+}
/*!
* \property Q3DSurface::surfaceGridEnabled
diff --git a/src/datavisualization/engine/q3dsurface.h b/src/datavisualization/engine/q3dsurface.h
index c131f245..ca3c3965 100644
--- a/src/datavisualization/engine/q3dsurface.h
+++ b/src/datavisualization/engine/q3dsurface.h
@@ -38,6 +38,7 @@ class QT_DATAVISUALIZATION_EXPORT Q3DSurface : public Q3DWindow
Q_PROPERTY(QtDataVisualization::QDataVis::LabelStyle labelStyle READ labelStyle WRITE setLabelStyle)
Q_PROPERTY(QtDataVisualization::QDataVis::Theme theme READ theme WRITE setTheme)
Q_PROPERTY(QtDataVisualization::QDataVis::ShadowQuality shadowQuality READ shadowQuality WRITE setShadowQuality)
+ Q_PROPERTY(bool surfaceVisible READ isSurfaceVisible WRITE setSurfaceVisible)
Q_PROPERTY(bool gridVisible READ isGridVisible WRITE setGridVisible)
Q_PROPERTY(bool backgroundVisible READ isBackgroundVisible WRITE setBackgroundVisible)
Q_PROPERTY(bool smoothSurfaceEnabled READ isSmoothSurfaceEnabled WRITE setSmoothSurfaceEnabled)
@@ -52,6 +53,9 @@ public:
explicit Q3DSurface();
~Q3DSurface();
+ void setSurfaceVisible(bool visible);
+ bool isSurfaceVisible() const;
+
void setGridVisible(bool visible);
bool isGridVisible() const;
diff --git a/src/datavisualization/engine/surface3dcontroller.cpp b/src/datavisualization/engine/surface3dcontroller.cpp
index ec1cae30..04943bf9 100644
--- a/src/datavisualization/engine/surface3dcontroller.cpp
+++ b/src/datavisualization/engine/surface3dcontroller.cpp
@@ -34,6 +34,7 @@ Surface3DController::Surface3DController(QRect rect)
: Abstract3DController(rect),
m_renderer(0),
m_isSmoothSurfaceEnabled(false),
+ m_isSurfaceEnabled(true),
m_isSurfaceGridEnabled(true),
m_selectedPoint(noSelectionPoint())
{
@@ -91,6 +92,11 @@ void Surface3DController::synchDataToRenderer()
emit smoothSurfaceEnabledChanged(m_isSmoothSurfaceEnabled);
}
+ if (m_changeTracker.surfaceVisibilityChanged) {
+ m_renderer->updateSurfaceVisibilityStatus(m_isSurfaceEnabled);
+ m_changeTracker.surfaceVisibilityChanged = false;
+ }
+
if (m_changeTracker.surfaceGridChanged) {
m_renderer->updateSurfaceGridStatus(m_isSurfaceGridEnabled);
m_changeTracker.surfaceGridChanged = false;
@@ -145,6 +151,18 @@ bool Surface3DController::smoothSurface()
return m_isSmoothSurfaceEnabled;
}
+void Surface3DController::setSurfaceVisible(bool visible)
+{
+ m_isSurfaceEnabled = visible;
+ m_changeTracker.surfaceVisibilityChanged = true;
+ emitNeedRender();
+}
+
+bool Surface3DController::surfaceVisible() const
+{
+ return m_isSurfaceEnabled;
+}
+
void Surface3DController::setSurfaceGrid(bool enable)
{
m_isSurfaceGridEnabled = enable;
diff --git a/src/datavisualization/engine/surface3dcontroller_p.h b/src/datavisualization/engine/surface3dcontroller_p.h
index 83a52b7d..1010f09b 100644
--- a/src/datavisualization/engine/surface3dcontroller_p.h
+++ b/src/datavisualization/engine/surface3dcontroller_p.h
@@ -41,12 +41,14 @@ class Surface3DRenderer;
struct Surface3DChangeBitField {
bool gradientColorChanged : 1;
bool smoothStatusChanged : 1;
+ bool surfaceVisibilityChanged : 1;
bool surfaceGridChanged : 1;
bool selectedPointChanged : 1;
Surface3DChangeBitField() :
gradientColorChanged(true),
smoothStatusChanged(true),
+ surfaceVisibilityChanged(true),
surfaceGridChanged(true),
selectedPointChanged(true)
{
@@ -61,6 +63,7 @@ private:
Surface3DChangeBitField m_changeTracker;
Surface3DRenderer *m_renderer;
bool m_isSmoothSurfaceEnabled;
+ bool m_isSurfaceEnabled;
bool m_isSurfaceGridEnabled;
QLinearGradient m_userDefinedGradient;
QPoint m_selectedPoint;
@@ -72,6 +75,9 @@ public:
void initializeOpenGL();
virtual void synchDataToRenderer();
+ void setSurfaceVisible(bool visible);
+ bool surfaceVisible() const;
+
void setSmoothSurface(bool enable);
bool smoothSurface();
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 063ddd7e..92a68461 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -102,6 +102,8 @@ Surface3DRenderer::Surface3DRenderer(Surface3DController *controller)
m_shadowQualityToShader(33.3f),
m_cachedSmoothSurface(true),
m_flatSupported(true),
+ m_cachedSurfaceOn(true),
+ m_cachedSurfaceGridOn(true),
m_selectionPointer(0),
m_selectionActive(false),
m_xFlipped(false),
@@ -506,16 +508,8 @@ void Surface3DRenderer::drawSlicedScene()
}
if (m_surfaceObj) {
- ShaderHelper *surfaceShader = m_shader;
- surfaceShader->bind();
-
- if (m_cachedSurfaceGridOn) {
- glEnable(GL_POLYGON_OFFSET_FILL);
- glPolygonOffset(0.5f, 1.0f);
- }
-
- QMatrix4x4 modelMatrix;
QMatrix4x4 MVPMatrix;
+ QMatrix4x4 modelMatrix;
QMatrix4x4 itModelMatrix;
modelMatrix.translate(offset, 0.0f, 0.0f);
@@ -525,27 +519,37 @@ void Surface3DRenderer::drawSlicedScene()
MVPMatrix = projectionViewMatrix * modelMatrix;
- QVector3D color;
- if (rowMode)
- color = Utils::vectorFromColor(m_cachedTheme.m_highlightRowColor);
- else
- color = Utils::vectorFromColor(m_cachedTheme.m_highlightColumnColor);
-
- // Set shader bindings
- surfaceShader->setUniformValue(surfaceShader->lightP(), lightPos);
- surfaceShader->setUniformValue(surfaceShader->view(), viewMatrix);
- surfaceShader->setUniformValue(surfaceShader->model(), modelMatrix);
- surfaceShader->setUniformValue(surfaceShader->nModel(),
- itModelMatrix.inverted().transposed());
- surfaceShader->setUniformValue(surfaceShader->MVP(), MVPMatrix);
- surfaceShader->setUniformValue(surfaceShader->color(), color);
- surfaceShader->setUniformValue(surfaceShader->lightS(), 0.25f);
- surfaceShader->setUniformValue(surfaceShader->ambientS(),
- m_cachedTheme.m_ambientStrength * 2.0f);
+ if (m_cachedSurfaceOn) {
+ if (m_cachedSurfaceGridOn) {
+ glEnable(GL_POLYGON_OFFSET_FILL);
+ glPolygonOffset(0.5f, 1.0f);
+ }
- m_drawer->drawObject(surfaceShader, m_sliceSurfaceObj);
+ ShaderHelper *surfaceShader = m_shader;
+ surfaceShader->bind();
- surfaceShader->release();
+ QVector3D color;
+ if (rowMode)
+ color = Utils::vectorFromColor(m_cachedTheme.m_highlightRowColor);
+ else
+ color = Utils::vectorFromColor(m_cachedTheme.m_highlightColumnColor);
+
+ // Set shader bindings
+ surfaceShader->setUniformValue(surfaceShader->lightP(), lightPos);
+ surfaceShader->setUniformValue(surfaceShader->view(), viewMatrix);
+ surfaceShader->setUniformValue(surfaceShader->model(), modelMatrix);
+ surfaceShader->setUniformValue(surfaceShader->nModel(),
+ itModelMatrix.inverted().transposed());
+ surfaceShader->setUniformValue(surfaceShader->MVP(), MVPMatrix);
+ surfaceShader->setUniformValue(surfaceShader->color(), color);
+ surfaceShader->setUniformValue(surfaceShader->lightS(), 0.25f);
+ surfaceShader->setUniformValue(surfaceShader->ambientS(),
+ m_cachedTheme.m_ambientStrength * 2.0f);
+
+ m_drawer->drawObject(surfaceShader, m_sliceSurfaceObj);
+
+ surfaceShader->release();
+ }
// Draw surface grid
if (m_cachedSurfaceGridOn) {
@@ -787,7 +791,7 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
// Draw depth buffer
#if !defined(QT_OPENGL_ES_2)
GLfloat adjustedLightStrength = m_cachedTheme.m_lightStrength / 10.0f;
- if (m_cachedShadowQuality > QDataVis::ShadowQualityNone && m_surfaceObj) {
+ if (m_cachedShadowQuality > QDataVis::ShadowQualityNone && m_surfaceObj && m_cachedSurfaceOn) {
// Render scene into a depth texture for using with shadow mapping
// Enable drawing to depth framebuffer
glBindFramebuffer(GL_FRAMEBUFFER, m_depthFrameBuffer);
@@ -939,7 +943,6 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
// Draw the surface
if (m_surfaceObj && m_sampleSpace.width() >= 2 && m_sampleSpace.height() >= 2) {
m_surfaceShader->bind();
-
// For surface we can see climpses from underneath
glDisable(GL_CULL_FACE);
if (m_cachedSurfaceGridOn) {
@@ -960,40 +963,43 @@ void Surface3DRenderer::drawScene(GLuint defaultFboHandle)
#else
MVPMatrix = projectionViewMatrix * modelMatrix;
#endif
- // Set shader bindings
- m_surfaceShader->setUniformValue(m_surfaceShader->lightP(), lightPos);
- m_surfaceShader->setUniformValue(m_surfaceShader->view(), viewMatrix);
- m_surfaceShader->setUniformValue(m_surfaceShader->model(), modelMatrix);
- m_surfaceShader->setUniformValue(m_surfaceShader->nModel(),
- itModelMatrix.inverted().transposed());
- m_surfaceShader->setUniformValue(m_surfaceShader->MVP(), MVPMatrix);
- m_surfaceShader->setUniformValue(m_surfaceShader->ambientS(),
- m_cachedTheme.m_ambientStrength);
+
+ if (m_cachedSurfaceOn) {
+ // Set shader bindings
+ m_surfaceShader->setUniformValue(m_surfaceShader->lightP(), lightPos);
+ m_surfaceShader->setUniformValue(m_surfaceShader->view(), viewMatrix);
+ m_surfaceShader->setUniformValue(m_surfaceShader->model(), modelMatrix);
+ m_surfaceShader->setUniformValue(m_surfaceShader->nModel(),
+ itModelMatrix.inverted().transposed());
+ m_surfaceShader->setUniformValue(m_surfaceShader->MVP(), MVPMatrix);
+ m_surfaceShader->setUniformValue(m_surfaceShader->ambientS(),
+ m_cachedTheme.m_ambientStrength);
#if !defined(QT_OPENGL_ES_2)
- if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
- // Set shadow shader bindings
- QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
- m_surfaceShader->setUniformValue(m_surfaceShader->shadowQ(), m_shadowQualityToShader);
- m_surfaceShader->setUniformValue(m_surfaceShader->depth(), depthMVPMatrix);
- m_surfaceShader->setUniformValue(m_surfaceShader->lightS(), adjustedLightStrength);
+ if (m_cachedShadowQuality > QDataVis::ShadowQualityNone) {
+ // Set shadow shader bindings
+ QMatrix4x4 depthMVPMatrix = depthProjectionViewMatrix * modelMatrix;
+ m_surfaceShader->setUniformValue(m_surfaceShader->shadowQ(), m_shadowQualityToShader);
+ m_surfaceShader->setUniformValue(m_surfaceShader->depth(), depthMVPMatrix);
+ m_surfaceShader->setUniformValue(m_surfaceShader->lightS(), adjustedLightStrength);
- // Draw the object
- m_drawer->drawObject(m_surfaceShader, m_surfaceObj, m_gradientTexture, m_depthTexture);
- } else
+ // Draw the object
+ m_drawer->drawObject(m_surfaceShader, m_surfaceObj, m_gradientTexture, m_depthTexture);
+ } else
#endif
- {
- // Set shadowless shader bindings
- m_surfaceShader->setUniformValue(m_surfaceShader->lightS(),
- m_cachedTheme.m_lightStrength);
+ {
+ // Set shadowless shader bindings
+ m_surfaceShader->setUniformValue(m_surfaceShader->lightS(),
+ m_cachedTheme.m_lightStrength);
- // Draw the object
- m_drawer->drawObject(m_surfaceShader, m_surfaceObj, m_gradientTexture);
- }
+ // Draw the object
+ m_drawer->drawObject(m_surfaceShader, m_surfaceObj, m_gradientTexture);
+ }
- m_surfaceShader->release();
+ m_surfaceShader->release();
- glEnable(GL_CULL_FACE);
+ glEnable(GL_CULL_FACE);
+ }
// Draw surface grid
if (m_cachedSurfaceGridOn) {
@@ -1772,6 +1778,11 @@ void Surface3DRenderer::updateSelectedPoint(const QPoint &position)
m_selectionDirty = true;
}
+void Surface3DRenderer::updateSurfaceVisibilityStatus(bool visible)
+{
+ m_cachedSurfaceOn = visible;
+}
+
void Surface3DRenderer::updateSurfaceGridStatus(bool enable)
{
m_cachedSurfaceGridOn = enable;
diff --git a/src/datavisualization/engine/surface3drenderer_p.h b/src/datavisualization/engine/surface3drenderer_p.h
index 54257cde..875e79c6 100644
--- a/src/datavisualization/engine/surface3drenderer_p.h
+++ b/src/datavisualization/engine/surface3drenderer_p.h
@@ -110,6 +110,7 @@ private:
GLfloat m_shadowQualityToShader;
bool m_cachedSmoothSurface;
bool m_flatSupported;
+ bool m_cachedSurfaceOn;
bool m_cachedSurfaceGridOn;
SelectionPointer *m_selectionPointer;
bool m_selectionActive;
@@ -134,6 +135,7 @@ public:
void updateScene(Q3DScene *scene);
void updateInputState(QDataVis::InputState state);
bool updateSmoothStatus(bool enable);
+ void updateSurfaceVisibilityStatus(bool visible);
void updateSurfaceGridStatus(bool enable);
void updateSurfaceGradient(const QLinearGradient &gradient);
void updateSlicingActive(bool isSlicing);
diff --git a/src/datavisualizationqml2/declarativesurface.cpp b/src/datavisualizationqml2/declarativesurface.cpp
index a4cf1195..e898bd40 100644
--- a/src/datavisualizationqml2/declarativesurface.cpp
+++ b/src/datavisualizationqml2/declarativesurface.cpp
@@ -135,6 +135,16 @@ bool DeclarativeSurface::isSmoothSurfaceEnabled() const
return m_shared->smoothSurface();
}
+void DeclarativeSurface::setSurfaceVisible(bool visible)
+{
+ m_shared->setSurfaceVisible(visible);
+}
+
+bool DeclarativeSurface::isSurfaceVisible() const
+{
+ return m_shared->surfaceVisible();
+}
+
void DeclarativeSurface::setSurfaceGridEnabled(bool enabled)
{
m_shared->setSurfaceGrid(enabled);
diff --git a/src/datavisualizationqml2/declarativesurface_p.h b/src/datavisualizationqml2/declarativesurface_p.h
index 3d911f43..5a2fdb94 100644
--- a/src/datavisualizationqml2/declarativesurface_p.h
+++ b/src/datavisualizationqml2/declarativesurface_p.h
@@ -51,9 +51,10 @@ class DeclarativeSurface : public AbstractDeclarative
Q_PROPERTY(Q3DValueAxis *axisX READ axisX WRITE setAxisX)
Q_PROPERTY(Q3DValueAxis *axisY READ axisY WRITE setAxisY)
Q_PROPERTY(Q3DValueAxis *axisZ READ axisZ WRITE setAxisZ)
+ Q_PROPERTY(bool surfaceVisible READ isSurfaceVisible WRITE setSurfaceVisible NOTIFY surfaceVisibleChanged)
Q_PROPERTY(bool smoothSurfaceEnabled READ isSmoothSurfaceEnabled WRITE setSmoothSurfaceEnabled NOTIFY smoothSurfaceEnabledChanged)
- Q_PROPERTY(bool surfaceGridEnabled READ isSurfaceGridEnabled WRITE setSurfaceGridEnabled)
- Q_PROPERTY(ColorGradient *gradient READ gradient WRITE setGradient)
+ Q_PROPERTY(bool surfaceGridEnabled READ isSurfaceGridEnabled WRITE setSurfaceGridEnabled NOTIFY surfaceGridEnabledChanged)
+ Q_PROPERTY(ColorGradient *gradient READ gradient WRITE setGradient NOTIFY gradientChanged)
Q_PROPERTY(QPointF selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY selectedPointChanged)
public:
@@ -70,6 +71,9 @@ public:
Q3DValueAxis *axisZ() const;
void setAxisZ(Q3DValueAxis *axis);
+ void setSurfaceVisible(bool visible);
+ bool isSurfaceVisible() const;
+
void setSmoothSurfaceEnabled(bool enabled);
bool isSmoothSurfaceEnabled() const;
@@ -83,7 +87,10 @@ public:
QPointF selectedPoint() const;
signals:
+ void surfaceVisibleChanged(bool visible);
void smoothSurfaceEnabledChanged(bool enabled);
+ void surfaceGridEnabledChanged(bool visible);
+ void gradientChanged(ColorGradient *gradient);
void selectedPointChanged(QPoint position);
protected:
diff --git a/tests/surfacetest/graphmodifier.cpp b/tests/surfacetest/graphmodifier.cpp
index bd6ec920..ebc712a8 100644
--- a/tests/surfacetest/graphmodifier.cpp
+++ b/tests/surfacetest/graphmodifier.cpp
@@ -76,6 +76,12 @@ void GraphModifier::toggleSurfaceGrid(bool enable)
m_graph->setSurfaceGridEnabled(enable);
}
+void GraphModifier::toggleSurface(bool enable)
+{
+ qDebug() << "GraphModifier::toggleSurface" << enable;
+ m_graph->setSurfaceVisible(enable);
+}
+
void GraphModifier::toggleSqrtSin(bool enable)
{
if (enable) {
diff --git a/tests/surfacetest/graphmodifier.h b/tests/surfacetest/graphmodifier.h
index ed94b372..48b3e8ec 100644
--- a/tests/surfacetest/graphmodifier.h
+++ b/tests/surfacetest/graphmodifier.h
@@ -42,6 +42,7 @@ public:
void toggleSmooth(bool enabled);
void toggleSurfaceGrid(bool enable);
+ void toggleSurface(bool enable);
void toggleSqrtSin(bool enable);
void togglePlane(bool enable);
void setHeightMapData(bool enable);
diff --git a/tests/surfacetest/main.cpp b/tests/surfacetest/main.cpp
index e4283b3e..78e7badb 100644
--- a/tests/surfacetest/main.cpp
+++ b/tests/surfacetest/main.cpp
@@ -70,6 +70,10 @@ int main(int argc, char *argv[])
surfaceGridCB->setText(QStringLiteral("Surface Grid"));
surfaceGridCB->setChecked(true);
+ QCheckBox *surfaceCB = new QCheckBox(widget);
+ surfaceCB->setText(QStringLiteral("Surface Visible"));
+ surfaceCB->setChecked(true);
+
//QCheckBox *sqrtSinCB = new QCheckBox(widget);
QRadioButton *sqrtSinCB = new QRadioButton(widget);
sqrtSinCB->setText(QStringLiteral("Sqrt & Sin"));
@@ -201,6 +205,7 @@ int main(int argc, char *argv[])
// Add controls to the layout
vLayout->addWidget(smoothCB);
vLayout->addWidget(surfaceGridCB);
+ vLayout->addWidget(surfaceCB);
vLayout->addWidget(new QLabel(QStringLiteral("Select surface sample")));
vLayout->addWidget(sqrtSinCB);
vLayout->addWidget(planeCB);
@@ -237,6 +242,8 @@ int main(int argc, char *argv[])
modifier, &GraphModifier::toggleSmooth);
QObject::connect(surfaceGridCB, &QCheckBox::stateChanged,
modifier, &GraphModifier::toggleSurfaceGrid);
+ QObject::connect(surfaceCB, &QCheckBox::stateChanged,
+ modifier, &GraphModifier::toggleSurface);
QObject::connect(sqrtSinCB, &QRadioButton::toggled,
modifier, &GraphModifier::toggleSqrtSin);
QObject::connect(planeCB, &QCheckBox::toggled,