KWin
Loading...
Searching...
No Matches
src
scene
imageitem.cpp
Go to the documentation of this file.
1
/*
2
SPDX-FileCopyrightText: 2022 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
3
4
SPDX-License-Identifier: GPL-2.0-or-later
5
*/
6
7
#include "
scene/imageitem.h
"
8
9
#include "
opengl/gltexture.h
"
10
11
namespace
KWin
12
{
13
14
ImageItem::ImageItem
(
Scene
*scene,
Item
*parent)
15
:
Item
(scene, parent)
16
{
17
}
18
19
QImage
ImageItem::image
()
const
20
{
21
return
m_image
;
22
}
23
24
void
ImageItem::setImage
(
const
QImage &image)
25
{
26
m_image
=
image
;
27
}
28
29
ImageItemOpenGL::ImageItemOpenGL
(
Scene
*scene,
Item
*parent)
30
:
ImageItem
(scene, parent)
31
{
32
}
33
34
ImageItemOpenGL::~ImageItemOpenGL
()
35
{
36
}
37
38
GLTexture
*
ImageItemOpenGL::texture
()
const
39
{
40
return
m_texture.get();
41
}
42
43
void
ImageItemOpenGL::preprocess
()
44
{
45
if
(
m_image
.isNull()) {
46
m_texture.reset();
47
m_textureKey = 0;
48
}
else
if
(m_textureKey !=
m_image
.cacheKey()) {
49
m_textureKey =
m_image
.cacheKey();
50
51
if
(!m_texture || m_texture->size() !=
m_image
.size()) {
52
m_texture =
GLTexture::upload
(
m_image
);
53
if
(!m_texture) {
54
return
;
55
}
56
m_texture->setFilter(GL_LINEAR);
57
m_texture->setWrapMode(GL_CLAMP_TO_EDGE);
58
}
else
{
59
m_texture->update(
m_image
);
60
}
61
}
62
}
63
64
WindowQuadList
ImageItemOpenGL::buildQuads
()
const
65
{
66
const
QRectF geometry =
boundingRect
();
67
if
(geometry.isEmpty()) {
68
return
WindowQuadList
{};
69
}
70
71
WindowQuad
quad;
72
quad[0] =
WindowVertex
(geometry.topLeft(), QPointF(0, 0));
73
quad[1] =
WindowVertex
(geometry.topRight(), QPointF(1, 0));
74
quad[2] =
WindowVertex
(geometry.bottomRight(), QPointF(1, 1));
75
quad[3] =
WindowVertex
(geometry.bottomLeft(), QPointF(0, 1));
76
77
WindowQuadList
ret;
78
ret.append(quad);
79
return
ret;
80
}
81
82
}
// namespace KWin
83
84
#include "moc_imageitem.cpp"
KWin::GLTexture
Definition
gltexture.h:40
KWin::GLTexture::upload
static std::unique_ptr< GLTexture > upload(const QImage &image)
Definition
gltexture.cpp:635
KWin::ImageItem
Definition
imageitem.h:19
KWin::ImageItem::setImage
void setImage(const QImage &image)
Definition
imageitem.cpp:24
KWin::ImageItem::m_image
QImage m_image
Definition
imageitem.h:29
KWin::ImageItem::image
QImage image() const
Definition
imageitem.cpp:19
KWin::ImageItem::ImageItem
ImageItem(Scene *scene, Item *parent=nullptr)
Definition
imageitem.cpp:14
KWin::ImageItemOpenGL::ImageItemOpenGL
ImageItemOpenGL(Scene *scene, Item *parent=nullptr)
Definition
imageitem.cpp:29
KWin::ImageItemOpenGL::preprocess
void preprocess() override
Definition
imageitem.cpp:43
KWin::ImageItemOpenGL::texture
GLTexture * texture() const
Definition
imageitem.cpp:38
KWin::ImageItemOpenGL::buildQuads
WindowQuadList buildQuads() const override
Definition
imageitem.cpp:64
KWin::ImageItemOpenGL::~ImageItemOpenGL
~ImageItemOpenGL() override
Definition
imageitem.cpp:34
KWin::Item
Definition
item.h:30
KWin::Item::boundingRect
QRectF boundingRect() const
Definition
item.cpp:157
KWin::Scene
Definition
scene.h:44
KWin::WindowQuad
Class representing one area of a window.
Definition
itemgeometry.h:62
KWin::WindowQuadList
Definition
itemgeometry.h:81
KWin::WindowVertex
Vertex class.
Definition
itemgeometry.h:22
gltexture.h
imageitem.h
KWin
Definition
activation_test.cpp:20
Generated on Sat Feb 17 2024 01:42:10 for KWin by
1.10.0