Skip to content

Commit 2e0e954

Browse files
committed
Fixed WaveFormView not correctly updating chunks when zooming or scrolling + inversed wave signal
1 parent 86bd299 commit 2e0e954

File tree

2 files changed

+8
-10
lines changed

2 files changed

+8
-10
lines changed

UI/WaveFormChunk.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,20 @@ void WaveFormChunk::updateWave(Signal* signal)
4949
//qDebug() << "There is a signal";
5050
m_nbTotalSample = signal->sampleCount();
5151

52-
int mid = qRound(height() / 2.);
52+
int mid = qFloor((height()-1) * 0.5);
5353

5454
if(m_nbIndex < width()) // less index than pixel -> draw lines between each index
5555
{
5656
QPainterPath path;
5757

5858
qreal nbPixelPerIndex = qreal(width()) / m_nbIndex;
5959

60-
qint32 value = signal->getSample(m_startIndex);
60+
qint32 value = -signal->getSample(m_startIndex);
6161
path.moveTo(0, qRound(value / qreal(INT32_MAX) * mid + mid));
6262

6363
for(int i = 1; i < m_nbIndex + 1; i++)
6464
{
65-
qint32 value = signal->getSample(m_startIndex + i);
65+
value = -signal->getSample(m_startIndex + i);
6666
path.lineTo(i * nbPixelPerIndex, qRound(value / qreal(INT32_MAX) * mid + mid));
6767
}
6868

@@ -82,7 +82,7 @@ void WaveFormChunk::updateWave(Signal* signal)
8282

8383
for(int k = 0; k < nbIndexInThisPixel + 1; k++)
8484
{
85-
qint32 y = signal->getSample(m_startIndex + prevIndex + k);
85+
qint32 y = -signal->getSample(m_startIndex + prevIndex + k);
8686
if(y < min) min = y;
8787
if(y > max) max = y;
8888
}

UI/WaveFormView.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,6 @@ void WaveFormView::paintEvent(QPaintEvent *_event)
120120

121121
void WaveFormView::wheelEvent(QWheelEvent *_event)
122122
{
123-
124123
// zoom
125124
int angle = _event->angleDelta().y();
126125
qreal factor = 1.0 + (angle > 0.0 ? 0.1 : -0.1);
@@ -148,17 +147,16 @@ void WaveFormView::setSampleOffset(int _startIndex)
148147

149148
m_sampleOffset = qMax(0, _startIndex);
150149

151-
int chunkStartIndex = m_chunkList.first()->startIndex();
152-
153-
if(m_sampleOffset - chunkStartIndex >= 2 * m_samplePerChunk)
150+
while(m_sampleOffset - m_chunkList.first()->startIndex() >= 2 * m_samplePerChunk)
154151
{
155152
WaveFormChunk* chunk = m_chunkList.first();
156153
m_chunkList.pop_front();
157154
chunk->setIndexRange(m_chunkList.last()->startIndex() + m_samplePerChunk, m_samplePerChunk);
158155
chunk->updateWave(m_signal);
159156
m_chunkList.push_back(chunk);
160157
}
161-
else if(m_sampleOffset - chunkStartIndex < 0)
158+
159+
while(m_sampleOffset - m_chunkList.first()->startIndex() < 0)
162160
{
163161
WaveFormChunk* chunk = m_chunkList.last();
164162
m_chunkList.pop_back();
@@ -204,6 +202,6 @@ void WaveFormView::updateZoom(int _localOffset)
204202
m_sampleOffset = 0;
205203
}
206204

207-
m_sampleOffset = qMax(0, qRound(_localOffset + (m_sampleOffset - _localOffset) * qreal(m_nbSampleViewed) / oldSampleViewed));
205+
setSampleOffset(qRound(_localOffset + (m_sampleOffset - _localOffset) * qreal(m_nbSampleViewed) / oldSampleViewed));
208206
emit zoomChanged();
209207
}

0 commit comments

Comments
 (0)