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;
- }
|