/* SPDX-FileCopyrightText: 2022 Vlad Zahorodnii SPDX-License-Identifier: GPL-2.0-or-later */ #pragma once #include #include class QPainter; namespace KWin { class ImageItem; class Item; class RenderTarget; class RenderViewport; class Scene; class WindowPaintData; class KWIN_EXPORT ItemRenderer { public: ItemRenderer(); virtual ~ItemRenderer(); virtual QPainter *painter() const; virtual void beginFrame(const RenderTarget &renderTarget, const RenderViewport &viewport); virtual void endFrame(); virtual void renderBackground(const RenderTarget &renderTarget, const RenderViewport &viewport, const QRegion ®ion) = 0; virtual void renderItem(const RenderTarget &renderTarget, const RenderViewport &viewport, Item *item, int mask, const QRegion ®ion, const WindowPaintData &data) = 0; virtual ImageItem *createImageItem(Scene *scene, Item *parent = nullptr) = 0; }; } // namespace KWin