diff options
author | Michael Brasser <mbrasser@ford.com> | 2017-09-20 15:15:06 -0500 |
---|---|---|
committer | Michael Brasser <michael.brasser@live.com> | 2017-11-07 16:29:16 +0000 |
commit | 7bedd55551fbe95355b0db11f9d576924e829f9d (patch) | |
tree | fdef6c4ec81b46161162abacefe350c87a373830 /src/quick/util/qquickpath_p.h | |
parent | a10f154e3b46cc004ab6f7d5319f550c450987d4 (diff) |
Add new PathAngleArc type
This type allows working with arcs in different ways (based
on angles rather than start/end positions) that can be more
intuitive for certain use cases (such as a circular
progress indicator).
[ChangeLog][QtQuick][Path] Add new PathAngleArc type
Change-Id: Icbe5fc0450edd9a4d92f9a8d03438842b72a312d
Task-number: QTBUG-62684
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
Diffstat (limited to 'src/quick/util/qquickpath_p.h')
-rw-r--r-- | src/quick/util/qquickpath_p.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/quick/util/qquickpath_p.h b/src/quick/util/qquickpath_p.h index b7fde5c272..d5474e2d30 100644 --- a/src/quick/util/qquickpath_p.h +++ b/src/quick/util/qquickpath_p.h @@ -331,6 +331,63 @@ private: qreal _xAxisRotation; }; +class Q_QUICK_PRIVATE_EXPORT QQuickPathAngleArc : public QQuickCurve +{ + Q_OBJECT + Q_PROPERTY(qreal centerX READ centerX WRITE setCenterX NOTIFY centerXChanged) + Q_PROPERTY(qreal centerY READ centerY WRITE setCenterY NOTIFY centerYChanged) + Q_PROPERTY(qreal radiusX READ radiusX WRITE setRadiusX NOTIFY radiusXChanged) + Q_PROPERTY(qreal radiusY READ radiusY WRITE setRadiusY NOTIFY radiusYChanged) + Q_PROPERTY(qreal startAngle READ startAngle WRITE setStartAngle NOTIFY startAngleChanged) + Q_PROPERTY(qreal sweepAngle READ sweepAngle WRITE setSweepAngle NOTIFY sweepAngleChanged) + Q_PROPERTY(bool moveToStart READ moveToStart WRITE setMoveToStart NOTIFY moveToStartChanged) + +public: + QQuickPathAngleArc(QObject *parent=0) + : QQuickCurve(parent), _centerX(0), _centerY(0), _radiusX(0), _radiusY(0), _startAngle(0), _sweepAngle(0), _moveToStart(true) {} + + qreal centerX() const; + void setCenterX(qreal); + + qreal centerY() const; + void setCenterY(qreal); + + qreal radiusX() const; + void setRadiusX(qreal); + + qreal radiusY() const; + void setRadiusY(qreal); + + qreal startAngle() const; + void setStartAngle(qreal); + + qreal sweepAngle() const; + void setSweepAngle(qreal); + + bool moveToStart() const; + void setMoveToStart(bool); + + void addToPath(QPainterPath &path, const QQuickPathData &) override; + +Q_SIGNALS: + void centerXChanged(); + void centerYChanged(); + void radiusXChanged(); + void radiusYChanged(); + void startAngleChanged(); + void sweepAngleChanged(); + void moveToStartChanged(); + +private: + qreal _centerX; + qreal _centerY; + qreal _radiusX; + qreal _radiusY; + qreal _startAngle; + qreal _sweepAngle; + bool _moveToStart; +}; + class Q_QUICK_PRIVATE_EXPORT QQuickPathSvg : public QQuickCurve { Q_OBJECT @@ -479,6 +536,7 @@ QML_DECLARE_TYPE(QQuickPathQuad) QML_DECLARE_TYPE(QQuickPathCubic) QML_DECLARE_TYPE(QQuickPathCatmullRomCurve) QML_DECLARE_TYPE(QQuickPathArc) +QML_DECLARE_TYPE(QQuickPathAngleArc) QML_DECLARE_TYPE(QQuickPathSvg) QML_DECLARE_TYPE(QQuickPathPercent) QML_DECLARE_TYPE(QQuickPath) |