diff --git a/ChangeLog b/ChangeLog index 53b5846ac..abb906dc1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2008-05-04 Paul Giblock + + * plugins/kicker/kicker.cpp: + * plugins/kicker/artwork.png: + Add new artwork + + * include/knob.h: + * src/gui/widgets/knob.cpp: + Seperate some drawing functionality to simplify subclasses + + * src/tracks/instrument_track.cpp: + Change plugin size from 246px back to 250px + 2008-05-03 Tobias Dorffel * src/core/track.cpp: diff --git a/include/knob.h b/include/knob.h index 0b279f449..f1553355a 100644 --- a/include/knob.h +++ b/include/knob.h @@ -106,6 +106,7 @@ protected: float getValue( const QPoint & _p ); + QLineF calculateLine( const QPointF & _mid, float _radius, float _innerRadius = 1) const; private: inline float pageSize( void ) const diff --git a/plugins/kicker/artwork.png b/plugins/kicker/artwork.png index 17087a79e..d7947e2ab 100644 Binary files a/plugins/kicker/artwork.png and b/plugins/kicker/artwork.png differ diff --git a/plugins/kicker/kicker.cpp b/plugins/kicker/kicker.cpp index ade1869f9..05e6ca4fd 100644 --- a/plugins/kicker/kicker.cpp +++ b/plugins/kicker/kicker.cpp @@ -23,8 +23,8 @@ */ -#include #include +#include #include "kicker.h" #include "engine.h" @@ -190,41 +190,67 @@ pluginView * kickerInstrument::instantiateView( QWidget * _parent ) +class kickerKnob : public knob +{ +public: + kickerKnob( QWidget * _parent, const QString & _name ) : + knob( 0, _parent, _name ) + { + setFixedSize( 37, 47 ); + } + + static const QPointF m_midPoint; + +protected: + virtual void paintEvent( QPaintEvent * _me ) + { + QPainter p( this ); + p.setRenderHint( QPainter::Antialiasing ); + + QLineF ln = calculateLine( m_midPoint, 11.2, 4 ); + + QRadialGradient gradient(m_midPoint, 11); + gradient.setColorAt(0.33, QColor( 240, 147, 14 ) ); + gradient.setColorAt(1, QColor( 30, 35, 37 ) ); + //gradient.setColorAt(1, QColor( 68, 77, 82 ) ); + //p.setPen( QPen( QColor( 0, 91, 120 ), 2 ) ); + //p.drawRect( QRect(QPoint(0,0), size()) ); + + //p.setPen( QPen( QColor( 146, 91, 12 ), 3 ) ); + //p.drawLine( ln ); + + p.setPen( QPen( gradient, 3 ) ); + p.drawLine( ln ); + } +}; + +const QPointF kickerKnob::m_midPoint = QPointF( 18.5, 13.5 ); + kickerInstrumentView::kickerInstrumentView( instrument * _instrument, QWidget * _parent ) : instrumentView( _instrument, _parent ) { - QVBoxLayout * vl = new QVBoxLayout( this ); - QHBoxLayout * hl = new QHBoxLayout; - m_startFreqKnob = new knob( knobDark_28, this, tr( "Start frequency" ) ); - m_startFreqKnob->setLabel( tr( "START" ) ); + m_startFreqKnob = new kickerKnob( this, tr( "Start frequency" ) ); m_startFreqKnob->setHintText( tr( "Start frequency:" ) + " ", "Hz" ); + m_startFreqKnob->move( 12, 124 ); - m_endFreqKnob = new knob( knobDark_28, this, tr( "End frequency" ) ); - m_endFreqKnob->setLabel( tr( "END" ) ); + m_endFreqKnob = new kickerKnob( this, tr( "End frequency" ) ); m_endFreqKnob->setHintText( tr( "End frequency:" ) + " ", "Hz" ); + m_endFreqKnob->move( 59, 124 ); - m_decayKnob = new knob( knobDark_28, this, tr( "Decay" ) ); - m_decayKnob->setLabel( tr( "DECAY" ) ); + m_decayKnob = new kickerKnob( this, tr( "Decay" ) ); m_decayKnob->setHintText( tr( "Decay:" ) + " ", "ms" ); + m_decayKnob->move( 107, 124 ); - m_distKnob = new knob( knobDark_28, this, tr( "Distortion" ) ); - m_distKnob->setLabel( tr( "DIST" ) ); + m_distKnob = new kickerKnob( this, tr( "Distortion" ) ); m_distKnob->setHintText( tr( "Distortion:" ) + " ", "" ); + m_distKnob->move( 155, 124 ); - m_gainKnob = new knob( knobDark_28, this, tr( "Gain" ) ); - m_gainKnob->setLabel( tr( "GAIN" ) ); + m_gainKnob = new kickerKnob( this, tr( "Gain" ) ); m_gainKnob->setHintText( tr( "Gain:" ) + " ", "" ); - - hl->addWidget( m_startFreqKnob ); - hl->addWidget( m_endFreqKnob ); - hl->addWidget( m_decayKnob ); - hl->addWidget( m_distKnob ); - hl->addWidget( m_gainKnob ); - - vl->addLayout( hl ); + m_gainKnob->move( 203, 124 ); setAutoFillBackground( TRUE ); QPalette pal; diff --git a/src/gui/widgets/knob.cpp b/src/gui/widgets/knob.cpp index 4163d980a..d98a87aab 100644 --- a/src/gui/widgets/knob.cpp +++ b/src/gui/widgets/knob.cpp @@ -138,9 +138,7 @@ void knob::setTotalAngle( float _angle ) } - - -void knob::drawKnob( QPainter * _p ) +QLineF knob::calculateLine( const QPointF & _mid, float _radius, float _innerRadius ) const { float angle = 0.0f; if( model()->maxValue() != model()->minValue() ) @@ -152,16 +150,25 @@ void knob::drawKnob( QPainter * _p ) angle = static_cast( angle ) % 360; } - const float radius = m_knobPixmap->width() / 2.0f - 1; - const float xm = m_knobPixmap->width() / 2.0f;//radius + 1; - const float ym = m_knobPixmap->height() / 2.0f;//radius+1; - const float rarc = angle * M_PI / 180.0; const float ca = cos( rarc ); const float sa = -sin( rarc ); - _p->drawPixmap( static_cast( xm - m_knobPixmap->width() / 2 ), 0, - *m_knobPixmap ); + return QLineF( _mid.x() - sa*_innerRadius, _mid.y() - ca*_innerRadius, + _mid.x() - sa*_radius, _mid.y() - ca*_radius ); +} + + + +void knob::drawKnob( QPainter * _p ) +{ + const float radius = m_knobPixmap->width() / 2.0f - 1; + QPoint mid = QPoint( width() / 2.0, + m_knobPixmap->height() / 2.0f ); + + _p->drawPixmap( static_cast( + width() / 2 - m_knobPixmap->width() / 2 ), 0, + *m_knobPixmap ); _p->setPen( QPen( QColor( 200, 0, 0 ), 2 ) ); _p->setRenderHint( QPainter::Antialiasing ); @@ -170,16 +177,12 @@ void knob::drawKnob( QPainter * _p ) { case knobSmall_17: { - _p->drawLine( QLineF( xm-sa, ym-ca, - xm - sa*radius, - ym - ca*radius ) ); + _p->drawLine( calculateLine( mid, radius ) ); break; } case knobBright_26: { - _p->drawLine( QLineF( xm-sa, ym-ca, - xm - sa*( radius-5 ), - ym - ca*( radius-5 ) ) ); + _p->drawLine( calculateLine( mid, radius-5 ) ); break; } case knobDark_28: @@ -187,18 +190,15 @@ void knob::drawKnob( QPainter * _p ) const float rb = tMax( ( radius - 10 ) / 3.0, 0.0 ); const float re = tMax( ( radius - 4 ), 0.0 ); - _p->drawLine( QLineF( xm-sa*rb + 1, - ym - ca*rb + 1, - xm - sa*re + 1, - ym - ca*re + 1 ) ); + QLineF ln = calculateLine( mid, re, rb ); + ln.translate( 1, 1 ); + _p->drawLine( ln ); break; } case knobGreen_17: { _p->setPen( QPen( QColor( 0, 200, 0 ), 2 ) ); - _p->drawLine( QLineF( xm-sa, ym-ca, - xm - sa*radius, - ym - ca*radius ) ); + _p->drawLine( calculateLine( mid, radius ) ); break; } } diff --git a/src/tracks/instrument_track.cpp b/src/tracks/instrument_track.cpp index c65b094e5..cb0f21de4 100644 --- a/src/tracks/instrument_track.cpp +++ b/src/tracks/instrument_track.cpp @@ -94,7 +94,7 @@ const char * surroundarea_help = QT_TRANSLATE_NOOP( "instrumentTrack", "feature." ); -const int INSTRUMENT_WIDTH = 250; +const int INSTRUMENT_WIDTH = 254; const int INSTRUMENT_HEIGHT = INSTRUMENT_WIDTH; const int PIANO_HEIGHT = 84; const int INSTRUMENT_WINDOW_CACHE_SIZE = 8; @@ -1106,7 +1106,7 @@ instrumentTrackWindow::instrumentTrackWindow( instrumentTrackView * _itv ) : m_tabWidget = new tabWidget( "", this ); - m_tabWidget->setFixedHeight( INSTRUMENT_HEIGHT + 12 ); + m_tabWidget->setFixedHeight( INSTRUMENT_HEIGHT + 10 ); // create tab-widgets