Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
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_EXPORT QQuickShapes_initializeModule();
31
32class Q_QUICKSHAPES_EXPORT QQuickShapesModule
33{
34public:
35 static void defineModule();
36};
37
38class Q_QUICKSHAPES_EXPORT QQuickShapeGradient : public QQuickGradient
39{
41 Q_PROPERTY(SpreadMode spread READ spread WRITE setSpread NOTIFY spreadChanged)
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
56 QQuickShapeGradient(QObject *parent = nullptr);
57
58 SpreadMode spread() const;
59 void setSpread(SpreadMode mode);
60
63
64private:
65 SpreadMode m_spread;
66};
67
68class Q_QUICKSHAPES_EXPORT QQuickShapeLinearGradient : public QQuickShapeGradient
69{
71 Q_PROPERTY(qreal x1 READ x1 WRITE setX1 NOTIFY x1Changed)
72 Q_PROPERTY(qreal y1 READ y1 WRITE setY1 NOTIFY y1Changed)
73 Q_PROPERTY(qreal x2 READ x2 WRITE setX2 NOTIFY x2Changed)
74 Q_PROPERTY(qreal y2 READ y2 WRITE setY2 NOTIFY y2Changed)
75 Q_CLASSINFO("DefaultProperty", "stops")
76 QML_NAMED_ELEMENT(LinearGradient)
78
79public:
80 QQuickShapeLinearGradient(QObject *parent = nullptr);
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
98 QPointF m_start;
99 QPointF m_end;
100};
101
102class Q_QUICKSHAPES_EXPORT QQuickShapeRadialGradient : public QQuickShapeGradient
103{
105 Q_PROPERTY(qreal centerX READ centerX WRITE setCenterX NOTIFY centerXChanged)
106 Q_PROPERTY(qreal centerY READ centerY WRITE setCenterY NOTIFY centerYChanged)
107 Q_PROPERTY(qreal centerRadius READ centerRadius WRITE setCenterRadius NOTIFY centerRadiusChanged)
108 Q_PROPERTY(qreal focalX READ focalX WRITE setFocalX NOTIFY focalXChanged)
109 Q_PROPERTY(qreal focalY READ focalY WRITE setFocalY NOTIFY focalYChanged)
110 Q_PROPERTY(qreal focalRadius READ focalRadius WRITE setFocalRadius NOTIFY focalRadiusChanged)
111 Q_CLASSINFO("DefaultProperty", "stops")
112 QML_NAMED_ELEMENT(RadialGradient)
114
115public:
116 QQuickShapeRadialGradient(QObject *parent = nullptr);
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
137 void centerXChanged();
138 void centerYChanged();
139 void focalXChanged();
140 void focalYChanged();
141 void centerRadiusChanged();
142 void focalRadiusChanged();
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_EXPORT QQuickShapeConicalGradient : public QQuickShapeGradient
152{
154 Q_PROPERTY(qreal centerX READ centerX WRITE setCenterX NOTIFY centerXChanged)
155 Q_PROPERTY(qreal centerY READ centerY WRITE setCenterY NOTIFY centerYChanged)
156 Q_PROPERTY(qreal angle READ angle WRITE setAngle NOTIFY angleChanged)
157 Q_CLASSINFO("DefaultProperty", "stops")
158 QML_NAMED_ELEMENT(ConicalGradient)
160
161public:
162 QQuickShapeConicalGradient(QObject *parent = nullptr);
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
174 void centerXChanged();
175 void centerYChanged();
176 void angleChanged();
177
178private:
179 QPointF m_centerPoint;
180 qreal m_angle = 0;
181};
182
183class Q_QUICKSHAPES_EXPORT QQuickShapePath : public QQuickPath
184{
186
187 Q_PROPERTY(QColor strokeColor READ strokeColor WRITE setStrokeColor NOTIFY strokeColorChanged)
188 Q_PROPERTY(qreal strokeWidth READ strokeWidth WRITE setStrokeWidth NOTIFY strokeWidthChanged)
189 Q_PROPERTY(QColor fillColor READ fillColor WRITE setFillColor NOTIFY fillColorChanged)
190 Q_PROPERTY(FillRule fillRule READ fillRule WRITE setFillRule NOTIFY fillRuleChanged)
191 Q_PROPERTY(JoinStyle joinStyle READ joinStyle WRITE setJoinStyle NOTIFY joinStyleChanged)
192 Q_PROPERTY(int miterLimit READ miterLimit WRITE setMiterLimit NOTIFY miterLimitChanged)
193 Q_PROPERTY(CapStyle capStyle READ capStyle WRITE setCapStyle NOTIFY capStyleChanged)
194 Q_PROPERTY(StrokeStyle strokeStyle READ strokeStyle WRITE setStrokeStyle NOTIFY strokeStyleChanged)
195 Q_PROPERTY(qreal dashOffset READ dashOffset WRITE setDashOffset NOTIFY dashOffsetChanged)
196 Q_PROPERTY(QVector<qreal> dashPattern READ dashPattern WRITE setDashPattern NOTIFY dashPatternChanged)
197 Q_PROPERTY(QQuickShapeGradient *fillGradient READ fillGradient WRITE setFillGradient RESET resetFillGradient)
198 Q_PROPERTY(QSizeF scale READ scale WRITE setScale NOTIFY scaleChanged REVISION(1, 14))
199 Q_PROPERTY(PathHints pathHints READ pathHints WRITE setPathHints NOTIFY pathHintsChanged REVISION(6, 7) FINAL)
200 Q_PROPERTY(QMatrix4x4 fillTransform READ fillTransform WRITE setFillTransform NOTIFY fillTransformChanged REVISION(6, 8) FINAL)
201 QML_NAMED_ELEMENT(ShapePath)
203
204public:
205 enum FillRule {
206 OddEvenFill = Qt::OddEvenFill,
207 WindingFill = Qt::WindingFill
208 };
209 Q_ENUM(FillRule)
210
212 MiterJoin = Qt::MiterJoin,
213 BevelJoin = Qt::BevelJoin,
214 RoundJoin = Qt::RoundJoin
215 };
216 Q_ENUM(JoinStyle)
217
218 enum CapStyle {
219 FlatCap = Qt::FlatCap,
220 SquareCap = Qt::SquareCap,
221 RoundCap = Qt::RoundCap
222 };
223 Q_ENUM(CapStyle)
224
226 SolidLine = Qt::SolidLine,
227 DashLine = Qt::DashLine
228 };
230
231 enum PathHint {
232 PathLinear = 0x1,
233 PathQuadratic = 0x2,
234 PathConvex = 0x4,
235 PathFillOnRight = 0x8,
236 PathSolid = 0x10,
237 PathNonIntersecting = 0x20,
238 PathNonOverlappingControlPointTriangles = 0x40
239 };
240 Q_DECLARE_FLAGS(PathHints, PathHint)
241 Q_FLAG(PathHints)
242
243 QQuickShapePath(QObject *parent = nullptr);
245
246 QColor strokeColor() const;
247 void setStrokeColor(const QColor &color);
248
249 qreal strokeWidth() const;
250 void setStrokeWidth(qreal w);
251
252 QColor fillColor() const;
253 void setFillColor(const QColor &color);
254
255 FillRule fillRule() const;
256 void setFillRule(FillRule fillRule);
257
258 JoinStyle joinStyle() const;
259 void setJoinStyle(JoinStyle style);
260
261 int miterLimit() const;
262 void setMiterLimit(int limit);
263
264 CapStyle capStyle() const;
265 void setCapStyle(CapStyle style);
266
267 StrokeStyle strokeStyle() const;
268 void setStrokeStyle(StrokeStyle style);
269
270 qreal dashOffset() const;
271 void setDashOffset(qreal offset);
272
273 QVector<qreal> dashPattern() const;
274 void setDashPattern(const QVector<qreal> &array);
275
276 QQuickShapeGradient *fillGradient() const;
277 void setFillGradient(QQuickShapeGradient *gradient);
278 void resetFillGradient();
279
280 PathHints pathHints() const;
281 void setPathHints(PathHints newPathHints);
282
283 QMatrix4x4 fillTransform() const;
284 void setFillTransform(const QMatrix4x4 &matrix);
285
298
299 Q_REVISION(6, 7) void pathHintsChanged();
300 Q_REVISION(6, 8) void fillTransformChanged();
301
302private:
303 Q_DISABLE_COPY(QQuickShapePath)
304 Q_DECLARE_PRIVATE(QQuickShapePath)
305 Q_PRIVATE_SLOT(d_func(), void _q_fillGradientChanged())
306};
307
308class Q_QUICKSHAPES_EXPORT QQuickShape : public QQuickItem
309{
311 Q_PROPERTY(RendererType rendererType READ rendererType NOTIFY rendererChanged)
312 Q_PROPERTY(bool asynchronous READ asynchronous WRITE setAsynchronous NOTIFY asynchronousChanged)
313 Q_PROPERTY(bool vendorExtensionsEnabled READ vendorExtensionsEnabled WRITE setVendorExtensionsEnabled NOTIFY vendorExtensionsEnabledChanged)
314 Q_PROPERTY(RendererType preferredRendererType READ preferredRendererType
315 WRITE setPreferredRendererType NOTIFY preferredRendererTypeChanged REVISION(6, 6) FINAL)
316 Q_PROPERTY(Status status READ status NOTIFY statusChanged)
317 Q_PROPERTY(ContainsMode containsMode READ containsMode WRITE setContainsMode NOTIFY containsModeChanged REVISION(1, 11))
318 Q_PROPERTY(QRectF boundingRect READ boundingRect NOTIFY boundingRectChanged REVISION(6, 6) FINAL)
319 Q_PROPERTY(FillMode fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged REVISION(6, 7) FINAL)
320 Q_PROPERTY(HAlignment horizontalAlignment READ horizontalAlignment WRITE setHorizontalAlignment NOTIFY horizontalAlignmentChanged REVISION(6, 7) FINAL)
321 Q_PROPERTY(VAlignment verticalAlignment READ verticalAlignment WRITE setVerticalAlignment NOTIFY verticalAlignmentChanged REVISION(6, 7) FINAL)
322
324 Q_CLASSINFO("DefaultProperty", "data")
325 QML_NAMED_ELEMENT(Shape)
327
328public:
336 Q_ENUM(RendererType)
337
338 enum Status {
341 Processing
342 };
343 Q_ENUM(Status)
344
347 FillContains
348 };
349 Q_ENUM(ContainsMode)
350
357 Q_ENUM(FillMode)
358
359 enum HAlignment { AlignLeft = Qt::AlignLeft,
360 AlignRight = Qt::AlignRight,
361 AlignHCenter = Qt::AlignHCenter };
362 Q_ENUM(HAlignment)
363 enum VAlignment { AlignTop = Qt::AlignTop,
364 AlignBottom = Qt::AlignBottom,
365 AlignVCenter = Qt::AlignVCenter };
366 Q_ENUM(VAlignment)
367
368 QQuickShape(QQuickItem *parent = nullptr);
369 ~QQuickShape();
370
371 RendererType rendererType() const;
372
373 bool asynchronous() const;
374 void setAsynchronous(bool async);
375
376 Q_REVISION(6, 6) RendererType preferredRendererType() const;
377 Q_REVISION(6, 6) void setPreferredRendererType(RendererType preferredType);
378
379 Q_REVISION(6, 6) QRectF boundingRect() const override;
380
381 bool vendorExtensionsEnabled() const;
382 void setVendorExtensionsEnabled(bool enable);
383
384 Status status() const;
385
386 ContainsMode containsMode() const;
387 void setContainsMode(ContainsMode containsMode);
388
389 bool contains(const QPointF &point) const override;
390
392
394 Q_REVISION(6, 7) void setFillMode(FillMode newFillMode);
395
396 Q_REVISION(6, 7) HAlignment horizontalAlignment() const;
397 Q_REVISION(6, 7) void setHorizontalAlignment(HAlignment newHorizontalAlignment);
398
399 Q_REVISION(6, 7) VAlignment verticalAlignment() const;
400 Q_REVISION(6, 7) void setVerticalAlignment(VAlignment newVerticalAlignment);
401
402protected:
403 QSGNode *updatePaintNode(QSGNode *node, UpdatePaintNodeData *) override;
404 void updatePolish() override;
405 void itemChange(ItemChange change, const ItemChangeData &data) override;
406 void componentComplete() override;
407 void classBegin() override;
408
410 void rendererChanged();
411 void asynchronousChanged();
412 void vendorExtensionsEnabledChanged();
414 Q_REVISION(6, 6) void preferredRendererTypeChanged();
415 Q_REVISION(6, 6) void boundingRectChanged();
416 Q_REVISION(1, 11) void containsModeChanged();
417
418 Q_REVISION(6, 7) void fillModeChanged();
419 Q_REVISION(6, 7) void horizontalAlignmentChanged();
420 Q_REVISION(6, 7) void verticalAlignmentChanged();
421
422private:
423 Q_DISABLE_COPY(QQuickShape)
424 Q_DECLARE_PRIVATE(QQuickShape)
425 Q_PRIVATE_SLOT(d_func(), void _q_shapePathChanged())
426};
427
429
430#endif // QQUICKSHAPE_P_H
The QColor class provides colors based on RGB, HSV or CMYK values.
Definition qcolor.h:31
Definition qlist.h:75
The QMatrix4x4 class represents a 4x4 transformation matrix in 3D space.
Definition qmatrix4x4.h:25
\inmodule QtCore
Definition qobject.h:103
\inmodule QtCore\reentrant
Definition qpoint.h:217
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:63
ItemChange
Used in conjunction with QQuickItem::itemChange() to notify the item about certain types of changes.
Definition qquickitem.h:144
void joinStyleChanged()
void strokeColorChanged()
void dashPatternChanged()
Q_REVISION(6, 7) void pathHintsChanged()
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:484
\group qtquick-scenegraph-nodes \title Qt Quick Scene Graph Node classes
Definition qsgnode.h:37
\inmodule QtCore
Definition qsize.h:208
void statusChanged(QQmlComponent::Status status)
[1]
Definition qlogging.cpp:11
Combined button and popup list for selecting options.
@ AlignRight
Definition qnamespace.h:146
@ AlignBottom
Definition qnamespace.h:154
@ AlignVCenter
Definition qnamespace.h:155
@ AlignTop
Definition qnamespace.h:153
@ AlignHCenter
Definition qnamespace.h:148
@ AlignLeft
Definition qnamespace.h:144
@ SolidLine
@ DashLine
@ BevelJoin
@ MiterJoin
@ RoundJoin
@ WindingFill
@ OddEvenFill
@ SquareCap
@ RoundCap
@ FlatCap
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
static bool contains(const QJsonArray &haystack, unsigned needle)
Definition qopengl.cpp:116
GLsizei const GLfloat * v
[13]
GLenum mode
GLfloat GLfloat GLfloat w
[0]
GLenum fillMode
GLuint GLfloat GLfloat GLfloat GLfloat y1
GLuint GLfloat GLfloat GLfloat x1
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint GLuint GLfloat focalX
GLuint color
[2]
GLfloat angle
GLboolean enable
GLenum GLuint GLintptr offset
GLuint GLuint GLfloat GLfloat focalY
GLfixed GLfixed GLfixed y2
GLenum array
GLint limit
GLuint GLenum matrix
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_UNCREATABLE(REASON)
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
void Q_QUICKSHAPES_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_FLAG(x)
#define Q_PRIVATE_SLOT(d, signature)
#define Q_SIGNALS
double qreal
Definition qtypes.h:187
static const uint base
Definition qurlidna.cpp:20
\inmodule QtQuick
Definition qquickitem.h:159