KWin
Loading...
Searching...
No Matches
item.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2021 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#pragma once
8
9#include "core/colorspace.h"
10#include "effect/globals.h"
11#include "scene/itemgeometry.h"
12
13#include <QList>
14#include <QMatrix4x4>
15#include <QObject>
16#include <QPointer>
17
18#include <optional>
19
20namespace KWin
21{
22
23class SceneDelegate;
24class Scene;
25
29class KWIN_EXPORT Item : public QObject
30{
31 Q_OBJECT
32
33public:
34 explicit Item(Scene *scene, Item *parent = nullptr);
35 ~Item() override;
36
37 Scene *scene() const;
38
39 qreal opacity() const;
40 void setOpacity(qreal opacity);
41
42 QPointF position() const;
43 void setPosition(const QPointF &point);
44
45 QSizeF size() const;
46 void setSize(const QSizeF &size);
47
48 int z() const;
49 void setZ(int z);
50
54 QRectF rect() const;
58 QRectF boundingRect() const;
59
60 virtual QList<QRectF> shape() const;
61 virtual QRegion opaque() const;
62
67 Item *parentItem() const;
68 void setParentItem(Item *parent);
69 QList<Item *> childItems() const;
70 QList<Item *> sortedChildItems() const;
71
72 QPointF rootPosition() const;
73
74 QMatrix4x4 transform() const;
75 void setTransform(const QMatrix4x4 &transform);
76
81 QRegion mapToGlobal(const QRegion &region) const;
86 QRectF mapToGlobal(const QRectF &rect) const;
91 QRectF mapFromGlobal(const QRectF &rect) const;
92
96 void stackBefore(Item *sibling);
100 void stackAfter(Item *sibling);
101
102 bool explicitVisible() const;
103 bool isVisible() const;
104 void setVisible(bool visible);
105
106 void scheduleRepaint(const QRectF &region);
107 void scheduleRepaint(const QRegion &region);
108 void scheduleRepaint(SceneDelegate *delegate, const QRegion &region);
109 void scheduleFrame();
110 QRegion repaints(SceneDelegate *delegate) const;
111 void resetRepaints(SceneDelegate *delegate);
112
113 WindowQuadList quads() const;
114 virtual void preprocess();
115 const ColorDescription &colorDescription() const;
116 PresentationModeHint presentationHint() const;
117
118Q_SIGNALS:
119 void childAdded(Item *item);
128
134
135protected:
136 virtual WindowQuadList buildQuads() const;
137 void discardQuads();
138 void setColorDescription(const ColorDescription &description);
139 void setPresentationHint(PresentationModeHint hint);
140
141private:
142 void addChild(Item *item);
143 void removeChild(Item *item);
144 void updateBoundingRect();
145 void scheduleRepaintInternal(const QRegion &region);
146 void scheduleRepaintInternal(SceneDelegate *delegate, const QRegion &region);
147 void markSortedChildItemsDirty();
148
149 bool computeEffectiveVisibility() const;
150 void updateEffectiveVisibility();
151 void removeRepaints(SceneDelegate *delegate);
152
153 Scene *m_scene;
154 QPointer<Item> m_parentItem;
155 QList<Item *> m_childItems;
156 QMatrix4x4 m_transform;
157 QRectF m_boundingRect;
158 QPointF m_position;
159 QSizeF m_size = QSize(0, 0);
160 qreal m_opacity = 1;
161 int m_z = 0;
162 bool m_explicitVisible = true;
163 bool m_effectiveVisible = true;
164 QMap<SceneDelegate *, QRegion> m_repaints;
165 mutable std::optional<WindowQuadList> m_quads;
166 mutable std::optional<QList<Item *>> m_sortedChildItems;
167 ColorDescription m_colorDescription = ColorDescription::sRGB;
168 PresentationModeHint m_presentationHint = PresentationModeHint::VSync;
169};
170
171} // namespace KWin
void sizeChanged()
void childAdded(Item *item)
void positionChanged()
void boundingRectChanged()
PresentationModeHint
Definition globals.h:299