VR-Forces 4.0.4 Class Documentation
include/vrvCore/DtObserverSettingsManager.h
Go to the documentation of this file.
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 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)