GBFieldData.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. #pragma once
  2. #include "otsdataconst.h"
  3. #include "OTSFieldData.h"
  4. #include "CGBLevel.h"
  5. #include <set>
  6. #include "GBParticle.h"
  7. namespace OTSGBCalculate
  8. {
  9. using namespace std;
  10. using namespace OTSDATA;
  11. class __declspec(dllexport) CGBFieldData
  12. {
  13. public:
  14. CGBFieldData(); // constructor
  15. CGBFieldData(const CGBFieldData&); // copy constructor
  16. CGBFieldData(CGBFieldData*); // copy constructor
  17. CGBFieldData& operator=(const CGBFieldData&); // =operator
  18. BOOL operator==(const CGBFieldData&); // =operator
  19. virtual ~CGBFieldData(); // detractor
  20. void SetMyRect(COTSRect r) { m_myRect = r; }
  21. COTSRect GetMyRect() { return m_myRect; }
  22. COTSParticleList& GetALLOTSParticleList() { return m_listOTSParticles; }
  23. void SetOTSParticleList(COTSParticleList& a_listParticles, BOOL a_bClear = TRUE);
  24. CPoint GetPosition() { return m_poiPos; }
  25. void SetPosition(CPoint a_poiPos) { m_poiPos.x = a_poiPos.x; m_poiPos.y = a_poiPos.y; } // serialization
  26. int GetFrameId() { return m_nFrameId; }
  27. void SetFrameId(int a_nFrameId) { m_nFrameId = a_nFrameId; }
  28. // A level
  29. CGBLevelPtr GetALevel() { return m_pALevel; }
  30. // B level
  31. CGBLevelPtr GetBLevel() { return m_pBLevel; }
  32. // C level
  33. CGBLevelPtr GetCLevel() { return m_pCLevel; }
  34. // D level
  35. CGBLevelPtr GetDLevel() { return m_pDLevel; }
  36. GB_METHODE_TYPE GetCalcuType() { return calcuType; }
  37. void SetCalcuType(GB_METHODE_TYPE calType) { calcuType = calType; }
  38. // D sulfide level
  39. CGBLevelPtr GetDSulfideLevel() { return m_pDSulfidLevel; }
  40. COTSParticlePtr FindAdjacentParticle(COTSParticlePtr p, COTSParticleList plist);
  41. CGBParticleList listAThinParticles;
  42. CGBParticleList listAWideParticles;
  43. CGBParticleList listASuperParticles;
  44. CGBParticleList listBThinParticles;
  45. CGBParticleList listBWideParticles;
  46. CGBParticleList listBSuperParticles;
  47. CGBParticleList listCThinParticles;
  48. CGBParticleList listCWideParticles;
  49. CGBParticleList listCSuperParticles;
  50. CGBParticleList listDThinParticles;
  51. CGBParticleList listDWideParticles;
  52. CGBParticleList listDSuperParticles;
  53. CGBParticleList listDSParticles;
  54. CGBParticleList listDSulfideThinParticles;
  55. CGBParticleList listDSulfideWideParticles;
  56. CGBParticleList listDSulfideSuperParticles;
  57. COTSFieldDataList myReleventOTSFlds;
  58. COTSParticleList m_listOTSParticles;
  59. void CategoryByMethod1();
  60. // caculate Level by method 2
  61. void CategoryByMethod2();
  62. void CategoryByASTM();
  63. void CaculateLevelDIN(COTSParticleList listParticle);
  64. void ConnectStringParts(COTSParticleList listParticle, CGBParticleList& listGBParticle);
  65. std::string GetGBGradeString();
  66. std::string GetGBGradeDetail();
  67. GB_GRADE_TYPE GetGBTopGrade();
  68. protected:
  69. // cleanup
  70. void Cleanup();
  71. // initialization
  72. void Init();
  73. // duplication
  74. void Duplicate(const CGBFieldData& a_oSource);
  75. // caculate Level Width
  76. BOOL CaculateLevelThinWidth(COTSParticleList& a_listParticles, GB_CLASSIFY_TYPE a_nLevel);
  77. BOOL CaculateLevelFatWidth(COTSParticleList& a_listParticles, GB_CLASSIFY_TYPE a_nLevel);
  78. BOOL CaculateSuper(COTSParticleList& a_listParticles, GB_CLASSIFY_TYPE a_nLevel);
  79. GB_METHODE_TYPE calcuType;
  80. private:
  81. // id
  82. int m_nFrameId;
  83. COTSRect m_myRect;
  84. CPoint m_poiPos;
  85. // A level
  86. CGBLevelPtr m_pALevel;
  87. // B level
  88. CGBLevelPtr m_pBLevel;
  89. // C level
  90. CGBLevelPtr m_pCLevel;
  91. // D level
  92. CGBLevelPtr m_pDLevel;
  93. // DS level
  94. //CGBLevelPtr m_pDSLevel;
  95. // DSulfide level
  96. CGBLevelPtr m_pDSulfidLevel;
  97. };
  98. typedef std::shared_ptr<CGBFieldData> __declspec(dllexport) CGBFieldDataPtr;
  99. typedef std::vector<CGBFieldDataPtr> __declspec(dllexport) CGBFieldList;
  100. }