From a7308cddcc1ecca12b82ce6c36da4fec809a3ae8 Mon Sep 17 00:00:00 2001
From: Leo Franchi <lfranchi@kde.org>
Date: Fri, 22 Jul 2011 12:44:17 -0400
Subject: [PATCH] Scale pixmaps smoothly to avoid horrible jagged edges

---
 src/libtomahawk/playlist/albumitemdelegate.cpp    | 6 +++---
 src/libtomahawk/playlist/playlistitemdelegate.cpp | 2 +-
 src/libtomahawk/playlist/treeitemdelegate.cpp     | 5 ++---
 3 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/src/libtomahawk/playlist/albumitemdelegate.cpp b/src/libtomahawk/playlist/albumitemdelegate.cpp
index 7871a7bc9..d56cea319 100644
--- a/src/libtomahawk/playlist/albumitemdelegate.cpp
+++ b/src/libtomahawk/playlist/albumitemdelegate.cpp
@@ -38,8 +38,7 @@ AlbumItemDelegate::AlbumItemDelegate( QAbstractItemView* parent, AlbumProxyModel
     , m_model( proxy )
 {
     m_shadowPixmap = QPixmap( RESPATH "images/cover-shadow.png" );
-    m_defaultCover = QPixmap( RESPATH "images/no-album-art-placeholder.png" )
-                     .scaled( QSize( 120, 120 ), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
+    m_defaultCover = QPixmap( RESPATH "images/no-album-art-placeholder.png" );
 }
 
 
@@ -73,7 +72,8 @@ AlbumItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
 //    painter->drawPixmap( option.rect.adjusted( 4, 4, -4, -38 ), m_shadowPixmap );
 
     QPixmap cover = item->cover.isNull() ? m_defaultCover : item->cover;
-    painter->drawPixmap( option.rect.adjusted( 6, 4, -6, -41 ), cover );
+    QRect r = option.rect.adjusted( 6, 4, -6, -41 );
+    painter->drawPixmap( r, cover.scaled( r.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ) );
     painter->setPen( opt.palette.color( QPalette::Text ) );
 
     QTextOption to;
diff --git a/src/libtomahawk/playlist/playlistitemdelegate.cpp b/src/libtomahawk/playlist/playlistitemdelegate.cpp
index dca3c7c92..85137a35c 100644
--- a/src/libtomahawk/playlist/playlistitemdelegate.cpp
+++ b/src/libtomahawk/playlist/playlistitemdelegate.cpp
@@ -198,7 +198,7 @@ PlaylistItemDelegate::paintShort( QPainter* painter, const QStyleOptionViewItem&
         painter->setPen( opt.palette.text().color() );
 
         QRect ir = r.adjusted( 4, 0, -option.rect.width() + option.rect.height() - 8 + r.left(), 0 );
-        painter->drawPixmap( ir, pixmap );
+        painter->drawPixmap( ir, pixmap.scaled( ir.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ) );
         //painter->drawPixmap( ir, item->cover );
 
         QFont boldFont = opt.font;
diff --git a/src/libtomahawk/playlist/treeitemdelegate.cpp b/src/libtomahawk/playlist/treeitemdelegate.cpp
index 554f83c61..feb67ba38 100644
--- a/src/libtomahawk/playlist/treeitemdelegate.cpp
+++ b/src/libtomahawk/playlist/treeitemdelegate.cpp
@@ -40,8 +40,7 @@ TreeItemDelegate::TreeItemDelegate( ArtistView* parent, TreeProxyModel* proxy )
     , m_model( proxy )
 {
     m_nowPlayingIcon = QPixmap( RESPATH "images/now-playing-speaker.png" );
-    m_defaultCover = QPixmap( RESPATH "images/no-album-art-placeholder.png" )
-                     .scaled( QSize( 120, 120 ), Qt::IgnoreAspectRatio, Qt::SmoothTransformation );
+    m_defaultCover = QPixmap( RESPATH "images/no-album-art-placeholder.png" );
 }
 
 
@@ -135,7 +134,7 @@ TreeItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option,
 //    painter->drawPixmap( r, QPixmap( RESPATH "images/cover-shadow.png" ) );
 
     QPixmap cover = item->cover.isNull() ? m_defaultCover : item->cover;
-    painter->drawPixmap( r, cover );
+    painter->drawPixmap( r, cover.scaled( r.size(), Qt::KeepAspectRatio, Qt::SmoothTransformation ) );
 
     QTextOption to;
     to.setAlignment( Qt::AlignVCenter );