Draw grid lines on widget

This commit is contained in:
dave
2014-12-11 16:52:06 +00:00
parent 9c9e9db164
commit a7831a7cca
3 changed files with 30 additions and 5 deletions

View File

@@ -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 ) );
}

View File

@@ -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 )
{

View File

@@ -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 )
{