Spectrum: reworked max hold

This commit is contained in:
f4exb 2018-10-23 22:38:16 +02:00
parent 30e36157a8
commit 2958e1adba
1 changed files with 13 additions and 12 deletions

View File

@ -798,36 +798,37 @@ void GLSpectrum::paintGL()
// paint max hold lines on top of histogram // paint max hold lines on top of histogram
if (m_displayMaxHold) if (m_displayMaxHold)
{ {
if (m_maxHold.size() < (uint)m_fftSize) if (m_maxHold.size() < (uint) m_fftSize) {
m_maxHold.resize(m_fftSize); m_maxHold.resize(m_fftSize);
}
for(int i = 0; i < m_fftSize; i++) for (int i = 0; i < m_fftSize; i++)
{ {
int j; int j;
quint8* bs = m_histogram + i * 100; quint8* bs = m_histogram + i * 100;
for(j = 99; j > 1; j--) for (j = 99; j >= 0; j--)
{ {
if(bs[j] > 0) { if (bs[j] > 0) {
break; break;
} }
} }
j = j - 99; // m_referenceLevel : top
m_maxHold[i] = (j * m_powerRange) / 99.0 + m_referenceLevel; // m_referenceLevel - m_powerRange : bottom
m_maxHold[i] = ((j - 99) * m_powerRange) / 99.0 + m_referenceLevel;
} }
{ {
GLfloat *q3 = m_q3FFT.m_array; GLfloat *q3 = m_q3FFT.m_array;
Real bottom = -m_powerRange;
for(int i = 0; i < m_fftSize; i++) for (int i = 0; i < m_fftSize; i++)
{ {
Real v = m_maxHold[i] - m_referenceLevel; Real v = m_maxHold[i] - m_referenceLevel;
if(v > 0) { if (v >= 0) {
v = 0; v = 0;
} else if(v < bottom) { } else if (v < -m_powerRange) {
v = bottom; v = -m_powerRange;
} }
q3[2*i] = (Real) i; q3[2*i] = (Real) i;