kdelibs/kdeui/util/kimageio.cpp

111 lines
3.1 KiB
C++
Raw Normal View History

2014-11-13 01:04:59 +02:00
/**
* kimgio.h -- Implementation of interface to the KDE Image IO library.
* Copyright (c) 1998 Sirtaj Singh Kang <taj@kde.org>
*
* This library is distributed under the conditions of the GNU LGPL.
*/
#include "kimageio.h"
#include "kmimetype.h"
#include <kservicetypetrader.h>
#include <klocale.h>
#include <kdebug.h>
#include <QImageReader>
#include <QImageWriter>
QString KImageIO::pattern(Mode mode)
2014-11-13 01:04:59 +02:00
{
QStringList patterns;
QString allPatterns;
static const QLatin1Char separator('|');
2014-11-13 01:04:59 +02:00
foreach(const QString &mimeType, KImageIO::mimeTypes(mode)) {
KMimeType::Ptr mime = KMimeType::mimeType(mimeType);
if (!mime) {
kWarning() << "unknown toolkit mimetype " << mimeType;
} else {
QString pattern = mime->patterns().join(" ");
patterns.append(pattern + separator + mime->comment());
if (!allPatterns.isEmpty() )
allPatterns += ' ';
allPatterns += pattern;
}
}
2014-11-13 01:04:59 +02:00
allPatterns = allPatterns + separator + i18n("All Pictures");
patterns.sort();
patterns.prepend(allPatterns);
return patterns.join(QLatin1String("\n"));
2014-11-13 01:04:59 +02:00
}
QString KImageIO::typeForMime(const QString &mimeType, Mode mode)
2014-11-13 01:04:59 +02:00
{
QString result;
if (mimeType.isEmpty()) {
return result;
}
if (mode == KImageIO::Reading) {
const QByteArray format = QImageReader::formatForMimeType(mimeType.toLatin1());
if (!format.isEmpty()) {
result = QString::fromLatin1(format.constData(), format.size());
}
} else {
const QByteArray format = QImageWriter::formatForMimeType(mimeType.toLatin1());
if (!format.isEmpty()) {
result = QString::fromLatin1(format.constData(), format.size());
}
2014-11-13 01:04:59 +02:00
}
return result;
2014-11-13 01:04:59 +02:00
}
QStringList KImageIO::mimeTypes(Mode mode)
2014-11-13 01:04:59 +02:00
{
QStringList result;
if (mode == KImageIO::Reading) {
foreach(const QByteArray &mime, QImageReader::supportedMimeTypes()) {
result << QString::fromLatin1(mime.constData(), mime.size());
}
} else {
foreach(const QByteArray &mime, QImageWriter::supportedMimeTypes()) {
result << QString::fromLatin1(mime.constData(), mime.size());
2014-11-13 01:04:59 +02:00
}
}
return result;
2014-11-13 01:04:59 +02:00
}
QStringList KImageIO::types(Mode mode)
2014-11-13 01:04:59 +02:00
{
QStringList result;
if (mode == KImageIO::Reading) {
foreach(const QByteArray &format, QImageReader::supportedImageFormats()) {
result << QString::fromLatin1(format.constData(), format.size());
}
} else {
foreach(const QByteArray &format, QImageWriter::supportedImageFormats()) {
result << QString::fromLatin1(format.constData(), format.size());
2014-11-13 01:04:59 +02:00
}
}
return result;
2014-11-13 01:04:59 +02:00
}
bool KImageIO::isSupported(const QString &mimeType, Mode mode)
2014-11-13 01:04:59 +02:00
{
if (mimeType.isEmpty()) {
2014-11-13 01:04:59 +02:00
return false;
}
foreach(const QString &mime, KImageIO::mimeTypes(mode)) {
if (mimeType == mime) {
return true;
}
// check aliases
const KMimeType::Ptr kmimetype = KMimeType::mimeType(mime);
if (kmimetype && kmimetype->is(mimeType)) {
return true;
}
}
2014-11-13 01:04:59 +02:00
return false;
}