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
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
14typedef struct ZSTD_CCtx_s ZSTD_CCtx;
15
17
18class RCCFileInfo;
19class QIODevice;
20class QTextStream;
21
22
24{
26 RCCResourceLibrary &operator=(const RCCResourceLibrary &);
27
28public:
31
32 bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice);
33
34 bool readFiles(bool listMode, QIODevice &errorDevice);
35
37 void setFormat(Format f) { m_format = f; }
38 Format format() const { return m_format; }
39
40 void setInputFiles(const QStringList &files) { m_fileNames = files; }
41 QStringList inputFiles() const { return m_fileNames; }
42
43 QStringList dataFiles() const;
44
45 // Return a map of resource identifier (':/newPrefix/images/p1.png') to file.
46 typedef QHash<QString, QString> ResourceDataFileMap;
48
49 void setVerbose(bool b) { m_verbose = b; }
50 bool verbose() const { return m_verbose; }
51
52 void setInitName(const QString &name) { m_initName = name; }
53 QString initName() const { return m_initName; }
54
55 void setOutputName(const QString &name) { m_outputName = name; }
56 QString outputName() const { return m_outputName; }
57
59 Zlib,
60 Zstd,
61
62 Best = 99,
63 None = -1
64 };
65
67 void setCompressionAlgorithm(CompressionAlgorithm algo) { m_compressionAlgo = algo; }
68 CompressionAlgorithm compressionAlgorithm() const { return m_compressionAlgo; }
69
70 static int parseCompressionLevel(CompressionAlgorithm algo, const QString &level, QString *errorMsg);
71 void setCompressLevel(int c) { m_compressLevel = c; }
72 int compressLevel() const { return m_compressLevel; }
73
74 void setCompressThreshold(int t) { m_compressThreshold = t; }
75 int compressThreshold() const { return m_compressThreshold; }
76
77 void setResourceRoot(const QString &root) { m_resourceRoot = root; }
78 QString resourceRoot() const { return m_resourceRoot; }
79
80 void setUseNameSpace(bool v) { m_useNameSpace = v; }
81 bool useNameSpace() const { return m_useNameSpace; }
82
83 QStringList failedResources() const { return m_failedResources; }
84
85 int formatVersion() const { return m_formatVersion; }
86
87 void setNoZstd(bool v) { m_noZstd = v; }
88 bool noZstd() const { return m_noZstd; }
89
90private:
91 struct Strings {
92 Strings();
93 const QString TAG_RCC;
94 const QString TAG_RESOURCE;
95 const QString TAG_FILE;
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#if QT_CONFIG(zstd)
128 ZSTD_CCtx *m_zstdCCtx;
129#endif
130
131 const Strings m_strings;
132 RCCFileInfo *m_root;
133 QStringList m_fileNames;
134 QString m_resourceRoot;
135 QString m_initName;
136 QString m_outputName;
137 Format m_format;
138 bool m_verbose;
139 CompressionAlgorithm m_compressionAlgo;
140 int m_compressLevel;
141 int m_compressThreshold;
142 int m_treeOffset;
143 int m_namesOffset;
144 int m_dataOffset;
145 quint32 m_overallFlags;
146 bool m_useNameSpace;
147 QStringList m_failedResources;
148 QIODevice *m_errorDevice;
149 QIODevice *m_outDevice;
150 QByteArray m_out;
151 quint8 m_formatVersion;
152 bool m_noZstd;
153};
154
156
157#endif // RCC_H
\inmodule QtCore
Definition qbytearray.h:57
QByteArray & append(char c)
This is an overloaded member function, provided for convenience. It differs from the above function o...
\inmodule QtCore \reentrant
Definition qiodevice.h:34
\inmodule QtCore
\inmodule QtCore
Definition qstringview.h:78
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
ResourceDataFileMap resourceDataFileMap() const
Definition rcc.cpp:858
bool readFiles(bool listMode, QIODevice &errorDevice)
Definition rcc.cpp:779
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:820
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:889
bool useNameSpace() const
Definition rcc.h:81
int compressLevel() const
Definition rcc.h:72
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
QHash< QString, QString > ResourceDataFileMap
Definition rcc.h:46
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:866
Format
Definition ddsheader.h:14
Combined button and popup list for selecting options.
struct ZSTD_CCtx_s ZSTD_CCtx
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLboolean GLboolean GLboolean b
GLsizei const GLfloat * v
[13]
GLenum GLuint GLint level
GLfloat GLfloat f
GLuint name
GLdouble s
[6]
Definition qopenglext.h:235
GLboolean reset
const GLubyte * c
GLdouble GLdouble t
Definition qopenglext.h:243
GLenum GLsizei len
unsigned int quint32
Definition qtypes.h:50
unsigned short quint16
Definition qtypes.h:48
unsigned long long quint64
Definition qtypes.h:61
unsigned char quint8
Definition qtypes.h:46
QT_BEGIN_NAMESPACE typedef uchar * output
QFile file
[0]
gzip write("uncompressed data")
void writeString(QCborStreamWriter &writer, const QString &str)
[8]
QStringList files
[8]