OTSSample.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. #pragma once
  2. #include "stdafx.h" //prepare the base things that will be used. typically this header file will include a lot of base header file.
  3. #include "Domain.h"
  4. #include "SEMDataMsr.h"
  5. #include "OTSFieldData.h"
  6. #include "MsrParams.h"
  7. #include <MsrSampleStatus.h>
  8. #include <MsrResults.h>
  9. #include "PropItem.h"
  10. namespace OTSMODEL {
  11. const CString NOT_APPLIED = _T("N/A");
  12. class __declspec(dllexport) COTSSample : public xmls::ISlo
  13. {
  14. public:
  15. COTSSample(); // constructor
  16. COTSSample(const COTSSample&); // copy constructor
  17. COTSSample(COTSSample*); // copy constructor
  18. COTSSample& operator=(const COTSSample&); // =operator
  19. BOOL operator==(const COTSSample&); // ==operator
  20. virtual ~COTSSample(); // destructor
  21. void Serialize(bool isStoring, tinyxml2::XMLDocument* classDoc, tinyxml2::XMLElement* rootNode);
  22. COTSParticleList GetAllParticles();
  23. // name
  24. CString GetName() { return m_strName; }
  25. void SetName(CString a_strName) { m_strName = a_strName; }
  26. // sample hole
  27. CString GetSampleHoleName() { return m_strHoleName; }
  28. void SetSampleHoleName(CString a_strHoleName) { m_strHoleName = a_strHoleName; }
  29. // param modify lock
  30. BOOL GetParamLock() { return m_bParamLock; }
  31. void SetParamLock(BOOL a_bParamLock) { m_bParamLock = a_bParamLock; }
  32. // switch
  33. BOOL GetSwitch() { return m_bSwitch; }
  34. void SetSwitch(BOOL a_bSwitch) { m_bSwitch = a_bSwitch; }
  35. // measurement parameter
  36. CMsrParamsPtr GetMsrParams() { return m_poMsrParams; }
  37. void SetMsrParams(CMsrParamsPtr a_poMsrParams);
  38. // measurement area
  39. CDomainPtr GetMsrArea() { return m_poMsrArea; }
  40. void SetMsrArea(CDomainPtr a_poMsrArea);
  41. // SEM data (measurement)
  42. CSEMDataMsrPtr GetSEMDataMsr() { return m_poSEMDataMsr; }
  43. void SetSEMDataMsr(CSEMDataMsrPtr a_poSEMDataMsr);
  44. // measure status
  45. CMsrSampleStatusPtr GetMsrStatus() { return m_poMsrStatus; }
  46. void SetMsrStatus(CMsrSampleStatusPtr a_poMsrStatus);
  47. // fields
  48. COTSFieldDataList& GetFieldsData() { return m_listFieldData; }
  49. void SetFieldsData(COTSFieldDataList& a_listFieldData);
  50. // measure results
  51. CMsrResultsPtr GetMsrResults() { return m_poMsrResults; }
  52. void SetMsrResults(CMsrResultsPtr a_poMsrResults);
  53. // has measure results test
  54. BOOL HasMeasureResult();
  55. double CalculateAFieldArea();
  56. // calculate pixel size
  57. void SetPixelSize(double pixelsize) { m_pixelsize = pixelsize; }
  58. // calculate field area
  59. double GetPixelSize() { return m_pixelsize; };
  60. BOOL GetBSESize(int& a_nWidth, int& a_nHeight);
  61. void SetBSESize(int a_nWidth, int a_nHeight) { m_BseSize.cx = a_nWidth; m_BseSize.cy = a_nHeight; }
  62. protected:
  63. // cleanup
  64. void Cleanup();
  65. // initialization
  66. void Init();
  67. // duplication
  68. void Duplicate(const COTSSample& a_oSource);
  69. // calculate scan field size
  70. int CalculateScanFieldSize();
  71. // name
  72. CString m_strName;
  73. // sample hole name
  74. CString m_strHoleName;
  75. // param modify lock
  76. BOOL m_bParamLock;
  77. // switch
  78. BOOL m_bSwitch;
  79. // measurement area
  80. CDomainPtr m_poMsrArea;
  81. // SEM data (measurement)
  82. CSEMDataMsrPtr m_poSEMDataMsr;
  83. CMsrParamsPtr m_poMsrParams;
  84. // fields
  85. COTSFieldDataList m_listFieldData;
  86. // measure status
  87. CMsrSampleStatusPtr m_poMsrStatus;
  88. // measure results
  89. CMsrResultsPtr m_poMsrResults;
  90. // property item groups list
  91. CPropItemGrpsList m_listPropItemGrps;
  92. double m_pixelsize;
  93. CSize m_BseSize;
  94. };
  95. typedef std::shared_ptr<COTSSample> __declspec(dllexport) COTSSamplePtr;
  96. typedef std::vector<COTSSamplePtr> __declspec(dllexport) COTSSamplesList;
  97. }