diff options
author | Alexis Menard <alexis.menard@nokia.com> | 2009-05-18 09:23:05 (GMT) |
---|---|---|
committer | Alexis Menard <alexis.menard@nokia.com> | 2009-05-18 09:23:05 (GMT) |
commit | 60a17320d39eed9cd82f38d07495161b2b2d5e42 (patch) | |
tree | 8b6b36806c35e2e384162bacf884e432ae919dc2 /src/gui/image/qpixmapcache.h | |
parent | 3cc966afd45ac727126ea89bafa7c1aa1295226b (diff) | |
download | Qt-60a17320d39eed9cd82f38d07495161b2b2d5e42.zip Qt-60a17320d39eed9cd82f38d07495161b2b2d5e42.tar.gz Qt-60a17320d39eed9cd82f38d07495161b2b2d5e42.tar.bz2 |
Add an extension to QPixmapCache to get rid of strings.
This commit add a new API to add/find/remove pixmaps into QPixmapCache.
This new extension is based on a key that the cache give you during
the insertion. This key is internally a int which makes all operations
in the cache much more faster that the string approach.
Auto-tests has been extended as well and a benchmark has been added to
compare both approach. I also depecrate the find method for the
string API to have a method pointer based and not reference based like
the Qt policy says.
Reviewed-by: bnilsen
Reviewed-by: andreas
Followed-deeply-by: trond
Diffstat (limited to 'src/gui/image/qpixmapcache.h')
-rw-r--r-- | src/gui/image/qpixmapcache.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/gui/image/qpixmapcache.h b/src/gui/image/qpixmapcache.h index 2750a88..ae64310 100644 --- a/src/gui/image/qpixmapcache.h +++ b/src/gui/image/qpixmapcache.h @@ -53,12 +53,35 @@ QT_MODULE(Gui) class Q_GUI_EXPORT QPixmapCache { public: + class KeyData; + class Key + { + public: + Key(); + Key(const Key &other); + ~Key(); + bool operator ==(const Key &key) const; + inline bool operator !=(const Key &key) const + { return !operator==(key); } + Key &operator =(const Key &other); + + private: + KeyData *d; + friend class QPMCache; + friend class QPixmapCache; + }; + static int cacheLimit(); static void setCacheLimit(int); static QPixmap *find(const QString &key); - static bool find(const QString &key, QPixmap&); - static bool insert(const QString &key, const QPixmap&); + static bool find(const QString &key, QPixmap &pixmap); + static bool find(const QString &key, QPixmap *pixmap); + static bool find(const Key &key, QPixmap *pixmap); + static bool insert(const QString &key, const QPixmap &pixmap); + static Key insert(const QPixmap &pixmap); + static bool replace(const Key &key, const QPixmap &pixmap); static void remove(const QString &key); + static void remove(const Key &key); static void clear(); }; |