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