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
qssgrenderimage.cpp
Go to the documentation of this file.
1
// Copyright (C) 2008-2012 NVIDIA Corporation.
2
// Copyright (C) 2019 The Qt Company Ltd.
3
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
4
// Qt-Security score:significant reason:default
5
6
7
#
include
<
QtQuick3DRuntimeRender
/
private
/
qssgrenderimage_p
.
h
>
8
#
include
<
QtQuick
/
QSGTexture
>
9
10
QT_BEGIN_NAMESPACE
11
12
QSSGRenderImage::QSSGRenderImage(QSSGRenderGraphObject::Type type)
13
: QSSGRenderGraphObject(type, FlagT(QSSGRenderGraphObject::Flags::HasGraphicsResources))
14
{
15
m_flags.setFlag(Flag::Dirty);
16
m_flags.setFlag(Flag::TransformDirty);
17
}
18
19
QSSGRenderImage::~QSSGRenderImage() =
default
;
20
21
bool
QSSGRenderImage::clearDirty()
22
{
23
const
bool
wasDirty = m_flags.testFlag(Flag::Dirty);
24
m_flags.setFlag(Flag::Dirty,
false
);
25
if
(m_flags.testFlag(Flag::TransformDirty)) {
26
calculateTextureTransform();
27
return
true
;
28
}
29
return
wasDirty;
30
}
31
32
void
QSSGRenderImage::calculateTextureTransform()
33
{
34
m_flags.setFlag(Flag::TransformDirty,
false
);
35
36
m_textureTransform = QMatrix4x4();
37
if
(m_flipU) {
38
m_textureTransform *= QMatrix4x4(-1.f, 0.f, 0.f, 1.f,
39
0.f, 1.f, 0.f, 0.f,
40
0.f, 0.f, 1.f, 0.f,
41
0.f, 0.f, 0.f, 1.f);
42
}
43
if
(m_flipV) {
44
m_textureTransform *= QMatrix4x4(1.f, 0.f, 0.f, 0.f,
45
0.f, -1.f, 0.f, 1.f,
46
0.f, 0.f, 1.f, 0.f,
47
0.f, 0.f, 0.f, 1.f);
48
}
49
50
QMatrix4x4 pivot;
51
QMatrix4x4 pivot_r;
52
QMatrix4x4 translation;
53
QMatrix4x4 rotation;
54
QMatrix4x4 scale;
55
56
pivot.translate(m_pivot.x(), m_pivot.y());
57
pivot_r.translate(-m_pivot.x(), -m_pivot.y());
58
translation.translate(m_position.x(), m_position.y());
59
scale.scale(m_scale.x(), m_scale.y());
60
rotation.rotate(m_rotation, QVector3D(0, 0, 1));
61
62
m_textureTransform *= translation;
63
m_textureTransform *= pivot;
64
m_textureTransform *= rotation;
65
m_textureTransform *= scale;
66
m_textureTransform *= pivot_r;
67
}
68
69
bool
QSSGRenderImage::isImageTransformIdentity()
const
70
{
71
if
(m_mappingMode != MappingModes::Normal)
72
return
false
;
73
return
m_textureTransform.isIdentity();
74
}
75
76
QT_END_NAMESPACE
qtquick3d
src
runtimerender
graphobjects
qssgrenderimage.cpp
Generated on
for Qt by
1.18.0