Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
rcc_p.h
Go to the documentation of this file.
1// Copyright (C) 2018 The Qt Company Ltd.
2// Copyright (C) 2018 Intel Corporation.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
4
5//
6// W A R N I N G
7// -------------
8//
9// This file is not part of the Qt API. It exists for the convenience
10// of Qt Designer. This header
11// file may change from version to version without notice, or even be removed.
12//
13// We mean it.
14// Note: This is a copy of qtbase/src/tools/rcc/rcc.h.
15
16#ifndef RCC_H
17#define RCC_H
18
19#include <qstringlist.h>
20#include <qhash.h>
21#include <qstring.h>
22
23typedef struct ZSTD_CCtx_s ZSTD_CCtx;
24
25QT_BEGIN_NAMESPACE
26
27class RCCFileInfo;
28class QIODevice;
29class QTextStream;
30
31
33{
34 RCCResourceLibrary(const RCCResourceLibrary &);
35 RCCResourceLibrary &operator=(const RCCResourceLibrary &);
36
37public:
38 RCCResourceLibrary(quint8 formatVersion);
40
41 bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice);
42
43 bool readFiles(bool listMode, QIODevice &errorDevice);
44
46 void setFormat(Format f) { m_format = f; }
47 Format format() const { return m_format; }
48
49 void setInputFiles(const QStringList &files) { m_fileNames = files; }
50 QStringList inputFiles() const { return m_fileNames; }
51
53
54 // Return a map of resource identifier (':/newPrefix/images/p1.png') to file.
55 typedef QHash<QString, QString> ResourceDataFileMap;
56 ResourceDataFileMap resourceDataFileMap() const;
57
58 void setVerbose(bool b) { m_verbose = b; }
59 bool verbose() const { return m_verbose; }
60
61 void setInitName(const QString &name) { m_initName = name; }
62 QString initName() const { return m_initName; }
63
64 void setOutputName(const QString &name) { m_outputName = name; }
65 QString outputName() const { return m_outputName; }
66
68 Zlib,
69 Zstd,
70
71 Best = 99,
72 None = -1
73 };
74
75 static CompressionAlgorithm parseCompressionAlgorithm(QStringView algo, QString *errorMsg);
76 void setCompressionAlgorithm(CompressionAlgorithm algo) { m_compressionAlgo = algo; }
77 CompressionAlgorithm compressionAlgorithm() const { return m_compressionAlgo; }
78
79 static int parseCompressionLevel(CompressionAlgorithm algo, const QString &level, QString *errorMsg);
80 void setCompressLevel(int c) { m_compressLevel = c; }
81 int compressLevel() const { return m_compressLevel; }
82
83 void setCompressThreshold(int t) { m_compressThreshold = t; }
84 int compressThreshold() const { return m_compressThreshold; }
85
86 void setResourceRoot(const QString &root) { m_resourceRoot = root; }
87 QString resourceRoot() const { return m_resourceRoot; }
88
89 void setUseNameSpace(bool v) { m_useNameSpace = v; }
90 bool useNameSpace() const { return m_useNameSpace; }
91
92 QStringList failedResources() const { return m_failedResources; }
93
94 int formatVersion() const { return m_formatVersion; }
95
96 void setNoZstd(bool v) { m_noZstd = v; }
97 bool noZstd() const { return m_noZstd; }
98
99private:
100 struct Strings {
101 Strings();
102 const QString TAG_RCC;
103 const QString TAG_RESOURCE;
104 const QString TAG_FILE;
105 const QString ATTRIBUTE_LANG;
106 const QString ATTRIBUTE_PREFIX;
107 const QString ATTRIBUTE_ALIAS;
108 const QString ATTRIBUTE_EMPTY;
109 const QString ATTRIBUTE_THRESHOLD;
110 const QString ATTRIBUTE_COMPRESS;
111 const QString ATTRIBUTE_COMPRESSALGO;
112 };
113 friend class RCCFileInfo;
114 void reset();
115 bool addFile(const QString &alias, RCCFileInfo file);
116 bool interpretResourceFile(QIODevice *inputDevice, const QString &file,
117 QString currentPath = QString(), bool listMode = false);
118 bool writeHeader();
119 bool writeDataBlobs();
120 bool writeDataNames();
121 bool writeDataStructure();
122 bool writeInitializer();
123 void writeMangleNamespaceFunction(const QByteArray &name);
124 void writeAddNamespaceFunction(const QByteArray &name);
125 void writeDecimal(int value);
126 void writeHex(quint8 number);
127 void write2HexDigits(quint8 number);
128 void writeNumber2(quint16 number);
129 void writeNumber4(quint32 number);
130 void writeNumber8(quint64 number);
131 void writeChar(char c) { m_out.append(c); }
132 void writeByteArray(const QByteArray &);
133 void write(const char *, int len);
134 void writeString(const char *s) { write(s, static_cast<int>(strlen(s))); }
135
136#if QT_CONFIG(zstd)
138#endif
139
140 const Strings m_strings;
141 RCCFileInfo *m_root;
142 QStringList m_fileNames;
143 QString m_resourceRoot;
144 QString m_initName;
145 QString m_outputName;
146 Format m_format;
147 bool m_verbose;
148 CompressionAlgorithm m_compressionAlgo;
149 int m_compressLevel;
150 int m_compressThreshold;
151 int m_treeOffset;
152 int m_namesOffset;
153 int m_dataOffset;
154 quint32 m_overallFlags;
155 bool m_useNameSpace;
156 QStringList m_failedResources;
157 QIODevice *m_errorDevice;
158 QIODevice *m_outDevice;
159 QByteArray m_out;
160 quint8 m_formatVersion;
161 bool m_noZstd;
162};
163
164QT_END_NAMESPACE
165
166#endif // RCC_H
\inmodule QtCore
Definition qdir.h:21
\inmodule QtCore
Definition qfile.h:93
\inmodule QtCore
Definition qhash.h:821
int m_flags
Definition rcc.cpp:120
bool m_isEmpty
Definition rcc.cpp:132
int m_compressLevel
Definition rcc.cpp:129
QFileInfo m_fileInfo
Definition rcc.cpp:124
@ CompressedZstd
Definition rcc.cpp:77
@ Compressed
Definition rcc.cpp:75
@ Directory
Definition rcc.cpp:76
@ NoFlags
Definition rcc.cpp:74
RCCFileInfo(const QString &name, const QFileInfo &fileInfo, QLocale::Language language, QLocale::Territory territory, uint flags, RCCResourceLibrary::CompressionAlgorithm compressAlgo, int compressLevel, int compressThreshold, bool noZstd, bool isEmpty)
int m_compressThreshold
Definition rcc.cpp:130
RCCFileInfo()=default
RCCFileInfo & operator=(RCCFileInfo &&other)=delete
bool m_noZstd
Definition rcc.cpp:131
RCCFileInfo & operator=(const RCCFileInfo &)=delete
RCCFileInfo * m_parent
Definition rcc.cpp:125
qint64 m_childOffset
Definition rcc.cpp:136
RCCResourceLibrary::CompressionAlgorithm m_compressAlgo
Definition rcc.cpp:128
qint64 m_nameOffset
Definition rcc.cpp:134
qint64 writeDataName(RCCResourceLibrary &, qint64 offset)
Definition rcc.cpp:417
RCCFileInfo(RCCFileInfo &&)=default
QLocale::Language m_language
Definition rcc.cpp:121
qint64 writeDataBlob(RCCResourceLibrary &lib, qint64 offset, QString *errorMessage)
Definition rcc.cpp:220
QString m_name
Definition rcc.cpp:123
QString resourceName() const
Definition rcc.cpp:166
qint64 m_dataOffset
Definition rcc.cpp:135
~RCCFileInfo()
Definition rcc.cpp:161
void writeDataInfo(RCCResourceLibrary &lib)
Definition rcc.cpp:175
RCCFileInfo(const RCCFileInfo &)=delete
QLocale::Territory m_territory
Definition rcc.cpp:122
QMultiHash< QString, RCCFileInfo * > m_children
Definition rcc.cpp:126
RCCResourceLibrary(quint8 formatVersion)
Definition rcc.cpp:490
ResourceDataFileMap resourceDataFileMap() const
Definition rcc.cpp:917
bool readFiles(bool listMode, QIODevice &errorDevice)
Definition rcc.cpp:838
QStringList failedResources() const
Definition rcc.h:83
bool noZstd() const
Definition rcc.h:88
bool verbose() const
Definition rcc.h:50
QStringList dataFiles() const
Definition rcc.cpp:879
int formatVersion() const
Definition rcc.h:85
Format format() const
Definition rcc.h:38
QStringList inputFiles() const
Definition rcc.h:41
void setNoZstd(bool v)
Definition rcc.h:87
void setResourceRoot(const QString &root)
Definition rcc.h:77
static int parseCompressionLevel(CompressionAlgorithm algo, const QString &level, QString *errorMsg)
Definition rcc.cpp:948
bool useNameSpace() const
Definition rcc.h:81
int compressLevel() const
Definition rcc.h:72
bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice)
Definition rcc.cpp:974
void setVerbose(bool b)
Definition rcc.h:49
void setInitName(const QString &name)
Definition rcc.h:52
void setCompressionAlgorithm(CompressionAlgorithm algo)
Definition rcc.h:67
int compressThreshold() const
Definition rcc.h:75
void setCompressThreshold(int t)
Definition rcc.h:74
CompressionAlgorithm compressionAlgorithm() const
Definition rcc.h:68
void setCompressLevel(int c)
Definition rcc.h:71
void setFormat(Format f)
Definition rcc.h:37
QString resourceRoot() const
Definition rcc.h:78
void setOutputName(const QString &name)
Definition rcc.h:55
QString initName() const
Definition rcc.h:53
QString outputName() const
Definition rcc.h:56
void setUseNameSpace(bool v)
Definition rcc.h:80
void setInputFiles(const QStringList &files)
Definition rcc.h:40
static CompressionAlgorithm parseCompressionAlgorithm(QStringView algo, QString *errorMsg)
Definition rcc.cpp:925
#define qPrintable(string)
Definition qstring.h:1552
static bool parseBoolean(QStringView value, QString *errorMsg)
Definition rcc.cpp:528
static const char hexDigits[]
Definition rcc.cpp:1052
@ CONSTANT_USENAMESPACE
Definition rcc.cpp:33
@ CONSTANT_ZSTDCOMPRESSLEVEL_CHECK
Definition rcc.cpp:35
@ CONSTANT_COMPRESSLEVEL_DEFAULT
Definition rcc.cpp:34
@ CONSTANT_ZSTDCOMPRESSLEVEL_STORE
Definition rcc.cpp:36
@ CONSTANT_COMPRESSTHRESHOLD_DEFAULT
Definition rcc.cpp:37
RCCXmlTag
Definition rcc.cpp:521
@ RccTag
Definition rcc.cpp:522
@ ResourceTag
Definition rcc.cpp:523
@ FileTag
Definition rcc.cpp:524
static QString msgOpenReadFailed(const QString &fname, const QString &why)
Definition rcc.cpp:56
Q_DECLARE_TYPEINFO(RCCXmlTag, Q_PRIMITIVE_TYPE)
static void resourceDataFileMapRecursion(const RCCFileInfo *m_root, const QString &path, RCCResourceLibrary::ResourceDataFileMap &m)
Definition rcc.cpp:902
result_type operator()(const RCCFileInfo *left, const RCCFileInfo *right) const
Definition rcc.cpp:1318