Instead of calling effects->renderTargetRect() and effects->renderTargetScale(), pass the actually used render target and viewport in all the necessary methods. This ensures that if an effect renders a screen with a modified scale or projection matrix, the modified values get used instead of the "global" ones
42 lines
999 B
C++
42 lines
999 B
C++
/*
|
|
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
|
|
{
|
|
|
|
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
|