kimgio: take the format as hint only and probe the device if format does not match

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-10-13 14:18:29 +03:00
parent 2ce7ac3843
commit cd7d01a484
5 changed files with 37 additions and 43 deletions

View file

@ -300,17 +300,16 @@ QList<QByteArray> ICOPlugin::mimeTypes() const
QImageIOPlugin::Capabilities ICOPlugin::capabilities(QIODevice *device, const QByteArray &format) const QImageIOPlugin::Capabilities ICOPlugin::capabilities(QIODevice *device, const QByteArray &format) const
{ {
if (format == s_icopluginformat) if (format == s_icopluginformat) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead); return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
if (!format.isEmpty()) }
if (!device || !device->isOpen()) {
return 0; return 0;
if (!device->isOpen()) }
return 0; if (device->isReadable() && ICOHandler::canRead(device)) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
QImageIOPlugin::Capabilities cap; }
if (device->isReadable() && ICOHandler::canRead(device)) return 0;
cap |= QImageIOPlugin::CanRead;
return cap;
} }
QImageIOHandler *ICOPlugin::create(QIODevice *device, const QByteArray &format) const QImageIOHandler *ICOPlugin::create(QIODevice *device, const QByteArray &format) const

View file

@ -305,15 +305,16 @@ QList<QByteArray> JP2Plugin::mimeTypes() const
QImageIOPlugin::Capabilities JP2Plugin::capabilities(QIODevice *device, const QByteArray &format) const QImageIOPlugin::Capabilities JP2Plugin::capabilities(QIODevice *device, const QByteArray &format) const
{ {
if (format == s_jp2pluginformat) if (format == s_jp2pluginformat) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead); return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
if (!device->isOpen()) }
if (!device || !device->isOpen()) {
return 0; return 0;
}
QImageIOPlugin::Capabilities cap; if (device->isReadable() && JP2Handler::canRead(device)) {
if (device->isReadable() && JP2Handler::canRead(device)) return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
cap |= QImageIOPlugin::CanRead; }
return cap; return 0;
} }
QImageIOHandler *JP2Plugin::create(QIODevice *device, const QByteArray &format) const QImageIOHandler *JP2Plugin::create(QIODevice *device, const QByteArray &format) const

View file

@ -183,17 +183,16 @@ QList<QByteArray> JPEGPlugin::mimeTypes() const
QImageIOPlugin::Capabilities JPEGPlugin::capabilities(QIODevice *device, const QByteArray &format) const QImageIOPlugin::Capabilities JPEGPlugin::capabilities(QIODevice *device, const QByteArray &format) const
{ {
if (format == s_jpegpluginformat) if (format == s_jpegpluginformat) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead); return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
if (!format.isEmpty()) }
if (!device || !device->isOpen()) {
return 0; return 0;
if (!device->isOpen()) }
return 0; if (device->isReadable() && JPEGHandler::canRead(device)) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
QImageIOPlugin::Capabilities cap; }
if (device->isReadable() && JPEGHandler::canRead(device)) return 0;
cap |= QImageIOPlugin::CanRead;
return cap;
} }
QImageIOHandler *JPEGPlugin::create(QIODevice *device, const QByteArray &format) const QImageIOHandler *JPEGPlugin::create(QIODevice *device, const QByteArray &format) const

View file

@ -186,17 +186,16 @@ QList<QByteArray> RAWPlugin::mimeTypes() const
QImageIOPlugin::Capabilities RAWPlugin::capabilities(QIODevice *device, const QByteArray &format) const QImageIOPlugin::Capabilities RAWPlugin::capabilities(QIODevice *device, const QByteArray &format) const
{ {
if (format == s_rawpluginformat) if (format == s_rawpluginformat) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead); return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
if (!format.isEmpty()) }
if (!device || !device->isOpen()) {
return 0; return 0;
if (!device->isOpen()) }
return 0; if (device->isReadable() && RAWHandler::canRead(device)) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
QImageIOPlugin::Capabilities cap; }
if (device->isReadable() && RAWHandler::canRead(device)) return 0;
cap |= QImageIOPlugin::CanRead;
return cap;
} }
QImageIOHandler *RAWPlugin::create(QIODevice *device, const QByteArray &format) const QImageIOHandler *RAWPlugin::create(QIODevice *device, const QByteArray &format) const

View file

@ -203,21 +203,17 @@ QList<QByteArray> WebPPlugin::mimeTypes() const
QImageIOPlugin::Capabilities WebPPlugin::capabilities(QIODevice *device, const QByteArray &format) const QImageIOPlugin::Capabilities WebPPlugin::capabilities(QIODevice *device, const QByteArray &format) const
{ {
if (format == "webp") { if (format == "webp") {
return Capabilities(CanRead | CanWrite); return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead | QImageIOPlugin::CanWrite);
} }
if (!format.isEmpty()) { if (!device || !device->isOpen()) {
return 0; return 0;
} }
if (!device->isOpen()) { QImageIOPlugin::Capabilities cap;
return 0;
}
Capabilities cap;
if (device->isReadable() && WebPHandler::canRead(device)) { if (device->isReadable() && WebPHandler::canRead(device)) {
cap |= CanRead; cap |= QImageIOPlugin::CanRead;
} }
if (device->isWritable()) { if (device->isWritable()) {
cap |= CanWrite; cap |= QImageIOPlugin::CanWrite;
} }
return cap; return cap;
} }