audio_render.cpp 753 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "audio_render.h"
  2. #include <QPainter>
  3. AudioRender::AudioRender(QLabel* parent)
  4. : QLabel(parent)
  5. {
  6. }
  7. void AudioRender::ShowVolume(float volume)
  8. {
  9. float val = 0;
  10. if (volume < 0) {
  11. volume = -volume;
  12. }
  13. if (volume > 0.001) {
  14. val = (20.0f * log10(volume) + 60.0f) / 60.0f;
  15. }
  16. float diff = val - _lastShowVal;
  17. if (diff < -0.015f) {
  18. diff = -0.015f;
  19. }
  20. _lastShowVal += diff;
  21. }
  22. void AudioRender::paintEvent(QPaintEvent* event)
  23. {
  24. int val = _lastShowVal * width();
  25. QPainter painter(this);
  26. QPen pen(Qt::green, height());
  27. painter.setPen(pen);
  28. painter.drawLine(0, 0, val, 0);
  29. pen.setColor(Qt::gray);
  30. painter.setPen(pen);
  31. painter.drawLine(val, 0, width(), 0);
  32. }