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" #includeclass 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; //用于存放条码数据 CList BarDataList; //模块数据列表 UCHAR* pArrayMemory; //点阵内存区域 UINT dImageHeight; //图像高度 UINT dImageWidth; //图像宽度 }; #endif // !defined(AFX_STDDATAOBJECT_H__3507ABF6_3F26_11D5_B583_B75AE997F823__INCLUDED_)