QmlMaterial 0.1.0
Loading...
Searching...
No Matches
blur_mask.hpp
1#pragma once
2
3#include <QColor>
4#include <QQmlEngine>
5#include <QQuickItem>
6
7#include "qml_material/util/corner.hpp"
8
9namespace qml_material
10{
11
16class BlurMask : public QQuickItem {
17 Q_OBJECT
18 QML_NAMED_ELEMENT(BlurMaskImpl)
19
20public:
21 enum Style {
22 Normal = 0,
23 Solid = 1,
24 Outer = 2,
25 Inner = 3,
26 };
27 Q_ENUM(Style)
28
29 Q_PROPERTY(qreal sigma READ sigma WRITE setSigma NOTIFY sigmaChanged FINAL)
30 Q_PROPERTY(qreal radius READ radius WRITE setRadius NOTIFY radiusChanged FINAL)
31 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
32 Q_PROPERTY(qml_material::CornersGroup corners READ corners WRITE setCorners NOTIFY
33 cornersChanged FINAL)
34 Q_PROPERTY(Style style READ style WRITE setStyle NOTIFY styleChanged FINAL)
35
36 BlurMask(QQuickItem* parent = nullptr);
37 ~BlurMask() override;
38
39 qreal sigma() const;
40 void setSigma(qreal);
41 Q_SIGNAL void sigmaChanged(qreal);
42
43 qreal radius() const;
44 void setRadius(qreal);
45 Q_SIGNAL void radiusChanged(qreal);
46
47 QColor color() const;
48 void setColor(const QColor&);
49 Q_SIGNAL void colorChanged(QColor);
50
51 auto corners() const -> const CornersGroup&;
52 void setCorners(const CornersGroup&);
53 Q_SIGNAL void cornersChanged(CornersGroup);
54
55 Style style() const;
56 void setStyle(Style);
57 Q_SIGNAL void styleChanged(Style);
58
59protected:
60 QSGNode* updatePaintNode(QSGNode* node, QQuickItem::UpdatePaintNodeData* data) override;
61
62private:
63 qreal m_sigma { 0 };
64 qreal m_radius { 0 };
65 QColor m_color { Qt::black };
66 CornersGroup m_corners {};
67 Style m_style { Normal };
68};
69
70} // namespace qml_material
Definition blur_mask.hpp:16