KWin
Loading...
Searching...
No Matches
contrast.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2015 Martin Gräßlin <mgraesslin@kde.org>
3 SPDX-FileCopyrightText: 2015 Marco Martin <mart@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
6*/
7#include "contrast.h"
8#include "display.h"
9#include "region_p.h"
10#include "surface_p.h"
11
12#include <qwayland-server-contrast.h>
13
14namespace KWin
15{
16static const quint32 s_version = 2;
17
18class ContrastManagerInterfacePrivate : public QtWaylandServer::org_kde_kwin_contrast_manager
19{
20public:
22
24
25protected:
27 void org_kde_kwin_contrast_manager_create(Resource *resource, uint32_t id, wl_resource *surface) override;
28 void org_kde_kwin_contrast_manager_unset(Resource *resource, wl_resource *surface) override;
29};
30
32 : QtWaylandServer::org_kde_kwin_contrast_manager(*display, s_version)
33 , q(q)
34{
35}
36
41
42void ContrastManagerInterfacePrivate::org_kde_kwin_contrast_manager_create(Resource *resource, uint32_t id, wl_resource *surface)
43{
45 if (!s) {
46 wl_resource_post_error(resource->handle, 0, "Invalid surface");
47 return;
48 }
49
50 wl_resource *contrast_resource = wl_resource_create(resource->client(), &org_kde_kwin_contrast_interface, resource->version(), id);
51 if (!contrast_resource) {
52 wl_client_post_no_memory(resource->client());
53 return;
54 }
55 auto contrast = new ContrastInterface(contrast_resource);
57 surfacePrivate->setContrast(contrast);
58}
59
61{
63 if (!s) {
64 wl_resource_post_error(resource->handle, 0, "Invalid surface");
65 return;
66 }
68 surfacePrivate->setContrast(QPointer<ContrastInterface>());
69}
70
72 : QObject(parent)
73 , d(new ContrastManagerInterfacePrivate(this, display))
74{
75}
76
80
82{
83 d->globalRemove();
84}
85
86class ContrastInterfacePrivate : public QtWaylandServer::org_kde_kwin_contrast
87{
88public:
89 ContrastInterfacePrivate(ContrastInterface *_q, wl_resource *resource);
90
102
103protected:
104 void org_kde_kwin_contrast_commit(Resource *resource) override;
105 void org_kde_kwin_contrast_set_region(Resource *resource, wl_resource *region) override;
106 void org_kde_kwin_contrast_set_contrast(Resource *resource, wl_fixed_t contrast) override;
107 void org_kde_kwin_contrast_set_intensity(Resource *resource, wl_fixed_t intensity) override;
108 void org_kde_kwin_contrast_set_saturation(Resource *resource, wl_fixed_t saturation) override;
109 void org_kde_kwin_contrast_set_frost(Resource *resource, int r, int g, int b, int a) override;
110 void org_kde_kwin_contrast_unset_frost(Resource *resource) override;
111 void org_kde_kwin_contrast_release(Resource *resource) override;
112 void org_kde_kwin_contrast_destroy_resource(Resource *resource) override;
113};
114
123
124void ContrastInterfacePrivate::org_kde_kwin_contrast_set_region(Resource *resource, wl_resource *region)
125{
127 if (r) {
128 pendingRegion = r->region();
129 } else {
130 pendingRegion = QRegion();
131 }
132}
133
134void ContrastInterfacePrivate::org_kde_kwin_contrast_set_contrast(Resource *resource, wl_fixed_t contrast)
135{
136 pendingContrast = wl_fixed_to_double(contrast);
137}
138
139void ContrastInterfacePrivate::org_kde_kwin_contrast_set_intensity(Resource *resource, wl_fixed_t intensity)
140{
141 pendingIntensity = wl_fixed_to_double(intensity);
142}
143
144void ContrastInterfacePrivate::org_kde_kwin_contrast_set_saturation(Resource *resource, wl_fixed_t saturation)
145{
146 pendingSaturation = wl_fixed_to_double(saturation);
147}
148
149void ContrastInterfacePrivate::org_kde_kwin_contrast_set_frost(Resource *resource, int r, int g, int b, int a)
150{
151 pendingFrost = QColor(r, g, b, a);
152}
153
158
160{
161 wl_resource_destroy(resource->handle);
162}
163
165{
166 delete q;
167}
168
170 : QtWaylandServer::org_kde_kwin_contrast(resource)
171 , q(_q)
172{
173}
174
175ContrastInterface::ContrastInterface(wl_resource *resource)
176 : QObject()
177 , d(new ContrastInterfacePrivate(this, resource))
178{
179}
180
182
184{
185 return d->currentRegion;
186}
187
189{
190 return d->currentContrast;
191}
192
194{
195 return d->currentIntensity;
196}
197
199{
200 return d->currentSaturation;
201}
202
204{
205 return d->currentFrost;
206}
207
208}
209
210#include "moc_contrast.cpp"
Represents the Resource for the org_kde_kwin_contrast interface.
Definition contrast.h:60
QRegion region() const
Definition contrast.cpp:183
QColor frost() const
Definition contrast.cpp:203
qreal intensity() const
Definition contrast.cpp:193
qreal saturation() const
Definition contrast.cpp:198
qreal contrast() const
Definition contrast.cpp:188
~ContrastInterface() override
void org_kde_kwin_contrast_release(Resource *resource) override
Definition contrast.cpp:159
void org_kde_kwin_contrast_unset_frost(Resource *resource) override
Definition contrast.cpp:154
void org_kde_kwin_contrast_set_frost(Resource *resource, int r, int g, int b, int a) override
Definition contrast.cpp:149
void org_kde_kwin_contrast_destroy_resource(Resource *resource) override
Definition contrast.cpp:164
ContrastInterfacePrivate(ContrastInterface *_q, wl_resource *resource)
Definition contrast.cpp:169
void org_kde_kwin_contrast_commit(Resource *resource) override
Definition contrast.cpp:115
void org_kde_kwin_contrast_set_region(Resource *resource, wl_resource *region) override
Definition contrast.cpp:124
void org_kde_kwin_contrast_set_saturation(Resource *resource, wl_fixed_t saturation) override
Definition contrast.cpp:144
void org_kde_kwin_contrast_set_contrast(Resource *resource, wl_fixed_t contrast) override
Definition contrast.cpp:134
void org_kde_kwin_contrast_set_intensity(Resource *resource, wl_fixed_t intensity) override
Definition contrast.cpp:139
Represents the Global for org_kde_kwin_contrast_manager interface.
Definition contrast.h:34
ContrastManagerInterface(Display *display, QObject *parent=nullptr)
Definition contrast.cpp:71
void org_kde_kwin_contrast_manager_unset(Resource *resource, wl_resource *surface) override
Definition contrast.cpp:60
ContrastManagerInterfacePrivate(ContrastManagerInterface *q, Display *display)
Definition contrast.cpp:31
void org_kde_kwin_contrast_manager_create(Resource *resource, uint32_t id, wl_resource *surface) override
Definition contrast.cpp:42
ContrastManagerInterface * q
Definition contrast.cpp:23
void org_kde_kwin_contrast_manager_destroy_global() override
Definition contrast.cpp:37
Class holding the Wayland server display loop.
Definition display.h:34
static RegionInterface * get(wl_resource *native)
Definition region.cpp:42
QRegion region() const
Definition region.cpp:37
Resource representing a wl_surface.
Definition surface.h:80
static SurfaceInterface * get(wl_resource *native)
Definition surface.cpp:819
void setContrast(const QPointer< ContrastInterface > &contrast)
Definition surface.cpp:195
static SurfaceInterfacePrivate * get(SurfaceInterface *surface)
Definition surface_p.h:99