diff options
Diffstat (limited to 'src/plugins/imageformats/svg')
-rw-r--r-- | src/plugins/imageformats/svg/main.cpp | 8 | ||||
-rw-r--r-- | src/plugins/imageformats/svg/qsvgiohandler.cpp | 13 | ||||
-rw-r--r-- | src/plugins/imageformats/svg/svg-nocompress.json | 4 | ||||
-rw-r--r-- | src/plugins/imageformats/svg/svg.json | 2 |
4 files changed, 24 insertions, 3 deletions
diff --git a/src/plugins/imageformats/svg/main.cpp b/src/plugins/imageformats/svg/main.cpp index e92f25a..f9fcfc3 100644 --- a/src/plugins/imageformats/svg/main.cpp +++ b/src/plugins/imageformats/svg/main.cpp @@ -53,7 +53,11 @@ QT_BEGIN_NAMESPACE class QSvgPlugin : public QImageIOPlugin { Q_OBJECT +#ifndef QT_NO_COMPRESS Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QImageIOHandlerFactoryInterface" FILE "svg.json") +#else + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QImageIOHandlerFactoryInterface" FILE "svg-nocompress.json") +#endif public: Capabilities capabilities(QIODevice *device, const QByteArray &format) const override; @@ -62,7 +66,11 @@ public: QImageIOPlugin::Capabilities QSvgPlugin::capabilities(QIODevice *device, const QByteArray &format) const { +#ifndef QT_NO_COMPRESS if (format == "svg" || format == "svgz") +#else + if (format == "svg") +#endif return Capabilities(CanRead); if (!format.isEmpty()) return 0; diff --git a/src/plugins/imageformats/svg/qsvgiohandler.cpp b/src/plugins/imageformats/svg/qsvgiohandler.cpp index bb68fd9..88d37bc 100644 --- a/src/plugins/imageformats/svg/qsvgiohandler.cpp +++ b/src/plugins/imageformats/svg/qsvgiohandler.cpp @@ -88,8 +88,10 @@ bool QSvgIOHandlerPrivate::load(QIODevice *device) const QByteArray &ba = buf->data(); res = r.load(QByteArray::fromRawData(ba.constData() + buf->pos(), ba.size() - buf->pos())); buf->seek(ba.size()); +#ifndef QT_NO_COMPRESS } else if (q->format() == "svgz") { res = r.load(device->readAll()); +#endif } else { xmlReader.setDevice(device); res = r.load(&xmlReader); @@ -125,10 +127,13 @@ bool QSvgIOHandler::canRead() const return true; // Will happen if we have been asked for the size QByteArray buf = device()->peek(8); +#ifndef QT_NO_COMPRESS if (buf.startsWith("\x1f\x8b")) { setFormat("svgz"); return true; - } else if (buf.contains("<?xml") || buf.contains("<svg") || buf.contains("<!--")) { + } else +#endif + if (buf.contains("<?xml") || buf.contains("<svg") || buf.contains("<!--")) { setFormat("svg"); return true; } @@ -257,7 +262,11 @@ bool QSvgIOHandler::supportsOption(ImageOption option) const bool QSvgIOHandler::canRead(QIODevice *device) { QByteArray buf = device->peek(8); - return buf.startsWith("\x1f\x8b") || buf.contains("<?xml") || buf.contains("<svg") || buf.contains("<!--"); + return +#ifndef QT_NO_COMPRESS + buf.startsWith("\x1f\x8b") || +#endif + buf.contains("<?xml") || buf.contains("<svg") || buf.contains("<!--"); } QT_END_NAMESPACE diff --git a/src/plugins/imageformats/svg/svg-nocompress.json b/src/plugins/imageformats/svg/svg-nocompress.json new file mode 100644 index 0000000..3b5a653 --- /dev/null +++ b/src/plugins/imageformats/svg/svg-nocompress.json @@ -0,0 +1,4 @@ +{ + "Keys": [ "svg" ], + "MimeTypes": [ "image/svg+xml" ] +} diff --git a/src/plugins/imageformats/svg/svg.json b/src/plugins/imageformats/svg/svg.json index c8825d4..970914d 100644 --- a/src/plugins/imageformats/svg/svg.json +++ b/src/plugins/imageformats/svg/svg.json @@ -1,4 +1,4 @@ { "Keys": [ "svg", "svgz" ], - "MimeTypes": [ "image/svg+xml" ] + "MimeTypes": [ "image/svg+xml", "image/svg+xml-compressed" ] } |