2022-12-16 17:09:32 +00:00
|
|
|
/*
|
|
|
|
SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
|
|
|
|
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <kwin_export.h>
|
|
|
|
|
|
|
|
#include <QMatrix4x4>
|
|
|
|
|
|
|
|
class QPainter;
|
|
|
|
|
|
|
|
namespace KWin
|
|
|
|
{
|
|
|
|
|
2022-12-19 09:27:41 +00:00
|
|
|
class ImageItem;
|
2022-12-16 17:09:32 +00:00
|
|
|
class Item;
|
|
|
|
class RenderTarget;
|
2023-02-09 17:34:43 +00:00
|
|
|
class RenderViewport;
|
2022-12-19 09:27:41 +00:00
|
|
|
class Scene;
|
2022-12-16 17:09:32 +00:00
|
|
|
class WindowPaintData;
|
|
|
|
|
|
|
|
class KWIN_EXPORT ItemRenderer
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
ItemRenderer();
|
|
|
|
virtual ~ItemRenderer();
|
|
|
|
|
|
|
|
virtual QPainter *painter() const;
|
|
|
|
|
2023-02-09 17:34:43 +00:00
|
|
|
virtual void beginFrame(const RenderTarget &renderTarget, const RenderViewport &viewport);
|
2022-12-16 17:09:32 +00:00
|
|
|
virtual void endFrame();
|
|
|
|
|
2023-02-09 17:34:43 +00:00
|
|
|
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;
|
2022-12-16 17:09:32 +00:00
|
|
|
|
2022-12-19 09:27:41 +00:00
|
|
|
virtual ImageItem *createImageItem(Scene *scene, Item *parent = nullptr) = 0;
|
2022-12-16 17:09:32 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace KWin
|