![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2012 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00009 00010 #pragma once 00011 00012 #include <vrvCore/vrvCore.h> 00013 #include <string> 00014 #include <map> 00015 #include <list> 00016 #include <vector> 00017 #include <boost/signal.hpp> 00018 #include <vrvUtil/DtSignalConnectionManager.h> 00019 #include <vrvUtil/DtVirtualBaseClass.h> 00020 #include <vrvCore/DtElementData.h> 00021 #include <vrvCore/DtOverlayFilter.h> 00022 00023 namespace makVrv 00024 { 00025 class DtDe; 00026 class DtDriverManager; 00027 class DtTacticalGraphicOverlay; 00028 00032 class DT_DLL_VRVCORE DtTacticalGraphicOverlayManager : public DtVirtualBaseClass 00033 { 00034 00038 class DT_DLL_VRVCORE DtTacticalGraphicOverlayMember 00039 { 00040 00041 public: 00042 00044 DtTacticalGraphicOverlayMember(); 00045 00047 DtTacticalGraphicOverlayMember(DtUniqueID id, std::string name, std::string overlay=""); 00048 00050 virtual ~DtTacticalGraphicOverlayMember(); 00051 00053 virtual DtUniqueID id() const; 00054 virtual void setId(const DtUniqueID& id); 00055 00057 virtual const std::string& name() const; 00058 virtual void setName(const std::string& name); 00059 00061 virtual const std::string& overlay() const; 00062 virtual void setOverlay(const std::string& name); 00063 00065 virtual bool visible() const; 00066 virtual void setVisible(bool flag); 00067 00069 virtual bool filtered() const; 00070 virtual void setFiltered(bool flag); 00071 00072 protected: 00073 00074 DtUniqueID myObjectID; 00075 std::string myObjectName; 00076 std::string myOverlayName; 00077 bool myVisible; 00078 bool myFiltered; 00079 }; 00080 00081 public: 00082 00083 typedef std::list<DtTacticalGraphicOverlay*> DtTacticalGraphicOverlayList; 00084 typedef std::vector<DtElementEntry::ElementType> TacticalGraphicTypeVector; 00085 00086 static DtTacticalGraphicOverlayManager& instance(DtDe& de); 00087 00088 static void registerInstance(DtDe& de, DtTacticalGraphicOverlayManager* mgr); 00089 00091 virtual ~DtTacticalGraphicOverlayManager(); 00092 00095 virtual void addTacticalGraphic(const DtUniqueID& id, const std::string& name); 00096 00099 virtual const std::string* tacticalGraphicName(const DtUniqueID& id) const; 00100 00103 virtual void removeTacticalGraphic(const DtUniqueID& id); 00104 00107 virtual void renameTacticalGraphic(const DtUniqueID& id, const std::string& newName); 00108 00111 virtual void renameTacticalGraphicOverlay(const DtUniqueID& id, const std::string& newName); 00112 00114 virtual void setTacticalGraphicVisible(const DtUniqueID& id, bool flag); 00115 00117 virtual std::string newOverlay(); 00118 00121 virtual void addOverlay(const std::string name); 00122 00125 virtual void deleteOverlay(const std::string& name); 00126 00129 virtual void renameOverlay(const std::string& oldName, const std::string& newName); 00130 00132 virtual DtTacticalGraphicOverlay* findOverlay(const std::string& name) const; 00133 00135 virtual DtTacticalGraphicOverlayList overlays() const; 00136 00138 virtual bool overlayVisible(const std::string& overlayName) const; 00139 virtual void setOverlayVisible(const std::string& overlayName, bool flag); 00140 00142 virtual bool overlayFiltered(const std::string& overlayName) const; 00143 virtual void setOverlayFiltered(const std::string& overlayName, bool flag); 00144 00147 virtual bool overlayLocked(const std::string& overlayName) const; 00148 virtual void setOverlayLocked(const std::string& overlayName, bool flag); 00149 00151 virtual const DtTacticalGraphicOverlay* currentOverlay() const; 00152 virtual void setCurrentOverlay(const std::string& name); 00153 00155 virtual void setTacticalGraphicTypes(const TacticalGraphicTypeVector&); 00156 00158 virtual const TacticalGraphicTypeVector& tacticalGraphicTypes() const; 00159 00161 virtual bool isTacticalGraphic(const DtUniqueID& id) const; 00162 00163 boost::signal<void (const DtUniqueID&, const std::string&)> signal_tacticalGraphicAdded; 00164 boost::signal<void (const DtUniqueID&, const std::string&)> signal_tacticalGraphicRenamed; 00165 boost::signal<void (const DtUniqueID&, const std::string&)> signal_tacticalGraphicOverlayRenamed; 00166 boost::signal<void (const DtUniqueID&)> signal_tacticalGraphicRemoved; 00167 00168 boost::signal<void (const std::string&)> signal_overlayAdded; 00169 boost::signal<void (const std::string&)> signal_overlayDeleted; 00170 boost::signal<void (const std::string&, bool)> signal_overlayFiltered; 00171 boost::signal<void (const std::string&, bool)> signal_overlayVisibilityChanged; 00172 boost::signal<void (const std::string&, const std::string&)> signal_overlayRenamed; 00173 boost::signal<void (const std::string&)> signal_currentOverlayChanged; 00174 00175 protected: 00176 00178 virtual void slot_onElementsAdded( const DtElementData::ElementList& elements ); 00179 00181 virtual void slot_onElementAttributesChanged( 00182 const DtElementData::EntryAttributesList& attributes ); 00183 00185 virtual void slot_onElementsRemoved( const DtElementData::UniqueIdList& elementIds); 00186 00188 virtual void addFilter(const std::string& name, DtOverlayFilter* filter, bool apply=false); 00189 00190 protected: 00192 DtTacticalGraphicOverlayManager(DtDe& de); 00193 00194 protected: 00195 00196 typedef std::map<DtUniqueID, DtTacticalGraphicOverlayMember> DtTacticalGraphicOverlayObjectMap; 00197 typedef std::list<DtOverlayFilter*> DtTacticalGraphicOverlayFilterList; 00198 00199 DtDe& myDe; 00200 DtTacticalGraphicOverlayList myOverlays; 00201 DtTacticalGraphicOverlayFilterList myFilters; 00202 DtTacticalGraphicOverlayObjectMap myTacticalGraphicNames; 00203 DtTacticalGraphicOverlay* myCurrentOverlay; 00204 00205 DtSignalConnectionManager mySignals; 00206 00207 TacticalGraphicTypeVector myTacticalGraphicTypes; 00208 }; 00209 } 00210