PlatformView.h
上传用户:goak128
上传日期:2013-07-17
资源大小:155k
文件大小:5k
- // PlatformView.h : CPlatformView 类的接口
- //
- #pragma once
- #include "afxwin.h"
- #include "wavedisplay.h"
- #include "WaveConvertor.h"
- #include "FileWaveOut.h"
- #include "BufferWaveOut.h"
- #include "WaveConvertor.h"
- #include "SettingDlg.h"
- #include "SmallFileWaveOut.h"
- #include "LargeFileWaveOut.h"
- #include "Speech.h"
- #include "SectionDlg.h"
- #include "ClusterDlg.h"
- #include "AddModelDlg.h"
- #include "TrainModelDlg.h"
- #include "DemoHMMDlg.h"
- //////////////////////////////////////////////////////////////////////////
- // 定义显示类型
- typedef enum _displayType
- {
- DisplayWave = 0, // 显示时域波形
- DisplayZero, // 显示短时平均过零率
- DisplayPower, // 显示短时能量
- DisplayVibration, // 显示平均振幅
- DisplaySpectrum, // 显示功率谱
- DisplayLogSpectrum, // 显示对数功率谱
- DisplayCepstrum, // 显示倒谱
- DisplayAfterWindow, // 显示加窗后的时域波形
- DisplayBeforeWindow // 显示加窗前的时域波形
- } DisplayType;
- class CPlatformView : public CFormView
- {
- protected: // 仅从序列化创建
- CPlatformView();
- DECLARE_DYNCREATE(CPlatformView)
- public:
- enum{ IDD = IDD_PLATFORM_FORM };
- // 属性
- public:
- CPlatformDoc* GetDocument() const;
- // 操作
- public:
- // 重写
- public:
- virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
- protected:
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
- virtual void OnInitialUpdate(); // 构造后第一次调用
- // 实现
- public:
- virtual ~CPlatformView();
- #ifdef _DEBUG
- virtual void AssertValid() const;
- virtual void Dump(CDumpContext& dc) const;
- #endif
- protected:
- // 生成的消息映射函数
- protected:
- DECLARE_MESSAGE_MAP()
- public:
- //////////////////////////////////////////////////////////////////////////
- // 更改显示区域大小
- afx_msg void OnSize(UINT nType, int cx, int cy);
- public:
- afx_msg void OnFileOpen();
- afx_msg void OnBnClickedControlLoad();
- private:
- // 波形显示区域
- CWaveDisplay m_ctlDisplay;
- // 按帧播放文件
- CSmallFileWaveOut m_fileWaveOut;
- // 显示方式类型
- DisplayType m_displayType;
- // 显示参数设定窗口
- CSettingDlg m_dlgSetting;
- // 端点检测显示窗口
- CSectionDlg m_dlgSection;
- // VQ显示窗口
- CClusterDlg m_dlgCluster;
- // 当前正在分析的文件路径
- CString m_strWaveFile;
-
- private:
- // 每帧所包含样本数
- UINT m_nFrameSize;
- // 当前正在播放的帧编号
- UINT m_nCurrentFrame;
- // 总帧数
- UINT m_nTotalFrames;
- public:
- afx_msg void OnDisplayOption();
- afx_msg void OnBnClickedControlPrevious();
- afx_msg void OnBnClickedControlNext();
- afx_msg void OnBnClickedControlStop();
- afx_msg void OnBnClickedControlPlay();
- afx_msg void OnDisplayWave();
- afx_msg void OnDisplayZero();
- afx_msg void OnDisplayPower();
- afx_msg void OnDisplayVibration();
- afx_msg void OnUpdateDisplayWave(CCmdUI *pCmdUI);
- afx_msg void OnUpdateDisplayZero(CCmdUI *pCmdUI);
- afx_msg void OnUpdateDisplayPower(CCmdUI *pCmdUI);
- afx_msg void OnUpdateDisplayVibration(CCmdUI *pCmdUI);
- private:
- //////////////////////////////////////////////////////////////////////////
- // 是否允许使用wav控制功能
- void EnableControl(BOOL bEnabled = TRUE);
- //////////////////////////////////////////////////////////////////////////
- // 按帧查看是否可用
- void EnableFrameControl(
- BOOL bPre = TRUE, // 上一帧
- BOOL bNext = TRUE // 下一帧
- );
- //////////////////////////////////////////////////////////////////////////
- // 显示指定帧或全部裸音频数据的相应波形
- void UpdateDisplay(
- BOOL bDisplayByFrame = FALSE, // 是否按帧显示
- unsigned int nFromFrame = 0, // 起始帧
- unsigned int nToFrame = 0 // 结束帧
- );
- //////////////////////////////////////////////////////////////////////////
- // 更新帧数信息
- void UpdateFrameControl(
- BOOL bReset = FALSE // 是否重新计算帧数
- );
- public:
- afx_msg void OnDisplayZoomin();
- afx_msg void OnDisplayZoomout();
- afx_msg void OnDisplaySpectrum();
- afx_msg void OnUpdateDisplaySpectrum(CCmdUI *pCmdUI);
- afx_msg void OnDisplayLogspectrum();
- afx_msg void OnUpdateDisplayLogspectrum(CCmdUI *pCmdUI);
- afx_msg void OnDisplayCepstrum();
- afx_msg void OnUpdateDisplayCepstrum(CCmdUI *pCmdUI);
- afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
- afx_msg void OnBnClickedControlDisplaywaveAll();
- private:
- // 显示波形的相关信息
- CString m_strResult;
- public:
- // 显示波形的相应信息
- void UpdateResult(double* pData, unsigned int nCount, DisplayType disType);
- afx_msg void OnSectionEnd();
- afx_msg void OnSectionSy();
- // 显示VQ结果
- afx_msg void OnVqKmeans();
- // 添加HMM模型
- afx_msg void OnHmmAddmodel();
- afx_msg void OnHmmTrainmodel();
- afx_msg void OnHmmDemo();
- afx_msg void OnDisplayAfterwindow();
- afx_msg void OnUpdateDisplayBeforewindow(CCmdUI *pCmdUI);
- afx_msg void OnUpdateDisplayAfterwindow(CCmdUI *pCmdUI);
- afx_msg void OnDisplayBeforewindow();
- };
- #ifndef _DEBUG // PlatformView.cpp 的调试版本
- inline CPlatformDoc* CPlatformView::GetDocument() const
- { return reinterpret_cast<CPlatformDoc*>(m_pDocument); }
- #endif