#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;}
|
};
|