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.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// Note: A copy of this file is used in Qt Widgets Designer (qttools/src/designer/src/lib/shared/rcc_p.h)
6
7#ifndef RCC_H
8#define RCC_H
9
10#include <qstringlist.h>
11#include <qhash.h>
12#include <qstring.h>
13
15
16class RCCFileInfo;
17class QIODevice;
18class QTextStream;
19
20
22{
23 RCCResourceLibrary(const RCCResourceLibrary &);
24 RCCResourceLibrary &operator=(const RCCResourceLibrary &);
25
26public:
27 RCCResourceLibrary(quint8 formatVersion);
29
30 bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice);
31
32 bool readFiles(bool listMode, QIODevice &errorDevice);
33
35 void setFormat(Format f) { m_format = f; }
36 Format format() const { return m_format; }
37
38 void setInputFiles(const QStringList &files) { m_fileNames = files; }
39 QStringList inputFiles() const { return m_fileNames; }
40
41 QStringList dataFiles() const;
42
43 // Return a map of resource identifier (':/newPrefix/images/p1.png') to file.
44 typedef QHash<QString, QString> ResourceDataFileMap;
46
47 void setVerbose(bool b) { m_verbose = b; }
48 bool verbose() const { return m_verbose; }
49
50 void setInitName(const QString &name) { m_initName = name; }
51 QString initName() const { return m_initName; }
52
53 void setOutputName(const QString &name) { m_outputName = name; }
54 QString outputName() const { return m_outputName; }
55
59
60 Best = 99,
61 None = -1
62 };
63
64 static CompressionAlgorithm parseCompressionAlgorithm(QStringView algo, QString *errorMsg);
65 void setCompressionAlgorithm(CompressionAlgorithm algo) { m_compressionAlgo = algo; }
66 CompressionAlgorithm compressionAlgorithm() const { return m_compressionAlgo; }
67
68 static int parseCompressionLevel(CompressionAlgorithm algo, const QString &level, QString *errorMsg);
69 void setCompressLevel(int c) { m_compressLevel = c; }
70 int compressLevel() const { return m_compressLevel; }
71
72 void setCompressThreshold(int t) { m_compressThreshold = t; }
73 int compressThreshold() const { return m_compressThreshold; }
74
75 void setResourceRoot(const QString &root) { m_resourceRoot = root; }
76 QString resourceRoot() const { return m_resourceRoot; }
77
78 void setUseNameSpace(bool v) { m_useNameSpace = v; }
79 bool useNameSpace() const { return m_useNameSpace; }
80
81 QStringList failedResources() const { return m_failedResources; }
82
83 int formatVersion() const { return m_formatVersion; }
84
85 void setNoZstd(bool v) { m_noZstd = v; }
86 bool noZstd() const { return m_noZstd; }
87
88private:
89 struct Strings {
90 Strings();
91 const QString TAG_RCC;
92 const QString TAG_RESOURCE;
93 const QString TAG_FILE;
94 const QString TAG_LEGAL = QLatin1StringView("legal");
95 const QString ATTRIBUTE_LANG;
96 const QString ATTRIBUTE_PREFIX;
97 const QString ATTRIBUTE_ALIAS;
98 const QString ATTRIBUTE_EMPTY;
99 const QString ATTRIBUTE_THRESHOLD;
100 const QString ATTRIBUTE_COMPRESS;
101 const QString ATTRIBUTE_COMPRESSALGO;
102 };
103 friend class RCCFileInfo;
104 void reset();
105 bool addFile(const QString &alias, RCCFileInfo file);
106 bool interpretResourceFile(QIODevice *inputDevice, const QString &file,
107 QString currentPath = QString(), bool listMode = false);
108 bool writeHeader();
109 bool writeDataBlobs();
110 bool writeDataNames();
111 bool writeDataStructure();
112 bool writeInitializer();
113 void writeMangleNamespaceFunction(const QByteArray &name);
114 void writeAddNamespaceFunction(const QByteArray &name);
115 void writeDecimal(int value);
116 void writeHex(quint8 number);
117 void write2HexDigits(quint8 number);
118 void writeNumber2(quint16 number);
119 void writeNumber4(quint32 number);
120 void writeNumber8(quint64 number);
121 void writeChar(char c) { m_out.append(c); }
122 void writeByteArray(const QByteArray &);
123 void write(const char *, int len);
124 void writeString(const char *s) { write(s, static_cast<int>(strlen(s))); }
125
126 const Strings m_strings;
127 RCCFileInfo *m_root;
128 QStringList m_fileNames;
129 QString m_resourceRoot;
130 QString m_initName;
131 QString m_outputName;
132 QString m_legal;
133 Format m_format;
134 bool m_verbose;
135 CompressionAlgorithm m_compressionAlgo;
136 int m_compressLevel;
137 int m_compressThreshold;
138 int m_treeOffset;
139 int m_namesOffset;
140 int m_dataOffset;
141 quint32 m_overallFlags;
142 bool m_useNameSpace;
143 QStringList m_failedResources;
144 QIODevice *m_errorDevice;
145 QIODevice *m_outDevice;
146 QByteArray m_out;
147 quint8 m_formatVersion;
148 bool m_noZstd;
149};
150
151QT_END_NAMESPACE
152
153#endif // RCC_H
The QCommandLineOption class defines a possible command-line option. \inmodule QtCore.
The QCommandLineParser class provides a means for handling the command line options.
\inmodule QtCore
Definition qfile.h:69
\inmodule QtCore
Definition qhash.h:843
RCCResourceLibrary(quint8 formatVersion)
Definition rcc.cpp:494
ResourceDataFileMap resourceDataFileMap() const
Definition rcc.cpp:915
bool readFiles(bool listMode, QIODevice &errorDevice)
Definition rcc.cpp:836
QStringList failedResources() const
Definition rcc.h:81
bool noZstd() const
Definition rcc.h:86
bool verbose() const
Definition rcc.h:48
QStringList dataFiles() const
Definition rcc.cpp:877
int formatVersion() const
Definition rcc.h:83
Format format() const
Definition rcc.h:36
QStringList inputFiles() const
Definition rcc.h:39
void setNoZstd(bool v)
Definition rcc.h:85
void setResourceRoot(const QString &root)
Definition rcc.h:75
static int parseCompressionLevel(CompressionAlgorithm algo, const QString &level, QString *errorMsg)
Definition rcc.cpp:946
bool useNameSpace() const
Definition rcc.h:79
int compressLevel() const
Definition rcc.h:70
bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice)
Definition rcc.cpp:972
void setVerbose(bool b)
Definition rcc.h:47
void setInitName(const QString &name)
Definition rcc.h:50
void setCompressionAlgorithm(CompressionAlgorithm algo)
Definition rcc.h:65
int compressThreshold() const
Definition rcc.h:73
void setCompressThreshold(int t)
Definition rcc.h:72
CompressionAlgorithm compressionAlgorithm() const
Definition rcc.h:66
void setCompressLevel(int c)
Definition rcc.h:69
void setFormat(Format f)
Definition rcc.h:35
QString resourceRoot() const
Definition rcc.h:76
void setOutputName(const QString &name)
Definition rcc.h:53
QHash< QString, QString > ResourceDataFileMap
Definition rcc.h:44
QString initName() const
Definition rcc.h:51
QString outputName() const
Definition rcc.h:54
void setUseNameSpace(bool v)
Definition rcc.h:78
void setInputFiles(const QStringList &files)
Definition rcc.h:38
static CompressionAlgorithm parseCompressionAlgorithm(QStringView algo, QString *errorMsg)
Definition rcc.cpp:923
Combined button and popup list for selecting options.
const QString & asString(const QString &s)
Definition qstring.h:1678
QList< QFileInfo > QFileInfoList
Definition qfileinfo.h:192
#define qPrintable(string)
Definition qstring.h:1683
#define QStringLiteral(str)
Definition qstring.h:1825
#define ALGOS
void dumpRecursive(const QDir &dir, QTextStream &out)
Definition main.cpp:29
int runRcc(int argc, char *argv[])
Definition main.cpp:110
void writeDepFile(QIODevice &iodev, const QStringList &depsList, const QString &targetName)
Definition main.cpp:94
QString makefileEscape(const QString &filepath)
Definition main.cpp:80
int createProject(const QString &outFileName)
Definition main.cpp:44
int main(int argc, char *argv[])
[ctor_close]