#pragma once #include "GridData.h" #include "GBFieldData.h" #include "ReportMgr.h" #include "CGBGradeData.h" namespace OTSGBCalculate { //define String Resources for GB Grid using namespace OTSMODEL; const int GB_FIELD_WIDTH = 710;//normally,the number should be 707,we take 710 .Because the particle may be lost when measuring,so we make it a little bigger to compromise it. class __declspec(dllexport) CGBCalculate { public: CGBCalculate(CReportMgr* rptMgrPtr); ~CGBCalculate(); CGridDatasList GetGBInclusion(CALCULATE_TABLE_TYPE tableType); CGBFieldList GetTopGradeGBFieldsByIncCategory(CGBFieldList listGBFields, GBIncCategory incCategory); CGBFieldList GetAllGBFields(CALCULATE_TABLE_TYPE tableType); // calculate GB fields CGBFieldList CalGBFields(CSmplMsrResultFileMgrPtr pSmplMgr, GB_METHODE_TYPE calType); void CategoryGBInclutions(CGBFieldList listCGBField, CALCULATE_TABLE_TYPE ty); protected: // convert ots fields to gb fields BOOL OTSFieldToGBField(COTSFieldDataList allOTSFields, CGBFieldList* m_listGBFields, double pixelsize, int a_nFieldWidth, int a_nFieldHeight); //get the GB field within thr rectangle CGBFieldDataPtr GetOneGBField(COTSRect a_rectGBField, COTSFieldDataList& a_listOTSFields, double pixelsize, int a_nFieldWidth, int nOTSFieldHeight); // normalize particles for the GBFields CGBFieldDataPtr NormalizeParticlesAndIdentifyChemicalType(COTSRect a_rectGBField, COTSFieldDataList a_listOTSFields, double pixelsize, int a_nFieldWidth, int a_nFieldHeight); //计算一个数据源中所获得的GBFields转化的统计数据 CGridDatasList GetGridDataListForOneDataSource(CGBGradeData* gradeData, CALCULATE_TABLE_TYPE tableType); //计算一个数据源中所获得的GBFields转化的统计数据德标 CGridDatasList GetGridDataListForOneDataSourceDIN(CGBFieldDataPtr DINFld); CGridDataPtr GetGridLevel(CString GridType, GBGradeCell a_nLevel[], GBGradeCell a_nLevel_w[], GBGradeCell a_nLevel_s[]); CGridDataPtr GetGridDIN(CGBParticleList cotsparticlelistA, CGBParticleList cotsparticlelistB, CGBParticleList cotsparticlelistC, CGBParticleList cotsparticlelistD); CGridDataPtr GetGridDSLevel(CGBGradeData* gradeData); void SetFrameLevelNo(GB_GRADE_TYPE levela, int nALevel[]); // particle list DOUBLE& GetPixSize() { return PixSize; } void SetPixSize(double p); DOUBLE PixSize; //pointer to the whole reportprojfilemgr CReportMgr* m_rptMgrPtr; private: void DisplayDSPartRow(CGBParticlePtr part, CGridColumnsList listCol); }; }