diff options
Diffstat (limited to 'src/gui/image')
-rw-r--r-- | src/gui/image/qbitmap.h | 4 | ||||
-rw-r--r-- | src/gui/image/qicon.h | 4 | ||||
-rw-r--r-- | src/gui/image/qiconengine.h | 4 | ||||
-rw-r--r-- | src/gui/image/qiconengineplugin.h | 4 | ||||
-rw-r--r-- | src/gui/image/qimage.h | 4 | ||||
-rw-r--r-- | src/gui/image/qimageiohandler.h | 4 | ||||
-rw-r--r-- | src/gui/image/qimagereader.cpp | 75 | ||||
-rw-r--r-- | src/gui/image/qimagereader.h | 5 | ||||
-rw-r--r-- | src/gui/image/qimagewriter.cpp | 85 | ||||
-rw-r--r-- | src/gui/image/qimagewriter.h | 5 | ||||
-rw-r--r-- | src/gui/image/qmovie.h | 4 | ||||
-rw-r--r-- | src/gui/image/qpicture.h | 4 | ||||
-rw-r--r-- | src/gui/image/qpictureformatplugin.h | 4 | ||||
-rw-r--r-- | src/gui/image/qpixmap.cpp | 3 | ||||
-rw-r--r-- | src/gui/image/qpixmap.h | 4 | ||||
-rw-r--r-- | src/gui/image/qpixmap_raster.cpp | 2 | ||||
-rw-r--r-- | src/gui/image/qpixmapcache.h | 4 | ||||
-rw-r--r-- | src/gui/image/qplatformpixmap.cpp | 5 | ||||
-rw-r--r-- | src/gui/image/qplatformpixmap.h | 5 |
19 files changed, 138 insertions, 91 deletions
diff --git a/src/gui/image/qbitmap.h b/src/gui/image/qbitmap.h index 1f062a0758..f8bd2feed7 100644 --- a/src/gui/image/qbitmap.h +++ b/src/gui/image/qbitmap.h @@ -44,8 +44,6 @@ #include <QtGui/qpixmap.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -80,6 +78,4 @@ Q_DECLARE_SHARED(QBitmap) QT_END_NAMESPACE -QT_END_HEADER - #endif // QBITMAP_H diff --git a/src/gui/image/qicon.h b/src/gui/image/qicon.h index ad459005f5..cda2360bed 100644 --- a/src/gui/image/qicon.h +++ b/src/gui/image/qicon.h @@ -47,8 +47,6 @@ #include <QtCore/qlist.h> #include <QtGui/qpixmap.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -140,6 +138,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QIcon &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QICON_H diff --git a/src/gui/image/qiconengine.h b/src/gui/image/qiconengine.h index 1d296b9f66..9fb21adf97 100644 --- a/src/gui/image/qiconengine.h +++ b/src/gui/image/qiconengine.h @@ -46,8 +46,6 @@ #include <QtCore/qlist.h> #include <QtGui/qicon.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -90,6 +88,4 @@ typedef QIconEngine QIconEngineV2; QT_END_NAMESPACE -QT_END_HEADER - #endif // QICONENGINE_H diff --git a/src/gui/image/qiconengineplugin.h b/src/gui/image/qiconengineplugin.h index 58bade1d09..a62659f8cb 100644 --- a/src/gui/image/qiconengineplugin.h +++ b/src/gui/image/qiconengineplugin.h @@ -45,8 +45,6 @@ #include <QtCore/qplugin.h> #include <QtCore/qfactoryinterface.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -66,6 +64,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QICONENGINEPLUGIN_H diff --git a/src/gui/image/qimage.h b/src/gui/image/qimage.h index bce25c49ea..50d4bc7666 100644 --- a/src/gui/image/qimage.h +++ b/src/gui/image/qimage.h @@ -53,8 +53,6 @@ #include <QtCore/qstringlist.h> #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -430,6 +428,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QImage &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QIMAGE_H diff --git a/src/gui/image/qimageiohandler.h b/src/gui/image/qimageiohandler.h index f6d905bc6b..2ba99beab3 100644 --- a/src/gui/image/qimageiohandler.h +++ b/src/gui/image/qimageiohandler.h @@ -46,8 +46,6 @@ #include <QtCore/qfactoryinterface.h> #include <QtCore/qscopedpointer.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -142,6 +140,4 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QImageIOPlugin::Capabilities) QT_END_NAMESPACE -QT_END_HEADER - #endif // QIMAGEIOHANDLER_H diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index 5eaf7bb8f2..89930f3b20 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -189,34 +189,35 @@ struct _qt_BuiltInFormatStruct { _qt_BuiltInFormatType type; const char *extension; + const char *mimeType; }; static const _qt_BuiltInFormatStruct _qt_BuiltInFormats[] = { #ifndef QT_NO_IMAGEFORMAT_PNG - {_qt_PngFormat, "png"}, + {_qt_PngFormat, "png", "image/png"}, #endif #ifndef QT_NO_IMAGEFORMAT_JPEG - {_qt_JpgFormat, "jpg"}, + {_qt_JpgFormat, "jpg", "image/jpeg"}, {_qt_JpegFormat, "jpeg"}, #endif #ifdef QT_BUILTIN_GIF_READER - {_qt_GifFormat, "gif"}, + {_qt_GifFormat, "gif", "image/gif"}, #endif #ifndef QT_NO_IMAGEFORMAT_BMP - {_qt_BmpFormat, "bmp"}, + {_qt_BmpFormat, "bmp", "image/bmp"}, #endif #ifndef QT_NO_IMAGEFORMAT_PPM - {_qt_PpmFormat, "ppm"}, - {_qt_PgmFormat, "pgm"}, - {_qt_PbmFormat, "pbm"}, + {_qt_PpmFormat, "ppm", "image/x-portable-pixmap"}, + {_qt_PgmFormat, "pgm", "image/x-portable-graymap"}, + {_qt_PbmFormat, "pbm", "image/x-portable-bitmap"}, #endif #ifndef QT_NO_IMAGEFORMAT_XBM - {_qt_XbmFormat, "xbm"}, + {_qt_XbmFormat, "xbm", "image/x-xbitmap"}, #endif #ifndef QT_NO_IMAGEFORMAT_XPM - {_qt_XpmFormat, "xpm"}, + {_qt_XpmFormat, "xpm", "image/x-xpixmap"}, #endif - {_qt_NoFormat, ""} + {_qt_NoFormat, "", ""} }; static QImageIOHandler *createReadHandlerHelper(QIODevice *device, @@ -1441,6 +1442,10 @@ QByteArray QImageReader::imageFormat(QIODevice *device) void supportedImageHandlerFormats(QFactoryLoader *loader, QImageIOPlugin::Capability cap, QSet<QByteArray> *result); + +void supportedImageHandlerMimeTypes(QFactoryLoader *loader, + QImageIOPlugin::Capability cap, + QSet<QByteArray> *result); #endif /*! @@ -1449,18 +1454,17 @@ void supportedImageHandlerFormats(QFactoryLoader *loader, By default, Qt can read the following formats: \table - \header \li Format \li Description - \row \li BMP \li Windows Bitmap - \row \li GIF \li Graphic Interchange Format (optional) - \row \li JPG \li Joint Photographic Experts Group - \row \li JPEG \li Joint Photographic Experts Group - \row \li PNG \li Portable Network Graphics - \row \li PBM \li Portable Bitmap - \row \li PGM \li Portable Graymap - \row \li PPM \li Portable Pixmap - \row \li XBM \li X11 Bitmap - \row \li XPM \li X11 Pixmap - \row \li SVG \li Scalable Vector Graphics + \header \li Format \li MIME type \li Description + \row \li BMP \li image/bmp \li Windows Bitmap + \row \li GIF \li image/gif \li Graphic Interchange Format (optional) + \row \li JPG \li image/jpeg \li Joint Photographic Experts Group + \row \li PNG \li image/png \li Portable Network Graphics + \row \li PBM \li image/x-portable-bitmap \li Portable Bitmap + \row \li PGM \li image/x-portable-graymap \li Portable Graymap + \row \li PPM \li image/x-portable-pixmap \li Portable Pixmap + \row \li XBM \li image/x-xbitmap \li X11 Bitmap + \row \li XPM \li image/x-xpixmap \li X11 Pixmap + \row \li SVG \li image/svg+xml \li Scalable Vector Graphics \endtable Reading and writing SVG files is supported through the \l{Qt SVG} module. @@ -1490,4 +1494,31 @@ QList<QByteArray> QImageReader::supportedImageFormats() return sortedFormats; } +/*! + Returns the list of MIME types supported by QImageReader. + + Note that the QApplication instance must be created before this function is + called. + + \sa supportedImageFormats(), QImageWriter::supportedMimeTypes() +*/ + +QList<QByteArray> QImageReader::supportedMimeTypes() +{ + QSet<QByteArray> mimeTypes; + for (int i = 0; i < _qt_NumFormats; ++i) + mimeTypes << _qt_BuiltInFormats[i].mimeType; + +#ifndef QT_NO_LIBRARY + supportedImageHandlerMimeTypes(loader(), QImageIOPlugin::CanRead, &mimeTypes); +#endif // QT_NO_LIBRARY + + QList<QByteArray> sortedMimeTypes; + for (QSet<QByteArray>::ConstIterator it = mimeTypes.constBegin(); it != mimeTypes.constEnd(); ++it) + sortedMimeTypes << *it; + + qSort(sortedMimeTypes); + return sortedMimeTypes; +} + QT_END_NAMESPACE diff --git a/src/gui/image/qimagereader.h b/src/gui/image/qimagereader.h index 11c925b142..4f3c93af7d 100644 --- a/src/gui/image/qimagereader.h +++ b/src/gui/image/qimagereader.h @@ -46,8 +46,6 @@ #include <QtGui/qimage.h> #include <QtGui/qimageiohandler.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -133,6 +131,7 @@ public: static QByteArray imageFormat(const QString &fileName); static QByteArray imageFormat(QIODevice *device); static QList<QByteArray> supportedImageFormats(); + static QList<QByteArray> supportedMimeTypes(); private: Q_DISABLE_COPY(QImageReader) @@ -141,6 +140,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QIMAGEREADER_H diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp index 20e601be03..8823f9293d 100644 --- a/src/gui/image/qimagewriter.cpp +++ b/src/gui/image/qimagewriter.cpp @@ -100,6 +100,7 @@ #include <qfile.h> #include <qfileinfo.h> #include <qimageiohandler.h> +#include <qjsonarray.h> #include <qset.h> #include <qvariant.h> @@ -677,6 +678,26 @@ void supportedImageHandlerFormats(QFactoryLoader *loader, result->insert(key); } } + +void supportedImageHandlerMimeTypes(QFactoryLoader *loader, + QImageIOPlugin::Capability cap, + QSet<QByteArray> *result) +{ + QList<QJsonObject> metaDataList = loader->metaData(); + + const int pluginCount = metaDataList.size(); + for (int i = 0; i < pluginCount; ++i) { + const QJsonObject metaData = metaDataList.at(i).value(QStringLiteral("MetaData")).toObject(); + const QJsonArray keys = metaData.value(QStringLiteral("Keys")).toArray(); + const QJsonArray mimeTypes = metaData.value(QStringLiteral("MimeTypes")).toArray(); + QImageIOPlugin *plugin = qobject_cast<QImageIOPlugin *>(loader->instance(i)); + const int keyCount = keys.size(); + for (int k = 0; k < keyCount; ++k) { + if (plugin && (plugin->capabilities(0, keys.at(k).toString().toLatin1()) & cap) != 0) + result->insert(mimeTypes.at(k).toString().toLatin1()); + } + } +} #endif // QT_NO_IMAGEFORMATPLUGIN /*! @@ -685,16 +706,15 @@ void supportedImageHandlerFormats(QFactoryLoader *loader, By default, Qt can write the following formats: \table - \header \li Format \li Description - \row \li BMP \li Windows Bitmap - \row \li JPG \li Joint Photographic Experts Group - \row \li JPEG \li Joint Photographic Experts Group - \row \li PNG \li Portable Network Graphics - \row \li PBM \li Portable Bitmap - \row \li PGM \li Portable Graymap - \row \li PPM \li Portable Pixmap - \row \li XBM \li X11 Bitmap - \row \li XPM \li X11 Pixmap + \header \li Format \li MIME type \li Description + \row \li BMP \li image/bmp \li Windows Bitmap + \row \li JPG \li image/jpeg \li Joint Photographic Experts Group + \row \li PNG \li image/png \li Portable Network Graphics + \row \li PBM \li image/x-portable-bitmap \li Portable Bitmap + \row \li PGM \li image/x-portable-graymap \li Portable Graymap + \row \li PPM \li image/x-portable-pixmap \li Portable Pixmap + \row \li XBM \li image/x-xbitmap \li X11 Bitmap + \row \li XPM \li image/x-xpixmap \li X11 Pixmap \endtable Reading and writing SVG files is supported through the \l{Qt SVG} module. @@ -726,9 +746,6 @@ QList<QByteArray> QImageWriter::supportedImageFormats() #ifndef QT_NO_IMAGEFORMAT_JPEG formats << "jpg" << "jpeg"; #endif -#ifdef QT_BUILTIN_GIF_READER - formats << "gif"; -#endif #ifndef QT_NO_IMAGEFORMATPLUGIN supportedImageHandlerFormats(loader(), QImageIOPlugin::CanWrite, &formats); @@ -742,4 +759,46 @@ QList<QByteArray> QImageWriter::supportedImageFormats() return sortedFormats; } +/*! + Returns the list of MIME types supported by QImageWriter. + + Note that the QApplication instance must be created before this function is + called. + + \sa supportedImageFormats(), QImageReader::supportedMimeTypes() +*/ +QList<QByteArray> QImageWriter::supportedMimeTypes() +{ + QSet<QByteArray> mimeTypes; + mimeTypes << "image/bmp"; +#ifndef QT_NO_IMAGEFORMAT_PPM + mimeTypes << "image/x-portable-bitmap"; + mimeTypes << "image/x-portable-graymap"; + mimeTypes << "image/x-portable-pixmap"; +#endif +#ifndef QT_NO_IMAGEFORMAT_XBM + mimeTypes << "image/x-xbitmap"; +#endif +#ifndef QT_NO_IMAGEFORMAT_XPM + mimeTypes << "image/x-xpixmap"; +#endif +#ifndef QT_NO_IMAGEFORMAT_PNG + mimeTypes << "image/png"; +#endif +#ifndef QT_NO_IMAGEFORMAT_JPEG + mimeTypes << "image/jpeg"; +#endif + +#ifndef QT_NO_LIBRARY + supportedImageHandlerMimeTypes(loader(), QImageIOPlugin::CanWrite, &mimeTypes); +#endif // QT_NO_LIBRARY + + QList<QByteArray> sortedMimeTypes; + for (QSet<QByteArray>::ConstIterator it = mimeTypes.constBegin(); it != mimeTypes.constEnd(); ++it) + sortedMimeTypes << *it; + + qSort(sortedMimeTypes); + return sortedMimeTypes; +} + QT_END_NAMESPACE diff --git a/src/gui/image/qimagewriter.h b/src/gui/image/qimagewriter.h index 7d05cd5236..3f5cf9c454 100644 --- a/src/gui/image/qimagewriter.h +++ b/src/gui/image/qimagewriter.h @@ -46,8 +46,6 @@ #include <QtCore/qlist.h> #include <QtGui/qimageiohandler.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -102,6 +100,7 @@ public: bool supportsOption(QImageIOHandler::ImageOption option) const; static QList<QByteArray> supportedImageFormats(); + static QList<QByteArray> supportedMimeTypes(); private: Q_DISABLE_COPY(QImageWriter) @@ -110,6 +109,4 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QIMAGEWRITER_H diff --git a/src/gui/image/qmovie.h b/src/gui/image/qmovie.h index 60df9199c4..94d7c79e7b 100644 --- a/src/gui/image/qmovie.h +++ b/src/gui/image/qmovie.h @@ -50,8 +50,6 @@ #include <QtCore/qlist.h> #include <QtGui/qimagereader.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -146,8 +144,6 @@ private: QT_END_NAMESPACE -QT_END_HEADER - #endif // QT_NO_MOVIE #endif // QMOVIE_H diff --git a/src/gui/image/qpicture.h b/src/gui/image/qpicture.h index f0abb50764..08445a3143 100644 --- a/src/gui/image/qpicture.h +++ b/src/gui/image/qpicture.h @@ -46,8 +46,6 @@ #include <QtCore/qsharedpointer.h> #include <QtGui/qpaintdevice.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -193,6 +191,4 @@ Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QPicture &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPICTURE_H diff --git a/src/gui/image/qpictureformatplugin.h b/src/gui/image/qpictureformatplugin.h index 16e7feaffe..30989c084c 100644 --- a/src/gui/image/qpictureformatplugin.h +++ b/src/gui/image/qpictureformatplugin.h @@ -45,8 +45,6 @@ #include <QtCore/qplugin.h> #include <QtCore/qfactoryinterface.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -76,6 +74,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPICTUREFORMATPLUGIN_H diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index b6a21f588e..85f0dc2d92 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -678,6 +678,9 @@ qreal QPixmap::devicePixelRatio() const */ void QPixmap::setDevicePixelRatio(qreal scaleFactor) { + if (isNull()) + return; + detach(); data->setDevicePixelRatio(scaleFactor); } diff --git a/src/gui/image/qpixmap.h b/src/gui/image/qpixmap.h index a25ecb21e4..f1fce03c80 100644 --- a/src/gui/image/qpixmap.h +++ b/src/gui/image/qpixmap.h @@ -50,8 +50,6 @@ #include <QtGui/qimage.h> #include <QtGui/qtransform.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -245,6 +243,4 @@ Q_GUI_EXPORT QDebug operator<<(QDebug, const QPixmap &); QT_END_NAMESPACE -QT_END_HEADER - #endif // QPIXMAP_H diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp index f0cb69f3ec..554b31debf 100644 --- a/src/gui/image/qpixmap_raster.cpp +++ b/src/gui/image/qpixmap_raster.cpp @@ -353,7 +353,9 @@ void QRasterPlatformPixmap::createPixmapForImage(QImage &sourceImage, Qt::ImageC is_null = (w <= 0 || h <= 0); image.d->devicePixelRatio = sourceImage.devicePixelRatio(); + //ensure the pixmap and the image resulting from toImage() have the same cacheKey(); setSerialNumber(image.cacheKey() >> 32); + setDetachNumber(image.d->detach_no); } QImage* QRasterPlatformPixmap::buffer() diff --git a/src/gui/image/qpixmapcache.h b/src/gui/image/qpixmapcache.h index 7f7db7dc35..83e6610f2a 100644 --- a/src/gui/image/qpixmapcache.h +++ b/src/gui/image/qpixmapcache.h @@ -48,8 +48,6 @@ #include <QtCore/qpair.h> #endif -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -96,6 +94,4 @@ public: QT_END_NAMESPACE -QT_END_HEADER - #endif // QPIXMAPCACHE_H diff --git a/src/gui/image/qplatformpixmap.cpp b/src/gui/image/qplatformpixmap.cpp index ce66972dc3..54f0087bc2 100644 --- a/src/gui/image/qplatformpixmap.cpp +++ b/src/gui/image/qplatformpixmap.cpp @@ -173,6 +173,11 @@ void QPlatformPixmap::setSerialNumber(int serNo) ser_no = serNo; } +void QPlatformPixmap::setDetachNumber(int detNo) +{ + detach_no = detNo; +} + QImage QPlatformPixmap::toImage(const QRect &rect) const { if (rect.contains(QRect(0, 0, w, h))) diff --git a/src/gui/image/qplatformpixmap.h b/src/gui/image/qplatformpixmap.h index ded4bd30a9..08e03f10bd 100644 --- a/src/gui/image/qplatformpixmap.h +++ b/src/gui/image/qplatformpixmap.h @@ -54,8 +54,6 @@ #include <QtGui/qpixmap.h> #include <QtCore/qatomic.h> -QT_BEGIN_HEADER - QT_BEGIN_NAMESPACE @@ -132,6 +130,7 @@ public: protected: void setSerialNumber(int serNo); + void setDetachNumber(int detNo); int w; int h; int d; @@ -158,6 +157,4 @@ extern bool qt_xForm_helper(const QTransform&, int, int, int, uchar*, int, int, QT_END_NAMESPACE -QT_END_HEADER - #endif // QPLATFORMPIXMAP_H |