#pragma once
#include <afxmt.h>


//#define ECG_I_LEAD		0x00
//#define ECG_II_LEAD		0x01
//#define ECG_III_LEAD	0x02
//#define ECG_AVF_LEAD	0x03
//#define ECG_AVL_LEAD	0x04
//#define ECG_AVR_LEAD	0x05
//#define ECG_V1_LEAD		0x06


#define ECG_NO_GRID		0x00
#define ECG_GRID		0x10

#define ECG_COLOR_GREEN			0x000
#define ECG_COLOR_YELLOW		0x100
#define ECG_COLOR_RED			0x200

#define	ECG_WAVE_BUFF_LENGTH	(256*32)
// CECGWave

class CECGWave : public CStatic
{
	DECLARE_DYNAMIC(CECGWave)

public:
	static INT m_i32NormalWidth, m_i32NormalHeight;
	static INT m_i32BigWidth, m_i32BigHeight;
	static INT m_i32ECGWidth, m_i32ECGHeight;
	static INT m_i32TrendWidth, m_i32TrendHeight;

	static INT m_i32NormalX, m_i32NormalY;
	static INT m_i32BigX, m_i32BigY;
	static INT m_i32ECGX, m_i32ECGY;
	static INT m_i32TrendX, m_i32TrendY;

	CECGWave(int Width, int Height, int LeadType);
	virtual ~CECGWave();
	//设置波形的速度
	void Set_Speed(int speeed);
	//设置波形的增益，并画出比例尺
    void Set_Gain(int gain);
    //设置在屏幕上单位长度的像素点个数
    void Set_UnitLength_Pixel(int px);
    //设置波形的单位长度的数字量
    void Set_UnitLength_Value(int Value);
    //向缓冲区加入心电波形
    void Add_WaveDate(int date);
    //清除心电波形缓冲区的数据
    void Clear_WaveDate();
	//显示导联类型
	void Draw_LeadType();
	int Drawscale();
	//绘制心电波形
	void Draw_Wave();
	void Draw_Grid();
	//波形显示区域 完全擦除
	void Erase();
	void Erase_Wave(int x);
	//复位 波形缓冲区的数据
	int Reset_WaveDataBuff();
	//波形数据 拷贝 到 缓冲区中
	void copy_data(INT *buf, int length);
	void copy_data(CECGWave & ECGWave);
	//设置导联 类型
	void set_lead_type(int LeadType);
	void set_pace_show(int data);
	//设置 波形显示的模式 ，即波形显示区域的大小
	void Set_Style(INT style);
	//设置 是否 冻结 波形
	void Set_Freeze(INT f);
protected:
	afx_msg void OnPaint();
	afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
	DECLARE_MESSAGE_MAP()

private:
	INT  m_i32Width, m_i32Height;
	INT m_i32Style;

	CRect m_rectCtrl;			// 控件区域
	CRect m_rectValue;			// 显示数值区域
	CDC dcMem; //用于缓冲作图的内存DC 
	CDC dcMemGrid; //用于缓冲作图的内存DC 
	CBitmap bmp; //内存中承载临时图象的位图
	CBitmap bmpGrid; //内存中承载临时图象的位图
	int m_i32Speed;
	//波形增益
	int m_i32Gain;

	int m_i32LeadType;
	int m_i32Grid;
	int m_u8PaceFalg;
	//在屏幕上单位长度的像素点个数
	int UnitLength_Pixel;
	//波形的单位长度的数字量
	int UnitLength_Value;
	int m_i32Freeze;
	//上次画图的ｘｙ轴坐标
	int m_i32LastX, m_i32LastY;
	int m_i32EraseFlag;

	//波形的保存的缓存区
	int *m_i32WaveDate;
	int m_i32WaveDateW, m_i32WaveDateR, m_i32WaveDateLength;

	CCriticalSection m_CSWaveData;
	int m_u16TempX,m_i32EraseLast;
	
	CPen *penECGLine;
	CPen *penErase;
	CPen *penGrid;
	//CButton 
};


