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
{
if (format == s_icopluginformat)
if (format == s_icopluginformat) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
if (!format.isEmpty())
}
if (!device || !device->isOpen()) {
return 0;
if (!device->isOpen())
return 0;
QImageIOPlugin::Capabilities cap;
if (device->isReadable() && ICOHandler::canRead(device))
cap |= QImageIOPlugin::CanRead;
return cap;
}
if (device->isReadable() && ICOHandler::canRead(device)) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
}
return 0;
}
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
{
if (format == s_jp2pluginformat)
if (format == s_jp2pluginformat) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
if (!device->isOpen())
}
if (!device || !device->isOpen()) {
return 0;
QImageIOPlugin::Capabilities cap;
if (device->isReadable() && JP2Handler::canRead(device))
cap |= QImageIOPlugin::CanRead;
return cap;
}
if (device->isReadable() && JP2Handler::canRead(device)) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
}
return 0;
}
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
{
if (format == s_jpegpluginformat)
if (format == s_jpegpluginformat) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
if (!format.isEmpty())
}
if (!device || !device->isOpen()) {
return 0;
if (!device->isOpen())
return 0;
QImageIOPlugin::Capabilities cap;
if (device->isReadable() && JPEGHandler::canRead(device))
cap |= QImageIOPlugin::CanRead;
return cap;
}
if (device->isReadable() && JPEGHandler::canRead(device)) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
}
return 0;
}
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
{
if (format == s_rawpluginformat)
if (format == s_rawpluginformat) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
if (!format.isEmpty())
}
if (!device || !device->isOpen()) {
return 0;
if (!device->isOpen())
return 0;
QImageIOPlugin::Capabilities cap;
if (device->isReadable() && RAWHandler::canRead(device))
cap |= QImageIOPlugin::CanRead;
return cap;
}
if (device->isReadable() && RAWHandler::canRead(device)) {
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead);
}
return 0;
}
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
{
if (format == "webp") {
return Capabilities(CanRead | CanWrite);
return QImageIOPlugin::Capabilities(QImageIOPlugin::CanRead | QImageIOPlugin::CanWrite);
}
if (!format.isEmpty()) {
if (!device || !device->isOpen()) {
return 0;
}
if (!device->isOpen()) {
return 0;
}
Capabilities cap;
QImageIOPlugin::Capabilities cap;
if (device->isReadable() && WebPHandler::canRead(device)) {
cap |= CanRead;
cap |= QImageIOPlugin::CanRead;
}
if (device->isWritable()) {
cap |= CanWrite;
cap |= QImageIOPlugin::CanWrite;
}
return cap;
}