1// Copyright (C) 2024 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4//
5// W A R N I N G
6// -------------
7//
8// This file is not part of the QtGraphs API. It exists purely as an
9// implementation detail. This header file may change from version to
10// version without notice, or even be removed.
11//
12// We mean it.
13
14#ifndef QQUICKGRAPHSSURFACESERIES_P_H
15#define QQUICKGRAPHSSURFACESERIES_P_H
16
17#include "common/theme/qquickgraphscolor_p.h"
18#include "gradientholder_p.h"
19#include "qsurface3dseries.h"
20
21#include <QtQml/qqml.h>
22#include <QtQuick/private/qquickrectangle_p.h>
23#include <private/qgraphsglobal_p.h>
24#include <private/qgraphstheme_p.h>
25
26QT_BEGIN_NAMESPACE
27
28class QQuickGraphsSurface3DSeries : public QSurface3DSeries
29{
30 Q_OBJECT
31 Q_PROPERTY(QQmlListProperty<QObject> seriesChildren READ seriesChildren CONSTANT)
32 // This property is overloaded to use QPointF instead of QPoint to work
33 // around qml bug where Qt.point(0, 0) can't be assigned due to error
34 // "Cannot assign QPointF to QPoint".
35 Q_PROPERTY(QPointF selectedPoint READ selectedPoint WRITE setSelectedPoint NOTIFY
36 selectedPointChanged FINAL)
37 // This is static method in parent class, overload as constant property for
38 // qml.
39 Q_PROPERTY(QPointF invalidSelectionPosition READ invalidSelectionPosition CONSTANT)
40 Q_PROPERTY(QQuickGradient *baseGradient READ baseGradient WRITE setBaseGradient NOTIFY
41 baseGradientChanged FINAL)
42 Q_PROPERTY(QQuickGradient *singleHighlightGradient READ singleHighlightGradient WRITE
43 setSingleHighlightGradient NOTIFY singleHighlightGradientChanged FINAL)
44 Q_PROPERTY(QQuickGradient *multiHighlightGradient READ multiHighlightGradient WRITE
45 setMultiHighlightGradient NOTIFY multiHighlightGradientChanged FINAL)
46 Q_CLASSINFO("DefaultProperty", "seriesChildren")
47
48 QML_NAMED_ELEMENT(Surface3DSeries)
49
50public:
51 QQuickGraphsSurface3DSeries(QObject *parent = 0);
52 ~QQuickGraphsSurface3DSeries() override;
53
54 void setSelectedPoint(QPointF position);
55 QPointF selectedPoint() const;
56 QPointF invalidSelectionPosition() const;
57
58 QQmlListProperty<QObject> seriesChildren();
59 static void appendSeriesChildren(QQmlListProperty<QObject> *list, QObject *element);
60
61 void setBaseGradient(QQuickGradient *gradient);
62 QQuickGradient *baseGradient() const;
63 void setSingleHighlightGradient(QQuickGradient *gradient);
64 QQuickGradient *singleHighlightGradient() const;
65 void setMultiHighlightGradient(QQuickGradient *gradient);
66 QQuickGradient *multiHighlightGradient() const;
67
68public Q_SLOTS:
69 void handleBaseGradientUpdate();
70 void handleSingleHighlightGradientUpdate();
71 void handleMultiHighlightGradientUpdate();
72
73Q_SIGNALS:
74 void selectedPointChanged(QPointF position);
75 void baseGradientChanged(QQuickGradient *gradient);
76 void singleHighlightGradientChanged(QQuickGradient *gradient);
77 void multiHighlightGradientChanged(QQuickGradient *gradient);
78
79 void gradientsChanged();
80
81private:
82 GradientHolder m_gradients;
83
84 void setGradientHelper(QQuickGradient *newGradient,
85 QQuickGradient *memberGradient,
86 GradientType type);
87};
88
89QT_END_NAMESPACE
90
91#endif
92

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

source code of qtgraphs/src/graphs3d/qml/qquickgraphssurfaceseries_p.h