#pragma once #include "AssemDefect.h" #include "AssemParam.h" #include "Global_Define.h" #include "GlassRecipe.h" #include "GrabberControl.h" #include "HardwareSettings.h" #include "Defect.h" class CDefectStorage { public: CDefectStorage(void); virtual ~CDefectStorage(void); public: int InitDefectStorage(int maxDefect= 1000); int IncreaseDefectCount() {++m_nDefect; return m_nDefect;} void ResetDefectStorage(); int GetDefectCount() {return m_nDefect;} CDefect* GetDefect(int i= 0) {return m_pDefect+ i;} protected: CCriticalSection m_csDefect; protected: int m_nDefect; CDefect* m_pDefect; int m_maxDefect; int m_nDefectSpace; }; class CDefectControl : public CDefectStorage { public:// Defect 傈价何 眠啊. CDefectControl(); virtual ~CDefectControl(); void SetGrabber(CGrabberControl *pGrabber) {m_pGrabber=pGrabber;} void SetHWRecipe(CHardwareSettings *pHW) {m_pHWRecipe=pHW;} int ExtractDefect(DimensionDir emDim, int iCam, int iScan, CDefect_Info preDefectList); int ExtractDefect_Side(DimensionDir emDim, int iCam, int iScan, std::vector* vecPreDefectList); int ExtractDefect_Notch(DimensionDir emDim, int iCam, int iScan, int nNotchDefectAreaIdx, std::vector* vecPreDefectList); int ExtractDefect_UserDefect(DimensionDir emDim, int iCam, int iScan, int nUserDefectAreaIdx, std::vector* vecPreDefectList); int ExtractDefect_Measure(DimensionDir emDim, int iCam, int iScan, CDefect_Info defect, double dMeasureResult_um, double dMeasureDiff_um); int ExtractDefect_Mark(DimensionDir emDim, int iCam, int iScan, CDefect_Info defect); int ExtractDefect_CorChamfer(DimensionDir emDim, int iCam, int iScan, DefectLocation eDefect, CDefect_Info ptDefect, int nProfileIndex); //2024.6.12 void ResetDefectControl(); int CheckDefectCount(); int IncreaseDefectCount(){++m_nDefect; return m_nDefect;} protected: CGrabberControl* m_pGrabber; CHardwareSettings* m_pHWRecipe; };