From: Peter Penz Date: Fri, 29 Aug 2008 16:12:56 +0000 (+0000) Subject: don't use the expensive QPixmap::setAlphaChannel() (see http://techbase.kde.org/Devel... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/f385b7c674d76874a6586e9cce1994597b815371 don't use the expensive QPixmap::setAlphaChannel() (see http://techbase.kde.org/Development/Tutorials/Graphics/Performance) svn path=/trunk/KDE/kdebase/apps/; revision=854487 --- diff --git a/src/iconmanager.cpp b/src/iconmanager.cpp index 6cf6f001c..5f9daf49d 100644 --- a/src/iconmanager.cpp +++ b/src/iconmanager.cpp @@ -462,29 +462,23 @@ bool IconManager::applyImageFrame(QPixmap& icon) // add a border painter.setPen(palette.color(QPalette::Text)); - painter.setBrush(Qt::NoBrush); painter.drawRect(0, 0, width, height); painter.drawRect(1, 1, width - 2, height - 2); - - // dim image frame by 12.5 % - painter.setPen(QColor(0, 0, 0, 32)); - painter.drawRect(frame, frame, width - doubleFrame, height - doubleFrame); + + painter.setCompositionMode(QPainter::CompositionMode_Plus); + QColor blendColor = palette.color(QPalette::Normal, QPalette::Base); + + blendColor.setAlpha(255 - 32); + painter.setPen(blendColor); + painter.drawRect(0, 0, width, height); + + blendColor.setAlpha(255 - 64); + painter.setPen(blendColor); + painter.drawRect(1, 1, width - 2, height - 2); painter.end(); icon = framedIcon; - // provide an alpha channel for the border - QPixmap alphaChannel(icon.size()); - alphaChannel.fill(); - - QPainter alphaPainter(&alphaChannel); - alphaPainter.setBrush(Qt::NoBrush); - alphaPainter.setPen(QColor(32, 32, 32)); - alphaPainter.drawRect(0, 0, width, height); - alphaPainter.setPen(QColor(64, 64, 64)); - alphaPainter.drawRect(1, 1, width - 2, height - 2); - - icon.setAlphaChannel(alphaChannel); return true; }