mrDarker
2025-08-22 04d89bc9216553adcd0df87985a7665882924093
EdgeInspector_App/Data/DefectStorage.cpp
@@ -1,4 +1,4 @@
#include "StdAfx.h"
#include "StdAfx.h"
#include "DefectStorage.h"
#include "SISBuffer.h"
#include "BlobStorage.h"
@@ -46,7 +46,7 @@
      delete[] m_pDefect;
   }
   // 16俺狼 咯盒阑 敌促..恐? 郴干..
   // 16俺狼 咯盒阑 敌促..恐? 郴干..
   int   DefectSapce= maxDefect+ 16;
   m_pDefect= new CDefect[DefectSapce];
@@ -231,6 +231,49 @@
   return m_nDefect;
}
int   CDefectControl::ExtractDefect_NotchBroken(DimensionDir emDim, int iCam, int iScan, CDefect_Info defect)
{
   if (m_pGrabber == NULL) {
      return m_nDefect;
   }
   CSingleLock MyLock(&m_csDefect);
   MyLock.Lock();
   if (m_nDefect >= m_maxDefect) {
      MyLock.Unlock();
      return m_nDefect;
   }
   CDefect* pDefect = GetDefect(m_nDefect);
   if (pDefect == NULL) {
      MyLock.Unlock();
      return m_nDefect;
   }
   pDefect->Reset();
   pDefect->m_bJudge_NG = TRUE;
   pDefect->m_DefectInfo = defect;
   int nXStart = pDefect->m_DefectInfo.m_ptDefectPos_pxl.x - (DEFECTIMAGE_WIDTH / 2);
   int nYStart = pDefect->m_DefectInfo.m_ptDefectPos_pxl.y - (DEFECTIMAGE_HEIGHT / 2);
   int nXSize = DEFECTIMAGE_WIDTH;
   int nYSize = DEFECTIMAGE_HEIGHT;
   //int nXStart = pDefect->m_DefectInfo.m_rtDefectPos_pxl.left;
   //int nYStart = pDefect->m_DefectInfo.m_rtDefectPos_pxl.top;
   //int nXSize = pDefect->m_DefectInfo.m_rtDefectPos_pxl.Width();
   //int nYSize = pDefect->m_DefectInfo.m_rtDefectPos_pxl.Height();
   if (m_pGrabber->GetSmallImage(iScan, pDefect->m_Image, nXStart, nYStart, nXSize, nYSize, FALSE) == FALSE) {
      MyLock.Unlock();
      return m_nDefect;
   }
   m_nDefect++;
   MyLock.Unlock();
   return m_nDefect;
}
int CDefectControl::ExtractDefect_UserDefect(DimensionDir emDim, int iCam, int iScan, int nUserDefectAreaIdx, std::vector<CDefect_Info>* vecPreDefectList)
{
   if(m_pGrabber == NULL)
@@ -309,6 +352,8 @@
   pDefect->m_bJudge_NG = TRUE;
   pDefect->m_dSizeX_um = dMeasureResult_um;
   pDefect->m_dSizeY_um = dMeasureDiff_um;
   pDefect->m_dChamfer_um = dMeasureResult_um;
   pDefect->m_dChamferOff_um = dMeasureDiff_um;
   pDefect->m_DefectInfo = defect;
   if(m_pGrabber->GetSmallImage(iScan,pDefect->m_Image