1 /*
2  * SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl>
3  *
4  * SPDX-License-Identifier: LGPL-2.0-or-later
5  */
6 
7 #ifndef PAINTEDRECTANGLEITEM_H
8 #define PAINTEDRECTANGLEITEM_H
9 
10 #include <QQuickPaintedItem>
11 
12 /**
13  * A rectangle with a border and rounded corners, rendered through QPainter.
14  *
15  * This is a helper used by ShadowedRectangle as fallback for when software
16  * rendering is used, which means our shaders cannot be used.
17  *
18  * Since we cannot actually use QSGPaintedNode, we need to do some trickery
19  * using QQuickPaintedItem as a child of ShadowedRectangle.
20  *
21  * \warning This item is **not** intended as a general purpose item.
22  */
23 class PaintedRectangleItem : public QQuickPaintedItem
24 {
25     Q_OBJECT
26 public:
27     explicit PaintedRectangleItem(QQuickItem *parent = nullptr);
28 
29     void setColor(const QColor &color);
30     void setRadius(qreal radius);
31     void setBorderColor(const QColor &color);
32     void setBorderWidth(qreal width);
33 
34     void paint(QPainter *painter) override;
35 
36 private:
37     QColor m_color;
38     qreal m_radius = 0.0;
39     QColor m_borderColor;
40     qreal m_borderWidth = 0.0;
41 };
42 
43 #endif // PAINTEDRECTANGLEITEM_H
44