From cc1dea42bb59c3d9691e142014421a0971ad379e Mon Sep 17 00:00:00 2001 From: Vesa Date: Wed, 12 Feb 2014 22:13:36 +0200 Subject: [PATCH] Final fixes and tweaks: old bugs fixed in graph behaviour, more responsive and accurate now --- include/graph.h | 1 + plugins/waveshaper/artwork.png | Bin 66539 -> 66534 bytes .../waveshaper/waveshaper_control_dialog.cpp | 2 +- src/gui/widgets/graph.cpp | 64 ++++++++++++------ 4 files changed, 45 insertions(+), 22 deletions(-) diff --git a/include/graph.h b/include/graph.h index 808baf2e3..1936da635 100644 --- a/include/graph.h +++ b/include/graph.h @@ -46,6 +46,7 @@ public: { NearestStyle, LinearStyle, + LinearNonCyclicStyle, NumGraphStyles }; diff --git a/plugins/waveshaper/artwork.png b/plugins/waveshaper/artwork.png index 768e52e4a1359219638f49ac2b4377a82093e4a2..fac96bcb44cdf564dc31961fe571b6583c18a440 100644 GIT binary patch delta 22345 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 An*aa+ delta 22335 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 move( 10, 32 ); waveGraph -> setModel( &_controls -> m_wavegraphModel ); waveGraph -> setAutoFillBackground( true ); diff --git a/src/gui/widgets/graph.cpp b/src/gui/widgets/graph.cpp index 7f24a91df..e3f20391b 100644 --- a/src/gui/widgets/graph.cpp +++ b/src/gui/widgets/graph.cpp @@ -119,26 +119,26 @@ void graph::mouseMoveEvent ( QMouseEvent * _me ) // avoid mouse leaps int diff = x - m_lastCursorX; - if( diff >= 1 ) +/* if( diff >= 1 ) { x = qMin( width() - 3, m_lastCursorX + 1 ); } else if( diff <= -1 ) { x = qMax( 2, m_lastCursorX - 1 ); - } - + }*/ + + x = qMax( 2, qMin( x, width()-3 ) ); y = qMax( 2, qMin( y, height()-3 ) ); -/* if( qAbs( diff ) > 1 ) + if( qAbs( diff ) > 1 ) { - drawLineAt( x, y, m_lastCursorX ); - + drawLineAt( x, y, m_lastCursorX ); } else - {*/ + { changeSampleAt( x, y ); -// } + } // update mouse if( diff != 0 ) @@ -205,6 +205,8 @@ void graph::drawLineAt( int _x, int _y, int _lastx ) _x -= 2; _y -= 2; _lastx -= 2; + + _lastx = qMax( 0, qMin( _lastx, width()-5 ) ); float range = minVal - maxVal; float val = ( _y*range/( height()-4 ) ) + maxVal; @@ -272,7 +274,7 @@ void graph::paintEvent( QPaintEvent * ) QVector * samps = &(model()->m_samples); int length = model()->length(); const float maxVal = model()->maxValue(); - + float xscale = (float)( width()-4 ) / length; float yscale = (float)( height()-4 ) / ( model()->minValue() - maxVal ); @@ -282,13 +284,14 @@ void graph::paintEvent( QPaintEvent * ) switch( m_graphStyle ) { - case graph::LinearStyle: + case graph::LinearStyle: p.setRenderHints( QPainter::Antialiasing, true ); for( int i=0; i < length; i++ ) { // Needs to be rewritten - p.drawLine(2+static_cast(i*xscale), + p.drawLine( + 2+static_cast(i*xscale), 2+static_cast( ( (*samps)[i] - maxVal ) * yscale ), 2+static_cast((i+1)*xscale), 2+static_cast( ( (*samps)[i+1] - maxVal ) * yscale ) @@ -298,7 +301,7 @@ void graph::paintEvent( QPaintEvent * ) // Draw last segment wrapped around p.drawLine(2+static_cast(length*xscale), 2+static_cast( ( (*samps)[length] - maxVal ) * yscale ), - width()-2, + width()-3, 2+static_cast( ( (*samps)[0] - maxVal ) * yscale ) ); p.setRenderHints( QPainter::Antialiasing, false ); @@ -322,9 +325,29 @@ void graph::paintEvent( QPaintEvent * ) p.drawLine(2+static_cast(length*xscale), 2+static_cast( ( (*samps)[length] - maxVal ) * yscale ), - width()-2, + width()-3, 2+static_cast( ( (*samps)[length] - maxVal ) * yscale ) ); break; + + case graph::LinearNonCyclicStyle: + p.setRenderHints( QPainter::Antialiasing, true ); + + for( int i=0; i < length; i++ ) + { + // Needs to be rewritten + p.drawLine( + 2+static_cast(i*xscale), + 2+static_cast( ( (*samps)[i] - maxVal ) * yscale ), + 2+static_cast((i+1)*xscale), + 2+static_cast( ( (*samps)[i+1] - maxVal ) * yscale ) + ); + } + + // Do not draw last segment wrapped around - hence, "non-cyclic" + + p.setRenderHints( QPainter::Antialiasing, false ); + break; + default: break; @@ -448,15 +471,14 @@ void graphModel::setSampleAt( int _x, float _val ) { //snap to the grid _val -= ( m_step != 0.0 ) ? fmod( _val, m_step ) * m_step : 0; - // boundary check - if ( _x >= 0 && _x < length() && - _val >= minValue() && _val < maxValue() ) - { - // change sample shape - m_samples[_x] = _val; - emit samplesChanged( _x, _x ); - } + // boundary crop + _x = qMax( 0, qMin( length()-1, _x ) ); + _val = qMax( minValue(), qMin( maxValue(), _val ) ); + + // change sample shape + m_samples[_x] = _val; + emit samplesChanged( _x, _x ); }