mrDarker
2025-08-22 785725de6f33118f29fbf4affd524267b7c4d5b6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#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<CDefect_Info>* vecPreDefectList);
    int            ExtractDefect_Notch(DimensionDir emDim, int iCam, int iScan, int nNotchDefectAreaIdx, std::vector<CDefect_Info>* vecPreDefectList);
    int            ExtractDefect_NotchBroken(DimensionDir emDim, int iCam, int iScan, CDefect_Info defect);
    int            ExtractDefect_UserDefect(DimensionDir emDim, int iCam, int iScan, int nUserDefectAreaIdx, std::vector<CDefect_Info>* 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;
 
};