QmlMaterial 0.1.0
Loading...
Searching...
No Matches
material_shape_path.hpp
1#pragma once
2
3#include <QtQuickShapes/private/qquickshape_p.h>
4#include "qml_material/shape/material_shapes.hpp"
5
6namespace qml_material
7{
8
12class MaterialShapePath : public QQuickShapePath {
13 Q_OBJECT
14 QML_ELEMENT
15 Q_PROPERTY(MaterialShape::Type shape READ shape WRITE setShape NOTIFY shapeChanged FINAL)
16 Q_PROPERTY(
17 MaterialShape::Type toShape READ toShape WRITE setToShape NOTIFY toShapeChanged FINAL)
18 Q_PROPERTY(qreal progress READ progress WRITE setProgress NOTIFY progressChanged FINAL)
19 Q_PROPERTY(QSizeF size READ size WRITE setSize NOTIFY sizeChanged FINAL)
20 Q_PROPERTY(qreal startAngle READ startAngle WRITE setStartAngle NOTIFY startAngleChanged FINAL)
21 Q_PROPERTY(bool radialNormalization READ radialNormalization WRITE setRadialNormalization NOTIFY
22 radialNormalizationChanged FINAL)
23public:
24 explicit MaterialShapePath(QObject* parent = nullptr);
25 MaterialShape::Type shape() const { return m_shape; }
26 MaterialShape::Type toShape() const { return m_toShape; }
27 qreal progress() const { return m_progress; }
28 QSizeF size() const { return m_size; }
29 qreal startAngle() const { return m_startAngle; }
30 bool radialNormalization() const { return m_radial; }
31 void setShape(MaterialShape::Type shape);
32 void setToShape(MaterialShape::Type shape);
33 void setProgress(qreal progress);
34 void setSize(QSizeF size);
35 void setStartAngle(qreal angle);
36 void setRadialNormalization(bool radial);
37 Q_SIGNAL void shapeChanged();
38 Q_SIGNAL void toShapeChanged();
39 Q_SIGNAL void progressChanged();
40 Q_SIGNAL void sizeChanged();
41 Q_SIGNAL void startAngleChanged();
42 Q_SIGNAL void radialNormalizationChanged();
43
44private:
45 void updateGeometry();
46 void updatePair();
47 MaterialShape::Type m_shape = MaterialShape::Circle;
48 MaterialShape::Type m_toShape = MaterialShape::None;
49 qreal m_progress = 0;
50 QSizeF m_size { 1, 1 };
51 qreal m_startAngle = 0;
52 bool m_radial = false;
53 std::shared_ptr<const Morph> m_morph;
54};
55
56} // namespace qml_material
Definition material_shape_path.hpp:12