1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QSURFACE3DSERIES_H
5#define QSURFACE3DSERIES_H
6
7#include <QtDataVisualization/qabstract3dseries.h>
8#include <QtDataVisualization/qsurfacedataproxy.h>
9
10QT_BEGIN_NAMESPACE
11
12class QSurface3DSeriesPrivate;
13
14class Q_DATAVISUALIZATION_EXPORT QSurface3DSeries : public QAbstract3DSeries
15{
16 Q_OBJECT
17 Q_FLAGS(DrawFlag DrawFlags)
18 Q_PROPERTY(QSurfaceDataProxy *dataProxy READ dataProxy WRITE setDataProxy NOTIFY dataProxyChanged)
19 Q_PROPERTY(QPoint selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY selectedPointChanged)
20 Q_PROPERTY(bool flatShadingEnabled READ isFlatShadingEnabled WRITE setFlatShadingEnabled NOTIFY flatShadingEnabledChanged)
21 Q_PROPERTY(bool flatShadingSupported READ isFlatShadingSupported NOTIFY flatShadingSupportedChanged)
22 Q_PROPERTY(DrawFlags drawMode READ drawMode WRITE setDrawMode NOTIFY drawModeChanged)
23 Q_PROPERTY(QImage texture READ texture WRITE setTexture NOTIFY textureChanged)
24 Q_PROPERTY(QString textureFile READ textureFile WRITE setTextureFile NOTIFY textureFileChanged)
25 Q_PROPERTY(QColor wireframeColor READ wireframeColor WRITE setWireframeColor NOTIFY wireframeColorChanged REVISION(6, 3))
26
27public:
28 enum DrawFlag {
29 DrawWireframe = 1,
30 DrawSurface = 2,
31 DrawSurfaceAndWireframe = DrawWireframe | DrawSurface
32 };
33 Q_ENUM(DrawFlag)
34 Q_DECLARE_FLAGS(DrawFlags, DrawFlag)
35
36 explicit QSurface3DSeries(QObject *parent = nullptr);
37 explicit QSurface3DSeries(QSurfaceDataProxy *dataProxy, QObject *parent = nullptr);
38 virtual ~QSurface3DSeries();
39
40 void setDataProxy(QSurfaceDataProxy *proxy);
41 QSurfaceDataProxy *dataProxy() const;
42
43 void setSelectedPoint(const QPoint &position);
44 QPoint selectedPoint() const;
45 static QPoint invalidSelectionPosition();
46
47 void setFlatShadingEnabled(bool enabled);
48 bool isFlatShadingEnabled() const;
49
50 void setDrawMode(DrawFlags mode);
51 QSurface3DSeries::DrawFlags drawMode() const;
52
53 bool isFlatShadingSupported() const;
54
55 void setTexture(const QImage &texture);
56 QImage texture() const;
57 void setTextureFile(const QString &filename);
58 QString textureFile() const;
59
60 void setWireframeColor(const QColor &color);
61 QColor wireframeColor() const;
62
63Q_SIGNALS:
64 void dataProxyChanged(QSurfaceDataProxy *proxy);
65 void selectedPointChanged(const QPoint &position);
66 void flatShadingEnabledChanged(bool enable);
67 void flatShadingSupportedChanged(bool enable);
68 void drawModeChanged(QSurface3DSeries::DrawFlags mode);
69 void textureChanged(const QImage &image);
70 void textureFileChanged(const QString &filename);
71 Q_REVISION(6, 3) void wireframeColorChanged(const QColor &color);
72
73protected:
74 explicit QSurface3DSeries(QSurface3DSeriesPrivate *d, QObject *parent = nullptr);
75 QSurface3DSeriesPrivate *dptr();
76 const QSurface3DSeriesPrivate *dptrc() const;
77
78private:
79 Q_DISABLE_COPY(QSurface3DSeries)
80
81 friend class Surface3DController;
82};
83
84Q_DECLARE_OPERATORS_FOR_FLAGS(QSurface3DSeries::DrawFlags)
85
86QT_END_NAMESPACE
87
88#endif
89

source code of qtdatavis3d/src/datavisualization/data/qsurface3dseries.h