#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::Classify(COTSParticlePtr particle, CPosXrayPtr xray) { return false; } bool InclutionClassifyEngine::Classify(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->TypeName("Invalid"); particle->TypeColor("#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->TypeName("Not Identified"); particle->TypeColor("#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->TypeName("SiC"); particle->SetClassifyId((int)NOT_INCLUTION_ID::SiC); particle->TypeColor("#7B68EE"); } else if (Id == (int)NOT_INCLUTION_ID::FeO) { particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED); particle->TypeName("FeO"); particle->SetClassifyId((int)NOT_INCLUTION_ID::FeO); particle->TypeColor("#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->TypeColor(stditm->GetColor().GetBuffer()); particle->TypeName(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->TypeName("Not Identified"); particle->TypeColor("#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::IfNeedMaxEDS(COTSParticlePtr particle, CPosXrayPtr xray, double& MaxEDSTime) { throw std::logic_error("The method or operation is not implemented."); } OTSClassifyEngine::CLEEnginePtr CreateInclutionEngine() { return CLEEnginePtr(new InclutionClassifyEngine()); } OTSClassifyEngine::CLEEnginePtr GetInclutionEngine() { static CLEEnginePtr engine; if (engine == NULL) { engine = CLEEnginePtr( new InclutionClassifyEngine()); engine->Init(); } return engine; } }