audio_effect_gl.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // ***********************************************************/
  2. // audio_effect_gl.cpp
  3. //
  4. // Copy Right @ Steven Huang. All rights reserved.
  5. //
  6. // audio visualization OpenGL window
  7. // ***********************************************************/
  8. #include <QApplication>
  9. #include <QDebug>
  10. #include <QPainter>
  11. #include "audio_effect_gl.h"
  12. AudioEffectGL::AudioEffectGL(QWidget* parent) : QOpenGLWidget(parent)
  13. {
  14. auto flags = windowFlags();
  15. flags |= Qt::Window;
  16. flags |= Qt::WindowStaysOnTopHint;
  17. flags &= (~Qt::WindowContextHelpButtonHint);
  18. // flags &= (~Qt::WindowMinMaxButtonsHint);
  19. setWindowFlags(flags);
  20. int width = 480;
  21. int height = 280;
  22. // setFixedSize(width, height);
  23. setMinimumWidth(width);
  24. setMinimumHeight(height);
  25. setWindowTitle("Audio visualization");
  26. setAutoFillBackground(true);
  27. m_img = QImage(":/images/res/bkground.png");
  28. }
  29. void AudioEffectGL::closeEvent(QCloseEvent* event)
  30. {
  31. hide();
  32. emit hiden();
  33. event->accept();
  34. }
  35. void AudioEffectGL::paintEvent(QPaintEvent* event)
  36. {
  37. QPainter painter;
  38. painter.begin(this);
  39. painter.setRenderHint(QPainter::Antialiasing);
  40. #if 0
  41. painter.drawImage(rect(), m_img);
  42. #else
  43. m_helper.paint(&painter, event, m_data);
  44. #endif
  45. painter.end();
  46. }
  47. void AudioEffectGL::keyPressEvent(QKeyEvent* event)
  48. {
  49. if (event->key() == Qt::Key_Escape)
  50. {
  51. hide();
  52. event->accept();
  53. }
  54. else
  55. {
  56. QOpenGLWidget::keyPressEvent(event);
  57. }
  58. }
  59. void AudioEffectGL::paint_data(const AudioData& data)
  60. {
  61. m_data = data;
  62. // qDebug() << "p=" << &data << "datalen:" << data.len;
  63. repaint();
  64. }