diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2024-05-11 20:59:37 +0200 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2024-05-13 17:46:06 +0200 |
commit | 9b439874d23d93ea627a3d82e1e2979925137705 (patch) | |
tree | 07eb19dfb69218e122c1587e44a8e58ad245871a /src/gui | |
parent | 95bb6bc916358d85c72c935dfe57e12ec771c9f9 (diff) |
QIcon: cleanup QPixmapIconEngineEntry and it's usage
Cleanup QPixmapIconEngineEntry:
- remove unneeded member 'size'
- remove default parameters - not needed
- use range-based for loop, qsizetype where appropriate
Change-Id: I58152035c6f808a83b61efff3b458d0f9362158e
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/image/qicon.cpp | 24 | ||||
-rw-r--r-- | src/gui/image/qicon_p.h | 20 |
2 files changed, 22 insertions, 22 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); } |