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 &region) = 0;
0038     virtual void renderItem(const RenderTarget &renderTarget, const RenderViewport &viewport, Item *item, int mask, const QRegion &region, const WindowPaintData &data) = 0;
0039 
0040     virtual std::unique_ptr<ImageItem> createImageItem(Scene *scene, Item *parent = nullptr) = 0;
0041 };
0042 
0043 } // namespace KWin