#pragma once
|
|
#include "StdAfx.h"
|
#include "CHReviewResult/GlassResult.h"
|
#include "CHReviewRecipe/RsRcpReviewInfo.h"
|
#include "CHReviewRecipe/RsRcpMeasureInfo.h"
|
|
typedef std::vector<CDefectResult*> VectorDefectResultPtr;
|
typedef std::vector<CDefectResult*>::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
|
};
|