9QSGDefaultImageNode::QSGDefaultImageNode()
10 : m_geometry(QSGGeometry::defaultAttributes_TexturedPoint2D(), 4)
11 , m_texCoordMode(QSGDefaultImageNode::NoTransform)
12 , m_isAtlasTexture(
false)
13 , m_ownsTexture(
false)
15 setGeometry(&m_geometry);
16 setMaterial(&m_material);
17 setOpaqueMaterial(&m_opaque_material);
18 m_material.setMipmapFiltering(QSGTexture::None);
19 m_opaque_material.setMipmapFiltering(QSGTexture::None);
20#ifdef QSG_RUNTIME_DESCRIPTION
21 qsgnode_set_description(
this, QLatin1String(
"image"));
31void QSGDefaultImageNode::setFiltering(QSGTexture::Filtering filtering)
33 if (m_material.filtering() == filtering)
36 m_material.setFiltering(filtering);
37 m_opaque_material.setFiltering(filtering);
38 markDirty(DirtyMaterial);
46void QSGDefaultImageNode::setMipmapFiltering(QSGTexture::Filtering filtering)
48 if (m_material.mipmapFiltering() == filtering)
51 m_material.setMipmapFiltering(filtering);
52 m_opaque_material.setMipmapFiltering(filtering);
53 markDirty(DirtyMaterial);
61void QSGDefaultImageNode::setAnisotropyLevel(QSGTexture::AnisotropyLevel level)
63 if (m_material.anisotropyLevel() == level)
66 m_material.setAnisotropyLevel(level);
67 m_opaque_material.setAnisotropyLevel(level);
68 markDirty(DirtyMaterial);
76void QSGDefaultImageNode::setRect(
const QRectF &r)
82 rebuildGeometry(&m_geometry, texture(), m_rect, m_sourceRect, m_texCoordMode);
83 markDirty(DirtyGeometry);
91void QSGDefaultImageNode::setSourceRect(
const QRectF &r)
93 if (m_sourceRect == r)
97 rebuildGeometry(&m_geometry, texture(), m_rect, m_sourceRect, m_texCoordMode);
98 markDirty(DirtyGeometry);
106void QSGDefaultImageNode::setTexture(QSGTexture *texture)
110 delete m_material.texture();
111 m_material.setTexture(texture);
112 m_opaque_material.setTexture(texture);
113 rebuildGeometry(&m_geometry, texture, m_rect, m_sourceRect, m_texCoordMode);
115 DirtyState dirty = DirtyMaterial;
119 bool wasAtlas = m_isAtlasTexture;
120 m_isAtlasTexture = texture->isAtlasTexture();
121 if (wasAtlas || m_isAtlasTexture)
122 dirty |= DirtyGeometry;
124 if (m_textureSize != texture->textureSize())
125 dirty |= DirtyGeometry;
126 m_textureSize = texture->textureSize();
135void QSGDefaultImageNode::setTextureCoordinatesTransform(TextureCoordinatesTransformMode mode)
137 if (m_texCoordMode == mode)
139 m_texCoordMode = mode;
140 rebuildGeometry(&m_geometry, texture(), m_rect, m_sourceRect, m_texCoordMode);
141 markDirty(DirtyMaterial);