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 QGRAPHSTHEME_P_H
15#define QGRAPHSTHEME_P_H
16#include <QtGraphs/qgraphstheme.h>
17#include <QtQuick/private/qquickrectangle_p.h>
18#include <private/qobject_p.h>
19
20QT_BEGIN_NAMESPACE
21
22class QGraphsThemePrivate : public QObjectPrivate
23{
24public:
25 QGraphsThemePrivate();
26 ~QGraphsThemePrivate() override;
27
28private:
29 struct QGraphsCustomBitField
30 {
31 bool plotAreaBackgroundColorCustom : 1;
32 bool seriesColorsCustom : 1;
33 bool borderColorsCustom : 1;
34 bool seriesGradientCustom : 1;
35 bool labelBackgroundColorCustom : 1;
36 bool labelTextColorCustom : 1;
37 bool multiHighlightColorCustom : 1;
38 bool multiHighlightGradientCustom : 1;
39 bool singleHighlightColorCustom : 1;
40 bool singleHighlightGradientCustom : 1;
41 bool backgroundColorCustom : 1;
42 bool axisXLabelFontCustom : 1;
43 bool axisYLabelFontCustom : 1;
44 bool axisZLabelFontCustom : 1;
45
46 QGraphsCustomBitField()
47 : plotAreaBackgroundColorCustom(false)
48 , seriesColorsCustom(false)
49 , borderColorsCustom(false)
50 , seriesGradientCustom(false)
51 , labelBackgroundColorCustom(false)
52 , labelTextColorCustom(false)
53 , multiHighlightColorCustom(false)
54 , multiHighlightGradientCustom(false)
55 , singleHighlightColorCustom(false)
56 , singleHighlightGradientCustom(false)
57 , backgroundColorCustom(false)
58 , axisXLabelFontCustom(false)
59 , axisYLabelFontCustom(false)
60 , axisZLabelFontCustom(false)
61 {}
62 };
63
64 QGraphsThemeDirtyBitField m_dirtyBits;
65 QGraphsCustomBitField m_customBits;
66
67 QMetaObject::Connection m_autoColorConnection;
68 bool m_themeDirty = false;
69 QGraphsTheme::ColorScheme m_colorScheme = QGraphsTheme::ColorScheme::Automatic;
70 QGraphsTheme::Theme m_theme = QGraphsTheme::Theme::QtGreen;
71 QGraphsTheme::ColorStyle m_colorStyle = QGraphsTheme::ColorStyle::Uniform;
72 QList<QObject *> m_themeChildren;
73 QColor m_plotAreaBackgroundColor;
74 QColor m_plotAreaBackgroundThemeColor;
75 bool m_backgroundVisibility = false;
76 bool m_gridVisibility = false;
77 QColor m_backgroundColor;
78 QColor m_backgroundThemeColor;
79 bool m_plotAreaBackgroundVisibility = false;
80 bool m_labelsVisibility = false;
81 QColor m_labelBackgroundColor;
82 QColor m_labelBackgroundThemeColor;
83 QColor m_labelTextColor;
84 QColor m_labelTextThemeColor;
85 bool m_labelBackgroundVisibility = false;
86 bool m_labelBorderVisibility = false;
87 QColor m_singleHighlightColor;
88 QColor m_singleHighlightThemeColor;
89 QColor m_multiHighlightColor;
90 QColor m_multiHighlightThemeColor;
91 QLinearGradient m_multiHighlightGradient;
92 QLinearGradient m_multiHighlightThemeGradient;
93 QLinearGradient m_singleHighlightGradient;
94 QLinearGradient m_singleHighlightThemeGradient;
95 QFont m_labelFont;
96 QList<QColor> m_seriesColors;
97 QList<QColor> m_seriesThemeColors;
98 QList<QColor> m_borderColors;
99 QList<QColor> m_borderThemeColors;
100 qreal m_borderWidth = 1.0;
101 QList<QLinearGradient> m_seriesGradients;
102 QList<QLinearGradient> m_seriesThemeGradients;
103
104 QList<QQuickGraphsColor *> m_colors;
105 QList<QQuickGradient *> m_gradients;
106 QQuickGradient *m_singleHLQuickGradient = nullptr;
107 QQuickGradient *m_multiHLQuickGradient = nullptr;
108
109 QFont m_axisXLabelFont;
110 QFont m_axisYLabelFont;
111 QFont m_axisZLabelFont;
112
113 QGraphsLine m_grid;
114 QGraphsLine m_axisX;
115 QGraphsLine m_axisY;
116 QGraphsLine m_axisZ;
117
118 bool m_dummyColors = false;
119
120 bool m_componentComplete = false;
121
122 Q_DECLARE_PUBLIC(QGraphsTheme)
123 Q_DISABLE_COPY_MOVE(QGraphsThemePrivate)
124};
125
126struct QGraphsLinePrivate : public QSharedData
127{
128 struct QGraphsLineCustomField
129 {
130 bool mainColorCustom : 1;
131 bool subColorCustom : 1;
132 bool labelTextColorCustom : 1;
133
134 QGraphsLineCustomField()
135 : mainColorCustom(false)
136 , subColorCustom(false)
137 , labelTextColorCustom(false)
138 {}
139 };
140
141 QGraphsLinePrivate();
142 ~QGraphsLinePrivate();
143 QGraphsLinePrivate(const QGraphsLinePrivate &other);
144 void resetCustomBits();
145
146 QColor m_mainColor;
147 QColor m_subColor;
148 qreal m_mainWidth;
149 qreal m_subWidth;
150 QColor m_labelTextColor;
151
152 QColor m_mainThemeColor;
153 QColor m_subThemeColor;
154 QColor m_labelTextThemeColor;
155 QGraphsLineCustomField m_bits;
156
157 friend bool comparesEqual(const QGraphsLinePrivate &lhs, const QGraphsLinePrivate &rhs) noexcept;
158 Q_DECLARE_EQUALITY_COMPARABLE(QGraphsLinePrivate)
159
160 friend QGraphsLine;
161};
162
163QT_END_NAMESPACE
164#endif // QGRAPHSTHEME_P_H
165

Provided by KDAB

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

source code of qtgraphs/src/common/theme/qgraphstheme_p.h