[vlc-commits] Qt: SoundSlider: optimize paint method
Francois Cartegnie
git at videolan.org
Sat Mar 3 22:31:15 CET 2012
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Sat Mar 3 22:29:10 2012 +0100| [baf9deddc7313288415cdd0f6afa1f6423dbea9c] | committer: Francois Cartegnie
Qt: SoundSlider: optimize paint method
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=baf9deddc7313288415cdd0f6afa1f6423dbea9c
---
modules/gui/qt4/util/input_slider.cpp | 25 ++++++++++++++-----------
modules/gui/qt4/util/input_slider.hpp | 6 ++++++
2 files changed, 20 insertions(+), 11 deletions(-)
diff --git a/modules/gui/qt4/util/input_slider.cpp b/modules/gui/qt4/util/input_slider.cpp
index d45a0e4..d94bf5c 100644
--- a/modules/gui/qt4/util/input_slider.cpp
+++ b/modules/gui/qt4/util/input_slider.cpp
@@ -600,6 +600,15 @@ SoundSlider::SoundSlider( QWidget *_parent, int _i_step, bool b_hard,
for( int i = colorList.count(); i < 12; i++)
colorList.append( "255" );
+ background = palette().color( QPalette::Active, QPalette::Background );
+ foreground = palette().color( QPalette::Active, QPalette::WindowText );
+ foreground.setHsv( foreground.hue(),
+ ( background.saturation() + foreground.saturation() ) / 2,
+ ( background.value() + foreground.value() ) / 2 );
+
+ textfont.setPixelSize( 9 );
+ textrect.setRect( 0, 0, 34, 15 );
+
/* Regular colors */
#define c(i) colorList.at(i).toInt()
#define add_color(gradient, range, c1, c2, c3) \
@@ -623,7 +632,7 @@ SoundSlider::SoundSlider( QWidget *_parent, int _i_step, bool b_hard,
add_colors( gradient, gradient2, 0.55, 6, 7, 8 );
add_colors( gradient, gradient2, 1.0, 9, 10, 11 );
- QPainter painter( &pixGradient );
+ painter.begin( &pixGradient );
painter.setPen( Qt::NoPen );
painter.setBrush( gradient );
painter.drawRect( pixGradient.rect() );
@@ -716,13 +725,14 @@ void SoundSlider::setMuted( bool m )
void SoundSlider::paintEvent( QPaintEvent *e )
{
- QPainter painter( this );
QPixmap *paintGradient;
if (b_isMuted)
paintGradient = &this->pixGradient2;
else
paintGradient = &this->pixGradient;
+ painter.begin( this );
+
const int offset = int( ( WLENGTH * value() + 100 ) / maximum() ) + paddingL;
const QRectF boundsG( 0, 0, offset , paintGradient->height() );
@@ -731,16 +741,9 @@ void SoundSlider::paintEvent( QPaintEvent *e )
const QRectF boundsO( 0, 0, pixOutside.width(), pixOutside.height() );
painter.drawPixmap( boundsO, pixOutside, boundsO );
- QColor background = palette().color( QPalette::Active, QPalette::Background );
- QColor foreground = palette().color( QPalette::Active, QPalette::WindowText );
- foreground.setHsv( foreground.hue(),
- ( background.saturation() + foreground.saturation() ) / 2,
- ( background.value() + foreground.value() ) / 2 );
painter.setPen( foreground );
- QFont font; font.setPixelSize( 9 );
- painter.setFont( font );
- const QRect rect( 0, 0, 34, 15 );
- painter.drawText( rect, Qt::AlignRight | Qt::AlignVCenter,
+ painter.setFont( textfont );
+ painter.drawText( textrect, Qt::AlignRight | Qt::AlignVCenter,
QString::number( value() ) + '%' );
painter.end();
diff --git a/modules/gui/qt4/util/input_slider.hpp b/modules/gui/qt4/util/input_slider.hpp
index 3e052e8..ea47d66 100644
--- a/modules/gui/qt4/util/input_slider.hpp
+++ b/modules/gui/qt4/util/input_slider.hpp
@@ -34,6 +34,7 @@
#include "timetooltip.hpp"
#include <QSlider>
+#include <QPainter>
#define MSTRTIME_MAX_SIZE 22
@@ -133,6 +134,11 @@ private:
QPixmap pixGradient; /* Gradient pix storage */
QPixmap pixGradient2; /* Muted Gradient pix storage */
QPixmap pixOutside; /* OutLine pix storage */
+ QPainter painter;
+ QColor background;
+ QColor foreground;
+ QFont textfont;
+ QRect textrect;
void changeValue( int x ); /* Function to modify the value from pixel x() */
};
More information about the vlc-commits
mailing list