www.pudn.com > pdf417.rar > StdDataObject.h


// StdDataObject.h: interface for the CStdDataObject class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#if !defined(AFX_STDDATAOBJECT_H__3507ABF6_3F26_11D5_B583_B75AE997F823__INCLUDED_) 
#define AFX_STDDATAOBJECT_H__3507ABF6_3F26_11D5_B583_B75AE997F823__INCLUDED_ 
 
#if _MSC_VER > 1000 
#pragma once 
#endif // _MSC_VER > 1000 
 
#include "BmpObject.h" 
#include  
 
class CStdDataObject : public CObject   
{ 
public: 
	CStdDataObject(); 
	virtual ~CStdDataObject(); 
	//判断一串数据是否符合条码格式 
	BOOL IsValidData(UCHAR* pStr,UINT len,int CurrentRow);	 
	//判断两个区域是否为条码起始/结束符 
	BOOL IsMatch(Region reg1,Region reg2); 
	//判断一区域是否为条码结束符 
	BOOL IsBarTail(Region* pReg); 
	//得到数据并化成位信息存入DataArray中 
	UINT GetLineDataB(UINT xa, UINT ya, UINT xb, UINT yb, UCHAR* BWArray); 
	//判断一区域是否为条码起始符 
	BOOL IsBarHeader(Region* pReg); 
	//判断一区域是否为矩形 
	BOOL IsRect(Region r); 
	//对条码像素点阵进行处理 
	BOOL Act(); 
	//遍历由(xa,ya)到(xb,yb)的直线,并把点数据存入PointArray中 
	UINT GetLineDataA(UINT xa, UINT ya, UINT xb, UINT yb, UPOINT* PointArray); 
	//用递归算法实现穷尽一个区域 
	void EmptyRegionInXY(UINT x, UINT y, Region* pRegion); 
	//在条码像素点阵数据中查找所有匹配pCell的区域,并存入类的RegionList中 
	void FindAllCell(Cell* pCell,CList& RegionList); 
	//转换像素点为白色 
	void Whitten(UINT x, UINT y); 
	//判断像素点是否为黑色 
	BOOL StdIsBlack(UINT x, UINT y); 
	//对画点方式来绘制像素点阵中数据 
	//从图形对象pObj中得到数据,并存入对象的pArrayMemory中 
	void GetStdData(CBmpObject* pObj); 
	//在数据压缩模式下把条码数据转换成标准数据 
	void NumberModeTrans(UINT* sourcedata,char* targetdata,int num); 
	//在字符模式下把条码数据转换成标准数据 
	int TextModeTrans(int data,int *cursubmode,int *cursubchgmode); 
	//在条码数据C簇表中查找字符串str,并返回对应的码字 
	int FindData(char* str,int c,UINT c0[][2],UINT c3[][2],UINT c6[][2]); 
	//用于判断code所属的条码类别 
	int TransData(int code); 
	//转换条空数据到417格式 
	BOOL BarTo417Data(void); 
	//转换417格式到最终数据 
	BOOL D417ToEnd(); 
	void ByteModeTrans(UINT* sourcedata,UCHAR* targetdata,int len); 
	BOOL GetDataFromBmpfile(CString filename); 
private: 
	UINT mleft,mtop,mright,mroot; 
public: 
	int Height; 
	int Width; 
	UINT dBytesPerLine;	//每行数据包括的字节数 
	UCHAR* pEndData; 
	UINT* p417Data;	//用于存放条码数据 
	CListBarDataList;	//模块数据列表 
	UCHAR* pArrayMemory;	//点阵内存区域 
	UINT dImageHeight;	//图像高度 
	UINT dImageWidth;	//图像宽度 
}; 
 
#endif // !defined(AFX_STDDATAOBJECT_H__3507ABF6_3F26_11D5_B583_B75AE997F823__INCLUDED_)