PeakMeterCtrl.h
上传用户:amei960
上传日期:2007-02-05
资源大小:143k
文件大小:4k
源码类别:

Audio

开发平台:

Visual C++

  1. #if !defined(AFX_PEAKMETERCTRL_H__1A889652_9CAB_11D5_9075_000086436E72__INCLUDED_)
  2. #define AFX_PEAKMETERCTRL_H__1A889652_9CAB_11D5_9075_000086436E72__INCLUDED_
  3. #include <vector>
  4. #if _MSC_VER > 1000
  5. #pragma once
  6. #endif // _MSC_VER > 1000
  7. // PeakMeterCtrl.h : header file
  8. //
  9. #define HORZ_DEFAULT 8
  10. #define VERT_DEFAULT 8
  11. #define BAND_DEFAULT 8
  12. #define LEDS_DEFAULT 8
  13. #define BAND_PERCENT 10 // 10% of Max Range (Auto Decrease)
  14. #define GRID_INCREASEBY 15 // Increase Grid color based on Background color
  15. #define FALL_INCREASEBY 60 // Increase Falloff color based on Background
  16. #define DELAY_10MS 10
  17. #define DEFAULT_SPEED 10
  18. // Peak Meter Control styles
  19. #define PMS_HORIZONTAL 0x0000 // Horizontal band
  20. #define PMS_VERTICAL 0x0001 // Vertical band
  21. // Peak Meter data
  22. struct PeakMeterData {
  23. public:
  24. int  nValue;
  25. int  nFalloff;
  26. int  nPeak;
  27. PeakMeterData() :
  28. nValue(0), nFalloff(0), nPeak(0)
  29. {
  30. }
  31. ~PeakMeterData() { }
  32. PeakMeterData& Copy(const PeakMeterData& pm);
  33. PeakMeterData& operator=(const PeakMeterData& pm) { return Copy( pm ); }
  34. bool IsEqual(const PeakMeterData& pm);
  35. bool IsGreater(const PeakMeterData& pm);
  36. bool IsLower(const PeakMeterData& pm);
  37. bool operator==(const PeakMeterData& pm) { return IsEqual( pm ); }
  38. bool operator!=(const PeakMeterData& pm) { return !IsEqual( pm ); }
  39. bool operator<(const PeakMeterData& pm)  { return IsLower( pm ); }
  40. bool operator>(const PeakMeterData& pm)  { return IsGreater( pm ); }
  41. bool operator<=(const PeakMeterData& pm) { return !IsGreater( pm ); }
  42. bool operator>=(const PeakMeterData& pm) { return !IsLower( pm ); }
  43. };
  44. typedef std::vector<PeakMeterData> Vector_MeterData;
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CPeakMeterCtrl window
  47. class CPeakMeterCtrl : public CWnd
  48. {
  49. // Construction
  50. public:
  51. CPeakMeterCtrl();
  52. // Attributes
  53. public:
  54. BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL);
  55. void SetBackgroundColor(COLORREF colorBgnd);
  56. void SetMeterBands(int nNumBands, int nLedBands);
  57. void SetBandsColor(COLORREF colorNormal, COLORREF colorMedium, COLORREF colorHigh);
  58. void SetFalloffDelay(int nSpeed);
  59. void SetFalloffEffect(bool bFalloffEffect);
  60. bool GetFalloffEffect() const;
  61. void ShowGrid(bool bShowGrid);
  62. bool IsGridVisible() const;
  63. void SetRangeValue(int nMin, int nMed, int nMax);
  64. void GetRangeValue(int* lpiMin, int* lpiMed, int* lpiMax) const;
  65. bool SetData(const int ArrayValue[], int nOffset, int nSize);
  66. void Refresh();
  67. bool IsStarted() const;
  68. bool Start(UINT uDelay);
  69. bool Stop();
  70. // Operations
  71. public:
  72. // Overrides
  73. // ClassWizard generated virtual function overrides
  74. //{{AFX_VIRTUAL(CPeakMeterCtrl)
  75. protected:
  76. virtual void PreSubclassWindow();
  77. //}}AFX_VIRTUAL
  78. // Implementation
  79. public:
  80. virtual ~CPeakMeterCtrl();
  81. // Generated message map functions
  82. protected:
  83. //{{AFX_MSG(CPeakMeterCtrl)
  84. afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
  85. afx_msg void OnDestroy();
  86. afx_msg void OnPaint();
  87. //}}AFX_MSG
  88. DECLARE_MESSAGE_MAP()
  89. protected:
  90. void ResetControl();
  91. void InitData();
  92. void DrawVertBand(CDC* pDC, CRect& rcClient);
  93. void DrawHorzBand(CDC* pDC, CRect& rcClient);
  94. // Peak Meter animation
  95. virtual void DoTimerProcessing(UINT uID);
  96. COLORREF m_clrBackground; // Control background color
  97. COLORREF m_clrNormal; // Normal-range value band color
  98. COLORREF m_clrMedium; // Medium-range value band color
  99. COLORREF m_clrHigh; // High-range value band color
  100. int  m_nMinValue; // Minimum value
  101. int  m_nMedValue; // Medium value
  102. int  m_nMaxValue; // Maximum value
  103. int  m_nNumBands; // number of bands
  104. int  m_nLedBands; // number of leds per band
  105. int  m_nSpeed; // Falloff Speed
  106. bool  m_bShowGrid; // Show Tick grid
  107. bool  m_bShowFalloff; // Show Falloff
  108. UINT  m_uTimerID; // timer identifier
  109. UINT  m_nDelay; // Saved delay value
  110. Vector_MeterData m_MeterData;
  111. private:
  112. static void CALLBACK PeakTimerProc(UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
  113. };
  114. /////////////////////////////////////////////////////////////////////////////
  115. //{{AFX_INSERT_LOCATION}}
  116. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  117. #endif // !defined(AFX_PEAKMETERCTRL_H__1A889652_9CAB_11D5_9075_000086436E72__INCLUDED_)