KWin
Loading...
Searching...
No Matches
magnifier.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 Lubos Lunak <l.lunak@kde.org>
6 SPDX-FileCopyrightText: 2011 Martin Gräßlin <mgraesslin@kde.org>
7
8 SPDX-License-Identifier: GPL-2.0-or-later
9*/
10
11#pragma once
12
13#include "effect/effect.h"
14
15namespace KWin
16{
17
18class GLFramebuffer;
19class GLTexture;
20
21class MagnifierEffect : public Effect
22{
23 Q_OBJECT
24 Q_PROPERTY(QSize magnifierSize READ magnifierSize)
25 Q_PROPERTY(qreal targetZoom READ targetZoom)
26public:
28 ~MagnifierEffect() override;
29 void reconfigure(ReconfigureFlags) override;
30 void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override;
31 void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion &region, Output *screen) override;
32 void postPaintScreen() override;
33 bool isActive() const override;
34 static bool supported();
35
36 // for properties
37 QSize magnifierSize() const;
38 qreal targetZoom() const;
39private Q_SLOTS:
40 void zoomIn();
41 void zoomOut();
42 void toggle();
43 void slotMouseChanged(const QPointF &pos, const QPointF &old,
44 Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons,
45 Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers);
46 void slotWindowAdded(EffectWindow *w);
47 void slotWindowDamaged();
48
50 QRect magnifierArea(QPointF pos = cursorPos()) const;
51 double m_zoom;
52 double m_targetZoom;
53 bool m_polling; // Mouse polling
54 std::chrono::milliseconds m_lastPresentTime;
55 QSize m_magnifierSize;
56 std::unique_ptr<GLTexture> m_texture;
57 std::unique_ptr<GLFramebuffer> m_fbo;
58};
59
60} // namespace
Base class for all KWin effects.
Definition effect.h:535
Representation of a window used by/for Effect classes.
OpenGL framebuffer object.
bool isActive() const override
void reconfigure(ReconfigureFlags) override
Definition magnifier.cpp:74
void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override
Definition magnifier.cpp:88
void postPaintScreen() override
static bool supported()
Definition magnifier.cpp:69
void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion &region, Output *screen) override
static QPointF cursorPos()
Definition effect.cpp:478
#define private