KWin
Loading...
Searching...
No Matches
surfaceitem_internal.cpp
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
8#include "compositor.h"
10#include "internalwindow.h"
11
12namespace KWin
13{
14
16 : SurfaceItem(scene, parent)
17 , m_window(window)
18{
20 this, &SurfaceItemInternal::handleBufferGeometryChanged);
21
23 setBufferSourceBox(QRectF(QPointF(0, 0), window->bufferGeometry().size() * window->bufferScale()));
24 setBufferSize((window->bufferGeometry().size() * window->bufferScale()).toSize());
25}
26
28{
29 return m_window;
30}
31
32QList<QRectF> SurfaceItemInternal::shape() const
33{
34 return {rect()};
35}
36
37std::unique_ptr<SurfacePixmap> SurfaceItemInternal::createPixmap()
38{
39 return std::make_unique<SurfacePixmapInternal>(this);
40}
41
42void SurfaceItemInternal::handleBufferGeometryChanged()
43{
44 setDestinationSize(m_window->bufferGeometry().size());
45 setBufferSourceBox(QRectF(QPointF(0, 0), m_window->bufferGeometry().size() * m_window->bufferScale()));
46 setBufferSize((m_window->bufferGeometry().size() * m_window->bufferScale()).toSize());
47}
48
50 : SurfacePixmap(Compositor::self()->backend()->createSurfaceTextureWayland(this), parent)
51 , m_item(item)
52{
53}
54
59
61{
62 const InternalWindow *window = m_item->window();
63 setBuffer(window->graphicsBuffer());
65}
66
68{
69 return m_bufferRef;
70}
71
72} // namespace KWin
73
74#include "moc_surfaceitem_internal.cpp"
GraphicsBufferOrigin graphicsBufferOrigin() const
GraphicsBuffer * graphicsBuffer() const
QRectF rect() const
Definition item.cpp:152
void setDestinationSize(const QSizeF &size)
void setBufferSize(const QSize &size)
void setBufferSourceBox(const QRectF &box)
SurfaceItemInternal(InternalWindow *window, Scene *scene, Item *parent=nullptr)
InternalWindow * window() const
std::unique_ptr< SurfacePixmap > createPixmap() override
QList< QRectF > shape() const override
GraphicsBufferRef m_bufferRef
void setBufferOrigin(GraphicsBufferOrigin origin)
void setBuffer(GraphicsBuffer *buffer)
SurfacePixmapInternal(SurfaceItemInternal *item, QObject *parent=nullptr)
QRectF bufferGeometry
Definition window.h:69
void bufferGeometryChanged(const QRectF &oldGeometry)