audio_effect_helper.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #pragma once
  2. #include <QBrush>
  3. #include <QFont>
  4. #include <QPen>
  5. #include <QWidget>
  6. #include "audio_play_thread.h"
  7. class BarHelper
  8. {
  9. public:
  10. explicit BarHelper();
  11. virtual ~BarHelper() {};
  12. public:
  13. enum GraphicType { e_GtBar, e_GtLine, e_GtPie };
  14. enum VisualType { e_VtSampleing, e_VtFrequency };
  15. typedef struct VisualFormat
  16. {
  17. GraphicType gType;
  18. VisualType vType;
  19. VisualFormat()
  20. : gType(e_GtBar)
  21. , vType(e_VtSampleing)
  22. {}
  23. } VisualFormat;
  24. public:
  25. void paint(QPainter* painter, QPaintEvent* event, const AudioData& data);
  26. void draw_data_style(QPainter* painter, const QRect& rt, const AudioData& data);
  27. void set_draw_fmt(const VisualFormat& fmt) { m_visualFmt = fmt; }
  28. private:
  29. void get_data(const AudioData& data, std::vector<int>& v, bool left = true) const;
  30. void normal_data(std::vector<int>& v, const int height);
  31. void normal_overzero(std::vector<int>& v);
  32. void normal_audio_to_size(std::vector<int>& v, const int size);
  33. void normal_to_size(std::vector<int>& v, const int size);
  34. void data_sample_old(std::vector<int>& v, const uint32_t num); //wav sampling
  35. void data_sample(std::vector<int>& v, const uint32_t num); //wav sampling
  36. void binary_data(std::vector<int>& v);
  37. void data_frequency(std::vector<int>& v, const uint32_t num);
  38. void draw_data_bar(QPainter* painter, std::vector<int>& data, int n, int w, int h, int h_inter);
  39. void draw_data_line(QPainter* painter, std::vector<int>& data, int n, int w, int h, int h_inter);
  40. void draw_data_arc(QPainter* painter, std::vector<int>& data, int n, int w, int h);
  41. void draw_data_polygon(
  42. QPainter* painter, std::vector<int>& data, int n, int w, int h, int r_offset = 50);
  43. private:
  44. QBrush m_background;
  45. QBrush m_brush;
  46. QFont m_textFont;
  47. QPen m_pen;
  48. QPen m_textPen;
  49. AudioFrameFmt m_datafmt;
  50. VisualFormat m_visualFmt;
  51. };