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