1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QTGRAPHS_QSURFACEDATAPROXY_H
5#define QTGRAPHS_QSURFACEDATAPROXY_H
6
7#include <QtGraphs/qabstractdataproxy.h>
8#include <QtGraphs/qsurfacedataitem.h>
9
10Q_MOC_INCLUDE(<QtGraphs/qsurface3dseries.h>)
11
12QT_BEGIN_NAMESPACE
13
14class QSurfaceDataProxyPrivate;
15class QSurface3DSeries;
16
17using QSurfaceDataRow = QList<QSurfaceDataItem>;
18using QSurfaceDataArray = QList<QSurfaceDataRow>;
19
20class Q_GRAPHS_EXPORT QSurfaceDataProxy : public QAbstractDataProxy
21{
22 Q_OBJECT
23 Q_DECLARE_PRIVATE(QSurfaceDataProxy)
24 Q_PROPERTY(qsizetype rowCount READ rowCount NOTIFY rowCountChanged FINAL)
25 Q_PROPERTY(qsizetype columnCount READ columnCount NOTIFY columnCountChanged FINAL)
26 Q_PROPERTY(QSurface3DSeries *series READ series NOTIFY seriesChanged FINAL)
27 QML_NAMED_ELEMENT(SurfaceDataProxy)
28 QML_UNCREATABLE("")
29
30public:
31 explicit QSurfaceDataProxy(QObject *parent = nullptr);
32 ~QSurfaceDataProxy() override;
33
34 QSurface3DSeries *series() const;
35 qsizetype rowCount() const;
36 qsizetype columnCount() const;
37 const QSurfaceDataItem &itemAt(qsizetype rowIndex, qsizetype columnIndex) const;
38 const QSurfaceDataItem &itemAt(QPoint position) const;
39
40 void resetArray();
41 void resetArray(QSurfaceDataArray newArray);
42
43 void setRow(qsizetype rowIndex, QSurfaceDataRow row);
44 void setRows(qsizetype rowIndex, QSurfaceDataArray rows);
45
46 void setItem(qsizetype rowIndex, qsizetype columnIndex, QSurfaceDataItem item);
47 void setItem(QPoint position, QSurfaceDataItem item);
48
49 qsizetype addRow(QSurfaceDataRow row);
50 qsizetype addRows(QSurfaceDataArray rows);
51
52 void insertRow(qsizetype rowIndex, QSurfaceDataRow row);
53 void insertRows(qsizetype rowIndex, QSurfaceDataArray rows);
54
55 void removeRows(qsizetype rowIndex, qsizetype removeCount);
56
57Q_SIGNALS:
58 void arrayReset();
59 void rowsAdded(qsizetype startIndex, qsizetype count);
60 void rowsChanged(qsizetype startIndex, qsizetype count);
61 void rowsRemoved(qsizetype startIndex, qsizetype count);
62 void rowsInserted(qsizetype startIndex, qsizetype count);
63 void itemChanged(qsizetype rowIndex, qsizetype columnIndex);
64
65 void rowCountChanged(qsizetype count);
66 void columnCountChanged(qsizetype count);
67 void seriesChanged(QSurface3DSeries *series);
68
69protected:
70 explicit QSurfaceDataProxy(QSurfaceDataProxyPrivate &d, QObject *parent = nullptr);
71
72private:
73 Q_DISABLE_COPY(QSurfaceDataProxy)
74
75 friend class QQuickGraphsSurface;
76};
77
78QT_END_NAMESPACE
79
80#endif
81

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