File indexing completed on 2024-05-12 05:32:07
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 "scene/itemrenderer.h" 0010 0011 class QPainter; 0012 0013 namespace KWin 0014 { 0015 0016 class DecorationItem; 0017 class SurfaceItem; 0018 0019 class KWIN_EXPORT ItemRendererQPainter : public ItemRenderer 0020 { 0021 public: 0022 ItemRendererQPainter(); 0023 ~ItemRendererQPainter() override; 0024 0025 QPainter *painter() const override; 0026 0027 void beginFrame(const RenderTarget &renderTarget, const RenderViewport &viewport) override; 0028 void endFrame() override; 0029 0030 void renderBackground(const RenderTarget &renderTarget, const RenderViewport &viewport, const QRegion ®ion) override; 0031 void renderItem(const RenderTarget &renderTarget, const RenderViewport &viewport, Item *item, int mask, const QRegion ®ion, const WindowPaintData &data) override; 0032 0033 std::unique_ptr<ImageItem> createImageItem(Scene *scene, Item *parent = nullptr) override; 0034 0035 private: 0036 void renderSurfaceItem(QPainter *painter, SurfaceItem *surfaceItem) const; 0037 void renderDecorationItem(QPainter *painter, DecorationItem *decorationItem) const; 0038 void renderImageItem(QPainter *painter, ImageItem *imageItem) const; 0039 void renderItem(QPainter *painter, Item *item) const; 0040 0041 std::unique_ptr<QPainter> m_painter; 0042 }; 0043 0044 } // namespace KWin