QmlMaterial 0.1.0
Loading...
Searching...
No Matches
rectangle.hpp
1#pragma once
2
3#include <QQmlEngine>
4#include <QQuickItem>
5
6#include "qml_material/util/corner.hpp"
7
8namespace qml_material
9{
10
11class Rectangle : public QQuickItem {
12 Q_OBJECT
13 QML_NAMED_ELEMENT(RectangleImpl)
14
15 Q_PROPERTY(qreal radius READ radius WRITE setRadius NOTIFY radiusChanged FINAL)
16 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
17 Q_PROPERTY(qml_material::CornersGroup corners READ corners WRITE setCorners NOTIFY
18 cornersChanged FINAL)
19public:
20 Rectangle(QQuickItem* parent = nullptr);
21 ~Rectangle() override;
22
23 auto corners() const -> CornersGroup;
24 void setCorners(const CornersGroup&);
25 Q_SIGNAL void cornersChanged();
26
27 qreal radius() const;
28 void setRadius(qreal newRadius);
29 Q_SIGNAL void radiusChanged();
30
31 QColor color() const;
32 void setColor(const QColor& newColor);
33 Q_SIGNAL void colorChanged();
34
35 void componentComplete() override;
36
37protected:
38 void itemChange(QQuickItem::ItemChange change,
39 const QQuickItem::ItemChangeData& value) override;
40 QSGNode* updatePaintNode(QSGNode* node, QQuickItem::UpdatePaintNodeData* data) override;
41
42private:
43 CornersGroup m_corners;
44 qreal m_radius;
45 QColor m_color;
46};
47} // namespace qml_material