diff options
Diffstat (limited to 'src/gui/image')
-rw-r--r-- | src/gui/image/qicon.cpp | 24 | ||||
-rw-r--r-- | src/gui/image/qicon_p.h | 20 | ||||
-rw-r--r-- | src/gui/image/qiconengine.h | 1 | ||||
-rw-r--r-- | src/gui/image/qimage.cpp | 9 | ||||
-rw-r--r-- | src/gui/image/qmovie.cpp | 6 | ||||
-rw-r--r-- | src/gui/image/qpixmap.cpp | 9 |
6 files changed, 26 insertions, 43 deletions
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 086ac37a07..3fc29ee10d 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -160,15 +160,16 @@ static inline int area(const QSize &s) { return s.width() * s.height(); } // the 2x pixmaps then.) static QPixmapIconEngineEntry *bestSizeScaleMatch(const QSize &size, qreal scale, QPixmapIconEngineEntry *pa, QPixmapIconEngineEntry *pb) { - + const auto scaleA = pa->pixmap.devicePixelRatio(); + const auto scaleB = pb->pixmap.devicePixelRatio(); // scale: we can only differentiate on scale if the scale differs - if (pa->scale != pb->scale) { + if (scaleA != scaleB) { // Score the pixmaps: 0 is an exact scale match, positive // scores have more detail than requested, negative scores // have less detail than requested. - qreal ascore = pa->scale - scale; - qreal bscore = pb->scale - scale; + qreal ascore = scaleA - scale; + qreal bscore = scaleB - scale; // always prefer positive scores to prevent upscaling if ((ascore < 0) != (bscore < 0)) @@ -201,13 +202,14 @@ static QPixmapIconEngineEntry *bestSizeScaleMatch(const QSize &size, qreal scale QPixmapIconEngineEntry *QPixmapIconEngine::tryMatch(const QSize &size, qreal scale, QIcon::Mode mode, QIcon::State state) { QPixmapIconEngineEntry *pe = nullptr; - for (int i = 0; i < pixmaps.size(); ++i) - if (pixmaps.at(i).mode == mode && pixmaps.at(i).state == state) { + for (auto &entry : pixmaps) { + if (entry.mode == mode && entry.state == state) { if (pe) - pe = bestSizeScaleMatch(size, scale, &pixmaps[i], pe); + pe = bestSizeScaleMatch(size, scale, &entry, pe); else - pe = &pixmaps[i]; + pe = &entry; } + } return pe; } @@ -278,7 +280,7 @@ QPixmap QPixmapIconEngine::scaledPixmap(const QSize &size, QIcon::Mode mode, QIc pm = pe->pixmap; if (pm.isNull()) { - int idx = pixmaps.size(); + auto idx = pixmaps.size(); while (--idx >= 0) { if (pe == &pixmaps.at(idx)) { pixmaps.remove(idx); @@ -369,7 +371,7 @@ void QPixmapIconEngine::addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon { if (!pixmap.isNull()) { QPixmapIconEngineEntry *pe = tryMatch(pixmap.size(), pixmap.devicePixelRatio(), mode, state); - if (pe && pe->size == pixmap.size() && pe->scale == pixmap.devicePixelRatio()) { + if (pe && pe->size == pixmap.size() && pe->pixmap.devicePixelRatio() == pixmap.devicePixelRatio()) { pe->pixmap = pixmap; pe->fileName.clear(); } else { @@ -387,7 +389,7 @@ static inline int origIcoDepth(const QImage &image) static inline int findBySize(const QList<QImage> &images, const QSize &size) { - for (int i = 0; i < images.size(); ++i) { + for (qsizetype i = 0; i < images.size(); ++i) { if (images.at(i).size() == size) return i; } diff --git a/src/gui/image/qicon_p.h b/src/gui/image/qicon_p.h index c5bf120620..dfce2d5b53 100644 --- a/src/gui/image/qicon_p.h +++ b/src/gui/image/qicon_p.h @@ -49,24 +49,22 @@ public: struct QPixmapIconEngineEntry { - QPixmapIconEngineEntry():scale(1), mode(QIcon::Normal), state(QIcon::Off){} - QPixmapIconEngineEntry(const QPixmap &pm, QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off) - :pixmap(pm), size(pm.size()), scale(pm.devicePixelRatio()), mode(m), state(s){} - QPixmapIconEngineEntry(const QString &file, const QSize &sz = QSize(), QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off) - :fileName(file), size(sz), scale(1), mode(m), state(s){} - QPixmapIconEngineEntry(const QString &file, const QImage &image, QIcon::Mode m = QIcon::Normal, QIcon::State s = QIcon::Off); + QPixmapIconEngineEntry() = default; + QPixmapIconEngineEntry(const QPixmap &pm, QIcon::Mode m, QIcon::State s) + : pixmap(pm), size(pm.size()), mode(m), state(s) {} + QPixmapIconEngineEntry(const QString &file, const QSize &sz, QIcon::Mode m, QIcon::State s) + : fileName(file), size(sz), mode(m), state(s) {} + QPixmapIconEngineEntry(const QString &file, const QImage &image, QIcon::Mode m, QIcon::State s); QPixmap pixmap; QString fileName; QSize size; - qreal scale; - QIcon::Mode mode; - QIcon::State state; - bool isNull() const {return (fileName.isEmpty() && pixmap.isNull()); } + QIcon::Mode mode = QIcon::Normal; + QIcon::State state = QIcon::Off; }; Q_DECLARE_TYPEINFO(QPixmapIconEngineEntry, Q_RELOCATABLE_TYPE); inline QPixmapIconEngineEntry::QPixmapIconEngineEntry(const QString &file, const QImage &image, QIcon::Mode m, QIcon::State s) - : fileName(file), size(image.size()), scale(image.devicePixelRatio()), mode(m), state(s) + : fileName(file), size(image.size()), mode(m), state(s) { pixmap.convertFromImage(image); } diff --git a/src/gui/image/qiconengine.h b/src/gui/image/qiconengine.h index 61411b0660..f5c5184608 100644 --- a/src/gui/image/qiconengine.h +++ b/src/gui/image/qiconengine.h @@ -18,6 +18,7 @@ public: virtual ~QIconEngine(); virtual void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) = 0; virtual QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state); + // ### Qt7: add qreal scale argument and remove scaledPixmap virtual QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state); virtual void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state); diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index 3bbf21320e..a24d7ccde7 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -1093,7 +1093,6 @@ QImage &QImage::operator=(const QImage &image) /*! \fn void QImage::swap(QImage &other) - \since 4.8 Swaps image \a other with this image. This operation is very fast and never fails. @@ -1412,7 +1411,6 @@ int QImage::depth() const } /*! - \since 4.6 \fn int QImage::colorCount() const Returns the size of the color table for the image. @@ -1676,7 +1674,6 @@ const uchar *QImage::scanLine(int i) const shared pixel data, because the returned data is const. \sa scanLine(), constBits() - \since 4.7 */ const uchar *QImage::constScanLine(int i) const { @@ -1732,7 +1729,6 @@ const uchar *QImage::bits() const shared pixel data, because the returned data is const. \sa bits(), constScanLine() - \since 4.7 */ const uchar *QImage::constBits() const { @@ -1839,7 +1835,6 @@ void QImage::fill(uint pixel) /*! \fn void QImage::fill(Qt::GlobalColor color) \overload - \since 4.8 Fills the image with the given \a color, described as a standard global color. @@ -1865,8 +1860,6 @@ void QImage::fill(Qt::GlobalColor color) If the depth of the image is 8, the image will be filled with the index corresponding the \a color in the color table if present; it will otherwise be filled with 0. - - \since 4.8 */ void QImage::fill(const QColor &color) @@ -2123,7 +2116,6 @@ void QImage::invertPixels(InvertMode mode) #endif /*! - \since 4.6 Resizes the color table to contain \a colorCount entries. If the color table is expanded, all the extra colors will be set to @@ -4607,7 +4599,6 @@ bool QImage::hasAlphaChannel() const } /*! - \since 4.7 Returns the number of bit planes in the image. The number of bit planes is the number of bits of color and diff --git a/src/gui/image/qmovie.cpp b/src/gui/image/qmovie.cpp index 435f1dced9..0d13639d35 100644 --- a/src/gui/image/qmovie.cpp +++ b/src/gui/image/qmovie.cpp @@ -319,7 +319,7 @@ QFrameInfo QMoviePrivate::infoForFrame(int frameNumber) // For an animated image format, QImageIOHandler::nextImageDelay() should // provide the time to wait until showing the next frame; but multi-frame // formats are not expected to provide this value, so use 1000 ms by default. - const int nextFrameDelay = supportsAnimation ? reader->nextImageDelay() : 1000; + const auto nextFrameDelay = [&]() { return supportsAnimation ? reader->nextImageDelay() : 1000; }; if (cacheMode == QMovie::CacheNone) { if (frameNumber != currentFrameNumber+1) { @@ -363,7 +363,7 @@ QFrameInfo QMoviePrivate::infoForFrame(int frameNumber) } if (frameNumber > greatestFrameNumber) greatestFrameNumber = frameNumber; - return QFrameInfo(QPixmap::fromImage(std::move(anImage)), nextFrameDelay); + return QFrameInfo(QPixmap::fromImage(std::move(anImage)), nextFrameDelay()); } else if (frameNumber != 0) { // We've read all frames now. Return an end marker haveReadAll = true; @@ -391,7 +391,7 @@ QFrameInfo QMoviePrivate::infoForFrame(int frameNumber) return QFrameInfo(); // Invalid } greatestFrameNumber = i; - QFrameInfo info(QPixmap::fromImage(std::move(anImage)), nextFrameDelay); + QFrameInfo info(QPixmap::fromImage(std::move(anImage)), nextFrameDelay()); // Cache it! frameMap.insert(i, info); if (i == frameNumber) { diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp index 89b8d5303b..afef16f867 100644 --- a/src/gui/image/qpixmap.cpp +++ b/src/gui/image/qpixmap.cpp @@ -289,7 +289,6 @@ QPixmap QPixmap::copy(const QRect &rect) const /*! \fn QPixmap::scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed) - \since 4.6 This convenience function is equivalent to calling QPixmap::scroll(\a dx, \a dy, QRect(\a x, \a y, \a width, \a height), \a exposed). @@ -298,8 +297,6 @@ QPixmap QPixmap::copy(const QRect &rect) const */ /*! - \since 4.6 - Scrolls the area \a rect of this pixmap by (\a dx, \a dy). The exposed region is left unchanged. You can optionally pass a pointer to an empty QRegion to get the region that is \a exposed by the scroll operation. @@ -371,7 +368,6 @@ QPixmap &QPixmap::operator=(const QPixmap &pixmap) /*! \fn void QPixmap::swap(QPixmap &other) - \since 4.8 Swaps pixmap \a other with this pixmap. This operation is very fast and never fails. @@ -970,12 +966,7 @@ bool QPixmap::isDetached() const Passing 0 for \a flags sets all the default options. Returns \c true if the result is that this pixmap is not null. - Note: this function was part of Qt 3 support in Qt 4.6 and earlier. - It has been promoted to official API status in 4.7 to support updating - the pixmap's image without creating a new QPixmap as fromImage() would. - \sa fromImage() - \since 4.7 */ bool QPixmap::convertFromImage(const QImage &image, Qt::ImageConversionFlags flags) { |