File indexing completed on 2024-05-12 05:32:06
0001 /* 0002 SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "scene/item.h" 0010 0011 #include <QImage> 0012 0013 namespace KWin 0014 { 0015 0016 class GLTexture; 0017 0018 class KWIN_EXPORT ImageItem : public Item 0019 { 0020 Q_OBJECT 0021 0022 public: 0023 explicit ImageItem(Scene *scene, Item *parent = nullptr); 0024 0025 QImage image() const; 0026 void setImage(const QImage &image); 0027 0028 protected: 0029 QImage m_image; 0030 }; 0031 0032 class ImageItemOpenGL : public ImageItem 0033 { 0034 Q_OBJECT 0035 0036 public: 0037 explicit ImageItemOpenGL(Scene *scene, Item *parent = nullptr); 0038 ~ImageItemOpenGL() override; 0039 0040 GLTexture *texture() const; 0041 0042 protected: 0043 void preprocess() override; 0044 WindowQuadList buildQuads() const override; 0045 0046 private: 0047 std::unique_ptr<GLTexture> m_texture; 0048 qint64 m_textureKey = 0; 0049 }; 0050 0051 } // namespace KWin