Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qtexturefilereader.cpp
Go to the documentation of this file.
1
// Copyright (C) 2018 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 "
qtexturefilereader_p.h
"
5
6
#include "
qpkmhandler_p.h
"
7
#include "
qktxhandler_p.h
"
8
#include "
qastchandler_p.h
"
9
10
#include <QFileInfo>
11
12
QT_BEGIN_NAMESPACE
13
14
QTextureFileHandler::~QTextureFileHandler
() =
default
;
15
16
QTextureFileReader::QTextureFileReader
(
QIODevice
*
device
,
const
QString
&
fileName
)
17
: m_device(
device
), m_fileName(
fileName
)
18
{
19
}
20
21
QTextureFileReader::~QTextureFileReader
()
22
{
23
delete
m_handler;
24
}
25
26
QTextureFileData
QTextureFileReader::read
()
27
{
28
if
(!
canRead
())
29
return
QTextureFileData
();
30
return
m_handler->
read
();
31
}
32
33
bool
QTextureFileReader::canRead
()
34
{
35
if
(!checked) {
36
checked =
true
;
37
if
(!init())
38
return
false
;
39
40
QByteArray
headerBlock = m_device->
peek
(64);
41
QFileInfo
fi(m_fileName);
42
QByteArray
suffix = fi.suffix().
toLower
().toLatin1();
43
QByteArray
logName = fi.fileName().toUtf8();
44
45
// Currently the handlers are hardcoded; later maybe a list of plugins
46
if
(
QPkmHandler::canRead
(suffix, headerBlock)) {
47
m_handler =
new
QPkmHandler
(m_device, logName);
48
}
else
if
(
QKtxHandler::canRead
(suffix, headerBlock)) {
49
m_handler =
new
QKtxHandler
(m_device, logName);
50
}
else
if
(
QAstcHandler::canRead
(suffix, headerBlock)) {
51
m_handler =
new
QAstcHandler
(m_device, logName);
52
}
53
// else if OtherHandler::canRead() ...etc.
54
}
55
return
(m_handler !=
nullptr
);
56
}
57
58
QList<QByteArray>
QTextureFileReader::supportedFileFormats
()
59
{
60
// Hardcoded for now
61
return
{
QByteArrayLiteral
(
"pkm"
),
QByteArrayLiteral
(
"ktx"
),
QByteArrayLiteral
(
"astc"
)};
62
}
63
64
bool
QTextureFileReader::init()
65
{
66
if
(!m_device)
67
return
false
;
68
return
m_device->
isReadable
();
69
}
70
71
QT_END_NAMESPACE
device
IOBluetoothDevice * device
Definition
btl2capchannel.mm:17
QAstcHandler
Definition
qastchandler_p.h:23
QAstcHandler::canRead
static bool canRead(const QByteArray &suffix, const QByteArray &block)
Definition
qastchandler.cpp:28
QByteArray
\inmodule QtCore
Definition
qbytearray.h:57
QByteArray::toLower
QByteArray toLower() const &
Definition
qbytearray.h:254
QFileInfo
Definition
qfileinfo.h:23
QIODevice
\inmodule QtCore \reentrant
Definition
qiodevice.h:34
QIODevice::isReadable
bool isReadable() const
Returns true if data can be read from the device; otherwise returns false.
Definition
qiodevice.cpp:574
QIODevice::peek
qint64 peek(char *data, qint64 maxlen)
Definition
qiodevice.cpp:1880
QKtxHandler
Definition
qktxhandler_p.h:27
QKtxHandler::canRead
static bool canRead(const QByteArray &suffix, const QByteArray &block)
Definition
qktxhandler.cpp:96
QPkmHandler
Definition
qpkmhandler_p.h:23
QPkmHandler::canRead
static bool canRead(const QByteArray &suffix, const QByteArray &block)
Definition
qpkmhandler.cpp:34
QString
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition
qstring.h:129
QTextureFileData
Definition
qtexturefiledata_p.h:31
QTextureFileHandler::~QTextureFileHandler
virtual ~QTextureFileHandler()
QTextureFileHandler::read
virtual QTextureFileData read()=0
QTextureFileReader::canRead
bool canRead()
Definition
qtexturefilereader.cpp:33
QTextureFileReader::~QTextureFileReader
~QTextureFileReader()
Definition
qtexturefilereader.cpp:21
QTextureFileReader::QTextureFileReader
QTextureFileReader(QIODevice *device, const QString &fileName=QString())
Definition
qtexturefilereader.cpp:16
QTextureFileReader::read
QTextureFileData read()
Definition
qtexturefilereader.cpp:26
QTextureFileReader::supportedFileFormats
static QList< QByteArray > supportedFileFormats()
Definition
qtexturefilereader.cpp:58
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qstandardpaths_haiku.cpp:21
QT_END_NAMESPACE
Definition
qsharedpointer.cpp:1590
qastchandler_p.h
QByteArrayLiteral
#define QByteArrayLiteral(str)
Definition
qbytearray.h:52
qktxhandler_p.h
qpkmhandler_p.h
qtexturefilereader_p.h
fileName
fileName
[0]
Definition
src_gui_dialogs_qfiledialog.cpp:5
qtbase
src
gui
util
qtexturefilereader.cpp
Generated by
1.10.0