3#include <QtQuick/private/qquickpath_p.h>
5#include "qml_material/export.hpp"
18class QML_MATERIAL_API PathArcWave :
public QQuickCurve {
20 Q_PROPERTY(qreal centerX READ center_x WRITE set_center_x NOTIFY centerXChanged FINAL)
21 Q_PROPERTY(qreal centerY READ center_y WRITE set_center_y NOTIFY centerYChanged FINAL)
22 Q_PROPERTY(qreal radius READ radius WRITE set_radius NOTIFY radiusChanged FINAL)
24 qreal startAngle READ start_angle WRITE set_start_angle NOTIFY startAngleChanged FINAL)
26 qreal sweepAngle READ sweep_angle WRITE set_sweep_angle NOTIFY sweepAngleChanged FINAL)
27 Q_PROPERTY(qreal amplitude READ amplitude WRITE set_amplitude NOTIFY amplitudeChanged FINAL)
29 qreal waveLength READ wave_length WRITE set_wave_length NOTIFY waveLengthChanged FINAL)
30 Q_PROPERTY(qreal phase READ phase WRITE set_phase NOTIFY phaseChanged FINAL)
31 Q_PROPERTY(qreal smoothness READ smoothness WRITE set_smoothness NOTIFY smoothnessChanged FINAL)
32 QML_NAMED_ELEMENT(PathArcWave)
33 QML_ADDED_IN_VERSION(2, 0)
36 explicit PathArcWave(QObject* parent =
nullptr);
37 ~PathArcWave() override;
39 auto center_x() const noexcept -> qreal;
40 auto center_y() const noexcept -> qreal;
41 auto radius() const noexcept -> qreal;
42 auto start_angle() const noexcept -> qreal;
43 auto sweep_angle() const noexcept -> qreal;
44 auto amplitude() const noexcept -> qreal;
45 auto wave_length() const noexcept -> qreal;
46 auto phase() const noexcept -> qreal;
47 auto smoothness() const noexcept -> qreal;
49 void set_center_x(qreal);
50 void set_center_y(qreal);
51 void set_radius(qreal);
52 void set_start_angle(qreal);
53 void set_sweep_angle(qreal);
54 void set_amplitude(qreal);
55 void set_wave_length(qreal);
56 void set_phase(qreal);
57 void set_smoothness(qreal);
59 void addToPath(QPainterPath& path, const QQuickPathData& data) override;
62 void centerXChanged();
63 void centerYChanged();
65 void startAngleChanged();
66 void sweepAngleChanged();
67 void amplitudeChanged();
68 void waveLengthChanged();
70 void smoothnessChanged();
73 qreal m_center_x { 0.0 };
74 qreal m_center_y { 0.0 };
75 qreal m_radius { 16.0 };
76 qreal m_start_angle { 0.0 };
77 qreal m_sweep_angle { 360.0 };
78 qreal m_amplitude { 4.0 };
79 qreal m_wave_length { 30.0 };
80 qreal m_phase { 0.0 };
81 qreal m_smoothness { 0.48 };