diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2020-01-21 19:49:04 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2020-01-21 19:49:04 +0000 |
| commit | bbe1ec2f3e7fdb311a509b7ad7e7b63714a90f03 (patch) | |
| tree | 54934055d626d5e398a3a0bd7ea0d905711123e9 /src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp | |
| parent | 99369b58459da2bfeaf453aae2e152c57d8521d3 (diff) | |
| download | qmmp-bbe1ec2f3e7fdb311a509b7ad7e7b63714a90f03.tar.gz qmmp-bbe1ec2f3e7fdb311a509b7ad7e7b63714a90f03.tar.bz2 qmmp-bbe1ec2f3e7fdb311a509b7ad7e7b63714a90f03.zip | |
qsui: optimization
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9214 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp')
| -rw-r--r-- | src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp | 96 |
1 files changed, 30 insertions, 66 deletions
diff --git a/src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp b/src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp index eff8d6a57..2a22cd82d 100644 --- a/src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp +++ b/src/plugins/Ui/qsui/qsuiwaveformseekbar.cpp @@ -223,45 +223,27 @@ void QSUIWaveformSeekBar::drawWaveform() int ch = (i / 3) % m_channels; float x1 = step * (i / m_channels / 3); float x2 = step * (i / m_channels / 3 + 1); - + bool draw = false; + float zeroPos = 0, ratio = 0; if(ch == 0 && (m_channels == 1 || !showTwoChannels)) { - float y1 = height()/2 - m_data[i] * (height() / 4) / 1000; - float y2 = height()/2 - m_data[i+1] * (height() / 4) / 1000; - float y3 = height()/2 - m_data[i+3] * (height() / 4) / 1000; - float y4 = height()/2 - m_data[i+4] * (height() / 4) / 1000; - - QPointF points[4] = { - { x1, y1 }, - { x1, y2 }, - { x2, y4 }, - { x2, y3 } - }; - - painter.drawPolygon(points, 4); + zeroPos = height() / 2; + ratio = float(height() / 4) / 1000; + draw = true; } - else if(ch == 0) + else if(ch == 0 || (ch == 1 && showTwoChannels)) { - float y1 = height()/4 - m_data[i] * (height() / 8) / 1000; - float y2 = height()/4 - m_data[i + 1] * (height() / 8) / 1000; - float y3 = height()/4 - m_data[i + m_channels * 3] * (height() / 8) / 1000; - float y4 = height()/4 - m_data[i + m_channels * 3 + 1] * (height() / 8) / 1000; - - QPointF points[4] = { - { x1, y1 }, - { x1, y2 }, - { x2, y4 }, - { x2, y3 } - }; - - painter.drawPolygon(points, 4); + zeroPos = ((ch == 0) ? 1 : 3) * height() / 4; + ratio = float(height() / 8) / 1000; + draw = true; } - else if(ch == 1 && showTwoChannels) + + if(draw) { - float y1 = 3*height()/4 - m_data[i] * (height() / 8) / 1000; - float y2 = 3*height()/4 - m_data[i + 1] * (height() / 8) / 1000; - float y3 = 3*height()/4 - m_data[i + m_channels * 3] * (height() / 8) / 1000; - float y4 = 3*height()/4 - m_data[i + m_channels * 3 + 1] * (height() / 8) / 1000; + float y1 = zeroPos - m_data[i] * ratio; + float y2 = zeroPos - m_data[i + 1] * ratio; + float y3 = zeroPos - m_data[i + m_channels * 3] * ratio; + float y4 = zeroPos - m_data[i + m_channels * 3 + 1] * ratio; QPointF points[4] = { { x1, y1 }, @@ -288,45 +270,27 @@ void QSUIWaveformSeekBar::drawWaveform() int ch = (i / 3) % m_channels; float x1 = step * (i / m_channels / 3); float x2 = step * (i / m_channels / 3 + 1); - + bool draw = false; + float zeroPos = 0, ratio = 0; if(ch == 0 && (m_channels == 1 || !showTwoChannels)) { - float y1 = height()/2 - m_data[i + 2] * (height() / 4) / 1000; - float y2 = height()/2 + m_data[i + 2] * (height() / 4) / 1000; - float y3 = height()/2 - m_data[i + 5] * (height() / 4) / 1000; - float y4 = height()/2 + m_data[i + 5] * (height() / 4) / 1000; - - QPointF points[4] = { - { x1, y1 }, - { x1, y2 }, - { x2, y4 }, - { x2, y3 } - }; - - painter.drawPolygon(points, 4); + zeroPos = height() / 2; + ratio = float(height() / 4) / 1000; + draw = true; } - else if(ch == 0) + else if(ch == 0 || (ch == 1 && showTwoChannels)) { - float y1 = height()/4 - m_data[i + 2] * (height() / 8) / 1000; - float y2 = height()/4 + m_data[i + 2] * (height() / 8) / 1000; - float y3 = height()/4 - m_data[i + m_channels * 3 + 2] * (height() / 8) / 1000; - float y4 = height()/4 + m_data[i + m_channels * 3 + 2] * (height() / 8) / 1000; - - QPointF points[4] = { - { x1, y1 }, - { x1, y2 }, - { x2, y4 }, - { x2, y3 } - }; - - painter.drawPolygon(points, 4); + zeroPos = ((ch == 0) ? 1 : 3) * height() / 4; + ratio = float(height() / 8) / 1000; + draw = true; } - else if(ch == 1 && showTwoChannels) + + if(draw) { - float y1 = 3*height()/4 - m_data[i + 2] * (height() / 8) / 1000; - float y2 = 3*height()/4 + m_data[i + 2] * (height() / 8) / 1000; - float y3 = 3*height()/4 - m_data[i + m_channels * 3 + 2] * (height() / 8) / 1000; - float y4 = 3*height()/4 + m_data[i + m_channels * 3 + 2] * (height() / 8) / 1000; + float y1 = zeroPos + m_data[i + 2] * ratio; + float y2 = zeroPos - m_data[i + 2] * ratio; + float y3 = zeroPos + m_data[i + m_channels * 3 + 2] * ratio; + float y4 = zeroPos - m_data[i + m_channels * 3 + 2] * ratio; QPointF points[4] = { { x1, y1 }, |
