#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 "MsrParams.h" #include "Domain.h" #include "SEMDataMsr.h" #include "MsrSampleStatus.h" #include "MsrResults.h" #include "PropItem.h" #include "OTSFieldData.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 // serialization //void Serialize(CArchive& ar); void Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode); // 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(); // property item groups list CPropItemGrpsList& GetPropItemGrps() { return m_listPropItemGrps; } void SetPropItemGrps(); CPropItemGrpPtr GetPropItemGrpByIndex(int a_nIndex); CPropItemGrpPtr GetPropItemGrpById(OTS_SAMPLE_PROP_GRID_ITEM_GROUPS a_nId); CPropItemGrpPtr UpdatePropItemGrp(OTS_SAMPLE_PROP_GRID_ITEM_GROUPS a_nId); CPropItemPtr GetPropItemById(OTS_SAMPLE_PROP_GRID_ITEMS a_nId); CString GetItemValueStr(OTS_SAMPLE_PROP_GRID_ITEMS a_nId); std::vector GetItemComboDownList(OTS_SAMPLE_PROP_GRID_ITEMS ItemID); // BOOL data (1) BOOL GetPropBOOLData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, BOOL& a_bValue); BOOL SetPropBOOLData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, BOOL a_bValue); // int data (16) BOOL GetPropIntData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int& a_nValue); BOOL SetPropIntData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int a_nValue); // double data (4) BOOL GetPropDoubleData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, double& a_dValue); BOOL SetPropDoubleData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, double a_dValue); // string data (7) BOOL GetPropStringData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, CString& a_strValue); BOOL SetPropStringData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, CString a_strValue); // combo data (7) BOOL GetPropComboData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int& a_nValue); BOOL SetPropComboData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int a_nValue); BOOL GetPropComboStrings(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, std::vector& a_listComboStrings); // time data (2) BOOL GetPropTimeData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, COleDateTime& a_oValue); BOOL SetPropTimeData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, COleDateTime a_oValue); // time span data (1) BOOL GetPropTimeSpanData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, COleDateTimeSpan& a_oValue); BOOL SetPropTimeSpanData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, COleDateTimeSpan a_oValue); // file list data (2) BOOL GetPropFileListData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, CString& a_strFileName); BOOL SetPropFileListData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, CString a_strFileName); // get related property item BOOL GetRelatedPropItem(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, OTS_SAMPLE_PROP_GRID_ITEMS& a_nRelatedPropId); // get related property item group BOOL GetRelatedPropItemGrp(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, OTS_SAMPLE_PROP_GRID_ITEM_GROUPS& a_nRelatedPropGrpId); // calculate pixel size double CalculatePixelSize(); // calculate field area double CalculateAFieldArea(); BOOL GetBSESize(int& a_nWidth, int& a_nHeight); protected: // cleanup void Cleanup(); // initialization void Init(); // duplication void Duplicate(const COTSSample& a_oSource); // set a property items group CPropItemGrpPtr SetPropertyItemGrp(OTS_SAMPLE_PROP_GRID_ITEM_GROUPS a_nGrpId); // calculate scan field size int CalculateScanFileSize(double a_dPixelSize); // name CString m_strName; // sample hole name CString m_strHoleName; // param modify lock BOOL m_bParamLock; // switch BOOL m_bSwitch; // measurement parameter CMsrParamsPtr m_poMsrParams; // measurement area CDomainPtr m_poMsrArea; // SEM data (measurement) CSEMDataMsrPtr m_poSEMDataMsr; // measure status CMsrSampleStatusPtr m_poMsrStatus; // measure results CMsrResultsPtr m_poMsrResults; // fields COTSFieldDataList m_listFieldData; // property item groups list CPropItemGrpsList m_listPropItemGrps; }; typedef std::shared_ptr __declspec(dllexport) COTSSamplePtr; typedef std::vector __declspec(dllexport) COTSSamplesList; }