File indexing completed on 2024-05-05 07:57:37
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 };