KWin
Loading...
Searching...
No Matches
itemrenderer_qpainter.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#pragma once
8
10
11class QPainter;
12
13namespace KWin
14{
15
16class DecorationItem;
17class SurfaceItem;
18
19class KWIN_EXPORT ItemRendererQPainter : public ItemRenderer
20{
21public:
23 ~ItemRendererQPainter() override;
24
25 QPainter *painter() const override;
26
27 void beginFrame(const RenderTarget &renderTarget, const RenderViewport &viewport) override;
28 void endFrame() override;
29
30 void renderBackground(const RenderTarget &renderTarget, const RenderViewport &viewport, const QRegion &region) override;
31 void renderItem(const RenderTarget &renderTarget, const RenderViewport &viewport, Item *item, int mask, const QRegion &region, const WindowPaintData &data) override;
32
33 std::unique_ptr<ImageItem> createImageItem(Scene *scene, Item *parent = nullptr) override;
34
35private:
36 void renderSurfaceItem(QPainter *painter, SurfaceItem *surfaceItem) const;
37 void renderDecorationItem(QPainter *painter, DecorationItem *decorationItem) const;
38 void renderImageItem(QPainter *painter, ImageItem *imageItem) const;
39 void renderItem(QPainter *painter, Item *item) const;
40
41 std::unique_ptr<QPainter> m_painter;
42};
43
44} // namespace KWin