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