1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-04 13:17:34 +02:00

* Include tint color in ImageRegistry cache-key.

This commit is contained in:
Christian Muehlhaeuser
2014-08-13 07:29:56 +02:00
parent 190d243c50
commit 7c778029cf
2 changed files with 15 additions and 6 deletions

View File

@@ -47,6 +47,13 @@ ImageRegistry::icon( const QString& image, TomahawkUtils::ImageMode mode )
} }
qint64
ImageRegistry::cacheKey( const QSize& size, float opacity, QColor tint )
{
return size.width() * 100 + size.height() * 10 + ( opacity * 100.0 ) + tint.value();
}
QPixmap QPixmap
ImageRegistry::pixmap( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode, float opacity, QColor tint ) ImageRegistry::pixmap( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode, float opacity, QColor tint )
{ {
@@ -61,9 +68,10 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, TomahawkUtils::I
{ {
subsubcache = subcache.value( mode ); subsubcache = subcache.value( mode );
if ( subsubcache.contains( size.width() * 100 + size.height() * 10 + ( opacity * 100.0 ) ) ) const qint64 ck = cacheKey( size, opacity, tint );
if ( subsubcache.contains( ck ) )
{ {
return subsubcache.value( size.width() * 100 + size.height() * 10 + ( opacity * 100.0 ) ); return subsubcache.value( ck );
} }
} }
} }
@@ -114,7 +122,7 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, TomahawkUtils::I
if ( !size.isNull() && pixmap.size() != size ) if ( !size.isNull() && pixmap.size() != size )
pixmap = pixmap.scaled( size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); pixmap = pixmap.scaled( size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
putInCache( image, size, mode, opacity, pixmap ); putInCache( image, size, mode, opacity, pixmap, tint );
} }
return pixmap; return pixmap;
@@ -122,7 +130,7 @@ ImageRegistry::pixmap( const QString& image, const QSize& size, TomahawkUtils::I
void void
ImageRegistry::putInCache( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode, float opacity, const QPixmap& pixmap ) ImageRegistry::putInCache( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode, float opacity, const QPixmap& pixmap, QColor tint )
{ {
tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Adding to image cache:" << image << size << mode; tDebug( LOGVERBOSE ) << Q_FUNC_INFO << "Adding to image cache:" << image << size << mode;
@@ -144,7 +152,7 @@ ImageRegistry::putInCache( const QString& image, const QSize& size, TomahawkUtil
} }
} }
subsubcache.insert( size.width() * 100 + size.height() * 10 + ( opacity * 100.0 ), pixmap ); subsubcache.insert( cacheKey( size, opacity, tint ), pixmap );
subcache.insert( mode, subsubcache ); subcache.insert( mode, subsubcache );
s_cache.insert( image, subcache ); s_cache.insert( image, subcache );
} }

View File

@@ -34,7 +34,8 @@ public:
QPixmap pixmap( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode = TomahawkUtils::Original, float opacity = 1.0, QColor tint = QColor( 0, 0, 0, 0 ) ); QPixmap pixmap( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode = TomahawkUtils::Original, float opacity = 1.0, QColor tint = QColor( 0, 0, 0, 0 ) );
private: private:
void putInCache( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode, float opacity, const QPixmap& pixmap ); qint64 cacheKey( const QSize& size, float opacity, QColor tint );
void putInCache( const QString& image, const QSize& size, TomahawkUtils::ImageMode mode, float opacity, const QPixmap& pixmap, QColor tint );
static ImageRegistry* s_instance; static ImageRegistry* s_instance;
}; };