QmlMaterial 0.1.0
Loading...
Searching...
No Matches
elevation.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 Elevation : public QQuickItem {
12 Q_OBJECT
13 QML_NAMED_ELEMENT(ElevationImpl)
14
15 Q_PROPERTY(qint32 elevation READ elevation WRITE setelevation NOTIFY elevationChanged FINAL)
16 Q_PROPERTY(qreal radius READ radius WRITE setRadius NOTIFY radiusChanged FINAL)
17 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
18 Q_PROPERTY(CornersGroup corners READ corners WRITE setCorners NOTIFY cornersChanged FINAL)
19public:
20 Elevation(QQuickItem* parent = nullptr);
21 ~Elevation() override;
22
23 auto elevation() const -> qint32;
24 void setelevation(qint32);
25 Q_SIGNAL void elevationChanged();
26
27 auto corners() const -> const CornersGroup&;
28 void setCorners(const CornersGroup&);
29 Q_SIGNAL void cornersChanged();
30
31 qreal radius() const;
32 void setRadius(qreal newRadius);
33 Q_SIGNAL void radiusChanged();
34
35 QColor color() const;
36 void setColor(const QColor& newColor);
37 Q_SIGNAL void colorChanged();
38
39 void componentComplete() override;
40
41protected:
42 void itemChange(QQuickItem::ItemChange change,
43 const QQuickItem::ItemChangeData& value) override;
44 QSGNode* updatePaintNode(QSGNode* node, QQuickItem::UpdatePaintNodeData* data) override;
45
46private:
47 qint32 m_elevation;
48 CornersGroup m_corners;
49 qreal m_radius;
50 QColor m_color;
51};
52} // namespace qml_material