SDC C-Project CF Review 프로그램
LYW
2021-07-27 281a73558e8d437fc778b390281560fa2e7a0e5e
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#pragma once
 
#include "MosisBuffer/MosisBuffer.h"
#include "MosisAssem/AssemDefect.h"
 
#include "MosisStorage.h"
 
#define MAX_ZONE_NUM    16
// »þÇÁ°¡ ¾Æ´Ñ °æ¿ì ¾Æ·¡ define ÇØÁ¦ ÇؾߠÇÑ´Ù.
//#define ZONE_SHARP_CS                15    // »þÇÁºz 15¹ø Á¸À» CS ZoneÀ¸·Î »ç¿ë, ºñÁֱ⠿µ¿ª¿¡¼­´Â cs °áÇÔÀº ³¯·Á ¹ö¸°´Ù.
#define ZONE_SHARP_CS_FILTER        15 // ºñÁֱ⠿µ¿ª¿¡¼­´Â cs °áÇÔÀº ³¯·Á ¹ö¸°´Ù.
 
#define CUTOFF_BLACK_ONLY    1
#define CUTOFF_WHITE_ONLY    2
#define CUTOFF_ALL            3
 
// Zone Threshold Type
enum ZoneType{    ZTYPE_BASE        // ±âº» Å¸ÀÔ, Zone ±¸ºÐ¸¸ °¡´É, Threshold´Â Àü¿ª°ª, ´õÀÌ»ó »ç¿ëÇÏÁö ¾ÊÀ½.
            , ZTYPE_DTH            // Zoneº° Dynamic Threshold »ç¿ë, Zone Threshold(=Zone Dynamic Threshold)·Î °Ë»ç.
            , ZTYPE_FILTER_BW    // Black, White °³º° Threshold °¡´ÉÇÑ ¹öÀü(ÇÊÅ͸µ¿¡¸¸ Àû¿ë)
            , ZTYPE_MPITCH        // CS󷳠ƯÁ¤ Á¸¸¸ ÀåÁÖ±â·Î Çü¼ºµÉ °æ¿ì ÀåÁÖ±â¿Í ´ÜÁֱ⠿µ¿ªÀ» °³º° ÁÖ±â·Î ´Ù¸£°Ô °Ë»ç.
            , ZTYPE_MTH            // Çȼ¿ ¹à±â¿¡ µû¶ó Threshold °î¼±ÀÌ °³º° Àû¿ëµÇ´Â Multi Zone Threshold
            , ZTYPE_ASG            // PADÁß ASG ¿µ¿ª¿¡ ´ëÇØ Zone Threshold °Ë»ç.  °Ë»ç ¹æÇâ¿¡ ´ëÇØ¼­¸¸ ¹Ýº¹ÀÌ Á¸ÀçÇÑ´Ù.
            , ZTYPE_PARTIAL        // LTPS À¯ÇüÀÇ ÀåÁÖ±â ÆÐÅÏ, ÀåÁÖ±â Áß ÀϺΠ¿µ¿ª¿¡ ´ëÇØ¼­¸¸ Á¸ ¼³Á¤ °¡´É.. ³ª¸ÓÁö´Â ÀÓÀǷΠ¼³Á¤.
        };
 
 
 
class CZoneReference
{
public:
    CZoneReference();
    ~CZoneReference();
    ZoneType        m_ZoneType;
    void            SetZoneType(ZoneType type)    {m_ZoneType= type;}
 
protected:
    COwnerBuffer    m_TemplBuff;
    COwnerBuffer    m_ZoneBuff;
    COwnerBuffer    m_ZoneThBuff, m_ZoneAddBuff;    // Zone Threshold Á¤º¸ ¹öÆÛ
    COwnerBuffer    m_ZoneThBuff2, m_ZoneAddBuff2;    // Á¸ ¸ÖƼ Áֱ⠰˻縦 À§ÇÑ 2Â÷ Zone Threshold Á¤º¸ Buffer
    COwnerBuffer    m_ZoneMMinBuff, m_ZoneMThBuff, m_ZoneMAddBuff;    // Á¸ ¸ÖƼ Threshold °Ë»ç¸¦ À§ÇÑ Zone Threshold Á¤º¸ Buffer
 
    CMosisBuffer    m_ReferenceBuff;
    CRect            m_RectPtrn, m_RectZone, m_RectZoneTh, m_RectZoneAdd, m_RectZoneMMin, m_RectZoneMTh, m_RectZoneMAdd;
    BOOL            m_bReferenceLoaded;
 
    int                m_iScan;
    int                m_FrameWidth, m_FrameHeight;    // 
    BOOL            m_bForwardScan;
    CString            m_strHPanelID;
 
    // 3. °á°ú¹°. Table, Cutoff Data.
    int                m_nZoneCutoffBlack[MAX_ZONE_NUM];
    int                m_nZoneCutoffWhite[MAX_ZONE_NUM];
 
    int                m_nBlackThres[MAX_ZONE_NUM];
    int                m_nBlackThres2[MAX_ZONE_NUM];
 
    int                m_nWhiteThres[MAX_ZONE_NUM];
    int                m_nWhiteThres2[MAX_ZONE_NUM];
 
    int                m_nZoneOffsetX;
    int                m_nZoneOffsetY;
    int                m_nZoneBaseThresFrist;
    int                m_nZoneBaseThresSecond;
 
public:
    void    Reset_ZoneReference(){m_bReferenceLoaded= FALSE;}
    BOOL    Is_ReferenceLoaded(){return m_bReferenceLoaded;}
 
public:
    BOOL    Load_ZoneReference(CString &fileName, int iScan, BOOL bForwardScan, int frameWidth, int frameHeight, CString &panelid);
    BOOL    Load_ZoneCfgFile(CString fileName);// zoneº° ÄÆ¿ÀÇÁ »ç¿ëÀ» À§ÇÑ µ¥ÀÌÅÍ ·Îµù.
 
public:
    BOOL    MakeZoneBuffer();        // Dynamic Threshold ÀÌÀü..[ ¿ëµµ Æó±â]
    BOOL    MakeZoneBuffer_DTh();    // Dynamic Threshold.. ¸ðµç °Ë»ç.
    BOOL    MakeZoneBuffer_MPch();    // Multi Pitch.. »þÇÁ
    BOOL    MakeZoneBuffer_MTh();    // Multi Threshold
 
public:
    BOOL    Is_Cutoff(short* zoneCounts, int *pZoneCutoff);
    BOOL    Is_Cutoff(short* zoneCounts, DefectType type);
    BOOL    Is_CutoffAfterShiftHigher(short *zoneCounts);    // ÃÖ»óÀ§ Á¸¿¡ Á¸ count ¸ô¾ÆÁÖ±â.
 
    void    ChangeZoneTh(int iZone, int nTh, int nSlide, int nCutoffBlack, int nCutoffWhite);
 
public:
    int        GetZoneOffsetX(){return m_nZoneOffsetX;}
    int        GetZoneOffsetY(){return m_nZoneOffsetY;}
    int        GetZoneReferWidth(){return m_RectPtrn.Width();}
    int        GetZoneReferHeight(){return m_RectPtrn.Height();}
    int        GetZoneBaseThresFirst(){return m_nZoneBaseThresFrist;}
    int        GetZoneBaseThresSecond(){return m_nZoneBaseThresSecond;}
};