summaryrefslogtreecommitdiffstats
path: root/src/datavisualization
diff options
context:
space:
mode:
Diffstat (limited to 'src/datavisualization')
-rw-r--r--src/datavisualization/data/qsurface3dseries.cpp35
-rw-r--r--src/datavisualization/data/qsurface3dseries.h15
-rw-r--r--src/datavisualization/data/qsurface3dseries_p.h4
-rw-r--r--src/datavisualization/engine/surface3drenderer.cpp18
4 files changed, 49 insertions, 23 deletions
diff --git a/src/datavisualization/data/qsurface3dseries.cpp b/src/datavisualization/data/qsurface3dseries.cpp
index 19462af4..cf794077 100644
--- a/src/datavisualization/data/qsurface3dseries.cpp
+++ b/src/datavisualization/data/qsurface3dseries.cpp
@@ -130,6 +130,19 @@ QT_DATAVISUALIZATION_BEGIN_NAMESPACE
*/
/*!
+ * \enum QSurface3DSeries::DrawFlag
+ *
+ * Drawing mode of the surface. Values of this enumeration can be combined with OR operator.
+ *
+ * \value DrawWireframe
+ * Only the grid is drawn.
+ * \value DrawSurface
+ * Only the surface is drawn.
+ * \value DrawSurfaceAndWireframe
+ * Both the surface and grid are drawn.
+ */
+
+/*!
* Constructs QSurface3DSeries with the given \a parent.
*/
QSurface3DSeries::QSurface3DSeries(QObject *parent) :
@@ -252,21 +265,21 @@ bool QSurface3DSeries::isFlatShadingSupported() const
}
/*!
- * \property QSurface3DSeries::surfaceGridEnabled
+ * \property QSurface3DSeries::drawMode
*
- * Sets surface grid to \a enabled. It is preset to \c true by default.
+ * Sets the drawing \a mode to one of QSurface3DSeries::DrawFlag.
*/
-void QSurface3DSeries::setSurfaceGridEnabled(bool enabled)
+void QSurface3DSeries::setDrawMode(QSurface3DSeries::DrawFlags mode)
{
- if (dptr()->m_surfaceGridEnabled != enabled) {
- dptr()->setSurfaceGridEnabled(enabled);
- emit surfaceGridEnabledChanged(enabled);
+ if (dptr()->m_drawMode != mode) {
+ dptr()->setDrawMode(mode);
+ emit drawModeChanged(mode);
}
}
-bool QSurface3DSeries::isSurfaceGridEnabled() const
+QSurface3DSeries::DrawFlags QSurface3DSeries::drawMode() const
{
- return dptrc()->m_surfaceGridEnabled;
+ return dptrc()->m_drawMode;
}
/*!
@@ -291,7 +304,7 @@ QSurface3DSeriesPrivate::QSurface3DSeriesPrivate(QSurface3DSeries *q)
: QAbstract3DSeriesPrivate(q, QAbstract3DSeries::SeriesTypeSurface),
m_selectedPoint(Surface3DController::invalidSelectionPosition()),
m_flatShadingEnabled(true),
- m_surfaceGridEnabled(true)
+ m_drawMode(QSurface3DSeries::DrawSurfaceAndWireframe)
{
m_itemLabelFormat = QStringLiteral("(@xLabel, @yLabel, @zLabel)");
m_mesh = QAbstract3DSeries::MeshSphere;
@@ -358,9 +371,9 @@ void QSurface3DSeriesPrivate::setFlatShadingEnabled(bool enabled)
m_controller->markSeriesVisualsDirty();
}
-void QSurface3DSeriesPrivate::setSurfaceGridEnabled(bool enabled)
+void QSurface3DSeriesPrivate::setDrawMode(QSurface3DSeries::DrawFlags mode)
{
- m_surfaceGridEnabled = enabled;
+ m_drawMode = mode;
if (m_controller)
m_controller->markSeriesVisualsDirty();
}
diff --git a/src/datavisualization/data/qsurface3dseries.h b/src/datavisualization/data/qsurface3dseries.h
index f4b64b96..8040da0d 100644
--- a/src/datavisualization/data/qsurface3dseries.h
+++ b/src/datavisualization/data/qsurface3dseries.h
@@ -29,13 +29,21 @@ class QSurface3DSeriesPrivate;
class QT_DATAVISUALIZATION_EXPORT QSurface3DSeries : public QAbstract3DSeries
{
Q_OBJECT
+ Q_FLAGS(DrawFlag DrawFlags)
Q_PROPERTY(QSurfaceDataProxy *dataProxy READ dataProxy WRITE setDataProxy NOTIFY dataProxyChanged)
Q_PROPERTY(QPoint selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY selectedPointChanged)
Q_PROPERTY(bool flatShadingEnabled READ isFlatShadingEnabled WRITE setFlatShadingEnabled NOTIFY flatShadingEnabledChanged)
- Q_PROPERTY(bool surfaceGridEnabled READ isSurfaceGridEnabled WRITE setSurfaceGridEnabled NOTIFY surfaceGridEnabledChanged)
Q_PROPERTY(bool flatShadingSupported READ isFlatShadingSupported NOTIFY flatShadingSupportedChanged)
+ Q_PROPERTY(QtDataVisualization::QSurface3DSeries::DrawFlags drawMode READ drawMode WRITE setDrawMode NOTIFY drawModeChanged)
public:
+ enum DrawFlag {
+ DrawWireframe = 1,
+ DrawSurface = 2,
+ DrawSurfaceAndWireframe = DrawWireframe | DrawSurface
+ };
+ Q_DECLARE_FLAGS(DrawFlags, DrawFlag)
+
explicit QSurface3DSeries(QObject *parent = 0);
explicit QSurface3DSeries(QSurfaceDataProxy *dataProxy, QObject *parent = 0);
virtual ~QSurface3DSeries();
@@ -50,8 +58,8 @@ public:
void setFlatShadingEnabled(bool enabled);
bool isFlatShadingEnabled() const;
- void setSurfaceGridEnabled(bool enabled);
- bool isSurfaceGridEnabled() const;
+ void setDrawMode(QSurface3DSeries::DrawFlags mode);
+ QSurface3DSeries::DrawFlags drawMode() const;
bool isFlatShadingSupported() const;
@@ -61,6 +69,7 @@ signals:
void flatShadingEnabledChanged(bool enable);
void surfaceGridEnabledChanged(bool enable);
void flatShadingSupportedChanged(bool enable);
+ void drawModeChanged(QSurface3DSeries::DrawFlags mode);
protected:
explicit QSurface3DSeries(QSurface3DSeriesPrivate *d, QObject *parent = 0);
diff --git a/src/datavisualization/data/qsurface3dseries_p.h b/src/datavisualization/data/qsurface3dseries_p.h
index a3acb8d5..00bfbed2 100644
--- a/src/datavisualization/data/qsurface3dseries_p.h
+++ b/src/datavisualization/data/qsurface3dseries_p.h
@@ -46,14 +46,14 @@ public:
void setSelectedPoint(const QPoint &position);
void setFlatShadingEnabled(bool enabled);
- void setSurfaceGridEnabled(bool enabled);
+ void setDrawMode(QSurface3DSeries::DrawFlags mode);
private:
QSurface3DSeries *qptr();
QPoint m_selectedPoint;
bool m_flatShadingEnabled;
- bool m_surfaceGridEnabled;
+ QSurface3DSeries::DrawFlags m_drawMode;
private:
friend class QSurface3DSeries;
diff --git a/src/datavisualization/engine/surface3drenderer.cpp b/src/datavisualization/engine/surface3drenderer.cpp
index 47e3bf08..43815d39 100644
--- a/src/datavisualization/engine/surface3drenderer.cpp
+++ b/src/datavisualization/engine/surface3drenderer.cpp
@@ -206,12 +206,9 @@ void Surface3DRenderer::updateData()
const QSurfaceDataArray *array = 0;
if (m_visibleSeriesList.size()) {
QSurface3DSeries *firstSeries = static_cast<QSurface3DSeries *>(m_visibleSeriesList.at(0).series());
- m_cachedSurfaceVisible = firstSeries->isVisible(); // TODO: To series visuals update?
- if (m_cachedSurfaceGridOn || m_cachedSurfaceVisible) {
- QSurfaceDataProxy *dataProxy = firstSeries->dataProxy();
- if (dataProxy)
- array = dataProxy->array();
- }
+ QSurfaceDataProxy *dataProxy = firstSeries->dataProxy();
+ if (dataProxy)
+ array = dataProxy->array();
}
calculateSceneScalingFactors();
@@ -264,6 +261,9 @@ void Surface3DRenderer::updateData()
delete m_dataArray.at(i);
m_dataArray.clear();
m_sampleSpace = QRect();
+
+ delete m_surfaceObj;
+ m_surfaceObj = 0;
}
for (int i = 0; i < m_sliceDataArray.size(); i++)
@@ -282,7 +282,11 @@ void Surface3DRenderer::updateSeries(const QList<QAbstract3DSeries *> &seriesLis
if (m_visibleSeriesList.size()) {
QSurface3DSeries *series = static_cast<QSurface3DSeries *>(m_visibleSeriesList.at(0).series());
updateFlatStatus(series->isFlatShadingEnabled());
- updateSurfaceGridStatus(series->isSurfaceGridEnabled());
+
+ QSurface3DSeries::DrawFlags drawMode = series->drawMode();
+ m_cachedSurfaceVisible = drawMode.testFlag(QSurface3DSeries::DrawSurface);
+ m_cachedSurfaceGridOn = drawMode.testFlag(QSurface3DSeries::DrawWireframe);
+
QVector3D seriesColor = Utils::vectorFromColor(series->baseColor());
if (m_uniformGradientTextureColor != seriesColor)
generateUniformGradient(seriesColor);