VR-Forces 4.10 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) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
14 #include <vrvCore/DtMouseState.h>
15 
17 
18 namespace makVrv
19 {
20  class DtBaseConnection;
21  class DtSceneObjectVisualizer;
22  class DtStateListener;
23  class DtStateVisualizerFactory;
24  class DtElementDefinitionNew;
25  class DtVisualizerDefinitionSet;
26  class DtVisualizerDefinition;
27 
32  {
33  public:
34 
35  typedef std::vector<DtStateVisualizer*> VisualizerList;
36 
39  int modelSet, bool distribute);
40 
42  virtual ~DtVisualizerSet();
43 
45  virtual void visualizeElementDefinition(const DtUnicode& elementName,
46  const DtElementDefinitionNew& def,
48 
50  virtual void visualizeElementDefinition(const DtUnicode& elementName,
51  const DtElementDefinitionNew& def);
52 
58  virtual void createVisualizersByType( int visualType );
59 
62  virtual void destroyVisualizersByType( int visualType );
63 
65  const DtElementDefinitionNew* definition() const;
66 
68  int modelSet() const;
69 
71  template <typename VisualizerClass>
72  inline void findVisualizers(std::vector<VisualizerClass*>& visualizers);
73 
77  template <typename VisualizerClass>
78  inline void findVisualizersByDynamicCast(std::vector<VisualizerClass*>& visualizers);
79 
81  virtual void findVisualizers(const DtVisualizerSchema&,
82  VisualizerList& visualizers);
83 
91  virtual bool setVisible(bool visible,
94 
96  virtual bool isVisible() const;
97 
100  virtual bool show(DtShowHideContext::ShowHideContext);
101  virtual bool hide(DtShowHideContext::ShowHideContext);
102 
104  bool isHiddenByContext(DtShowHideContext::ShowHideContext) const;
106  virtual DtUniqueID uniqueID() const;
107 
108  DtSceneObjectVisualizer* sceneObjectVisualizer() const;
109 
111  virtual void setPickable( bool pickable );
112 
114  bool pickable() const;
115 
117  virtual void setSelected(bool);
118 
120  bool selected() const;
121 
126  virtual void setHasMouseCursor(bool);
127 
130  bool addVisualizer(const DtVisualizerDefinition& def);
131 
133  virtual void destroyAllModelVisualizers();
134 
136  virtual DtStateVisualizer::Type supportsVisualizerType() const;
137 
139  boost::signalslib::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
140  const std::string& windowName, const std::string& channelName,
143  boost::signalslib::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
144  const std::string& windowName, const std::string& channelName,
147  boost::signalslib::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
148  const std::string& windowName, const std::string& channelName,
151 
152  boost::signalslib::signal< void (bool, DtVisualizerSet* vis) > signal_selectionStateChanged;
153 
154  boost::signalslib::signal< void (bool, DtVisualizerSet* vis) > signal_hasMouseCursorStateChanged;
155 
156  protected:
158  void destroyAllModelVisualizersInternal();
159 
162  virtual void visualizeVisualizerDefinitionSet(const DtUnicode& elementName,
163  const DtVisualizerDefinitionSet& set,
165 
167  virtual DtStateVisualizer* createVisualizerFromDefinition(const DtVisualizerDefinition& def);
168 
172  virtual void addVisualizer(const std::string& schemaName,
173  DtStateVisualizer* visualizer);
174 
176  virtual bool suppressVisualizerCreation( const DtVisualizerDefinition* visDef,
178  creationMap) const;
179 
182  virtual int findVisualType( const DtVisualizerDefinition& visDef ) const;
183 
185  virtual void setModelVisualizerVisible(const std::string& schemaName,
186  bool onOff, int context);
187 
189  virtual void slot_mouseDown(
190  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
191  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
192  virtual void slot_mouseUp(
193  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
194  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
195  virtual void slot_mouseDblClick(
196  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
197  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
198 
201  template <typename T, typename C>
202  void connectAndUpdate(boost::signalslib::signal<void (T)>& sig, void (C::*fp)(T), T val)
203  {
204  myConnections.manageConnection(sig.connect(boost::bind(fp, static_cast<C*>(this), _1)));
205  ((C&)(*this).*fp)(val);
206  }
207 
208  protected:
209 
212  const DtUnicode* chooseRandomString(const std::vector<DtUnicode>& stringList);
213 
214  protected:
215  typedef boost::unordered_multimap<std::string,DtStateVisualizer* >StateVisualizerMap;
216 
223 
227  bool myVisible;
229 
231  typedef std::vector<DtShowHideContext::ShowHideContext> ShowHideContexts;
232 
235 
236  std::string myVisualTypeString;
237  };
238 
239  template <typename VisualizerClass>
241  std::vector<VisualizerClass*>& visualizers)
242  {
243  std::pair<StateVisualizerMap::iterator,
244  StateVisualizerMap::iterator> range = myVisualizers.equal_range(
245  VisualizerClass::theTypeInfo().schema.name());
246 
247  for(; range.first != range.second; ++range.first)
248  {
249  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(
250  range.first->second);
251  if(instance)
252  {
253  visualizers.push_back(instance);
254  }
255  }
256  }
257 
258  template <typename VisualizerClass>
260  std::vector<VisualizerClass*>& visualizers)
261  {
262  StateVisualizerMap::const_iterator iter = myVisualizers.begin();
263 
264  for(; iter != myVisualizers.end(); ++iter)
265  {
266  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(iter->second);
267 
268  if (instance)
269  {
270  visualizers.push_back(instance);
271  }
272  }
273  }
274 }
DtStateVisualizerFactory & myCachedFactory
Definition: DtVisualizerSet.h:218
boost::signalslib::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:142
Definition: DtShowHideContext.h:19
Contains makVrv::DtVisualizerSchema class.
void findVisualizers(std::vector< VisualizerClass * > &visualizers)
Find all instances of a Visualizer by schema name.
Definition: DtVisualizerSet.h:240
A unicode string.
Definition: DtUnicode.h:33
DtSignalConnectionManager myConnections
Definition: DtVisualizerSet.h:221
boost::unordered_multimap< std::string, DtStateVisualizer * > StateVisualizerMap
Definition: DtVisualizerSet.h:215
boost::signalslib::signal< void(bool, DtVisualizerSet *vis) > signal_hasMouseCursorStateChanged
Definition: DtVisualizerSet.h:154
bool mySelected
Definition: DtVisualizerSet.h:224
bool myVisible
Definition: DtVisualizerSet.h:227
Contains integers that determine the context with which to show/hide a visualizer.
ShowHideContext
Definition: DtShowHideContext.h:17
boost::signalslib::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:146
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
Base class for visualizing generic objects in the scene.
Definition: DtSceneObjectVisualizer.h:24
A factory for DtStateVisualizer&#39;s.
Definition: DtStateVisualizerFactory.h:29
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:34
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
StateVisualizerMap myVisualizers
Definition: DtVisualizerSet.h:220
This file contains the declaration for the class DtMouseState.
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
Type
Visualizer class types that are supportable via visualizers.
Definition: DtStateVisualizer.h:41
Contains makVrv:DtStateVisualizer class.
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
This class encapsulates the state associated with a mouse button event.
Definition: DtMouseState.h:20
std::string myVisualTypeString
Definition: DtVisualizerSet.h:236
std::vector< DtStateVisualizer * > VisualizerList
Definition: DtVisualizerSet.h:35
Contains makVrv::DtVisualizerCreationSettings class.
The element definition class contains the element definition information.
Definition: DtElementDefinitionNew.h:25
bool myHasMouseCursor
Definition: DtVisualizerSet.h:225
std::vector< DtShowHideContext::ShowHideContext > ShowHideContexts
Definition: DtVisualizerSet.h:231
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
void connectAndUpdate(boost::signalslib::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:202
bool myPickable
Definition: DtVisualizerSet.h:226
This contains all the DtVisualizers used to visualize an element in a particular model set...
Definition: DtVisualizerSet.h:31
The DtStateVisualizer is an abstract class.
Definition: DtStateVisualizer.h:32
DtStateListener & myStateListener
Definition: DtVisualizerSet.h:219
DtBaseConnection & myBaseConnection
Definition: DtVisualizerSet.h:217
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:259
A definition of a visualizer.
Definition: DtVisualizerDefinition.h:22
ShowHideContexts myShowHideContexts
Definition: DtVisualizerSet.h:233
const DtElementDefinitionNew * myDefinition
Definition: DtVisualizerSet.h:222
The DtStateListener is an abstract class.
Definition: DtStateListener.h:21
Definition: DtVisualizerSchema.h:19
bool myDistribute
Definition: DtVisualizerSet.h:228
DtSceneObjectVisualizer * mySceneObjectVisualizer
Definition: DtVisualizerSet.h:230
boost::signalslib::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:150
boost::signalslib::signal< void(bool, DtVisualizerSet *vis) > signal_selectionStateChanged
Definition: DtVisualizerSet.h:152
int myModelSet
Definition: DtVisualizerSet.h:234

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)