VR-Forces Developer's Guide
 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) 2023 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 DtStateListener;
22  class DtStateVisualizerFactory;
23  class DtElementDefinition;
24  class DtVisualizerDefinitionSet;
25  class DtVisualizerDefinition;
26  class DtSceneObjectAgent;
27 
32  {
33  public:
34 
35  using VisualizerList = std::vector<DtStateVisualizer*> ;
36 
39  DtSceneObjectAgent* sceneObject, DtModelSetId modelSet, bool distribute );
40 
42  virtual ~DtVisualizerSet();
43 
45  virtual void visualizeElementDefinition(const DtUnicode& elementName,
46  const DtElementDefinition& def,
48 
50  virtual void visualizeElementDefinition(const DtUnicode& elementName,
51  const DtElementDefinition& def);
52 
58  virtual void createVisualizersByType( int visualType );
59 
62  virtual void destroyVisualizersByType( int visualType );
63 
65  const DtElementDefinition* definition() const;
66  virtual void setElementDefinition( const DtElementDefinition* def );
67 
69  DtModelSetId modelSet() const;
70 
72  template <typename VisualizerClass>
73  inline void findVisualizers(std::vector<VisualizerClass*>& visualizers);
74 
78  template <typename VisualizerClass>
79  inline void findVisualizersByDynamicCast(std::vector<VisualizerClass*>& visualizers);
80 
82  virtual void findVisualizers(const DtVisualizerSchema&,
83  VisualizerList& visualizers);
84 
86  virtual DtUniqueID sceneObjectID() const;
87 
89  virtual void setPickable( bool pickable );
90 
92  bool pickable() const;
93 
96  virtual bool addVisualizer(const DtVisualizerDefinition& def);
97 
99  virtual void destroyAllModelVisualizers();
100 
102  virtual DtStateVisualizer::Type supportsVisualizerType() const;
103 
105  DtStateListener& listener() const;
106 
112  virtual void setVisible(bool visible, DtVisualizerShowHideContext::VisualizerShowHideContext);
113 
114  protected:
116  void destroyAllModelVisualizersInternal();
117  public:
120  virtual void visualizeVisualizerDefinitionSet(const DtUnicode& elementName,
121  const DtVisualizerDefinitionSet& set,
123  protected:
125  virtual DtStateVisualizer* createVisualizerFromDefinition(const DtVisualizerDefinition& def);
126 
130  virtual void addVisualizer(const std::string& schemaName,
131  DtStateVisualizer* visualizer);
132 
134  virtual bool suppressVisualizerCreation( const DtVisualizerDefinition* visDef,
136  creationMap) const;
137 
140  virtual int findVisualType( const DtVisualizerDefinition& visDef ) const;
141 
144  template <typename T, typename C>
145  void connectAndUpdate(boost::signalslib::signal<void (T)>& sig, void (C::*fp)(T), T val)
146  {
147  myConnections.manageConnection(sig.connect(boost::bind(fp, static_cast<C*>(this), _1)));
148  ((C&)(*this).*fp)(val);
149  }
150 
151  protected:
152 
155  const DtUnicode* chooseRandomString(const std::vector<DtUnicode>& stringList);
156 
157  protected:
158  typedef boost::unordered_multimap<std::string,DtStateVisualizer* >StateVisualizerMap;
159 
166 
168  bool myVisible;
170 
171  DtSceneObjectAgent* mySceneObjectAgent;
172 
174 
175  std::string myVisualTypeString;
176  };
177 
178  template <typename VisualizerClass>
180  std::vector<VisualizerClass*>& visualizers)
181  {
182  std::pair<StateVisualizerMap::iterator,
183  StateVisualizerMap::iterator> range = myVisualizers.equal_range(
184  VisualizerClass::theTypeInfo().schema.name());
185 
186  for(; range.first != range.second; ++range.first)
187  {
188  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(
189  range.first->second);
190  if(instance)
191  {
192  visualizers.push_back(instance);
193  }
194  }
195  }
196 
197  template <typename VisualizerClass>
199  std::vector<VisualizerClass*>& visualizers)
200  {
201  StateVisualizerMap::const_iterator iter = myVisualizers.begin();
202 
203  for(; iter != myVisualizers.end(); ++iter)
204  {
205  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(iter->second);
206 
207  if (instance)
208  {
209  visualizers.push_back(instance);
210  }
211  }
212  }
213 }
DtStateVisualizerFactory & myCachedFactory
Definition: DtVisualizerSet.h:161
Contains makVrv::DtVisualizerSchema class.
void findVisualizers(std::vector< VisualizerClass * > &visualizers)
Find all instances of a Visualizer by schema name.
Definition: DtVisualizerSet.h:179
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
DtSignalConnectionManager myConnections
Definition: DtVisualizerSet.h:164
boost::unordered_multimap< std::string, DtStateVisualizer * > StateVisualizerMap
Definition: DtVisualizerSet.h:158
bool myVisible
Definition: DtVisualizerSet.h:168
Contains integers that determine the context with which to show/hide a visualizer.
std::unordered_map< DtModelSetId, ModelSetVisualizerCreationMap > VisualTypeVisualizerCreationMap
Map that indicates whether a visualizer should be created, by visual type, for all given model sets...
Definition: DtVisualizerCreationSettings.h:43
DtModelSetId myModelSet
Definition: DtVisualizerSet.h:173
The makVrv::DtVisualizerDefinitionSet is a collection of makVrv::DtVisualizerDefinition instances...
Definition: DtVisualizerDefinitionSet.h:28
DtSceneObjectAgent * mySceneObjectAgent
Definition: DtVisualizerSet.h:171
const DtElementDefinition * myDefinition
Definition: DtVisualizerSet.h:165
A factory for DtStateVisualizer&#39;s.
Definition: DtStateVisualizerFactory.h:30
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:35
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
StateVisualizerMap myVisualizers
Definition: DtVisualizerSet.h:163
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. Each visualizer can be created by an ins...
Definition: DtStateVisualizer.h:39
Contains makVrv:DtStateVisualizer class.
The element definition class contains the element definition information. The makVrv::DtElementDefini...
Definition: DtElementDefinition.h:26
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::string myVisualTypeString
Definition: DtVisualizerSet.h:175
Contains makVrv::DtVisualizerCreationSettings class.
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:145
bool myPickable
Definition: DtVisualizerSet.h:167
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. Developers derive from this to create logic that &quot;directs...
Definition: DtStateVisualizer.h:30
std::vector< DtStateVisualizer * > VisualizerList
Definition: DtVisualizerSet.h:35
DtStateListener & myStateListener
Definition: DtVisualizerSet.h:162
DtBaseConnection & myBaseConnection
Definition: DtVisualizerSet.h:160
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:198
A definition of a visualizer. Visualizer definition are always members of a visualizer definition set...
Definition: DtVisualizerDefinition.h:26
VisualizerShowHideContext
Definition: DtShowHideContext.h:41
DtModelSetId
Definition: DtModelSetEnums.h:19
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:26
Definition: DtVisualizerSchema.h:19
bool myDistribute
Definition: DtVisualizerSet.h:169

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)