Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qquickshape_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQUICKSHAPE_P_H
5#define QQUICKSHAPE_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtQuickShapes/private/qquickshapesglobal_p.h>
19#include <QtQuick/qquickitem.h>
20
21#include <private/qtquickglobal_p.h>
22#include <private/qquickpath_p_p.h>
23#include <private/qquickrectangle_p.h>
24
26
29
30void Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapes_initializeModule();
31
32class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapesModule
33{
34public:
35 static void defineModule();
36};
37
38class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapeGradient : public QQuickGradient
39{
41 Q_PROPERTY(SpreadMode spread READ spread WRITE setSpread NOTIFY spreadChanged FINAL)
42 Q_CLASSINFO("DefaultProperty", "stops")
43
44 QML_NAMED_ELEMENT(ShapeGradient)
46 QML_UNCREATABLE("ShapeGradient is an abstract base class.");
47
48public:
52 RepeatSpread
53 };
54 Q_ENUM(SpreadMode)
55
57
58 SpreadMode spread() const;
59 void setSpread(SpreadMode mode);
60
63
64private:
65 SpreadMode m_spread;
66};
67
68class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapeLinearGradient : public QQuickShapeGradient
69{
71 Q_PROPERTY(qreal x1 READ x1 WRITE setX1 NOTIFY x1Changed FINAL)
72 Q_PROPERTY(qreal y1 READ y1 WRITE setY1 NOTIFY y1Changed FINAL)
73 Q_PROPERTY(qreal x2 READ x2 WRITE setX2 NOTIFY x2Changed FINAL)
74 Q_PROPERTY(qreal y2 READ y2 WRITE setY2 NOTIFY y2Changed FINAL)
75 Q_CLASSINFO("DefaultProperty", "stops")
76 QML_NAMED_ELEMENT(LinearGradient)
78
79public:
81
82 qreal x1() const;
83 void setX1(qreal v);
84 qreal y1() const;
85 void setY1(qreal v);
86 qreal x2() const;
87 void setX2(qreal v);
88 qreal y2() const;
89 void setY2(qreal v);
90
92 void x1Changed();
93 void y1Changed();
94 void x2Changed();
95 void y2Changed();
96
97private:
98 QPointF m_start;
99 QPointF m_end;
100};
101
102class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapeRadialGradient : public QQuickShapeGradient
103{
105 Q_PROPERTY(qreal centerX READ centerX WRITE setCenterX NOTIFY centerXChanged FINAL)
106 Q_PROPERTY(qreal centerY READ centerY WRITE setCenterY NOTIFY centerYChanged FINAL)
107 Q_PROPERTY(qreal centerRadius READ centerRadius WRITE setCenterRadius NOTIFY centerRadiusChanged FINAL)
108 Q_PROPERTY(qreal focalX READ focalX WRITE setFocalX NOTIFY focalXChanged FINAL)
109 Q_PROPERTY(qreal focalY READ focalY WRITE setFocalY NOTIFY focalYChanged FINAL)
110 Q_PROPERTY(qreal focalRadius READ focalRadius WRITE setFocalRadius NOTIFY focalRadiusChanged FINAL)
111 Q_CLASSINFO("DefaultProperty", "stops")
112 QML_NAMED_ELEMENT(RadialGradient)
114
115public:
117
118 qreal centerX() const;
119 void setCenterX(qreal v);
120
121 qreal centerY() const;
122 void setCenterY(qreal v);
123
124 qreal centerRadius() const;
125 void setCenterRadius(qreal v);
126
127 qreal focalX() const;
128 void setFocalX(qreal v);
129
130 qreal focalY() const;
131 void setFocalY(qreal v);
132
133 qreal focalRadius() const;
134 void setFocalRadius(qreal v);
135
143
144private:
145 QPointF m_centerPoint;
146 QPointF m_focalPoint;
147 qreal m_centerRadius = 0;
148 qreal m_focalRadius = 0;
149};
150
151class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapeConicalGradient : public QQuickShapeGradient
152{
154 Q_PROPERTY(qreal centerX READ centerX WRITE setCenterX NOTIFY centerXChanged FINAL)
155 Q_PROPERTY(qreal centerY READ centerY WRITE setCenterY NOTIFY centerYChanged FINAL)
156 Q_PROPERTY(qreal angle READ angle WRITE setAngle NOTIFY angleChanged FINAL)
157 Q_CLASSINFO("DefaultProperty", "stops")
158 QML_NAMED_ELEMENT(ConicalGradient)
160
161public:
163
164 qreal centerX() const;
165 void setCenterX(qreal v);
166
167 qreal centerY() const;
168 void setCenterY(qreal v);
169
170 qreal angle() const;
171 void setAngle(qreal v);
172
177
178private:
179 QPointF m_centerPoint;
180 qreal m_angle = 0;
181};
182
183class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapePath : public QQuickPath
184{
186
187 Q_PROPERTY(QColor strokeColor READ strokeColor WRITE setStrokeColor NOTIFY strokeColorChanged FINAL)
188 Q_PROPERTY(qreal strokeWidth READ strokeWidth WRITE setStrokeWidth NOTIFY strokeWidthChanged FINAL)
189 Q_PROPERTY(QColor fillColor READ fillColor WRITE setFillColor NOTIFY fillColorChanged FINAL)
190 Q_PROPERTY(FillRule fillRule READ fillRule WRITE setFillRule NOTIFY fillRuleChanged FINAL)
191 Q_PROPERTY(JoinStyle joinStyle READ joinStyle WRITE setJoinStyle NOTIFY joinStyleChanged FINAL)
192 Q_PROPERTY(int miterLimit READ miterLimit WRITE setMiterLimit NOTIFY miterLimitChanged FINAL)
193 Q_PROPERTY(CapStyle capStyle READ capStyle WRITE setCapStyle NOTIFY capStyleChanged FINAL)
194 Q_PROPERTY(StrokeStyle strokeStyle READ strokeStyle WRITE setStrokeStyle NOTIFY strokeStyleChanged FINAL)
195 Q_PROPERTY(qreal dashOffset READ dashOffset WRITE setDashOffset NOTIFY dashOffsetChanged FINAL)
196 Q_PROPERTY(QVector<qreal> dashPattern READ dashPattern WRITE setDashPattern NOTIFY dashPatternChanged FINAL)
197 Q_PROPERTY(QQuickShapeGradient *fillGradient READ fillGradient WRITE setFillGradient RESET resetFillGradient FINAL)
198 Q_PROPERTY(QSizeF scale READ scale WRITE setScale NOTIFY scaleChanged REVISION(1, 14) FINAL)
199 QML_NAMED_ELEMENT(ShapePath)
201
202public:
203 enum FillRule {
204 OddEvenFill = Qt::OddEvenFill,
205 WindingFill = Qt::WindingFill
206 };
207 Q_ENUM(FillRule)
208
210 MiterJoin = Qt::MiterJoin,
211 BevelJoin = Qt::BevelJoin,
212 RoundJoin = Qt::RoundJoin
213 };
214 Q_ENUM(JoinStyle)
215
216 enum CapStyle {
217 FlatCap = Qt::FlatCap,
218 SquareCap = Qt::SquareCap,
219 RoundCap = Qt::RoundCap
220 };
221 Q_ENUM(CapStyle)
222
224 SolidLine = Qt::SolidLine,
225 DashLine = Qt::DashLine
226 };
227 Q_ENUM(StrokeStyle)
228
229 QQuickShapePath(QObject *parent = nullptr);
231
232 QColor strokeColor() const;
233 void setStrokeColor(const QColor &color);
234
235 qreal strokeWidth() const;
236 void setStrokeWidth(qreal w);
237
238 QColor fillColor() const;
239 void setFillColor(const QColor &color);
240
241 FillRule fillRule() const;
242 void setFillRule(FillRule fillRule);
243
244 JoinStyle joinStyle() const;
245 void setJoinStyle(JoinStyle style);
246
247 int miterLimit() const;
248 void setMiterLimit(int limit);
249
250 CapStyle capStyle() const;
251 void setCapStyle(CapStyle style);
252
253 StrokeStyle strokeStyle() const;
254 void setStrokeStyle(StrokeStyle style);
255
256 qreal dashOffset() const;
257 void setDashOffset(qreal offset);
258
259 QVector<qreal> dashPattern() const;
260 void setDashPattern(const QVector<qreal> &array);
261
262 QQuickShapeGradient *fillGradient() const;
263 void setFillGradient(QQuickShapeGradient *gradient);
264 void resetFillGradient();
265
278
279private:
280 Q_DISABLE_COPY(QQuickShapePath)
281 Q_DECLARE_PRIVATE(QQuickShapePath)
282 Q_PRIVATE_SLOT(d_func(), void _q_fillGradientChanged())
283};
284
285class Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShape : public QQuickItem
286{
288 Q_PROPERTY(RendererType rendererType READ rendererType NOTIFY rendererChanged FINAL)
289 Q_PROPERTY(bool asynchronous READ asynchronous WRITE setAsynchronous NOTIFY asynchronousChanged FINAL)
290 Q_PROPERTY(bool vendorExtensionsEnabled READ vendorExtensionsEnabled WRITE setVendorExtensionsEnabled NOTIFY vendorExtensionsEnabledChanged FINAL)
291 Q_PROPERTY(RendererType preferredRendererType READ preferredRendererType
292 WRITE setPreferredRendererType NOTIFY preferredRendererTypeChanged REVISION(6, 6) FINAL)
293 Q_PROPERTY(Status status READ status NOTIFY statusChanged FINAL)
294 Q_PROPERTY(ContainsMode containsMode READ containsMode WRITE setContainsMode NOTIFY containsModeChanged REVISION(1, 11) FINAL)
295 Q_PROPERTY(QRectF boundingRect READ boundingRect NOTIFY boundingRectChanged REVISION(6, 6) FINAL)
296
298 Q_CLASSINFO("DefaultProperty", "data")
299 QML_NAMED_ELEMENT(Shape)
301
302public:
308 CurveRenderer
309 };
310 Q_ENUM(RendererType)
311
312 enum Status {
315 Processing
316 };
317 Q_ENUM(Status)
318
321 FillContains
322 };
323 Q_ENUM(ContainsMode)
324
325 QQuickShape(QQuickItem *parent = nullptr);
326 ~QQuickShape();
327
328 RendererType rendererType() const;
329
330 bool asynchronous() const;
331 void setAsynchronous(bool async);
332
333 Q_REVISION(6, 6) RendererType preferredRendererType() const;
334 Q_REVISION(6, 6) void setPreferredRendererType(RendererType preferredType);
335
336 Q_REVISION(6, 6) QRectF boundingRect() const override;
337
338 bool vendorExtensionsEnabled() const;
339 void setVendorExtensionsEnabled(bool enable);
340
341 Status status() const;
342
343 ContainsMode containsMode() const;
344 void setContainsMode(ContainsMode containsMode);
345
346 bool contains(const QPointF &point) const override;
347
349
350protected:
351 QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *) override;
352 void updatePolish() override;
353 void itemChange(ItemChange change, const ItemChangeData &data) override;
354 void componentComplete() override;
355 void classBegin() override;
356
358 void rendererChanged();
359 void asynchronousChanged();
360 void vendorExtensionsEnabledChanged();
362 Q_REVISION(6, 6) void preferredRendererTypeChanged();
363 Q_REVISION(6, 6) void boundingRectChanged();
364 Q_REVISION(1, 11) void containsModeChanged();
365
366private:
367 Q_DISABLE_COPY(QQuickShape)
368 Q_DECLARE_PRIVATE(QQuickShape)
369 Q_PRIVATE_SLOT(d_func(), void _q_shapePathChanged())
370};
371
373
375
376#endif // QQUICKSHAPE_P_H
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
Definition qlist.h:74
\inmodule QtCore
Definition qobject.h:90
\inmodule QtCore\reentrant
Definition qpoint.h:214
The QQmlListProperty class allows applications to expose list-like properties of QObject-derived clas...
Definition qqmllist.h:24
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
Definition qquickitem.h:64
ItemChange
Used in conjunction with QQuickItem::itemChange() to notify the item about certain types of changes.
Definition qquickitem.h:143
void joinStyleChanged()
void strokeColorChanged()
void dashPatternChanged()
void strokeWidthChanged()
void strokeStyleChanged()
void fillRuleChanged()
void fillColorChanged()
void capStyleChanged()
void dashOffsetChanged()
void shapePathChanged()
void miterLimitChanged()
Q_REVISION(6, 6) RendererType preferredRendererType() const
\inmodule QtCore\reentrant
Definition qrect.h:483
\group qtquick-scenegraph-nodes \title Qt Quick Scene Graph Node classes
Definition qsgnode.h:37
\inmodule QtCore
Definition qsize.h:207
void statusChanged(QDeclarativeComponent::Status status)
[1]
Definition qlogging.cpp:9
Combined button and popup list for selecting options.
@ SolidLine
@ DashLine
@ BevelJoin
@ MiterJoin
@ RoundJoin
@ WindingFill
@ OddEvenFill
@ SquareCap
@ RoundCap
@ FlatCap
static bool contains(const QJsonArray &haystack, unsigned needle)
Definition qopengl.cpp:116
GLsizei const GLfloat * v
[13]
GLenum mode
GLfloat GLfloat GLfloat w
[0]
GLuint GLfloat GLfloat GLfloat GLfloat y1
GLuint GLfloat GLfloat GLfloat x1
GLuint GLuint GLfloat focalX
GLfloat angle
GLboolean enable
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLuint GLintptr offset
GLuint GLuint GLfloat GLfloat focalY
GLfixed GLfixed GLfixed y2
GLenum array
GLint limit
GLfixed GLfixed x2
GLenum GLenum GLenum GLenum GLenum scale
static const QRectF boundingRect(const QPointF *points, int pointCount)
static void setCapStyle(int cap_style, GC gc)
#define QML_DECLARE_TYPE(TYPE)
Definition qqml.h:19
#define QML_UNCREATABLE(REASON)
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
void Q_QUICKSHAPES_PRIVATE_EXPORT QQuickShapes_initializeModule()
\qmlmodule QtQuick.Shapes 1.
#define Q_ENUM(x)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_REVISION(...)
#define Q_CLASSINFO(name, value)
#define Q_PRIVATE_SLOT(d, signature)
#define Q_SIGNALS
double qreal
Definition qtypes.h:92
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent
\inmodule QtQuick
Definition qquickitem.h:158