File indexing completed on 2024-04-21 03:55:57

0001 /*
0002  *  SPDX-FileCopyrightText: 2020 Arjen Hiemstra <ahiemstra@heimr.nl>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QPointer>
0010 #include <QSGTextureProvider>
0011 
0012 #include "shadowedrectanglenode.h"
0013 #include "shadowedtexturematerial.h"
0014 
0015 /**
0016  * Scene graph node for a shadowed texture source.
0017  *
0018  * This node will set up the geometry and materials for a shadowed rectangle,
0019  * optionally with rounded corners, using a supplied texture source as the color
0020  * for the rectangle.
0021  *
0022  * \note You must call updateGeometry() after setting properties of this node,
0023  * otherwise the node's state will not correctly reflect all the properties.
0024  *
0025  * \sa ShadowedTexture
0026  */
0027 class ShadowedTextureNode : public ShadowedRectangleNode
0028 {
0029 public:
0030     ShadowedTextureNode();
0031     ~ShadowedTextureNode();
0032 
0033     void setTextureSource(QSGTextureProvider *source);
0034     void preprocess() override;
0035 
0036 private:
0037     ShadowedRectangleMaterial *createBorderlessMaterial() override;
0038     ShadowedBorderRectangleMaterial *createBorderMaterial() override;
0039     QSGMaterialType *borderlessMaterialType() override;
0040     QSGMaterialType *borderMaterialType() override;
0041 
0042     QPointer<QSGTextureProvider> m_textureSource;
0043     QMetaObject::Connection m_textureChangeConnectionHandle;
0044 };