QPixmap HostListItem::generateGradient( int type ) { QPixmap temp; if( type == PixRight ) temp = QPixmap( locate( "data", "amarok/images/nmm-gradient-right.png" ) ); else // PixLeft temp = QPixmap( locate( "data", "amarok/images/nmm-gradient-left.png" ) ); const QBitmap mask( temp.createHeuristicMask() ); KPixmap result = QPixmap( 113, 24 ); if( type == PixRight) KPixmapEffect::gradient( result, listView()->colorGroup().background(), listView()->colorGroup().highlight(), KPixmapEffect::HorizontalGradient ); else KPixmapEffect::gradient( result, listView()->colorGroup().highlight(), listView()->colorGroup().background(), KPixmapEffect::HorizontalGradient ); result.setMask( mask); return result; }
const KPixmap &SUSE2Handler::buttonPixmap(ButtonIcon type, int size, ButtonStatus status) { if (m_pixmaps[status][type]) { if (status != Shadow && m_pixmaps[status][type]->size() == QSize(size, size)) return *m_pixmaps[status][type]; else if (status == Shadow && m_pixmaps[status][type]->size() == QSize(size+4, size+4)) return *m_pixmaps[status][type]; } // no matching pixmap found, create a new one... delete m_pixmaps[status][type]; m_pixmaps[status][type] = 0; QColor aDecoFgDark = alphaBlendColors(getColor(TitleGradientTo, true), Qt::black, 50); QColor aDecoFgLight = alphaBlendColors(getColor(TitleGradientTo, true), Qt::white, 50); QColor iDecoFgDark = alphaBlendColors(getColor(TitleGradientTo, false), Qt::black, 50); QColor iDecoFgLight = alphaBlendColors(getColor(TitleGradientTo, false), Qt::white, 50); if (m_customIconColors && !m_useTitleProps) { aDecoFgDark = m_aFgColor; aDecoFgLight = m_aBgColor; iDecoFgDark = m_iFgColor; iDecoFgLight = m_iBgColor; } KPixmap icon = IconEngine::icon(type, size); QImage img = icon.convertToImage(); KPixmap *pixmap; QImage tmpImage; ShadowEngine se; QPainter painter; KPixmap tmpShadow; switch (status) { case ActiveUp: if (m_useTitleProps) tmpImage = recolorImage(&img, getColor(TitleFont, true)); else tmpImage = recolorImage(&img, aDecoFgDark); pixmap = new KPixmap(tmpImage); break; case ActiveDown: if (m_useTitleProps) tmpImage = recolorImage(&img, getColor(TitleFont, true)); else tmpImage = recolorImage(&img, aDecoFgLight); pixmap = new KPixmap(tmpImage); break; case InactiveUp: if (m_useTitleProps) tmpImage = recolorImage(&img, getColor(TitleFont, false)); else tmpImage = recolorImage(&img, iDecoFgDark); pixmap = new KPixmap(tmpImage); break; case InactiveDown: if (m_useTitleProps) tmpImage = recolorImage(&img, getColor(TitleFont, false)); else tmpImage = recolorImage(&img, iDecoFgLight); pixmap = new KPixmap(tmpImage); break; case Shadow: // prepare shadow tmpShadow = QPixmap(icon.width()+4, icon.height()+4); tmpShadow.fill(QColor(0,0,0)); tmpShadow.setMask(tmpShadow.createHeuristicMask(true)); painter.begin(&tmpShadow); painter.setPen(white); painter.drawPixmap(0,0, icon); painter.end(); tmpImage = se.makeShadow(tmpShadow, QColor(0, 0, 0)); pixmap = new KPixmap(tmpImage); break; default: pixmap = new KPixmap(); } m_pixmaps[status][type] = pixmap; return *pixmap; }