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