diff options
| author | Peter Penz <[email protected]> | 2008-08-29 16:12:56 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2008-08-29 16:12:56 +0000 |
| commit | f385b7c674d76874a6586e9cce1994597b815371 (patch) | |
| tree | c66807566ca083a1e7255378a344057b4d8576ba /src/iconmanager.cpp | |
| parent | 70bd78c829299f2f0b7b6fec02495985443b917c (diff) | |
don't use the expensive QPixmap::setAlphaChannel() (see http://techbase.kde.org/Development/Tutorials/Graphics/Performance)
svn path=/trunk/KDE/kdebase/apps/; revision=854487
Diffstat (limited to 'src/iconmanager.cpp')
| -rw-r--r-- | src/iconmanager.cpp | 28 |
1 files changed, 11 insertions, 17 deletions
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; } |
