VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtVisualizerSet.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2019 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
14 
15 namespace makVrv
16 {
17  class DtBaseConnection;
18  class DtMouseState;
19  class DtSceneObjectVisualizer;
20  class DtStateListener;
21  class DtStateVisualizerFactory;
22 
23  class DtElementDefinitionNew;
24  class DtVisualizerDefinitionSet;
25  class DtVisualizerDefinition;
26 
31  {
32  public:
33 
34  typedef std::vector<DtStateVisualizer*> VisualizerList;
35 
38  int modelSet, bool distribute);
39 
41  virtual ~DtVisualizerSet();
42 
44  virtual void visualizeElementDefinition(const DtUnicode& elementName,
45  const DtElementDefinitionNew& def,
47 
49  virtual void visualizeElementDefinition(const DtUnicode& elementName,
50  const DtElementDefinitionNew& def);
51 
57  virtual void createVisualizersByType( int visualType );
58 
61  virtual void destroyVisualizersByType( int visualType );
62 
64  const DtElementDefinitionNew* definition() const;
65 
67  int modelSet() const;
68 
70  template <typename VisualizerClass>
71  inline void findVisualizers(std::vector<VisualizerClass*>& visualizers);
72 
76  template <typename VisualizerClass>
77  inline void findVisualizersByDynamicCast(std::vector<VisualizerClass*>& visualizers);
78 
80  virtual void findVisualizers(const DtVisualizerSchema&,
81  VisualizerList& visualizers);
82 
90  virtual bool setVisible(bool visible,
93 
95  virtual bool isVisible() const;
96 
99  virtual bool show(DtShowHideContext::ShowHideContext);
100  virtual bool hide(DtShowHideContext::ShowHideContext);
101 
103  bool isHiddenByContext(DtShowHideContext::ShowHideContext) const;
105  virtual DtUniqueID uniqueID() const;
106 
107  DtSceneObjectVisualizer* sceneObjectVisualizer() const;
108 
110  virtual void setPickable( bool pickable );
111 
113  bool pickable() const;
114 
116  virtual void setSelected(bool);
117 
119  bool selected() const;
120 
123  bool addVisualizer(const DtVisualizerDefinition& def);
124 
126  virtual void destroyAllModelVisualizers();
127 
129  virtual DtStateVisualizer::Type supportsVisualizerType() const;
130 
132  boost::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
133  const std::string& windowName, const std::string& channelName,
136  boost::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
137  const std::string& windowName, const std::string& channelName,
140  boost::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
141  const std::string& windowName, const std::string& channelName,
144 
145  boost::signal< void (bool, DtVisualizerSet* vis) > signal_selectionStateChanged;
146 
147  protected:
149  void destroyAllModelVisualizersInternal();
150 
153  virtual void visualizeVisualizerDefinitionSet(const DtUnicode& elementName,
154  const DtVisualizerDefinitionSet& set,
156 
158  virtual DtStateVisualizer* createVisualizerFromDefinition(const DtVisualizerDefinition& def);
159 
163  virtual void addVisualizer(const std::string& schemaName,
164  DtStateVisualizer* visualizer);
165 
167  bool suppressVisualizerCreation( const DtVisualizerDefinition* visDef,
169  creationMap ) const;
170 
173  virtual int findVisualType( const DtVisualizerDefinition& visDef ) const;
174 
176  virtual void setModelVisualizerVisible(const std::string& schemaName,
177  bool onOff, int context);
178 
180  virtual void slot_mouseDown(
181  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
182  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
183  virtual void slot_mouseUp(
184  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
185  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
186  virtual void slot_mouseDblClick(
187  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
188  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
189 
192  template <typename T, typename C>
193  void connectAndUpdate(boost::signal<void (T)>& sig, void (C::*fp)(T), T val)
194  {
195  myConnections.manageConnection(sig.connect(boost::bind(fp, static_cast<C*>(this), _1)));
196  ((C&)(*this).*fp)(val);
197  }
198 
199  protected:
200 
203  const DtUnicode* chooseRandomString(const std::vector<DtUnicode>& stringList);
204 
205  protected:
206  typedef boost::unordered_multimap<std::string,DtStateVisualizer* >StateVisualizerMap;
207 
214 
217  bool myVisible;
219 
221  typedef std::vector<DtShowHideContext::ShowHideContext> ShowHideContexts;
222 
225 
226  std::string myVisualTypeString;
227  };
228 
229  template <typename VisualizerClass>
231  std::vector<VisualizerClass*>& visualizers)
232  {
233  std::pair<StateVisualizerMap::iterator,
234  StateVisualizerMap::iterator> range = myVisualizers.equal_range(
235  VisualizerClass::theTypeInfo().schema.name());
236 
237  for(; range.first != range.second; ++range.first)
238  {
239  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(
240  range.first->second);
241  if(instance)
242  {
243  visualizers.push_back(instance);
244  }
245  }
246  }
247 
248  template <typename VisualizerClass>
250  std::vector<VisualizerClass*>& visualizers)
251  {
252  StateVisualizerMap::const_iterator iter = myVisualizers.begin();
253 
254  for(; iter != myVisualizers.end(); ++iter)
255  {
256  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(iter->second);
257 
258  if (instance)
259  {
260  visualizers.push_back(instance);
261  }
262  }
263  }
264 }
DtStateVisualizerFactory & myCachedFactory
Definition: DtVisualizerSet.h:209
Definition: DtShowHideContext.h:19
void findVisualizers(std::vector< VisualizerClass * > &visualizers)
Find all instances of a Visualizer by schema name.
Definition: DtVisualizerSet.h:230
boost::signal< void(bool, DtVisualizerSet *vis) > signal_selectionStateChanged
Definition: DtVisualizerSet.h:145
A unicode string.
Definition: DtUnicode.h:33
DtSignalConnectionManager myConnections
Definition: DtVisualizerSet.h:212
boost::unordered_multimap< std::string, DtStateVisualizer * > StateVisualizerMap
Definition: DtVisualizerSet.h:206
bool mySelected
Definition: DtVisualizerSet.h:215
bool myVisible
Definition: DtVisualizerSet.h:217
Contains integers that determine the context with which to show/hide a visualizer.
ShowHideContext
Definition: DtShowHideContext.h:17
The makVrv::DtVisualizerDefinitionSet is a collection of makVrv::DtVisualizerDefinition instances...
Definition: DtVisualizerDefinitionSet.h:20
boost::unordered_map< int, ModelSetVisualizerCreationMap > VisualTypeVisualizerCreationMap
Map that indicates whether a visualizer should be created, by visual type, for all given model sets...
Definition: DtVisualizerCreationSettings.h:36
boost::signal< void(DtMouseState &mouseState, const DtUniqueID &id, const std::string &displayEngineName, const std::string &windowName, const std::string &channelName, DtStateVisualizer *v, DtVisualizerSet *i)> signal_mouseDblClick
Definition: DtVisualizerSet.h:143
Base class for visualizing generic objects in the scene.
Definition: DtSceneObjectVisualizer.h:27
A factory for DtStateVisualizer&#39;s.
Definition: DtStateVisualizerFactory.h:29
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:37
boost::signal< void(DtMouseState &mouseState, const DtUniqueID &id, const std::string &displayEngineName, const std::string &windowName, const std::string &channelName, DtStateVisualizer *v, DtVisualizerSet *i)> signal_mouseUp
Definition: DtVisualizerSet.h:139
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
StateVisualizerMap myVisualizers
Definition: DtVisualizerSet.h:211
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Type
Visualizer class types that are supportable via visualizers.
Definition: DtStateVisualizer.h:39
Contains makVrv:DtStateVisualizer class.
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
This class encapsulates the state associated with a mouse button event.
Definition: DtMouseState.h:23
std::string myVisualTypeString
Definition: DtVisualizerSet.h:226
std::vector< DtStateVisualizer * > VisualizerList
Definition: DtVisualizerSet.h:34
Contains makVrv::DtVisualizerCreationSettings class.
The element definition class contains the element definition information.
Definition: DtElementDefinitionNew.h:25
std::vector< DtShowHideContext::ShowHideContext > ShowHideContexts
Definition: DtVisualizerSet.h:221
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
bool myPickable
Definition: DtVisualizerSet.h:216
This contains all the DtVisualizers used to visualize an element in a particular model set...
Definition: DtVisualizerSet.h:30
The DtStateVisualizer is an abstract class.
Definition: DtStateVisualizer.h:30
DtStateListener & myStateListener
Definition: DtVisualizerSet.h:210
DtBaseConnection & myBaseConnection
Definition: DtVisualizerSet.h:208
void findVisualizersByDynamicCast(std::vector< VisualizerClass * > &visualizers)
Find all instance of a visualizer by dynamically casting to the class type rather than doing the fast...
Definition: DtVisualizerSet.h:249
A definition of a visualizer.
Definition: DtVisualizerDefinition.h:22
ShowHideContexts myShowHideContexts
Definition: DtVisualizerSet.h:223
void connectAndUpdate(boost::signal< void(T)> &sig, void(C::*fp)(T), T val)
Utility function for connect a signal to an update function as well as calling the update function...
Definition: DtVisualizerSet.h:193
boost::signal< void(DtMouseState &mouseState, const DtUniqueID &id, const std::string &displayEngineName, const std::string &windowName, const std::string &channelName, DtStateVisualizer *v, DtVisualizerSet *i)> signal_mouseDown
Emitted when the mouse is clicked on any visualizer in this collection.
Definition: DtVisualizerSet.h:135
const DtElementDefinitionNew * myDefinition
Definition: DtVisualizerSet.h:213
The DtStateListener is an abstract class.
Definition: DtStateListener.h:21
Definition: DtVisualizerSchema.h:22
bool myDistribute
Definition: DtVisualizerSet.h:218
DtSceneObjectVisualizer * mySceneObjectVisualizer
Definition: DtVisualizerSet.h:220
int myModelSet
Definition: DtVisualizerSet.h:224

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)