KWin
Loading...
Searching...
No Matches
offscreeneffect.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2021 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#pragma once
8
9#include "effect/effect.h"
10#include "scene/itemgeometry.h"
11
12namespace KWin
13{
14
15class GLShader;
16class OffscreenEffectPrivate;
17class CrossFadeEffectPrivate;
18class ShaderEffectPrivate;
19
33class KWIN_EXPORT OffscreenEffect : public Effect
34{
35 Q_OBJECT
36
37public:
38 explicit OffscreenEffect(QObject *parent = nullptr);
39 ~OffscreenEffect() override;
40
41 static bool supported();
42
43protected:
44 void drawWindow(const RenderTarget &renderTarget, const RenderViewport &viewport, EffectWindow *window, int mask, const QRegion &region, WindowPaintData &data) override;
45
50 void redirect(EffectWindow *window);
55 void unredirect(EffectWindow *window);
56
60 virtual void apply(EffectWindow *window, int mask, WindowPaintData &data, WindowQuadList &quads);
61
66 void setShader(EffectWindow *window, GLShader *shader);
67
73 void setVertexSnappingMode(RenderGeometry::VertexSnappingMode mode);
74
75private Q_SLOTS:
76 void handleWindowDamaged(EffectWindow *window);
77 void handleWindowDeleted(EffectWindow *window);
78
79private:
80 void setupConnections();
81 void destroyConnections();
82
83 std::unique_ptr<OffscreenEffectPrivate> d;
84};
85
97class KWIN_EXPORT CrossFadeEffect : public Effect
98{
99 Q_OBJECT
100public:
101 explicit CrossFadeEffect(QObject *parent = nullptr);
103
104 void drawWindow(const RenderTarget &renderTarget, const RenderViewport &viewport, EffectWindow *window, int mask, const QRegion &region, WindowPaintData &data) override;
105
110 void redirect(EffectWindow *window);
115 void unredirect(EffectWindow *window);
116
122 void setShader(EffectWindow *window, GLShader *shader);
123
124 static bool supported();
125
126private:
127 void handleWindowDeleted(EffectWindow *window);
128 std::unique_ptr<CrossFadeEffectPrivate> d;
129};
130
131} // namespace KWin
static bool supported()
~CrossFadeEffect() override
Base class for all KWin effects.
Definition effect.h:535
Representation of a window used by/for Effect classes.
~OffscreenEffect() override