#pragma once #include "StdAfx.h" #include "CHReviewResult/GlassResult.h" #include "CHReviewRecipe/RsRcpReviewInfo.h" #include "CHReviewRecipe/RsRcpMeasureInfo.h" typedef std::vector VectorDefectResultPtr; typedef std::vector::iterator VectorDetectResultPrtIt; interface IPrioritySorter2Parent { public: virtual int PS2P_GetModuleStatusCount(int nModuleType = 0) = 0; virtual double PS2P_GetCurrentModuleResolution(int nModuleIndex) = 0; virtual void PS2P_GetCurrentModuleZoomData(int nModuleIndex, int& nZoomIdx, double& dZoomInfo) = 0; }; class AFX_EXT_CLASS CPrioritySorter { public: CPrioritySorter(int nMaxPointCount=MAX_REVIEW_POINT_SIZE); virtual ~CPrioritySorter(void); void Reset(); void SetPS2P(IPrioritySorter2Parent* pPS2P) { m_pPS2P = pPS2P; } // getter int GetSortingResultCount(void) { return int(m_vecSortingResult.size()); } int GetSortingResultUserCount(void) { return int(m_vecSortingResultUser.size()); } int GetSortingResultReflowCount(void) { return int(m_vecSortingResultReflow.size()); } int GetSortingResultMeasureCount(void) { return int(m_vecSortingResultMeasure.size()); } int GetSortingResultWsiReflowCount(void) { return int(m_vecSortingResultWsiReflow.size()); } int GetSortingResultWsiCount(void) { return int(m_vecSortingResultWsi.size()); } int GetSortingResultWsiUserCount(void) { return int(m_vecSortingResultWsiUser.size()); } int GetSortingResultWsiMultiShotCount(void) { return int(m_vecSortingResultWsiMultiShot.size()); } SReviewResult* GetSortingResult(int nIndex); SReviewResult* GetSortingResultUser(int nIndex); SReviewResult* GetSortingResultReflow(int nIndex); SReviewResult* GetSortingResultMeasure(int nIndex); SReviewResult* GetSortingResultWsi(int nIndex); SReviewResult* GetSortingResultWsiReflow(int nIndex); SReviewResult* GetSortingResultWsiUser(int nIndex); SReviewResult* GetSortingResultWsiMutilShot(int nIndex); VectorSReviewResult* GetSortingVectorResult(void) { return &m_vecSortingResult; } VectorSReviewResult* GetSortingVectorResultWsi(void) { return &m_vecSortingResultWsi; } VectorSReviewResult* GetSortingVectorResultWsiMultiShot(void) { return &m_vecSortingResultWsiMultiShot; } // func virtual int PrioritySorting(CGlassResult *pGlassResult, const CRsRcpReviewInfo* pRsRcpReviewInfo, const CRsRcpMeasureInfo *pRsRcpMesureInfo=NULL, BOOL bUseWSI=FALSE); virtual int SaveDefectPoint(VectorDefectResultPtr& vecDefectResultPtr, const CString& strFilename); // new func virtual int FilteringAndSorting(CGlassResult *pGlassResult, const CRsRcpReviewInfo* pRsRcpReviewInfo, const CRsRcpMeasureInfo *pRsRcpMesureInfo=NULL, BOOL bUseWSI=FALSE); protected: virtual int PrioritySorting() = 0; virtual int FilteringAndSorting() = 0; virtual int AddDefectPointPriority(int nPriorityData, const CRcpPriorityInfo *pRcpPriorityInfo) = 0; static BOOL CompareDefectSizeDescending(const CDefectResult* lhs, const CDefectResult* rhs); static BOOL CompareDefectSizeAscending(const CDefectResult* lhs, const CDefectResult* rhs); static BOOL CompareDefectPeakDescending(const CDefectResult* lhs, const CDefectResult* rhs); static BOOL CompareDefectPeakAscending(const CDefectResult* lhs, const CDefectResult* rhs); static BOOL CompareDefectCircleSizeDescending(const CDefectResult* lhs, const CDefectResult* rhs); static BOOL CompareDefectCircleSizeAscending(const CDefectResult* lhs, const CDefectResult* rhs); static BOOL CompareDefectCirclePeakDescending(const CDefectResult* lhs, const CDefectResult* rhs); static BOOL CompareDefectCirclePeakAscending(const CDefectResult* lhs, const CDefectResult* rhs); IPrioritySorter2Parent* m_pPS2P; int m_nMaxPointCount; BOOL m_bUseWSI; CGlassResult* m_pGlassResult; const CRsRcpReviewInfo* m_pRsRcpReviewInfo; const CRsRcpMeasureInfo* m_pRsRcpMeasureInfo; VectorInteger m_vecDefectIndex; VectorDefectResultPtr m_vecDefectResultPtr; VectorDefectResultPtr m_vecDefectResultPtrTemp; VectorSReviewResult m_vecSortingResult; // review VectorSReviewResult m_vecSortingResultUser; // user VectorSReviewResult m_vecSortingResultReflow; // Reflow VectorSReviewResult m_vecSortingResultMeasure; // measure VectorSReviewResult m_vecSortingResultWsi; // wsi VectorSReviewResult m_vecSortingResultWsiReflow;// wsi Reflow VectorSReviewResult m_vecSortingResultWsiUser; // wsi user VectorSReviewResult m_vecSortingResultWsiMultiShot; // wsi user };