KWin
Loading...
Searching...
No Matches
screenedgeeffect.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: 2013 Martin Gräßlin <mgraesslin@kde.org>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#pragma once
10#include "effect/effect.h"
11
12#include <KConfigWatcher>
13
14class QTimer;
15namespace KSvg
16{
17class Svg;
18}
19
20namespace KWin
21{
22class Glow;
23class GLTexture;
24
26{
27 Q_OBJECT
28public:
30 ~ScreenEdgeEffect() override;
31 void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override;
32 void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion &region, Output *screen) override;
33 bool isActive() const override;
34
35 int requestedEffectChainPosition() const override
36 {
37 return 10;
38 }
39
40private Q_SLOTS:
41 void edgeApproaching(ElectricBorder border, qreal factor, const QRect &geometry);
42 void cleanup();
43
44private:
45 void ensureGlowSvg();
46 std::unique_ptr<Glow> createGlow(ElectricBorder border, qreal factor, const QRect &geometry);
47 QImage createCornerGlow(ElectricBorder border);
48 QImage createEdgeGlow(ElectricBorder border, const QSize &size);
49 QSize cornerGlowSize(ElectricBorder border);
50 KConfigWatcher::Ptr m_configWatcher;
51 KSvg::Svg *m_glow = nullptr;
52 std::map<ElectricBorder, std::unique_ptr<Glow>> m_borders;
53 QTimer *m_cleanupTimer;
54};
55
56class Glow
57{
58public:
59 std::unique_ptr<GLTexture> texture;
60 QImage image;
62 qreal strength;
63 QRect geometry;
65};
66
67}
Base class for all KWin effects.
Definition effect.h:535
std::unique_ptr< GLTexture > texture
ElectricBorder border
int requestedEffectChainPosition() const override
void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override
void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion &region, Output *screen) override
bool isActive() const override
Definition monitor.h:27
ElectricBorder
Definition globals.h:60