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