From a7831a7ccab1ec0537bfb520b72b4eb0efa84e3b Mon Sep 17 00:00:00 2001 From: dave Date: Thu, 11 Dec 2014 16:52:06 +0000 Subject: [PATCH] Draw grid lines on widget --- plugins/eq/eqparameterwidget.cpp | 25 ++++++++++++++++++++++--- plugins/eq/eqparameterwidget.h | 2 ++ plugins/eq/eqspectrumview.h | 8 ++++++-- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/plugins/eq/eqparameterwidget.cpp b/plugins/eq/eqparameterwidget.cpp index 39e1ab94f..f1d53fa2e 100644 --- a/plugins/eq/eqparameterwidget.cpp +++ b/plugins/eq/eqparameterwidget.cpp @@ -44,6 +44,7 @@ EqParameterWidget::EqParameterWidget( QWidget *parent ) : m_pixelsPerUnitHeight = (height() - 4) / ( totalHeight ); m_scale = 1.5; m_pixelsPerOctave = freqToXPixel( 10000 ) - freqToXPixel( 5000 ); + } @@ -59,9 +60,27 @@ EqParameterWidget::~EqParameterWidget() void EqParameterWidget::paintEvent( QPaintEvent *event ) { - QPainter painter( this ); + QPainter painter( this ); + //Draw Frequecy maker lines + painter.setPen( QPen( QColor( 100, 100, 100, 200 ), 1, Qt::SolidLine, Qt::RoundCap, Qt::BevelJoin ) ); + for( int x = 20 ; x < 100; x += 10) + { + painter.drawLine( freqToXPixel( x ) , 0, freqToXPixel( x ) , height() ); + } + for( int x = 100 ; x < 1000; x += 100) + { + painter.drawLine( freqToXPixel( x ) , 0, freqToXPixel( x ) , height() ); + } + for( int x = 1000 ; x < 11000; x += 1000) + { + painter.drawLine( freqToXPixel( x ) , 0, freqToXPixel( x ) , height() ); + } + //draw 0dB line + painter.drawLine(0, gainToYPixel( 0 ) , width(), gainToYPixel( 0 ) ); + for( int i = 0 ; i < bandCount() ; i++ ) { + m_bands[i].color.setAlpha(m_bands[i].active->value() ? activeAplha() : inactiveAlpha()); painter.setPen( QPen( m_bands[i].color, 10, Qt::SolidLine, Qt::RoundCap, Qt::BevelJoin ) ); float x = freqToXPixel( m_bands[i].freq->value() ); @@ -71,11 +90,11 @@ void EqParameterWidget::paintEvent( QPaintEvent *event ) { gain = m_bands[i].gain->value(); } - y = gainToYPixel( gain ) + 3; + y = gainToYPixel( gain ); float bw = m_bands[i].freq->value() / m_bands[i].res->value(); m_bands[i].x = x; m_bands[i].y = y; painter.drawPoint( x, y ); - painter.setPen( QPen( m_bands[i].color, 3, Qt::SolidLine, Qt::RoundCap, Qt::BevelJoin ) ); + painter.setPen( QPen( m_bands[i].color, 3, Qt::SolidLine, Qt::SquareCap, Qt::BevelJoin ) ); if(i == 0 || i == bandCount() - 1 ){ painter.drawLine(x, y, x, y - (m_bands[i].res->value() * 4 ) ); } diff --git a/plugins/eq/eqparameterwidget.h b/plugins/eq/eqparameterwidget.h index cb14154b3..766efad60 100644 --- a/plugins/eq/eqparameterwidget.h +++ b/plugins/eq/eqparameterwidget.h @@ -122,6 +122,8 @@ private: enum MouseAction { none, drag, res } m_mouseAction; int m_oldX, m_oldY; + int *m_xGridBands; + inline int freqToXPixel( float freq ) { diff --git a/plugins/eq/eqspectrumview.h b/plugins/eq/eqspectrumview.h index ca63ff27d..47490afa3 100644 --- a/plugins/eq/eqspectrumview.h +++ b/plugins/eq/eqspectrumview.h @@ -63,9 +63,15 @@ public: int m_lastY; virtual void paintEvent( QPaintEvent* event ) { + const int fh = height(); + const int LOWER_Y = -96; // dB int m_lastY = height(); QPainter p( this ); p.setPen( QPen( color, 1, Qt::SolidLine, Qt::RoundCap, Qt::BevelJoin ) ); + //draw grid lines + int y33 = (int)( fh * 2.0 / 3.0 * (20*(log10( 0.33 ) ) - LOWER_Y ) / (-LOWER_Y ) ); + p.drawLine(0, y33, width(), y33); + const float e = m_sa->m_energy; if( e <= 0 ) { @@ -73,9 +79,7 @@ public: return; } float * b = m_sa->m_bands; - const int LOWER_Y = -60; // dB int h; - const int fh = height(); bool linX = true; if( linX ) {