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