![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtObserverSettingsManager.h,v $ $Revision: 1.16 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 #include <vrvCore/vrvCore.h> 00015 #include <vrvUtil/DtVirtualBaseClass.h> 00016 #include <vrvCore/DtSharedVisualizerTypeMappingsManager.h> 00017 #include <vrvCore/DtStringKeyConverter.h> 00018 #include <vrvCore/DtVisualTypeManager.h> 00019 #include <vector> 00020 #include <map> 00021 #include <string> 00022 00023 namespace makVrv 00024 { 00025 class DtDe; 00026 class DtObserverSettingsDisplayNameProvider; 00027 class DtObserverSettingsToolTipProvider; 00028 class DtStringKeyConverter; 00029 00039 class DT_DLL_VRVCORE DtObserverSettingsManager : public DtVirtualBaseClass 00040 { 00041 public: 00042 friend class DtObserverSettingsManagerCreator; 00043 00044 enum ObserverSetting 00045 { 00046 Global = 0, 00047 ShowMainModel = 1, 00048 EnableSpeedScaling, 00049 EnableTerrainDragging, 00050 EnableViewControl, 00051 ConstrainToTerrain, 00052 ShowDustClouds, 00053 ShowWakes, 00054 ShowContrails, 00055 ShowFootprints, 00056 ShowTreads, 00057 ShowFire, 00058 ShowSmokePlumes, 00059 ShowTrackHistories, 00060 ShowDetonations, 00061 ShowMuzzleFlashes, 00062 EnableModelScaling, 00063 DisplaySky, 00064 ForceNorthOrientation, 00065 DisplayCompass, 00066 DisplayGridLines, 00067 DisplayFeatures 00068 }; 00069 00070 typedef DtVisualTypeManager::SupportedModelSets ModelSetList; 00071 typedef std::vector<int> GlobalSettingsList; 00072 typedef std::vector<int> ProjectionSettingsList; 00073 typedef std::vector<int> ModelSetSettingsList; 00074 00076 static DtObserverSettingsManager& instance(DtDe& de); 00077 00079 virtual ~DtObserverSettingsManager(); 00080 00082 int registerGlobalObserverSetting( const std::string& stringKey, 00083 const std::string& iconName="" ); 00084 00086 void registerGlobalObserverSetting( const std::string& stringKey, 00087 int intKey, const std::string& iconName="" ); 00088 00091 int registerProjectionSpecificObserverSetting( const std::string& 00092 stringKey, bool is2D, const std::string& iconName="" ); 00093 00096 void registerProjectionSpecificObserverSetting( const std::string& stringKey, 00097 int intKey, bool is2D, const std::string& iconName="" ); 00098 00101 int registerModelSetSpecificObserverSetting( const std::string& stringKey, 00102 ModelSetList modelSets, const std::string& iconName="" ); 00103 00105 void registerModelSetSpecificObserverSetting( const std::string& stringKey, 00106 int intKey, ModelSetList modelSets, const std::string& iconName="" ); 00107 00110 int lookupObserverSettingIntKey( const std::string& stringKey ) const; 00111 00114 const std::string* findObserverSettingStringKey( int intKey ) const; 00115 00117 const std::string* findObserverSettingDisplayName( int intKey ) const; 00118 00121 const std::string* findObserverSettingToolTip( int intKey ) const; 00122 00124 const std::string* findObserverSettingIcon( int intKey ) const; 00125 00127 const GlobalSettingsList& globalSettings() const; 00128 00130 const ProjectionSettingsList& projectionSpecificSettings( bool is2D ) const; 00131 00133 const ModelSetSettingsList& modelSetSpecificSettings( int modelSet ) const; 00134 00138 bool isSettingValid( bool projection, int modelSet, int settingKey ); 00139 00141 inline DtObserverSettingsDisplayNameProvider& displayNameProvider() const 00142 { 00143 return *myDisplayNameProvider; 00144 } 00145 00146 protected: 00147 00148 void registerSettingKey( ModelSetList modelSets, int key ); 00149 00151 DtObserverSettingsManager(DtDe&); 00152 00153 // Stuff needed by multiple public functions 00154 void registerProjectionSetting( bool projection, int key ); 00155 void registerModelSetSetting( int modelSet, int key ); 00156 void registerIconName( int key, const std::string& iconName ); 00157 00158 protected: 00159 00160 typedef std::map<bool, ProjectionSettingsList> ProjectionSettingsMap; 00161 typedef std::map<int, ModelSetSettingsList> ModelSetSettingsMap; 00162 typedef std::map<int, std::string> IconNameMap; 00163 typedef std::map<int, bool> InclusionMap; 00164 00165 DtDe& myDe; 00166 DtSharedVisualizerTypeMappingsManager& myMappingSharer; 00167 DtObserverSettingsDisplayNameProvider* myDisplayNameProvider; 00168 DtObserverSettingsToolTipProvider* myToolTipProvider; 00169 DtStringKeyConverter myKeyConverter; 00170 GlobalSettingsList myGlobalSettings; 00171 ProjectionSettingsMap myProjectionSpecificSettings; 00172 ModelSetSettingsMap myModelSetSpecificSettings; 00173 00174 ProjectionSettingsList myEmptyProjectionList; 00175 ModelSetSettingsList myEmptyModelSetList; 00176 IconNameMap myIconNameMap; 00177 }; 00178 00181 class DT_DLL_VRVCORE DtObserverSettingsManagerCreator : public DtVirtualBaseClass 00182 { 00183 public: 00185 DtObserverSettingsManagerCreator(); 00186 00188 virtual ~DtObserverSettingsManagerCreator(); 00189 00193 static DtObserverSettingsManagerCreator& instance(DtDe& de); 00194 00196 virtual DtObserverSettingsManager* create(DtDe&); 00197 }; 00198 }