⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stddataobject.h

📁 对位图文件中的点阵数据进行模式判别,找出其中的完整PDF417条码,并按照GB/T 17172-1997规范来解释读出对应的数据.
💻 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 <afxtempl.h>

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<struct _Region,struct _Region &>& 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<UCHAR*,UCHAR*>BarDataList;	//模块数据列表
	UCHAR* pArrayMemory;	//点阵内存区域
	UINT dImageHeight;	//图像高度
	UINT dImageWidth;	//图像宽度
};

#endif // !defined(AFX_STDDATAOBJECT_H__3507ABF6_3F26_11D5_B583_B75AE997F823__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -