![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVrlinkRemoteGraphicVisualizer.h,v $ $Revision: 1.12 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvVrl/vrvVrl.h> 00016 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 #include <vrvVrl/DtRemoteGraphicVisualizerSet.h> 00019 #include <map> 00020 #include <boost/unordered_map.hpp> 00021 #include <boost/function.hpp> 00022 00023 #include <vl/dataInter.h> 00024 00025 namespace vrvControlToolkit 00026 { 00027 struct DtRemoteGraphicSet_v1; 00028 } 00029 00030 namespace makVrv 00031 { 00032 class DtRemoteGraphicSetControllerAgent; 00033 00034 namespace DT_PROTOCOL_NAMESPACE 00035 { 00036 class DtVrlinkRemoteGraphicStateListener; 00037 class DtRemoteGraphicVisualizerSet; 00038 class DtRemoteGraphicElement; 00039 00043 class DL_DLL_IGCONVRLINK DtRemoteGraphicsProcessor 00044 : public DtVirtualBaseClass 00045 { 00046 public: 00047 00049 DtRemoteGraphicsProcessor(DtVrlinkConnection& connection); 00050 00052 static void registerInstance(DtVrlinkConnection& connection, 00053 DtRemoteGraphicsProcessor* instance); 00054 00056 static DtRemoteGraphicsProcessor* findInstance(DtVrlinkConnection& connection); 00057 00059 virtual ~DtRemoteGraphicsProcessor(); 00060 00062 void remoteGraphicsSelectionChanged(const DtSelectionManager::IdSet& selected, 00063 const DtSelectionManager::IdSet& deselected); 00064 00066 std::vector<DtRemoteGraphicVisualizerSet*> findVisualizers( 00067 const DtGlobalObjectDesignator& id); 00068 00070 inline DtVrlinkRemoteGraphicStateListener* findListener( DtUniqueID id); 00071 00073 void processInteraction(const DtDataInteraction& dataInter); 00074 00078 virtual void setRemoteGraphicSet(const std::string& name, bool onOff); 00079 00081 virtual bool remoteGraphicSetStatus( 00082 const std::vector<std::string>& names) const; 00083 00084 virtual void addRemoteGraphicSet(const std::string& name); 00085 00086 virtual void removeRemoteGraphicSet(const std::string& name); 00087 00088 virtual void addAttributeGroupTemplate(const std::string& groupName, 00089 const std::string& templateName); 00090 00091 virtual void removeAttributeGroupTemplate(const std::string& groupName, 00092 const std::string& templateName); 00093 00094 virtual void setAttributeGroupTemplateStatus(const std::string& groupName, 00095 const std::string& templateName, bool onOff); 00096 00097 boost::signal<void ()> signal_layersChanged; 00098 00099 protected: 00100 00102 void onEnvironmentalDiscovered(DtVrlinkEnvironmentalStateListenerInterface& listener); 00103 00105 void onEnvironmentalToBeDestroyed(DtVrlinkEnvironmentalStateListenerInterface& listener); 00106 00107 virtual void getLayerNames(const std::string& name, std::vector<std::string>& names) const; 00108 00109 virtual void getGroupAndTemplateNames(const std::string& name, 00110 std::string& groupName, std::string& templateName); 00111 00113 //View control functions. All functions are registered by default in 00114 //the CTOR. 00115 void processRemoteGraphicSetControl(const vrvControlToolkit::DtRemoteGraphicSet_v1* command); 00117 00118 protected: 00119 00120 typedef boost::unordered_map<DtUniqueID, DtVrlinkRemoteGraphicStateListener*> 00121 RemoteGraphicElementIdToListenerMap; 00122 00123 typedef boost::unordered_map<DtVrlinkRemoteGraphicStateListener*, DtRemoteGraphicElement*> 00124 RemoteGraphicElementMap; 00125 00126 typedef boost::unordered_map<std::string, DtRemoteGraphicElement*> 00127 GlobalIdToRemoteGraphicElementMap; 00128 00129 typedef std::map<std::string, bool> GraphicSetStatusMap; 00130 00131 DtVrlinkConnection& myConnection; 00132 DtSignalConnectionManager myConnections; 00133 RemoteGraphicElementIdToListenerMap myElementIdToListenerMap; 00134 RemoteGraphicElementMap myElementVisualizers; 00135 GlobalIdToRemoteGraphicElementMap myGlobalIdToElementVisualizerMap; 00136 GraphicSetStatusMap myRemoteGraphicSetStatus; 00137 DtRemoteGraphicSetControllerAgent* myRemoteGraphicSetAgent; 00138 }; 00139 00140 } 00141 }