KWayland

region.h
1 /*
2  SPDX-FileCopyrightText: 2014 Martin Gräßlin <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5 */
6 #ifndef WAYLAND_REGION_H
7 #define WAYLAND_REGION_H
8 
9 #include <QObject>
10 
11 #include "KWayland/Client/kwaylandclient_export.h"
12 
13 struct wl_region;
14 
15 namespace KWayland
16 {
17 namespace Client
18 {
19 /**
20  * @short Wrapper for the wl_region interface.
21  *
22  * This class is a convenient wrapper for the wl_region interface.
23  * To create a Region call Compositor::createRegion.
24  *
25  * The main purpose of this class is to provide regions which can be
26  * used to e.g. set the input region on a Surface.
27  *
28  * @see Compositor
29  * @see Surface
30  **/
31 class KWAYLANDCLIENT_EXPORT Region : public QObject
32 {
33  Q_OBJECT
34 public:
35  explicit Region(const QRegion &region, QObject *parent = nullptr);
36  ~Region() override;
37 
38  /**
39  * Setup this Surface to manage the @p region.
40  * When using Compositor::createRegion there is no need to call this
41  * method.
42  **/
43  void setup(wl_region *region);
44  /**
45  * Releases the wl_region interface.
46  * After the interface has been released the Region instance is no
47  * longer valid and can be setup with another wl_region interface.
48  **/
49  void release();
50  /**
51  * Destroys the data held by this Region.
52  * This method is supposed to be used when the connection to the Wayland
53  * server goes away. If the connection is not valid anymore, it's not
54  * possible to call release anymore as that calls into the Wayland
55  * connection and the call would fail. This method cleans up the data, so
56  * that the instance can be deleted or set up to a new wl_region interface
57  * once there is a new connection available.
58  *
59  * It is suggested to connect this method to ConnectionThread::connectionDied:
60  * @code
61  * connect(connection, &ConnectionThread::connectionDied, region, &Region::destroy);
62  * @endcode
63  *
64  * @see release
65  **/
66  void destroy();
67  /**
68  * @returns @c true if managing a wl_region.
69  **/
70  bool isValid() const;
71 
72  /**
73  * Adds the @p rect to this Region.
74  **/
75  void add(const QRect &rect);
76  /**
77  * Adds the @p region to this Rregion.
78  **/
79  void add(const QRegion &region);
80  /**
81  * Subtracts @p rect from this Region.
82  **/
83  void subtract(const QRect &rect);
84  /**
85  * Subtracts @p region from this Region.
86  **/
87  void subtract(const QRegion &region);
88 
89  /**
90  * The geometry of this Region.
91  **/
92  QRegion region() const;
93 
94  operator wl_region *();
95  operator wl_region *() const;
96 
97 private:
98  class Private;
100 };
101 
102 }
103 }
104 
105 #endif
virtual void release(quint64 objid)
Wrapper for the wl_region interface.
Definition: region.h:31
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sun Mar 26 2023 03:55:52 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.