Diffstat (limited to 'noncore/multimedia/opieplayer2/mediawidget.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/multimedia/opieplayer2/mediawidget.cpp | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/noncore/multimedia/opieplayer2/mediawidget.cpp b/noncore/multimedia/opieplayer2/mediawidget.cpp index ab23aa8..ab2ec50 100644 --- a/noncore/multimedia/opieplayer2/mediawidget.cpp +++ b/noncore/multimedia/opieplayer2/mediawidget.cpp @@ -110,4 +110,21 @@ void MediaWidget::paintEvent( QPaintEvent *pe ) } +void MediaWidget::resizeEvent( QResizeEvent *e ) +{ + QPixmap pixUp = combineImageWithBackground( buttonUpImage, backgroundPixmap, upperLeftOfButtonMask ); + QPixmap pixDn = combineImageWithBackground( buttonDownImage, backgroundPixmap, upperLeftOfButtonMask ); + + for ( ButtonVector::iterator it = buttons.begin(); it != buttons.end(); ++it ) { + Button &button = *it; + + if ( button.mask.isNull() ) + continue; + button.pixUp = addMaskToPixmap( pixUp, button.mask ); + button.pixDown = addMaskToPixmap( pixDn, button.mask ); + } + + QWidget::resizeEvent( e ); +} + MediaWidget::Button *MediaWidget::buttonAt( const QPoint &position ) { @@ -231,4 +248,20 @@ void MediaWidget::toggleButton( Button &button ) } +QPixmap MediaWidget::combineImageWithBackground( const QImage &image, const QPixmap &background, const QPoint &offset ) +{ + QPixmap pix( image.size() ); + QPainter p( &pix ); + p.drawTiledPixmap( pix.rect(), background, offset ); + p.drawImage( 0, 0, image ); + return pix; +} + +QPixmap MediaWidget::addMaskToPixmap( const QPixmap &pix, const QBitmap &mask ) +{ + QPixmap result( pix ); + result.setMask( mask ); + return result; +} + /* vim: et sw=4 ts=4 */ |