#pragma once #include "otsdataconst.h" #include "OTSFieldData.h" #include "CGBLevel.h" #include #include "GBParticle.h" namespace OTSGBCalculate { using namespace std; using namespace OTSDATA; class __declspec(dllexport) CGBFieldData { public: CGBFieldData(); // constructor CGBFieldData(const CGBFieldData&); // copy constructor CGBFieldData(CGBFieldData*); // copy constructor CGBFieldData& operator=(const CGBFieldData&); // =operator BOOL operator==(const CGBFieldData&); // =operator virtual ~CGBFieldData(); // detractor void SetMyRect(COTSRect r) { m_myRect = r; } COTSRect GetMyRect() { return m_myRect; } COTSParticleList& GetALLOTSParticleList() { return m_listOTSParticles; } void SetOTSParticleList(COTSParticleList& a_listParticles, BOOL a_bClear = TRUE); CPoint GetPosition() { return m_poiPos; } void SetPosition(CPoint a_poiPos) { m_poiPos.x = a_poiPos.x; m_poiPos.y = a_poiPos.y; } // serialization int GetFrameId() { return m_nFrameId; } void SetFrameId(int a_nFrameId) { m_nFrameId = a_nFrameId; } // A level CGBLevelPtr GetALevel() { return m_pALevel; } // B level CGBLevelPtr GetBLevel() { return m_pBLevel; } // C level CGBLevelPtr GetCLevel() { return m_pCLevel; } // D level CGBLevelPtr GetDLevel() { return m_pDLevel; } GB_METHODE_TYPE GetCalcuType() { return calcuType; } void SetCalcuType(GB_METHODE_TYPE calType) { calcuType = calType; } // D sulfide level CGBLevelPtr GetDSulfideLevel() { return m_pDSulfidLevel; } COTSParticlePtr FindAdjacentParticle(COTSParticlePtr p, COTSParticleList plist); CGBParticleList listAThinParticles; CGBParticleList listAWideParticles; CGBParticleList listASuperParticles; CGBParticleList listBThinParticles; CGBParticleList listBWideParticles; CGBParticleList listBSuperParticles; CGBParticleList listCThinParticles; CGBParticleList listCWideParticles; CGBParticleList listCSuperParticles; CGBParticleList listDThinParticles; CGBParticleList listDWideParticles; CGBParticleList listDSuperParticles; CGBParticleList listDSParticles; CGBParticleList listDSulfideThinParticles; CGBParticleList listDSulfideWideParticles; CGBParticleList listDSulfideSuperParticles; COTSFieldDataList myReleventOTSFlds; COTSParticleList m_listOTSParticles; void CategoryByMethod1(); // caculate Level by method 2 void CategoryByMethod2(); void CategoryByASTM(); void CaculateLevelDIN(COTSParticleList listParticle); void ConnectStringParts(COTSParticleList listParticle, CGBParticleList& listGBParticle); std::string GetGBGradeString(); std::string GetGBGradeDetail(); GB_GRADE_TYPE GetGBTopGrade(); protected: // cleanup void Cleanup(); // initialization void Init(); // duplication void Duplicate(const CGBFieldData& a_oSource); // caculate Level Width BOOL CaculateLevelThinWidth(COTSParticleList& a_listParticles, GB_CLASSIFY_TYPE a_nLevel); BOOL CaculateLevelFatWidth(COTSParticleList& a_listParticles, GB_CLASSIFY_TYPE a_nLevel); BOOL CaculateSuper(COTSParticleList& a_listParticles, GB_CLASSIFY_TYPE a_nLevel); GB_METHODE_TYPE calcuType; private: // id int m_nFrameId; COTSRect m_myRect; CPoint m_poiPos; // A level CGBLevelPtr m_pALevel; // B level CGBLevelPtr m_pBLevel; // C level CGBLevelPtr m_pCLevel; // D level CGBLevelPtr m_pDLevel; // DS level //CGBLevelPtr m_pDSLevel; // DSulfide level CGBLevelPtr m_pDSulfidLevel; }; typedef std::shared_ptr __declspec(dllexport) CGBFieldDataPtr; typedef std::vector __declspec(dllexport) CGBFieldList; }