File indexing completed on 2024-05-19 05:32:19
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 <kwin_export.h> 0010 0011 #include <QMatrix4x4> 0012 #include <memory> 0013 0014 class QPainter; 0015 0016 namespace KWin 0017 { 0018 0019 class ImageItem; 0020 class Item; 0021 class RenderTarget; 0022 class RenderViewport; 0023 class Scene; 0024 class WindowPaintData; 0025 0026 class KWIN_EXPORT ItemRenderer 0027 { 0028 public: 0029 ItemRenderer(); 0030 virtual ~ItemRenderer(); 0031 0032 virtual QPainter *painter() const; 0033 0034 virtual void beginFrame(const RenderTarget &renderTarget, const RenderViewport &viewport); 0035 virtual void endFrame(); 0036 0037 virtual void renderBackground(const RenderTarget &renderTarget, const RenderViewport &viewport, const QRegion ®ion) = 0; 0038 virtual void renderItem(const RenderTarget &renderTarget, const RenderViewport &viewport, Item *item, int mask, const QRegion ®ion, const WindowPaintData &data) = 0; 0039 0040 virtual std::unique_ptr<ImageItem> createImageItem(Scene *scene, Item *parent = nullptr) = 0; 0041 }; 0042 0043 } // namespace KWin