47 QImageIOPlugin::Capability cap,
48 QList<QByteArray> *result,
49 QList<QByteArray> *resultKeys =
nullptr)
51 QList<QPluginParsedMetaData> metaDataList = loader->metaData();
52 const int pluginCount = metaDataList.size();
53 for (
int i = 0; i < pluginCount; ++i) {
54 const QCborMap metaData = metaDataList.at(i).value(QtPluginMetaDataKeys::MetaData).toMap();
55 const QCborArray keys = metaData.value(
"Keys"_L1).toArray();
56 const QCborArray mimeTypes = metaData.value(
"MimeTypes"_L1).toArray();
57 QImageIOPlugin *plugin = qobject_cast<QImageIOPlugin *>(loader->instance(i));
58 const int keyCount = keys.size();
59 for (
int k = 0; k < keyCount; ++k) {
60 const QByteArray key = keys.at(k).toString().toLatin1();
61 if (plugin && (plugin->capabilities(
nullptr, key) & cap) != 0) {
62 result->append(mimeTypes.at(k).toString().toLatin1());
64 resultKeys->append(key);
87 QList<QByteArray> formats;
88 formats.reserve(_qt_NumFormats);
89 for (
int i = 0; i < _qt_NumFormats; ++i)
90 formats << _qt_BuiltInFormats[i].extension;
92#ifndef QT_NO_IMAGEFORMATPLUGIN
93 appendImagePluginFormats(irhLoader(), pluginCapability(cap), &formats);
96 std::sort(formats.begin(), formats.end());
97 formats.erase(std::unique(formats.begin(), formats.end()), formats.end());
105 QList<QByteArray> mimeTypes;
106 mimeTypes.reserve(_qt_NumFormats);
107 for (
const auto &fmt : _qt_BuiltInFormats)
108 mimeTypes.emplace_back(imagePrefix() + fmt.mimeType);
110#ifndef QT_NO_IMAGEFORMATPLUGIN
111 appendImagePluginMimeTypes(irhLoader(), pluginCapability(cap), &mimeTypes);
114 std::sort(mimeTypes.begin(), mimeTypes.end());
115 mimeTypes.erase(std::unique(mimeTypes.begin(), mimeTypes.end()), mimeTypes.end());
121 QList<QByteArray> formats;
122 if (mimeType.startsWith(imagePrefix())) {
123 const QByteArrayView type = mimeType.mid(imagePrefix().size());
124 for (
const auto &fmt : _qt_BuiltInFormats) {
125 if (fmt.mimeType == type && !formats.contains(fmt.extension))
126 formats << fmt.extension;
130#ifndef QT_NO_IMAGEFORMATPLUGIN
131 QList<QByteArray> mimeTypes;
132 QList<QByteArray> keys;
133 appendImagePluginMimeTypes(irhLoader(), pluginCapability(cap), &mimeTypes, &keys);
134 for (
int i = 0; i < mimeTypes.size(); ++i) {
135 if (mimeTypes.at(i) == mimeType) {
136 const auto &key = keys.at(i);
137 if (!formats.contains(key))