#pragma once #include "stdafx.h" //prepare the base things that will be used. typically this header file will include a lot of base header file. #include "Domain.h" #include "SEMDataMsr.h" #include "OTSFieldData.h" #include "MsrParams.h" #include #include #include "PropItem.h" namespace OTSMODEL { const CString NOT_APPLIED = _T("N/A"); class __declspec(dllexport) COTSSample : public xmls::ISlo { public: COTSSample(); // constructor COTSSample(const COTSSample&); // copy constructor COTSSample(COTSSample*); // copy constructor COTSSample& operator=(const COTSSample&); // =operator BOOL operator==(const COTSSample&); // ==operator virtual ~COTSSample(); // destructor void Serialize(bool isStoring, tinyxml2::XMLDocument* classDoc, tinyxml2::XMLElement* rootNode); COTSParticleList GetAllParticles(); // name CString GetName() { return m_strName; } void SetName(CString a_strName) { m_strName = a_strName; } // sample hole CString GetSampleHoleName() { return m_strHoleName; } void SetSampleHoleName(CString a_strHoleName) { m_strHoleName = a_strHoleName; } // param modify lock BOOL GetParamLock() { return m_bParamLock; } void SetParamLock(BOOL a_bParamLock) { m_bParamLock = a_bParamLock; } // switch BOOL GetSwitch() { return m_bSwitch; } void SetSwitch(BOOL a_bSwitch) { m_bSwitch = a_bSwitch; } // measurement parameter CMsrParamsPtr GetMsrParams() { return m_poMsrParams; } void SetMsrParams(CMsrParamsPtr a_poMsrParams); // measurement area CDomainPtr GetMsrArea() { return m_poMsrArea; } void SetMsrArea(CDomainPtr a_poMsrArea); // SEM data (measurement) CSEMDataMsrPtr GetSEMDataMsr() { return m_poSEMDataMsr; } void SetSEMDataMsr(CSEMDataMsrPtr a_poSEMDataMsr); // measure status CMsrSampleStatusPtr GetMsrStatus() { return m_poMsrStatus; } void SetMsrStatus(CMsrSampleStatusPtr a_poMsrStatus); // fields COTSFieldDataList& GetFieldsData() { return m_listFieldData; } void SetFieldsData(COTSFieldDataList& a_listFieldData); // measure results CMsrResultsPtr GetMsrResults() { return m_poMsrResults; } void SetMsrResults(CMsrResultsPtr a_poMsrResults); // has measure results test BOOL HasMeasureResult(); double CalculateAFieldArea(); // calculate pixel size void SetPixelSize(double pixelsize) { m_pixelsize = pixelsize; } // calculate field area double GetPixelSize() { return m_pixelsize; }; BOOL GetBSESize(int& a_nWidth, int& a_nHeight); void SetBSESize(int a_nWidth, int a_nHeight) { m_BseSize.cx = a_nWidth; m_BseSize.cy = a_nHeight; } protected: // cleanup void Cleanup(); // initialization void Init(); // duplication void Duplicate(const COTSSample& a_oSource); // calculate scan field size int CalculateScanFieldSize(); // name CString m_strName; // sample hole name CString m_strHoleName; // param modify lock BOOL m_bParamLock; // switch BOOL m_bSwitch; // measurement area CDomainPtr m_poMsrArea; // SEM data (measurement) CSEMDataMsrPtr m_poSEMDataMsr; CMsrParamsPtr m_poMsrParams; // fields COTSFieldDataList m_listFieldData; // measure status CMsrSampleStatusPtr m_poMsrStatus; // measure results CMsrResultsPtr m_poMsrResults; // property item groups list CPropItemGrpsList m_listPropItemGrps; double m_pixelsize; CSize m_BseSize; }; typedef std::shared_ptr __declspec(dllexport) COTSSamplePtr; typedef std::vector __declspec(dllexport) COTSSamplesList; }