File indexing completed on 2024-05-19 16:34:45
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 namespace KWin 0012 { 0013 0014 class GLTexture; 0015 0016 class KWIN_EXPORT ImageItem : public Item 0017 { 0018 Q_OBJECT 0019 0020 public: 0021 explicit ImageItem(Scene *scene, Item *parent = nullptr); 0022 0023 QImage image() const; 0024 void setImage(const QImage &image); 0025 0026 protected: 0027 QImage m_image; 0028 }; 0029 0030 class ImageItemOpenGL : public ImageItem 0031 { 0032 Q_OBJECT 0033 0034 public: 0035 explicit ImageItemOpenGL(Scene *scene, Item *parent = nullptr); 0036 ~ImageItemOpenGL() override; 0037 0038 GLTexture *texture() const; 0039 0040 protected: 0041 void preprocess() override; 0042 WindowQuadList buildQuads() const override; 0043 0044 private: 0045 std::unique_ptr<GLTexture> m_texture; 0046 qint64 m_textureKey = 0; 0047 }; 0048 0049 } // namespace KWin