diff options
Diffstat (limited to 'src/tools/uic/cpp/cppwriteicondata.cpp')
-rw-r--r-- | src/tools/uic/cpp/cppwriteicondata.cpp | 172 |
1 files changed, 0 insertions, 172 deletions
diff --git a/src/tools/uic/cpp/cppwriteicondata.cpp b/src/tools/uic/cpp/cppwriteicondata.cpp deleted file mode 100644 index 4601a4c5e9..0000000000 --- a/src/tools/uic/cpp/cppwriteicondata.cpp +++ /dev/null @@ -1,172 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the tools applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "cppwriteicondata.h" -#include "driver.h" -#include "ui4.h" -#include "uic.h" - -#include <qtextstream.h> - -QT_BEGIN_NAMESPACE - -namespace CPP { - -static QByteArray transformImageData(const QString &data) -{ - int baSize = data.length() / 2; - uchar *ba = new uchar[baSize]; - for (int i = 0; i < baSize; ++i) { - char h = data[2 * (i)].toLatin1(); - char l = data[2 * (i) + 1].toLatin1(); - uchar r = 0; - if (h <= '9') - r += h - '0'; - else - r += h - 'a' + 10; - r = r << 4; - if (l <= '9') - r += l - '0'; - else - r += l - 'a' + 10; - ba[i] = r; - } - QByteArray ret(reinterpret_cast<const char *>(ba), baSize); - delete [] ba; - return ret; -} - -static QByteArray unzipXPM(const QString &data, ulong &length) -{ -#ifndef QT_NO_COMPRESS - const int lengthOffset = 4; - QByteArray ba(lengthOffset, ' '); - - // qUncompress() expects the first 4 bytes to be the expected length of the - // uncompressed data - ba[0] = (length & 0xff000000) >> 24; - ba[1] = (length & 0x00ff0000) >> 16; - ba[2] = (length & 0x0000ff00) >> 8; - ba[3] = (length & 0x000000ff); - ba.append(transformImageData(data)); - QByteArray baunzip = qUncompress(ba); - return baunzip; -#else - Q_UNUSED(data); - Q_UNUSED(length); - return QByteArray(); -#endif -} - - -WriteIconData::WriteIconData(Uic *uic) - : driver(uic->driver()), output(uic->output()), option(uic->option()) -{ -} - -void WriteIconData::acceptUI(DomUI *node) -{ - TreeWalker::acceptUI(node); -} - -void WriteIconData::acceptImages(DomImages *images) -{ - TreeWalker::acceptImages(images); -} - -void WriteIconData::acceptImage(DomImage *image) -{ - // Limit line length when writing code. - writeImage(output, option.indent, true, image); -} - -void WriteIconData::writeImage(QTextStream &output, const QString &indent, - bool limitXPM_LineLength, const DomImage *image) -{ - QString img = image->attributeName() + QLatin1String("_data"); - QString data = image->elementData()->text(); - QString fmt = image->elementData()->attributeFormat(); - int size = image->elementData()->attributeLength(); - - if (fmt == QLatin1String("XPM.GZ")) { - ulong length = size; - QByteArray baunzip = unzipXPM(data, length); - length = baunzip.size(); - // shouldn't we test the initial 'length' against the - // resulting 'length' to catch corrupt UIC files? - int a = 0; - int column = 0; - bool inQuote = false; - output << indent << "/* XPM */\n" - << indent << "static const char* const " << img << "[] = { \n"; - while (baunzip[a] != '\"') - a++; - for (; a < (int) length; a++) { - output << baunzip[a]; - if (baunzip[a] == '\n') { - column = 0; - } else if (baunzip[a] == '"') { - inQuote = !inQuote; - } - - column++; - if (limitXPM_LineLength && column >= 512 && inQuote) { - output << "\"\n\""; // be nice with MSVC & Co. - column = 1; - } - } - - if (! baunzip.trimmed ().endsWith ("};")) - output << "};"; - - output << "\n\n"; - } else { - output << indent << "static const unsigned char " << img << "[] = { \n"; - output << indent; - int a ; - for (a = 0; a < (int) (data.length()/2)-1; a++) { - output << "0x" << QString(data[2*a]) << QString(data[2*a+1]) << ','; - if (a % 12 == 11) - output << '\n' << indent; - else - output << ' '; - } - output << "0x" << QString(data[2*a]) << QString(data[2*a+1]) << '\n'; - output << "};\n\n"; - } -} - -void WriteIconData::writeImage(QIODevice &output, DomImage *image) -{ - const QByteArray array = transformImageData(image->elementData()->text()); - output.write(array.constData(), array.size()); -} - -} // namespace CPP - -QT_END_NAMESPACE |