1/****************************************************************************
2**
3** Copyright (C) 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt Data Visualization module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:GPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU
19** General Public License version 3 or (at your option) any later version
20** approved by the KDE Free Qt Foundation. The licenses are as published by
21** the Free Software Foundation and appearing in the file LICENSE.GPL3
22** included in the packaging of this file. Please review the following
23** information to ensure the GNU General Public License requirements will
24** be met: https://www.gnu.org/licenses/gpl-3.0.html.
25**
26** $QT_END_LICENSE$
27**
28****************************************************************************/
29
30#ifndef QSURFACEDATAPROXY_H
31#define QSURFACEDATAPROXY_H
32
33#include <QtDataVisualization/qabstractdataproxy.h>
34#include <QtDataVisualization/qsurfacedataitem.h>
35
36QT_BEGIN_NAMESPACE_DATAVISUALIZATION
37
38class QSurfaceDataProxyPrivate;
39class QSurface3DSeries;
40
41typedef QVector<QSurfaceDataItem> QSurfaceDataRow;
42typedef QList<QSurfaceDataRow *> QSurfaceDataArray;
43
44class QT_DATAVISUALIZATION_EXPORT QSurfaceDataProxy : public QAbstractDataProxy
45{
46 Q_OBJECT
47
48 Q_PROPERTY(int rowCount READ rowCount NOTIFY rowCountChanged)
49 Q_PROPERTY(int columnCount READ columnCount NOTIFY columnCountChanged)
50 Q_PROPERTY(QSurface3DSeries *series READ series NOTIFY seriesChanged)
51
52public:
53 explicit QSurfaceDataProxy(QObject *parent = nullptr);
54 virtual ~QSurfaceDataProxy();
55
56 QSurface3DSeries *series() const;
57 int rowCount() const;
58 int columnCount() const;
59 const QSurfaceDataArray *array() const;
60 const QSurfaceDataItem *itemAt(int rowIndex, int columnIndex) const;
61 const QSurfaceDataItem *itemAt(const QPoint &position) const;
62
63 void resetArray(QSurfaceDataArray *newArray);
64
65 void setRow(int rowIndex, QSurfaceDataRow *row);
66 void setRows(int rowIndex, const QSurfaceDataArray &rows);
67
68 void setItem(int rowIndex, int columnIndex, const QSurfaceDataItem &item);
69 void setItem(const QPoint &position, const QSurfaceDataItem &item);
70
71 int addRow(QSurfaceDataRow *row);
72 int addRows(const QSurfaceDataArray &rows);
73
74 void insertRow(int rowIndex, QSurfaceDataRow *row);
75 void insertRows(int rowIndex, const QSurfaceDataArray &rows);
76
77 void removeRows(int rowIndex, int removeCount);
78
79Q_SIGNALS:
80 void arrayReset();
81 void rowsAdded(int startIndex, int count);
82 void rowsChanged(int startIndex, int count);
83 void rowsRemoved(int startIndex, int count);
84 void rowsInserted(int startIndex, int count);
85 void itemChanged(int rowIndex, int columnIndex);
86
87 void rowCountChanged(int count);
88 void columnCountChanged(int count);
89 void seriesChanged(QSurface3DSeries *series);
90
91protected:
92 explicit QSurfaceDataProxy(QSurfaceDataProxyPrivate *d, QObject *parent = nullptr);
93 QSurfaceDataProxyPrivate *dptr();
94 const QSurfaceDataProxyPrivate *dptrc() const;
95
96private:
97 Q_DISABLE_COPY(QSurfaceDataProxy)
98
99 friend class Surface3DController;
100};
101
102QT_END_NAMESPACE_DATAVISUALIZATION
103
104#endif
105

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