1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef QTGRAPHS_QABSTRACT3DAXIS_H
5#define QTGRAPHS_QABSTRACT3DAXIS_H
6
7#include <QtCore/qobject.h>
8#include <QtCore/qscopedpointer.h>
9#include <QtCore/qstringlist.h>
10#include <QtCore/qtclasshelpermacros.h>
11#include <QtGraphs/qgraphsglobal.h>
12#include <QtQmlIntegration/qqmlintegration.h>
13
14QT_BEGIN_NAMESPACE
15
16class QAbstract3DAxisPrivate;
17
18class Q_GRAPHS_EXPORT QAbstract3DAxis : public QObject
19{
20 Q_OBJECT
21 Q_DECLARE_PRIVATE(QAbstract3DAxis)
22 Q_CLASSINFO("RegisterEnumClassesUnscoped", "false")
23 Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL)
24 Q_PROPERTY(QStringList labels READ labels WRITE setLabels NOTIFY labelsChanged)
25 Q_PROPERTY(bool labelsVisible READ labelsVisible WRITE setLabelsVisible NOTIFY
26 labelVisibleChanged FINAL)
27 Q_PROPERTY(QAbstract3DAxis::AxisOrientation orientation READ orientation NOTIFY
28 orientationChanged FINAL)
29 Q_PROPERTY(QAbstract3DAxis::AxisType type READ type CONSTANT)
30 Q_PROPERTY(float min READ min WRITE setMin NOTIFY minChanged FINAL)
31 Q_PROPERTY(float max READ max WRITE setMax NOTIFY maxChanged FINAL)
32 Q_PROPERTY(bool autoAdjustRange READ isAutoAdjustRange WRITE setAutoAdjustRange NOTIFY
33 autoAdjustRangeChanged FINAL)
34 Q_PROPERTY(float labelAutoAngle READ labelAutoAngle WRITE setLabelAutoAngle NOTIFY
35 labelAutoAngleChanged FINAL)
36 Q_PROPERTY(bool scaleLabelsByCount READ isScaleLabelsByCount WRITE setScaleLabelsByCount NOTIFY
37 scaleLabelsByCountChanged REVISION(6, 9))
38 Q_PROPERTY(qreal labelSize READ labelSize WRITE setLabelSize NOTIFY labelSizeChanged NOTIFY
39 labelSizeChanged REVISION(6, 9))
40 Q_PROPERTY(bool titleVisible READ isTitleVisible WRITE setTitleVisible NOTIFY
41 titleVisibleChanged FINAL)
42 Q_PROPERTY(bool titleFixed READ isTitleFixed WRITE setTitleFixed NOTIFY titleFixedChanged FINAL)
43 Q_PROPERTY(
44 float titleOffset READ titleOffset WRITE setTitleOffset NOTIFY titleOffsetChanged FINAL)
45 QML_NAMED_ELEMENT(Abstract3DAxis)
46 QML_UNCREATABLE("")
47
48public:
49 enum class AxisOrientation { None, X, Y, Z };
50 Q_ENUM(AxisOrientation)
51
52 enum class AxisType {
53 None,
54 Category,
55 Value,
56 };
57 Q_ENUM(AxisType)
58
59protected:
60 explicit QAbstract3DAxis(QAbstract3DAxisPrivate &d, QObject *parent = nullptr);
61
62public:
63 ~QAbstract3DAxis() override;
64
65 void setTitle(const QString &title);
66 QString title() const;
67
68 void setLabels(const QStringList &labels);
69 QStringList labels() const;
70
71 QAbstract3DAxis::AxisOrientation orientation() const;
72 QAbstract3DAxis::AxisType type() const;
73
74 void setMin(float min);
75 float min() const;
76
77 void setMax(float max);
78 float max() const;
79
80 void setAutoAdjustRange(bool autoAdjust);
81 bool isAutoAdjustRange() const;
82
83 void setScaleLabelsByCount(bool adjust);
84 bool isScaleLabelsByCount() const;
85
86 void setLabelSize(qreal size);
87 qreal labelSize() const;
88
89 void setRange(float min, float max);
90
91 void setLabelAutoAngle(float degree);
92 float labelAutoAngle() const;
93
94 void setTitleVisible(bool visible);
95 bool isTitleVisible() const;
96
97 void setLabelsVisible(bool visible);
98 bool labelsVisible() const;
99
100 void setTitleFixed(bool fixed);
101 bool isTitleFixed() const;
102
103 void setTitleOffset(float offset);
104 float titleOffset() const;
105
106Q_SIGNALS:
107 void titleChanged(const QString &newTitle);
108 void labelsChanged();
109 void orientationChanged(QAbstract3DAxis::AxisOrientation orientation);
110 void minChanged(float value);
111 void maxChanged(float value);
112 void rangeChanged(float min, float max);
113 void autoAdjustRangeChanged(bool autoAdjust);
114 Q_REVISION(6, 9) void scaleLabelsByCountChanged(bool adjust);
115 Q_REVISION(6, 9) void labelSizeChanged(qreal size);
116 void labelAutoAngleChanged(float angle);
117 void titleVisibleChanged(bool visible);
118 void labelVisibleChanged(bool visible);
119 void titleFixedChanged(bool fixed);
120 void titleOffsetChanged(float offset);
121
122private:
123 Q_DISABLE_COPY(QAbstract3DAxis)
124
125 friend class QQuickGraphsItem;
126 friend class QScatterDataProxyPrivate;
127 friend class QSurfaceDataProxyPrivate;
128};
129
130QT_END_NAMESPACE
131
132#endif
133

source code of qtgraphs/src/graphs3d/axis/qabstract3daxis.h