1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
3
4#ifndef AXISTICKER_H
5#define AXISTICKER_H
6
7// W A R N I N G
8// -------------
9//
10// This file is not part of the QtGraphs API. It exists purely as an
11// implementation detail. This header file may change from version to
12// version without notice, or even be removed.
13//
14// We mean it.
15
16#include <QtQuick/private/qquickshadereffect_p.h>
17
18QT_BEGIN_NAMESPACE
19
20class AxisTicker : public QQuickShaderEffect
21{
22 Q_OBJECT
23 Q_PROPERTY(QVector3D iResolution READ iResolution NOTIFY iResolutionChanged FINAL)
24 Q_PROPERTY(qreal smoothing READ smoothing WRITE setSmoothing NOTIFY smoothingChanged FINAL)
25 Q_PROPERTY(int origo READ origo WRITE setOrigo NOTIFY origoChanged FINAL)
26 Q_PROPERTY(bool subTicksVisible READ subTicksVisible WRITE setSubTicksVisible NOTIFY subTicksVisibleChanged FINAL)
27 Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing NOTIFY spacingChanged FINAL)
28 Q_PROPERTY(qreal displacement READ displacement WRITE setDisplacement NOTIFY displacementChanged FINAL)
29 Q_PROPERTY(QColor subTickColor READ subTickColor WRITE setSubTickColor NOTIFY subTickColorChanged FINAL)
30 Q_PROPERTY(QColor tickColor READ tickColor WRITE setTickColor NOTIFY tickColorChanged FINAL)
31 Q_PROPERTY(qreal subTickLineWidth READ subTickLineWidth WRITE setSubTickLineWidth NOTIFY subTickLineWidthChanged FINAL)
32 Q_PROPERTY(qreal tickLineWidth READ tickLineWidth WRITE setTickLineWidth NOTIFY tickLineWidthChanged FINAL)
33 Q_PROPERTY(qreal subTickScale READ subTickScale WRITE setSubTickScale NOTIFY subTickScaleChanged FINAL)
34 Q_PROPERTY(qreal subTickLength READ subTickLength WRITE setSubTickLength NOTIFY subTickLengthChanged FINAL)
35 Q_PROPERTY(bool isHorizontal READ isHorizontal WRITE setIsHorizontal NOTIFY isHorizontalChanged FINAL)
36 Q_PROPERTY(bool flipped READ isFlipped WRITE setFlipped NOTIFY flippedChanged FINAL)
37public:
38 AxisTicker(QQuickItem *parent = nullptr);
39 ~AxisTicker() override;
40
41 void setupShaders();
42
43 QVector3D iResolution() const;
44
45 qreal smoothing() const;
46 void setSmoothing(qreal newSmoothing);
47
48 int origo() const;
49 void setOrigo(int newOrigo);
50
51 bool subTicksVisible() const;
52 void setSubTicksVisible(bool newSubTicksVisible);
53
54 qreal spacing() const;
55 void setSpacing(qreal newSpacing);
56
57 qreal displacement() const;
58 void setDisplacement(qreal newDisplacement);
59
60 QColor subTickColor() const;
61 void setSubTickColor(QColor newSubTickColor);
62
63 QColor tickColor() const;
64 void setTickColor(QColor newTickColor);
65
66 qreal subTickLineWidth() const;
67 void setSubTickLineWidth(qreal newSubTickLineWidth);
68
69 qreal tickLineWidth() const;
70 void setTickLineWidth(qreal newTickLineWidth);
71
72 qreal subTickScale() const;
73 void setSubTickScale(qreal newSubTickScale);
74
75 qreal subTickLength() const;
76 void setSubTickLength(qreal newSubTickLength);
77
78 bool isHorizontal() const;
79 void setIsHorizontal(bool newIsHorizontal);
80
81 bool isFlipped() const;
82 void setFlipped(bool newFlipped);
83
84protected:
85 void componentComplete() override;
86 void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override;
87
88Q_SIGNALS:
89 void iResolutionChanged();
90 void smoothingChanged();
91 void origoChanged();
92 void subTicksVisibleChanged();
93 void spacingChanged();
94 void displacementChanged();
95 void subTickColorChanged();
96 void tickColorChanged();
97 void subTickLineWidthChanged();
98 void tickLineWidthChanged();
99 void subTickScaleChanged();
100 void subTickLengthChanged();
101 void isHorizontalChanged();
102 void flippedChanged();
103
104private:
105 friend class AxisRenderer;
106 QVector3D m_iResolution;
107 qreal m_smoothing = 1.0;
108 int m_origo = 0;
109 bool m_subTicksVisible = true;
110 qreal m_spacing = 100;
111 qreal m_displacement = 0;
112 QColor m_subTickColor = QColor(150, 150, 150);
113 QColor m_tickColor = QColor(255, 255, 255);
114 qreal m_subTickLineWidth = 1.0;
115 qreal m_tickLineWidth = 2.0;
116 qreal m_subTickScale = 0.1;
117 qreal m_subTickLength = 0.1;
118 bool m_isHorizontal = false;
119 bool m_flipped = false;
120};
121
122QT_END_NAMESPACE
123
124#endif // AXISTICKER_H
125

Provided by KDAB

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

source code of qtgraphs/src/graphs2d/axis/axisticker_p.h