1/*
2 * SPDX-FileCopyrightText: 2025 Arjen Hiemstra <ahiemstra@heimr.nl>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7#pragma once
8
9#include <QImage>
10#include <QQuickWindow>
11#include <QSGRenderNode>
12
13#include "shadernode.h"
14
15class ShaderMaterial;
16
17/*!
18 * A scene graph node that implements rendering a rectangle with a color and
19 * texture for the software renderer.
20 */
21class SoftwareRectangleNode : public QSGRenderNode
22{
23public:
24 SoftwareRectangleNode();
25
26 void setWindow(QQuickWindow *window);
27
28 QRectF rect() const override;
29 void setRect(const QRectF &rect);
30 void setColor(const QColor &color);
31 void setImage(const QImage &image);
32 void setTextureProvider(QSGTextureProvider *provider);
33 void setRadius(qreal radius);
34 void setBorderWidth(qreal width);
35 void setBorderColor(const QColor &color);
36
37 RenderingFlags flags() const override;
38 void preprocess() override;
39 void render(const RenderState *state) override;
40
41private:
42 void cleanupImageNode();
43
44 QQuickWindow *m_window = nullptr;
45
46 QSGImageNode *m_imageNode = nullptr;
47 ShaderNode::TextureInfo m_textureInfo;
48
49 QRectF m_rect;
50 // QImage m_image;
51 qreal m_radius = 0.0;
52 qreal m_borderWidth = 0.0;
53 QColor m_color = Qt::transparent;
54 QColor m_borderColor = Qt::transparent;
55};
56

source code of kirigami/src/primitives/scenegraph/softwarerectanglenode.h