![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtStateVisualizerFactory.h,v $ $Revision: 1.15 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 #include <vrvCore/vrvCore.h> 00015 #include <vrvCore/DtSharedSettings.h> 00016 #include <vrvCore/DtStateVisualizer.h> 00017 #include <vrvCore/DtElementDefinitionManager.h> 00018 #include <boost/unordered_map.hpp> 00019 #include <string> 00020 #include <vector> 00021 #include <set> 00022 00023 namespace makVrv 00024 { 00025 class DtBaseConnection; 00026 class DtSharedSettingsManager; 00027 class DtStateListener; 00028 class DtStateVisualizerCreator; 00029 00032 class DT_DLL_VRVCORE DtStateVisualizerFactory : public DtVirtualBaseClass 00033 { 00034 public: 00035 00037 typedef boost::unordered_map<std::string, const DtStateVisualizer::TypeInfo*> 00038 TypeInfoMap; 00039 00041 typedef boost::unordered_map<std::string, DtStateVisualizerCreator*> 00042 CreatorMap; 00043 00044 typedef std::vector<std::pair<std::string, DtUnicode> > 00045 FunctionalNameScreenNameList; 00046 00048 typedef std::set<std::string> CreatorNameSet; 00049 00051 DtStateVisualizerFactory(); 00052 00054 virtual ~DtStateVisualizerFactory(); 00055 00057 DtStateVisualizerFactory(const DtStateVisualizerFactory& rhs); 00058 00060 DtStateVisualizerFactory& operator=(const DtStateVisualizerFactory& rhs); 00061 00063 static DtStateVisualizerFactory& instance(DtDe& de); 00064 00066 static DtStateVisualizerFactory& instance(DtBaseConnection& con); 00067 00070 static void copyInstance(DtBaseConnection& con, DtDe& de); 00071 00076 virtual void addStateVisualizerCreator(DtDe& de, 00077 DtStateVisualizerCreator* creator); 00078 00082 DtStateVisualizer* createStateVisualizer( const std::string& creatorName, 00083 std::string tag, DtBaseConnection& simulation, 00084 DtStateListener& listener, int modelSet, 00085 DtStateVisualizer::Type = DtStateVisualizer::AllVisualizerTypes) const; 00086 00088 const CreatorMap& creators() const; 00089 00091 const DtStateVisualizerCreator* findCreator( 00092 const std::string& creatorName, const std::string& tag) const; 00093 00098 virtual bool visualizerSupportsType(const std::string& visualizer, 00099 DtStateVisualizer::Type) const; 00100 00103 virtual void getCreatorNames(std::set<std::string>& names ) const; 00104 00108 virtual const DtStateVisualizer::TypeInfo* findTypeInfo( 00109 const std::string& functionalTypeName) const; 00110 00112 virtual void findFunctionalNameWhichSupportSchema(const std::string& schema, 00113 DtStateVisualizer::Type type, 00114 FunctionalNameScreenNameList& functionalNames) const; 00115 00116 00119 static DtStateVisualizer::Type elementDefinitionTypeToVisualizerType( 00120 DtElementDefinitionTypeManager::ElementDefinitionType type); 00121 00122 protected: 00123 TypeInfoMap myTypeInfoMap; 00124 CreatorMap myCreators; 00125 }; 00126 }