Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qsgopenvgspritenode.cpp
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4
#
include
"qsgopenvgspritenode.h"
5
#
include
"qsgopenvgtexture.h"
6
7
QT_BEGIN_NAMESPACE
8
9
QSGOpenVGSpriteNode::QSGOpenVGSpriteNode()
10
: m_time(0.0f)
11
{
12
// Set Dummy material and geometry to avoid asserts
13
setMaterial((QSGMaterial*)1);
14
setGeometry((QSGGeometry*)1);
15
}
16
17
QSGOpenVGSpriteNode
::~
QSGOpenVGSpriteNode
()
18
{
19
delete
m_texture;
20
}
21
22
void
QSGOpenVGSpriteNode
::
setTexture
(QSGTexture *texture)
23
{
24
m_texture =
static_cast
<
QSGOpenVGTexture
*>(texture);
25
markDirty(DirtyMaterial);
26
}
27
28
void
QSGOpenVGSpriteNode
::
setTime
(
float
time)
29
{
30
if
(m_time != time) {
31
m_time = time;
32
markDirty(DirtyMaterial);
33
}
34
}
35
36
void
QSGOpenVGSpriteNode
::
setSourceA
(
const
QPoint &source)
37
{
38
if
(m_sourceA != source) {
39
m_sourceA = source;
40
markDirty(DirtyMaterial);
41
}
42
}
43
44
void
QSGOpenVGSpriteNode
::
setSourceB
(
const
QPoint &source)
45
{
46
if
(m_sourceB != source) {
47
m_sourceB = source;
48
markDirty(DirtyMaterial);
49
}
50
}
51
52
void
QSGOpenVGSpriteNode
::
setSpriteSize
(
const
QSize &size)
53
{
54
if
(m_spriteSize != size) {
55
m_spriteSize = size;
56
markDirty(DirtyMaterial);
57
}
58
}
59
60
void
QSGOpenVGSpriteNode
::
setSheetSize
(
const
QSize &size)
61
{
62
if
(m_sheetSize != size) {
63
m_sheetSize = size;
64
markDirty(DirtyMaterial);
65
}
66
}
67
68
void
QSGOpenVGSpriteNode
::
setSize
(
const
QSizeF &size)
69
{
70
if
(m_size != size) {
71
m_size = size;
72
markDirty(DirtyGeometry);
73
}
74
}
75
76
void
QSGOpenVGSpriteNode
::
setFiltering
(
QSGTexture
::
Filtering
)
77
{
78
}
79
80
void
QSGOpenVGSpriteNode
::
update
()
81
{
82
}
83
84
void
QSGOpenVGSpriteNode
::
render
()
85
{
86
if
(!m_texture)
87
return
;
88
89
VGImage image =
static_cast
<VGImage>(m_texture->comparisonKey());
90
91
QRectF sourceRect(m_sourceA, m_spriteSize);
92
QRectF targetRect(0, 0, m_size.width(), m_size.height());
93
94
VGImage sourceImage = vgChildImage(image, sourceRect.x(), sourceRect.y(), sourceRect.width(), sourceRect.height());
95
96
// Set Draw Mode
97
if
(
opacity
() < 1.0) {
98
//Transparent
99
vgSetPaint(opacityPaint(), VG_FILL_PATH);
100
vgSeti(VG_IMAGE_MODE, VG_DRAW_IMAGE_MULTIPLY);
101
}
else
{
102
vgSeti(VG_IMAGE_MODE, VG_DRAW_IMAGE_NORMAL);
103
}
104
105
// Set Image Matrix
106
vgSeti(VG_MATRIX_MODE, VG_MATRIX_IMAGE_USER_TO_SURFACE);
107
vgLoadMatrix(
transform
().constData());
108
109
if
(sourceRect != targetRect) {
110
// Scale
111
float
scaleX = targetRect.width() / sourceRect.width();
112
float
scaleY = targetRect.height() / sourceRect.height();
113
vgScale(scaleX, scaleY);
114
}
115
116
vgDrawImage(sourceImage);
117
118
vgDestroyImage(sourceImage);
119
}
120
121
QT_END_NAMESPACE
QSGOpenVGRenderable::opacity
float opacity() const
Definition
qsgopenvgrenderable.cpp:31
QSGOpenVGRenderable::transform
const QOpenVGMatrix & transform() const
Definition
qsgopenvgrenderable.cpp:46
QSGOpenVGSpriteNode
Definition
qsgopenvgspritenode.h:15
QSGOpenVGSpriteNode::setTexture
void setTexture(QSGTexture *texture) override
Definition
qsgopenvgspritenode.cpp:22
QSGOpenVGSpriteNode::~QSGOpenVGSpriteNode
~QSGOpenVGSpriteNode()
Definition
qsgopenvgspritenode.cpp:17
QSGOpenVGSpriteNode::setSize
void setSize(const QSizeF &size) override
Definition
qsgopenvgspritenode.cpp:68
QSGOpenVGSpriteNode::update
void update() override
Definition
qsgopenvgspritenode.cpp:80
QSGOpenVGSpriteNode::render
void render() override
Definition
qsgopenvgspritenode.cpp:84
QSGOpenVGSpriteNode::setSourceA
void setSourceA(const QPoint &source) override
Definition
qsgopenvgspritenode.cpp:36
QSGOpenVGSpriteNode::setSheetSize
void setSheetSize(const QSize &size) override
Definition
qsgopenvgspritenode.cpp:60
QSGOpenVGSpriteNode::setSourceB
void setSourceB(const QPoint &source) override
Definition
qsgopenvgspritenode.cpp:44
QSGOpenVGSpriteNode::setFiltering
void setFiltering(QSGTexture::Filtering filtering) override
Definition
qsgopenvgspritenode.cpp:76
QSGOpenVGSpriteNode::setTime
void setTime(float time) override
Definition
qsgopenvgspritenode.cpp:28
QSGOpenVGSpriteNode::setSpriteSize
void setSpriteSize(const QSize &size) override
Definition
qsgopenvgspritenode.cpp:52
QSGOpenVGTexture
Definition
qsgopenvgtexture.h:14
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
qtdeclarative
src
plugins
scenegraph
openvg
qsgopenvgspritenode.cpp
Generated on
for Qt by
1.18.0