#pragma once class CPitchStat; class CDefectStorage; class CMosisAssem; class CMosisBuffer; class CInspectParam; class CAssemControl; struct SReviewDefectFindResult { SReviewDefectFindResult() { nResultCode = -1; sDefectPeak = 0; nDefectRScale = 0; nDefectArea = 0; nDefectPosX = 0; nDefectPosY = 0; rtDefectRect = CRect(0,0,0,0); dDefectPitch = 0.0; } int nResultCode; short sDefectPeak; int nDefectRScale; int nDefectArea; int nDefectPosX; int nDefectPosY; CRect rtDefectRect; double dDefectPitch; }; struct SReviewDefectFindParam { SReviewDefectFindParam() { nDirection = 0; dPitchX = 0.0; dPitchY = 0.0; dResolutionX = 0.0; dResolutionY = 0.0; nAutoPitchRange = 0; nThreshold = 30; nThreshold2 = 50; nMergePixel = 8; } int nDirection; double dPitchX; double dPitchY; double dResolutionX; double dResolutionY; int nAutoPitchRange; int nThreshold; int nThreshold2; int nMergePixel; }; class AFX_EXT_CLASS CReviewDefectFinder { public: CReviewDefectFinder(void); virtual ~CReviewDefectFinder(void); void InitReviewDefectFinder(); BOOL FindDefect(BYTE* pImageData, int nWidth, int nHeight, double& dPitch, int nAutoPitchRange, int nThreshold, POINT& ptDefectPos, CRect& rtDefectPos); BOOL FindDefect(BYTE* pImageData, int nWidth, int nHeight, const SReviewDefectFindParam& findParam, SReviewDefectFindResult& findResult); protected: CPitchStat* m_pPitchStat; CDefectStorage* m_pDefectStorage; CMosisBuffer* m_pImageBuffer; CInspectParam* m_pConvParam; CAssemControl* m_pAssemControl; };