1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QTGRAPHS_QABSTRACT3DSERIES_H
5#define QTGRAPHS_QABSTRACT3DSERIES_H
6
7#include <QtCore/qobject.h>
8#include <QtCore/qscopedpointer.h>
9#include <QtCore/qstring.h>
10#include <QtGraphs/qgraphstheme.h>
11#include <QtGui/qbrush.h>
12#include <QtGui/qquaternion.h>
13
14QT_BEGIN_NAMESPACE
15
16class QAbstract3DSeriesPrivate;
17
18class Q_GRAPHS_EXPORT QAbstract3DSeries : public QObject
19{
20 Q_OBJECT
21 Q_DECLARE_PRIVATE(QAbstract3DSeries)
22 Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
23 Q_PROPERTY(QAbstract3DSeries::SeriesType type READ type CONSTANT)
24 Q_PROPERTY(QString itemLabelFormat READ itemLabelFormat WRITE setItemLabelFormat NOTIFY
25 itemLabelFormatChanged)
26 Q_PROPERTY(bool visible READ isVisible WRITE setVisible NOTIFY visibleChanged)
27 Q_PROPERTY(QAbstract3DSeries::Mesh mesh READ mesh WRITE setMesh NOTIFY meshChanged)
28 Q_PROPERTY(bool meshSmooth READ isMeshSmooth WRITE setMeshSmooth NOTIFY meshSmoothChanged)
29 Q_PROPERTY(
30 QQuaternion meshRotation READ meshRotation WRITE setMeshRotation NOTIFY meshRotationChanged)
31 Q_PROPERTY(QString userDefinedMesh READ userDefinedMesh WRITE setUserDefinedMesh NOTIFY
32 userDefinedMeshChanged)
33 Q_PROPERTY(QGraphsTheme::ColorStyle colorStyle READ colorStyle WRITE setColorStyle NOTIFY
34 colorStyleChanged)
35 Q_PROPERTY(QColor baseColor READ baseColor WRITE setBaseColor NOTIFY baseColorChanged)
36 Q_PROPERTY(QLinearGradient baseGradient READ baseGradient WRITE setBaseGradient NOTIFY
37 baseGradientChanged)
38 Q_PROPERTY(QColor singleHighlightColor READ singleHighlightColor WRITE setSingleHighlightColor
39 NOTIFY singleHighlightColorChanged)
40 Q_PROPERTY(QLinearGradient singleHighlightGradient READ singleHighlightGradient WRITE
41 setSingleHighlightGradient NOTIFY singleHighlightGradientChanged)
42 Q_PROPERTY(QColor multiHighlightColor READ multiHighlightColor WRITE setMultiHighlightColor
43 NOTIFY multiHighlightColorChanged)
44 Q_PROPERTY(QLinearGradient multiHighlightGradient READ multiHighlightGradient WRITE
45 setMultiHighlightGradient NOTIFY multiHighlightGradientChanged)
46 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
47 Q_PROPERTY(QString itemLabel READ itemLabel NOTIFY itemLabelChanged)
48 Q_PROPERTY(bool itemLabelVisible READ isItemLabelVisible WRITE setItemLabelVisible NOTIFY
49 itemLabelVisibleChanged)
50 Q_PROPERTY(QAbstract3DSeries::LightingMode lightingMode READ lightingMode WRITE setLightingMode
51 NOTIFY lightingModeChanged REVISION(6,10))
52 QML_NAMED_ELEMENT(Abstract3DSeries)
53 QML_UNCREATABLE("Uncreatable base type")
54public:
55 enum class SeriesType {
56 None,
57 Bar,
58 Scatter,
59 Surface,
60 };
61 Q_ENUM(SeriesType)
62
63 enum class Mesh {
64 UserDefined,
65 Bar,
66 Cube,
67 Pyramid,
68 Cone,
69 Cylinder,
70 BevelBar,
71 BevelCube,
72 Sphere,
73 Minimal,
74 Arrow,
75 Point,
76 };
77 Q_ENUM(Mesh)
78
79 enum class LightingMode : bool {
80 Shaded,
81 Unshaded,
82 };
83 Q_ENUM(LightingMode)
84
85protected:
86 explicit QAbstract3DSeries(QAbstract3DSeriesPrivate &d, QObject *parent = nullptr);
87
88public:
89 ~QAbstract3DSeries() override;
90
91 QAbstract3DSeries::SeriesType type() const;
92
93 void setItemLabelFormat(const QString &format);
94 QString itemLabelFormat() const;
95
96 void setVisible(bool visible);
97 bool isVisible() const;
98
99 void setMesh(QAbstract3DSeries::Mesh mesh);
100 QAbstract3DSeries::Mesh mesh() const;
101
102 void setMeshSmooth(bool enable);
103 bool isMeshSmooth() const;
104
105 void setMeshRotation(const QQuaternion &rotation);
106 QQuaternion meshRotation() const;
107 Q_INVOKABLE void setMeshAxisAndAngle(QVector3D axis, float angle);
108
109 void setUserDefinedMesh(const QString &fileName);
110 QString userDefinedMesh() const;
111
112 void setColorStyle(QGraphsTheme::ColorStyle style);
113 QGraphsTheme::ColorStyle colorStyle() const;
114 void setBaseColor(QColor color);
115 QColor baseColor() const;
116 void setBaseGradient(const QLinearGradient &gradient);
117 QLinearGradient baseGradient() const;
118 void setSingleHighlightColor(QColor color);
119 QColor singleHighlightColor() const;
120 void setSingleHighlightGradient(const QLinearGradient &gradient);
121 QLinearGradient singleHighlightGradient() const;
122 void setMultiHighlightColor(QColor color);
123 QColor multiHighlightColor() const;
124 void setMultiHighlightGradient(const QLinearGradient &gradient);
125 QLinearGradient multiHighlightGradient() const;
126
127 LightingMode lightingMode() const;
128 void setLightingMode(LightingMode lightingMode);
129
130 void setName(const QString &name);
131 QString name() const;
132
133 QString itemLabel();
134 void setItemLabelVisible(bool visible);
135 bool isItemLabelVisible() const;
136
137Q_SIGNALS:
138 void itemLabelFormatChanged(const QString &format);
139 void visibleChanged(bool visible);
140 void meshChanged(QAbstract3DSeries::Mesh mesh);
141 void meshSmoothChanged(bool enabled);
142 void meshRotationChanged(const QQuaternion &rotation);
143 void userDefinedMeshChanged(const QString &fileName);
144 void colorStyleChanged(QGraphsTheme::ColorStyle style);
145 void baseColorChanged(QColor color);
146 void baseGradientChanged(const QLinearGradient &gradient);
147 void singleHighlightColorChanged(QColor color);
148 void singleHighlightGradientChanged(const QLinearGradient &gradient);
149 void multiHighlightColorChanged(QColor color);
150 void multiHighlightGradientChanged(const QLinearGradient &gradient);
151 void nameChanged(const QString &name);
152 void itemLabelChanged(const QString &label);
153 void itemLabelVisibleChanged(bool visible);
154 void lightingModeChanged(QAbstract3DSeries::LightingMode lightingMode);
155
156private:
157 Q_DISABLE_COPY(QAbstract3DSeries)
158
159 friend class QQuickGraphsItem;
160 friend class QQuickGraphsBars;
161 friend class QQuickGraphsSurface;
162 friend class QQuickGraphsScatter;
163};
164
165QT_END_NAMESPACE
166
167#endif
168

source code of qtgraphs/src/graphs3d/data/qabstract3dseries.h