| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 | #pragma once#include "Element.h"#include "PosXray.h"#include "otsdataconst.h"using namespace OTSDATA;namespace OTSClassifyEngine{	class __declspec(dllexport) CSTDBase : public CPosXray	{	public:		CSTDBase();		CSTDBase(const CSTDBase& a_oSource);		CSTDBase(CSTDBase* a_poSource);		virtual ~CSTDBase();		CSTDBase& operator=(const CSTDBase& a_oSource);	// =operator		BOOL operator==(const CSTDBase& a_oSource);		// ==operator				void Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode);		void SetID(int iID);		int GetID();		void SetName(CString strName);		CString GetName();		void SetFormula(CString strFormula);		CString GetFormula();		void SetDensity(std::string dDensity);		std::string GetDensity();		void SetAvAltomicWeight(double dAvAltomicWeight);		double GetAvAltomicWeight();		void SetBulkmod(double dBulkmod);		double GetBulkmod();		void SetRigiditymod(double dRigiditymod);		double GetRigiditymod();		void SetMineralBRPL(int iBRPL);		void SetMineralBRPL(CString strBRPL);		int GetMineralBRPL();		CString GetMineralBRPLName();		static void GetBRPLNames(std::vector<CString>& vecstrnames);		void SetMineralKind(int iKind);		void SetMineralKind(CString strKind);		int GetMineralKind();		CString GetMineralKindName();		static void GetKindNames(std::vector<CString>& vecstrnames);						void SetElementsList(const CElementsList& elementlist);		const CElementsList& GetElementsList();		void AddElement(const CElement& element);		void RemoveElement(const CElement& element);		void RemoveAllElements();		CElementPtr GetElement(int iIndex);		int GetElementCount();		void Clear();	protected:		// cleanup 		void Cleanup();		// initialization		void Init();		// duplication		void Duplicate(const CSTDBase& a_oSource);	protected:		int m_iID;		CString m_strName;		CString m_strFormula;		std::string m_dDensity;		double m_dAverz;		double m_dBulkmod;		// 体积模量(GPa)		double m_dRigiditymod;	// 剪切模量(GPa)		MINERAL_BRPL m_iBRPL;	// 矿物的塑性脆性		MINERAL_KINDS m_iKind;	// 矿物的种类		CElementsList m_listElements;	};	typedef std::shared_ptr<CSTDBase> __declspec(dllexport) CSTDBasePtr;	typedef std::vector<CSTDBasePtr> __declspec(dllexport) CSTDBaseList;	class __declspec(dllexport) CStandardItem : public CSTDBase	{	public:		CStandardItem();		CStandardItem(const CStandardItem& a_oSource);		CStandardItem(CStandardItem* a_poSource);		~CStandardItem();		CStandardItem& operator=(const CStandardItem& a_oSource);	// =operator		BOOL operator==(const CStandardItem& a_oSource);		// ==operator		void Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode);		CString GetConditionExp() { return sConditionExp; };		void SetConditionExp(CString exp) { sConditionExp = exp; };		void SetColor(COLORREF iColor);		COLORREF GetColor();		void SetBSEValue(int iBSEvalue);		int GetBSEValue();		void SetClassify(int iClassify);		int GetClassify();		BOOL DoFormulaParser();		static CString GetSTDMineralPropName(int iPropid);		static CString GetElementPropName(int iPropid);	protected:		// cleanup 		void Cleanup();		// initialization		void Init();		// duplication		void Duplicate(const CStandardItem& a_oSource);		int DoFormulaParser(CString strFormula, std::vector<CString>& vecStrElementName, std::vector<double>& vecDElementCount);		int DoFormulaParser_ext(CString strFormula, std::vector<CString>& vecStrElementName, std::vector<double>& vecDElementCount);		void AddElementAndCount(std::vector<CString>& vecStrElementName, std::vector<double>& vecDElementCount, CString strElementName, double dElementCount);		double GetRatioAfterRightSymbol(CString strFormula, int iRightSymbolIndex, int& iDigitalCount);		CString GetSubFormulaWithoutSymbol(CString strSubFormulaWithSymbol, double dRatio);		static CString GetPropName(int iStartPropid, int iPropid);	protected:		CString sConditionExp;		COLORREF m_iColor;		int m_iBSEvalue;		int m_iClassify;		// 矿物分类	};	typedef std::shared_ptr<CStandardItem> __declspec(dllexport) CStandardItemPtr;	typedef std::vector<CStandardItemPtr> __declspec(dllexport) CStandardItemList;	class __declspec(dllexport) CClassify : public xmls::ISlo	{	public:		CClassify();		CClassify(const CClassify& a_oSource);		CClassify(CClassify* a_poSource);		virtual ~CClassify();		CClassify& operator=(const CClassify& a_oSource);		BOOL operator==(const CClassify& a_oSource);		// ==operator				void Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode);		void SetID(int iID);		int GetID();		void SetName(CString strName);		CString GetName();		void SetColor(COLORREF iColor);		COLORREF GetColor();		void SetOrder(int iOrder);		int GetOrder();	protected:		void Init();		void Cleanup();		void Duplicate(const CClassify& a_oSource);	protected:		int m_iID;		CString m_strName;		COLORREF m_iColor;		int m_iOrder;	};	typedef std::shared_ptr<CClassify> __declspec(dllexport) CClassifyPtr;	typedef std::vector<CClassifyPtr> __declspec(dllexport) CClassifyList;	class __declspec(dllexport) CSTDLib : public xmls::ISlo	{	public:		CSTDLib();		CSTDLib(const CSTDLib& a_oSource);		CSTDLib(CSTDLib* a_poSource);		~CSTDLib();		void Serialize(bool isStoring, tinyxml2::XMLDocument * classDoc, tinyxml2::XMLElement * rootNode);		CSTDLib& operator= (const CSTDLib& a_oSource);		BOOL operator== (const CSTDLib& a_oSource);		void SetName(CString strName);		CString GetName();		bool AddItem(CStandardItem stdMineral);		// 从0开始数, 在第iIndex位置之前插入一个记录		bool InsertItem(CStandardItem stdMineral, int iIndex);		void RemoveItem(const CStandardItem& stdMineral);		CStandardItemPtr GetSTDItem(int iIndex);		void SwapItem(CStandardItem* pstdMineral1, CStandardItem* pstdMineral2);		void SortByItemID(BOOL bAsc = TRUE);		int GetSTDItemCount();		void Clear();		CString GetValidItemName(CString strFormat);		CString GetDifferItemName(CString strMineralName);		bool AddClassify(CClassify classify);		void RemoveClassify(const CClassify& classify);		int GetClassifyCount();		CString GetClassifyName(int iClassify);		void GetClassifyNames(std::vector<CString>& vecstrnames);		CString GetDifferClassifyName(CString strClassifyName);		CClassifyPtr GetClassifyPtr(int iIndex);		CClassifyPtr GetClassifyPtr(CString strClassifyName);		void SwapClassifyOrder(CClassify* pclassify1, CClassify* pclassify2);		static void LoadStrFromXml();		static CString GetSTDLibPropName(int iPropid);	protected:		bool HasSameItemName(CString strMineralName);		bool HasSameClassifyName(CString strClassifyName);		// cleanup 		void Cleanup();		// initialization		void Init();		// duplication		void Duplicate(const CSTDLib& a_oSource);	protected:		CString m_strName;		CStandardItemList m_listSTDItems;		CClassifyList m_listClassify;	};	typedef std::shared_ptr<CSTDLib> __declspec(dllexport) CSTDLibPtr;	typedef std::vector<CSTDLibPtr> __declspec(dllexport) CSTDLibList;}
 |