std::string GetTevStageConfigAlphaCombinerString(const TexturingRegs::TevStageConfig& tev_stage) { auto op_str = GetTevStageConfigOperationString(tev_stage.alpha_op); op_str = ReplacePattern( op_str, "%source1", GetTevStageConfigAlphaSourceString(tev_stage.alpha_source1, tev_stage.alpha_modifier1)); op_str = ReplacePattern( op_str, "%source2", GetTevStageConfigAlphaSourceString(tev_stage.alpha_source2, tev_stage.alpha_modifier2)); return ReplacePattern( op_str, "%source3", GetTevStageConfigAlphaSourceString(tev_stage.alpha_source3, tev_stage.alpha_modifier3)); }
static std::string GetTevStageConfigColorSourceString( const TexturingRegs::TevStageConfig::Source& source, const TexturingRegs::TevStageConfig::ColorModifier modifier) { using ColorModifier = TexturingRegs::TevStageConfig::ColorModifier; static const std::map<ColorModifier, std::string> color_modifier_map = { {ColorModifier::SourceColor, "%source.rgb"}, {ColorModifier::OneMinusSourceColor, "(1.0 - %source.rgb)"}, {ColorModifier::SourceAlpha, "%source.aaa"}, {ColorModifier::OneMinusSourceAlpha, "(1.0 - %source.aaa)"}, {ColorModifier::SourceRed, "%source.rrr"}, {ColorModifier::OneMinusSourceRed, "(1.0 - %source.rrr)"}, {ColorModifier::SourceGreen, "%source.ggg"}, {ColorModifier::OneMinusSourceGreen, "(1.0 - %source.ggg)"}, {ColorModifier::SourceBlue, "%source.bbb"}, {ColorModifier::OneMinusSourceBlue, "(1.0 - %source.bbb)"}, }; auto src_str = GetTevStageConfigSourceString(source); auto modifier_it = color_modifier_map.find(modifier); std::string modifier_str = "%source.????"; if (modifier_it != color_modifier_map.end()) modifier_str = modifier_it->second; return ReplacePattern(modifier_str, "%source", src_str); }
static std::string GetTevStageConfigAlphaSourceString( const TexturingRegs::TevStageConfig::Source& source, const TexturingRegs::TevStageConfig::AlphaModifier modifier) { using AlphaModifier = TexturingRegs::TevStageConfig::AlphaModifier; static const std::map<AlphaModifier, std::string> alpha_modifier_map = { {AlphaModifier::SourceAlpha, "%source.a"}, {AlphaModifier::OneMinusSourceAlpha, "(1.0 - %source.a)"}, {AlphaModifier::SourceRed, "%source.r"}, {AlphaModifier::OneMinusSourceRed, "(1.0 - %source.r)"}, {AlphaModifier::SourceGreen, "%source.g"}, {AlphaModifier::OneMinusSourceGreen, "(1.0 - %source.g)"}, {AlphaModifier::SourceBlue, "%source.b"}, {AlphaModifier::OneMinusSourceBlue, "(1.0 - %source.b)"}, }; auto src_str = GetTevStageConfigSourceString(source); auto modifier_it = alpha_modifier_map.find(modifier); std::string modifier_str = "%source.????"; if (modifier_it != alpha_modifier_map.end()) modifier_str = modifier_it->second; return ReplacePattern(modifier_str, "%source", src_str); }
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { HRESULT hr ; try { //RedirectIOToConsole(); //RedirectedIOProcess remote; //std::string output = remote.RunProcess("tasklist.exe"); //OutputDebugString(output.c_str()); //_CrtSetBreakAlloc(358); //_CrtSetBreakAlloc(95360); //CRTDBG_DELAY_FREE_MEM_DF //_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); GLogger.Open(); GLogger.DebugLevel()=5; GLogger.Timestamping()=true; //std::cout.rdbuf(&GLogger._outputdebugstream); //std::cerr.rdbuf(&GLogger._outputdebugstream); if(FAILED(hr=::CoInitialize(NULL))) throw std::exception("CoInitialize failed\n"); if(FAILED(hr= ::CoInitializeSecurity( NULL, //Points to security descriptor -1, //Count of entries in asAuthSvc NULL, //Array of names to register NULL, //Reserved for future use RPC_C_AUTHN_LEVEL_NONE, //The default authentication //level for proxies RPC_C_IMP_LEVEL_IDENTIFY, //The default impersonation //level for proxies NULL, //Reserved; must be set to NULL EOAC_NONE, //Additional client or //server-side capabilities NULL //Reserved for future use ))) throw std::exception("CoInitializeSecurity failed\n"); //std::cout.rdbuf(GLogger.DebugFile.rdbuf()); //redirect std::cout to out.txt! //std::cerr.rdbuf(GLogger.DebugFile.rdbuf()); //redirect std::cout to out.txt! #if 0 std::string path, contents, ipaddr, devices; ipaddr="127.0.0.1"; devices="M33"; path = "C:\\Program Files\\NIST\\proj\\MTConnect\\Nist\\MTConnectGadgets\\MtcOpcAgent\\Distribution\\"; ReadFile(path+"MtcOpcAgent.ini", contents); ReplacePattern(contents, "ServerMachineName", "\n", "ServerMachineName=" + ipaddr + "\n"); ReplacePattern(contents, "MTConnectDevice", "\n", "MTConnectDevice=" + devices + "\n"); std::vector<std::string> ips=TrimmedTokenize(ipaddr,","); std::vector<std::string> devs=TrimmedTokenize(devices,","); if(ips.size() != devs.size()) ::MessageBox(NULL, "Mismatched # ips and devices", "Error", MB_OK); std::string tagsection="SIEMENS"; for(int i=1; i< ips.size(); i++) { tagsection+=",SIEMENS"; } ReplacePattern(contents, "OpcTags", "\n", "OpcTags=" + tagsection + "\n"); ::MessageBox(NULL,contents.c_str(), "Error", MB_OK); #endif AgentConfigurationEx config; #if 0 char *argv[4] = { "agent.exe", "debug", "" }; config.main(2, (const char **) argv); #endif config.main( __argc,(const char **) __argv ); /*AgentConfiguration config; return config.main(__argc, (const char **) __argv);*/ } catch(std::exception e) { OutputDebugString(e.what()); } catch(...) { OutputDebugString("Service terminated abnormally in main\n"); } ::CoUninitialize(); _CrtDumpMemoryLeaks(); return -1; }