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 {
23 Normal = 0,
24 Solid = 1,
25 Outer = 2,
26 Inner = 3,
27 };
28 Q_ENUM(Style)
29
30 Q_PROPERTY(qreal sigma READ sigma WRITE setSigma NOTIFY sigmaChanged FINAL)
31 Q_PROPERTY(qreal radius READ radius WRITE setRadius NOTIFY radiusChanged FINAL)
32 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL)
33 Q_PROPERTY(qml_material::CornersGroup corners READ corners WRITE setCorners NOTIFY
34 cornersChanged FINAL)
35 Q_PROPERTY(Style style READ style WRITE setStyle NOTIFY styleChanged FINAL)
36
37 BlurMask(QQuickItem* parent = nullptr);
38 ~BlurMask() override;
39
40 qreal sigma() const;
41 void setSigma(qreal);
42 Q_SIGNAL void sigmaChanged(qreal);
43
44 qreal radius() const;
45 void setRadius(qreal);
46 Q_SIGNAL void radiusChanged(qreal);
47
48 QColor color() const;
49 void setColor(const QColor&);
50 Q_SIGNAL void colorChanged(QColor);
51
52 auto corners() const -> const CornersGroup&;
53 void setCorners(const CornersGroup&);
54 Q_SIGNAL void cornersChanged(CornersGroup);
55
56 Style style() const;
57 void setStyle(Style);
58 Q_SIGNAL void styleChanged(Style);
59
60protected:
61 QSGNode* updatePaintNode(QSGNode* node, QQuickItem::UpdatePaintNodeData* data) override;
62
63private:
64 qreal m_sigma { 0 };
65 qreal m_radius { 0 };
66 QColor m_color { Qt::black };
67 CornersGroup m_corners {};
68 Style m_style { Normal };
69};
70
71} // namespace qml_material
Definition blur_mask.hpp:16