| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | #pragma  once#include "stdafx.h"#include "InclutionClassifyEngine.h"#include "IClassifyEngine.h"#include "InclutionEngine/STDFileMgr.h"#include "InclutionEngine/OTSClassifyEng.h"namespace OTSClassifyEngine{ 	bool InclutionClassifyEngine::Init()	{		CSTDFileMgrPtr stdfile = CSTDFileMgrPtr(new CSTDFileMgr());		if (!stdfile->Load())		{			return false;		}		myStd = stdfile-> GenerateSTDLib(IDENTIFY_KIND::ALL);		if (myStd!=nullptr) 		{			m_Engine = new COTSClassifyEng(myStd);			return true;		}		else		{			return false;		}				}	bool InclutionClassifyEngine::ClassifyIncA(COTSParticlePtr particle, int SteelTech, CPosXrayPtr xray)	{		if (particle == nullptr || xray == nullptr) return false;		int Id;		int grpId;		auto result = m_Engine->ClassifyXray((OTSDATA::STEEL_TECHNOLOGY)SteelTech, xray->GetElementQuantifyData(), Id, grpId);		if (grpId == (int)OTS_PARTICLE_TYPE::INVALID)		{			particle->SetType(OTS_PARTICLE_TYPE::INVALID);			particle->SetClassifyName("Invalid");			particle->SetColor("#000000");			particle->SetClassifyId(Id);			particle->SetGroupId(grpId);			std::string grpName;			std::string grpColor;			m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);			particle->SetGroupName(grpName);			particle->SetGroupColor(grpColor);		}		else if (grpId == (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED)		{			particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);			particle->SetClassifyName("Not Identified");			particle->SetColor("#000000");			particle->SetClassifyId((int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED);			particle->SetGroupId(grpId);			std::string grpName;			std::string grpColor;			m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);			particle->SetGroupName(grpName);			particle->SetGroupColor(grpColor);		}		else if (grpId == (int)OTS_PARTICLE_TYPE::ISNOT_INCLUTION)		{			if (Id == (int)NOT_INCLUTION_ID::SiC)			{				particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);				particle->SetClassifyName("SiC");				particle->SetClassifyId((int)NOT_INCLUTION_ID::SiC);				particle->SetColor("#7B68EE");			}			else if (Id == (int)NOT_INCLUTION_ID::FeO)			{				particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);				particle->SetClassifyName("FeO");				particle->SetClassifyId((int)NOT_INCLUTION_ID::FeO);				particle->SetColor("#FF6347");			}			std::string grpName;			std::string grpColor;			m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);			particle->SetGroupId(grpId);			particle->SetGroupName(grpName);			particle->SetGroupColor(grpColor);		}		else		{			auto stditm = myStd->GetSTDItemById(Id);			if (stditm != nullptr)			{				particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);				particle->SetClassifyId(Id);				particle->SetColor(stditm->GetColor().GetBuffer());				particle->SetClassifyName(stditm->GetName().GetBuffer());				particle->SetGroupId(grpId);				std::string grpName;				std::string grpColor;				m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);				particle->SetGroupName(grpName);				particle->SetGroupColor(grpColor);			}			else			{				particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);				particle->SetClassifyName("Not Identified");				particle->SetColor("#000000");				particle->SetGroupId(grpId);				std::string grpName;				std::string grpColor;				m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);				particle->SetGroupName(grpName);				particle->SetGroupColor(grpColor);			}		}			return result;	}	bool InclutionClassifyEngine::ZeroElementProcess(COTSParticlePtr particle)	{		auto chems = particle->GetXrayInfo()->GetElementQuantifyData();		CElementChemistriesList chemsOut;		m_Engine->NominateElChemsList(chems, chemsOut);		particle->GetXrayInfo()->SetElementQuantifyData(chemsOut);		return true;	}	bool InclutionClassifyEngine::IfNeedMaxEDS(COTSParticlePtr particle, CPosXrayPtr xray, double& MaxEDSTime)	{		throw std::logic_error("The method or operation is not implemented.");	}	bool InclutionClassifyEngine::ClassifyBySpectrum(COTSParticlePtr particle, CPosXrayPtr xray)	{		return false;	}	bool InclutionClassifyEngine::ClassifyExpression(COTSParticlePtr particle, CPosXrayPtr xray)	{		return false;	}	bool InclutionClassifyEngine::ClassifyByExpressionTemporarySpectrum(COTSParticlePtr particle, CPosXrayPtr xray)	{		return false;	}	OTSClassifyEngine::CLEEnginePtr CreateInclutionEngine()	{		return CLEEnginePtr(new InclutionClassifyEngine());	}	 OTSClassifyEngine::CLEEnginePtr GetInclutionEngine()	 {		 static CLEEnginePtr engine;		 if (engine == NULL)		 {			 engine = CLEEnginePtr( new InclutionClassifyEngine());			 if (!engine->Init())			 {				 return NULL;			 }		 }		 return engine;	 }}
 |