1/****************************************************************************
2**
3** Copyright (C) 2016 Klaralvdalens Datakonsult AB (KDAB).
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the Qt3D module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial License Usage
10** Licensees holding valid commercial Qt licenses may use this file in
11** accordance with the commercial license agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and The Qt Company. For licensing terms
14** and conditions see https://www.qt.io/terms-conditions. For further
15** information use the contact form at https://www.qt.io/contact-us.
16**
17** GNU Lesser General Public License Usage
18** Alternatively, this file may be used under the terms of the GNU Lesser
19** General Public License version 3 as published by the Free Software
20** Foundation and appearing in the file LICENSE.LGPL3 included in the
21** packaging of this file. Please review the following information to
22** ensure the GNU Lesser General Public License version 3 requirements
23** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
24**
25** GNU General Public License Usage
26** Alternatively, this file may be used under the terms of the GNU
27** General Public License version 2.0 or (at your option) the GNU General
28** Public license version 3 or any later version approved by the KDE Free
29** Qt Foundation. The licenses are as published by the Free Software
30** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
31** included in the packaging of this file. Please review the following
32** information to ensure the GNU General Public License requirements will
33** be met: https://www.gnu.org/licenses/gpl-2.0.html and
34** https://www.gnu.org/licenses/gpl-3.0.html.
35**
36** $QT_END_LICENSE$
37**
38****************************************************************************/
39
40
41#include "qtexturedata.h"
42
43QT_BEGIN_NAMESPACE
44
45namespace Qt3DRender {
46
47/*!
48 * \class Qt3DRender::QTextureData
49 * \inheaderfile Qt3DRender/QTextureData
50 * \brief The QTextureData class stores texture information such as
51 * the target, height, width, depth, layers, wrap, and if mipmaps are enabled.
52 * \since 5.7
53 * \inmodule Qt3DRender
54 */
55
56class QTextureDataPrivate
57{
58public:
59 QAbstractTexture::Target m_target;
60 QAbstractTexture::TextureFormat m_format = QAbstractTexture::NoFormat;
61 int m_width = 0;
62 int m_height = 0;
63 int m_depth = 0;
64 int m_layers = 0;
65 bool m_autoMipMap = false;
66 float m_maximumAnisotropy = 0.0f;
67 QAbstractTexture::Filter m_minFilter;
68 QAbstractTexture::Filter m_magFilter;
69 QTextureWrapMode::WrapMode m_wrapModeX;
70 QTextureWrapMode::WrapMode m_wrapModeY;
71 QTextureWrapMode::WrapMode m_wrapModeZ;
72 QAbstractTexture::ComparisonFunction m_comparisonFunction;
73 QAbstractTexture::ComparisonMode m_comparisonMode;
74 QVector<QTextureImageDataPtr> m_imagesData;
75
76};
77
78/*!
79 * Creates a new QTextureData
80 * instance.
81 */
82QTextureData::QTextureData()
83 : d_ptr(new QTextureDataPrivate())
84{
85}
86
87/*!
88 * \internal
89 */
90QTextureData::~QTextureData()
91{
92 delete d_ptr;
93}
94
95/*!
96 * Returns the texture data target.
97 */
98QAbstractTexture::Target QTextureData::target() const
99{
100 Q_D(const QTextureData);
101 return d->m_target;
102}
103
104/*!
105 * Sets the target texture to \a target.
106 */
107void QTextureData::setTarget(QAbstractTexture::Target target)
108{
109 Q_D(QTextureData);
110 d->m_target = target;
111}
112
113/*!
114 * Returns the texture format
115 */
116QAbstractTexture::TextureFormat QTextureData::format() const
117{
118 Q_D(const QTextureData);
119 return d->m_format;
120}
121
122/*!
123 * Sets the texture format to \a format.
124 */
125void QTextureData::setFormat(QAbstractTexture::TextureFormat format)
126{
127 Q_D(QTextureData);
128 d->m_format = format;
129}
130
131/*!
132 * Returns the texture width.
133 */
134int QTextureData::width() const
135{
136 Q_D(const QTextureData);
137 return d->m_width;
138}
139
140/*!
141 * Sets the texture width to \a width.
142 */
143void QTextureData::setWidth(int width)
144{
145 Q_D(QTextureData);
146 d->m_width = width;
147}
148
149/*!
150 * Returns the texture height.
151 */
152int QTextureData::height() const
153{
154 Q_D(const QTextureData);
155 return d->m_height;
156}
157
158/*!
159 * Sets the target height to \a height.
160 */
161void QTextureData::setHeight(int height)
162{
163 Q_D(QTextureData);
164 d->m_height = height;
165}
166
167/*!
168 * Returns the texture depth.
169 */
170int QTextureData::depth() const
171{
172 Q_D(const QTextureData);
173 return d->m_depth;
174}
175
176/*!
177 * Sets the texture depth to \a depth
178 */
179void QTextureData::setDepth(int depth)
180{
181 Q_D(QTextureData);
182 d->m_depth = depth;
183}
184
185/*!
186 * Returns the texture layers.
187 */
188int QTextureData::layers() const
189{
190 Q_D(const QTextureData);
191 return d->m_layers;
192}
193
194/*!
195 * Sets the texture layers to \a layers.
196 */
197void QTextureData::setLayers(int layers)
198{
199 Q_D(QTextureData);
200 d->m_layers = layers;
201}
202
203/*!
204 * Returns whether the texture has auto mipmap generation enabled.
205 */
206bool QTextureData::isAutoMipMapGenerationEnabled() const
207{
208 Q_D(const QTextureData);
209 return d->m_autoMipMap;
210}
211
212/*!
213 * Sets whether the texture has automatic mipmap generation enabled, to \a autoMipMap.
214 */
215void QTextureData::setAutoMipMapGenerationEnabled(bool autoMipMap)
216{
217 Q_D(QTextureData);
218 d->m_autoMipMap = autoMipMap;
219}
220
221/*!
222 * Returns the current maximum anisotropy.
223 */
224float QTextureData::maximumAnisotropy() const
225{
226 Q_D(const QTextureData);
227 return d->m_maximumAnisotropy;
228}
229
230/*!
231 * Sets the maximum anisotropy to \a maximumAnisotropy.
232 */
233void QTextureData::setMaximumAnisotropy(float maximumAnisotropy)
234{
235 Q_D(QTextureData);
236 d->m_maximumAnisotropy = maximumAnisotropy;
237}
238
239/*!
240 * Returns the current minification filter.
241 */
242QAbstractTexture::Filter QTextureData::minificationFilter() const
243{
244 Q_D(const QTextureData);
245 return d->m_minFilter;
246}
247
248/*!
249 * Sets the minification filter to \a filter.
250 */
251void QTextureData::setMinificationFilter(QAbstractTexture::Filter filter)
252{
253 Q_D(QTextureData);
254 d->m_minFilter = filter;
255}
256
257/*!
258 * Returns the current magnification filter.
259 */
260QAbstractTexture::Filter QTextureData::magnificationFilter() const
261{
262 Q_D(const QTextureData);
263 return d->m_magFilter;
264}
265
266/*!
267 * Sets the magnification filter to \a filter.
268 */
269void QTextureData::setMagnificationFilter(QAbstractTexture::Filter filter)
270{
271 Q_D(QTextureData);
272 d->m_magFilter = filter;
273}
274
275/*!
276 * Returns the current wrap mode X.
277 */
278QTextureWrapMode::WrapMode QTextureData::wrapModeX() const
279{
280 Q_D(const QTextureData);
281 return d->m_wrapModeX;
282}
283
284/*!
285 * Sets the wrap mode X to \a wrapModeX.
286 */
287void QTextureData::setWrapModeX(QTextureWrapMode::WrapMode wrapModeX)
288{
289 Q_D(QTextureData);
290 d->m_wrapModeX = wrapModeX;
291}
292
293/*!
294 * Returns the current wrap mode Y.
295 */
296QTextureWrapMode::WrapMode QTextureData::wrapModeY() const
297{
298 Q_D(const QTextureData);
299 return d->m_wrapModeY;
300}
301
302/*!
303 * Sets the wrap mode Y to \a wrapModeY.
304 */
305void QTextureData::setWrapModeY(QTextureWrapMode::WrapMode wrapModeY)
306{
307 Q_D(QTextureData);
308 d->m_wrapModeY = wrapModeY;
309}
310
311/*!
312 * Returns the current wrap mode Z.
313 */
314QTextureWrapMode::WrapMode QTextureData::wrapModeZ() const
315{
316 Q_D(const QTextureData);
317 return d->m_wrapModeZ;
318}
319
320/*!
321 * Sets the wrap mode Z to \a wrapModeZ.
322 */
323void QTextureData::setWrapModeZ(QTextureWrapMode::WrapMode wrapModeZ)
324{
325 Q_D(QTextureData);
326 d->m_wrapModeZ = wrapModeZ;
327}
328
329/*!
330 * Returns the current comparison function.
331 */
332QAbstractTexture::ComparisonFunction QTextureData::comparisonFunction() const
333{
334 Q_D(const QTextureData);
335 return d->m_comparisonFunction;
336}
337
338/*!
339 * Sets the comparison function to \a comparisonFunction.
340 */
341void QTextureData::setComparisonFunction(QAbstractTexture::ComparisonFunction comparisonFunction)
342{
343 Q_D(QTextureData);
344 d->m_comparisonFunction = comparisonFunction;
345}
346
347/*!
348 * Returns the current comparison mode.
349 */
350QAbstractTexture::ComparisonMode QTextureData::comparisonMode() const
351{
352 Q_D(const QTextureData);
353 return d->m_comparisonMode;
354}
355
356/*!
357 * Sets the comparison mode to \a comparisonMode.
358 */
359void QTextureData::setComparisonMode(QAbstractTexture::ComparisonMode comparisonMode)
360{
361 Q_D(QTextureData);
362 d->m_comparisonMode = comparisonMode;
363}
364
365/*!
366 * Returns the data of the images used by this texture.
367 */
368QVector<QTextureImageDataPtr> QTextureData::imageData() const
369{
370 Q_D(const QTextureData);
371 return d->m_imagesData;
372}
373
374/*!
375 * Adds an extra image layer to the texture using \a imageData.
376 *
377 * \note The texture image should be loaded with the size specified on the texture.
378 * However, if no size is specified, the size of the first texture image file is used as default.
379 */
380void QTextureData::addImageData(const QTextureImageDataPtr &imageData)
381{
382 Q_D(QTextureData);
383 d->m_imagesData.push_back(t: imageData);
384}
385
386} // Qt3DRender
387
388QT_END_NAMESPACE
389

source code of qt3d/src/render/texture/qtexturedata.cpp