KWin
Loading...
Searching...
No Matches
glide.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2007 Philip Falkner <philip.falkner@gmail.com>
6 SPDX-FileCopyrightText: 2009 Martin Gräßlin <mgraesslin@kde.org>
7 SPDX-FileCopyrightText: 2010 Alexandre Pereira <pereira.alex@gmail.com>
8 SPDX-FileCopyrightText: 2018 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
9
10 SPDX-License-Identifier: GPL-2.0-or-later
11*/
12
13#pragma once
14
15// kwineffects
16#include "effect/effect.h"
17#include "effect/effectwindow.h"
18#include "effect/timeline.h"
19
20namespace KWin
21{
22
28
29class GlideEffect : public Effect
30{
31 Q_OBJECT
32 Q_PROPERTY(int duration READ duration)
34 Q_PROPERTY(qreal inRotationAngle READ inRotationAngle)
35 Q_PROPERTY(qreal inDistance READ inDistance)
36 Q_PROPERTY(qreal inOpacity READ inOpacity)
38 Q_PROPERTY(qreal outRotationAngle READ outRotationAngle)
39 Q_PROPERTY(qreal outDistance READ outDistance)
40 Q_PROPERTY(qreal outOpacity READ outOpacity)
41
42public:
44 ~GlideEffect() override;
45
46 void reconfigure(ReconfigureFlags flags) override;
47
48 void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override;
49 void prePaintWindow(EffectWindow *w, WindowPrePaintData &data, std::chrono::milliseconds presentTime) override;
50 void paintWindow(const RenderTarget &renderTarget, const RenderViewport &viewport, EffectWindow *w, int mask, QRegion region, WindowPaintData &data) override;
51 void postPaintScreen() override;
52
53 bool isActive() const override;
54 int requestedEffectChainPosition() const override;
55
56 static bool supported();
57
59 Top = 0,
60 Right = 1,
61 Bottom = 2,
62 Left = 3
63 };
64 Q_ENUM(RotationEdge)
65
66 int duration() const;
68 qreal inRotationAngle() const;
69 qreal inDistance() const;
70 qreal inOpacity() const;
72 qreal outRotationAngle() const;
73 qreal outDistance() const;
74 qreal outOpacity() const;
75
76private Q_SLOTS:
77 void windowAdded(EffectWindow *w);
78 void windowClosed(EffectWindow *w);
79 void windowDataChanged(EffectWindow *w, int role);
80
81private:
82 bool isGlideWindow(EffectWindow *w) const;
83
84 std::chrono::milliseconds m_duration;
85 QHash<EffectWindow *, GlideAnimation> m_animations;
86
87 struct GlideParams
88 {
89 RotationEdge edge;
90 struct
91 {
92 qreal from;
93 qreal to;
94 } angle, distance, opacity;
95 };
96
97 GlideParams m_inParams;
98 GlideParams m_outParams;
99};
100
102{
103 return 50;
104}
105
106inline int GlideEffect::duration() const
107{
108 return m_duration.count();
109}
110
112{
113 return m_inParams.edge;
114}
115
117{
118 return m_inParams.angle.from;
119}
120
121inline qreal GlideEffect::inDistance() const
122{
123 return m_inParams.distance.from;
124}
125
126inline qreal GlideEffect::inOpacity() const
127{
128 return m_inParams.opacity.from;
129}
130
132{
133 return m_outParams.edge;
134}
135
137{
138 return m_outParams.angle.to;
139}
140
141inline qreal GlideEffect::outDistance() const
142{
143 return m_outParams.distance.to;
144}
145
146inline qreal GlideEffect::outOpacity() const
147{
148 return m_outParams.opacity.to;
149}
150
151} // namespace KWin
Base class for all KWin effects.
Definition effect.h:535
Representation of a window used by/for Effect classes.
qreal outOpacity
Definition glide.h:40
void postPaintScreen() override
Definition glide.cpp:195
qreal outRotationAngle
Definition glide.h:38
void reconfigure(ReconfigureFlags flags) override
Definition glide.cpp:82
bool isActive() const override
Definition glide.cpp:210
void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override
Definition glide.cpp:104
qreal outDistance
Definition glide.h:39
void paintWindow(const RenderTarget &renderTarget, const RenderViewport &viewport, EffectWindow *w, int mask, QRegion region, WindowPaintData &data) override
Definition glide.cpp:122
qreal inDistance
Definition glide.h:35
void prePaintWindow(EffectWindow *w, WindowPrePaintData &data, std::chrono::milliseconds presentTime) override
Definition glide.cpp:111
qreal inRotationAngle
Definition glide.h:34
qreal inOpacity
Definition glide.h:36
static bool supported()
Definition glide.cpp:215
RotationEdge outRotationEdge
Definition glide.h:37
int requestedEffectChainPosition() const override
Definition glide.h:101
RotationEdge inRotationEdge
Definition glide.h:33
TimeLine timeLine
Definition glide.h:26
EffectWindowDeletedRef deletedRef
Definition glide.h:25