diff options
author | Benjamin Poulain <benjamin.poulain@nokia.com> | 2010-06-29 15:28:19 (GMT) |
---|---|---|
committer | Benjamin Poulain <benjamin.poulain@nokia.com> | 2010-06-30 12:45:57 (GMT) |
commit | c16162214eb8757a62e221c34d38cefc402e5b05 (patch) | |
tree | aa93778c76ca43ef14143fcc56864a3d93b703dc /src/gui/image/qpixmap.cpp | |
parent | 6ea8ad02e1929f98744f7b18f20fa91223cb4398 (diff) | |
download | Qt-c16162214eb8757a62e221c34d38cefc402e5b05.zip Qt-c16162214eb8757a62e221c34d38cefc402e5b05.tar.gz Qt-c16162214eb8757a62e221c34d38cefc402e5b05.tar.bz2 |
Add QPixmap::fromImageReader() to decode arbitrary images in place.
Decoding in-place with QPixmap::fromData() has limitations, it cannot
be used with animated gif images, and the user has no control over the
parameters of the image reader.
Reader the image directly from the image reader allow us to do a better
job when loading images.
Reviewed-by: Simon Hausmann
Reviewed-by: Samuel Rødal
Diffstat (limited to 'src/gui/image/qpixmap.cpp')
-rw-r--r-- | src/gui/image/qpixmap.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index fd2c139..ef9be8f 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -2018,7 +2018,7 @@ void QPixmap::detach() the color table. If this is too expensive an operation, you can use QBitmap::fromImage() instead. - \sa toImage(), {QPixmap#Pixmap Conversion}{Pixmap Conversion} + \sa fromImageReader(), toImage(), {QPixmap#Pixmap Conversion}{Pixmap Conversion} */ QPixmap QPixmap::fromImage(const QImage &image, Qt::ImageConversionFlags flags) { @@ -2033,6 +2033,27 @@ QPixmap QPixmap::fromImage(const QImage &image, Qt::ImageConversionFlags flags) } /*! + \fn QPixmap QPixmap::fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags) + + Create a QPixmap from an image read directly from an \a imageReader. + The \a flags argument is a bitwise-OR of the \l{Qt::ImageConversionFlags}. + Passing 0 for \a flags sets all the default options. + + On some systems, reading an image directly to QPixmap can use less memory than + reading a QImage to convert it to QPixmap. + + \sa fromImage(), toImage(), {QPixmap#Pixmap Conversion}{Pixmap Conversion} +*/ +QPixmap QPixmap::fromImageReader(QImageReader *imageReader, Qt::ImageConversionFlags flags) +{ + QGraphicsSystem *gs = QApplicationPrivate::graphicsSystem(); + QScopedPointer<QPixmapData> data(gs ? gs->createPixmapData(QPixmapData::PixmapType) + : QGraphicsSystem::createDefaultPixmapData(QPixmapData::PixmapType)); + data->fromImageReader(imageReader, flags); + return QPixmap(data.take()); +} + +/*! \fn QPixmap QPixmap::grabWindow(WId window, int x, int y, int width, int height) |