VR-Forces 5.0.2 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) 2022 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  class DtSceneObjectAgent;
28 
33  {
34  public:
35 
36  typedef std::vector<DtStateVisualizer*> VisualizerList;
37 
40  int modelSet, bool distribute);
41 
44  DtSceneObjectAgent* sceneObject, int modelSet, bool distribute );
45 
47  virtual ~DtVisualizerSet();
48 
50  virtual void visualizeElementDefinition(const DtUnicode& elementName,
51  const DtElementDefinitionNew& def,
53 
55  virtual void visualizeElementDefinition(const DtUnicode& elementName,
56  const DtElementDefinitionNew& def);
57 
63  virtual void createVisualizersByType( int visualType );
64 
67  virtual void destroyVisualizersByType( int visualType );
68 
70  const DtElementDefinitionNew* definition() const;
71  virtual void setElementDefinition( const DtElementDefinitionNew* def );
72 
74  int modelSet() const;
75 
77  template <typename VisualizerClass>
78  inline void findVisualizers(std::vector<VisualizerClass*>& visualizers);
79 
83  template <typename VisualizerClass>
84  inline void findVisualizersByDynamicCast(std::vector<VisualizerClass*>& visualizers);
85 
87  virtual void findVisualizers(const DtVisualizerSchema&,
88  VisualizerList& visualizers);
89 
91  virtual DtUniqueID sceneObjectID() const;
92 
93  DtSceneObjectVisualizer* sceneObjectVisualizer() const;
94 
96  virtual void setPickable( bool pickable );
97 
99  bool pickable() const;
100 
103  virtual bool addVisualizer(const DtVisualizerDefinition& def);
104 
106  virtual void destroyAllModelVisualizers();
107 
109  virtual DtStateVisualizer::Type supportsVisualizerType() const;
110 
112  DtStateListener& listener() const;
113 
119  virtual void setVisible(bool visible, DtVisualizerShowHideContext::VisualizerShowHideContext);
120 
121  protected:
123  void destroyAllModelVisualizersInternal();
124  public:
127  virtual void visualizeVisualizerDefinitionSet(const DtUnicode& elementName,
128  const DtVisualizerDefinitionSet& set,
130  protected:
132  virtual DtStateVisualizer* createVisualizerFromDefinition(const DtVisualizerDefinition& def);
133 
137  virtual void addVisualizer(const std::string& schemaName,
138  DtStateVisualizer* visualizer);
139 
141  virtual bool suppressVisualizerCreation( const DtVisualizerDefinition* visDef,
143  creationMap) const;
144 
147  virtual int findVisualType( const DtVisualizerDefinition& visDef ) const;
148 
151  template <typename T, typename C>
152  void connectAndUpdate(boost::signalslib::signal<void (T)>& sig, void (C::*fp)(T), T val)
153  {
154  myConnections.manageConnection(sig.connect(boost::bind(fp, static_cast<C*>(this), _1)));
155  ((C&)(*this).*fp)(val);
156  }
157 
158  protected:
159 
162  const DtUnicode* chooseRandomString(const std::vector<DtUnicode>& stringList);
163 
164  protected:
165  typedef boost::unordered_multimap<std::string,DtStateVisualizer* >StateVisualizerMap;
166 
173 
175  bool myVisible;
177 
178  DtSceneObjectAgent* mySceneObjectAgent;
179  // XXX old way to be removed eventually
181  typedef std::vector<DtShowHideContext::ShowHideContext> ShowHideContexts;
182 
185 
186  std::string myVisualTypeString;
187  };
188 
189  template <typename VisualizerClass>
191  std::vector<VisualizerClass*>& visualizers)
192  {
193  std::pair<StateVisualizerMap::iterator,
194  StateVisualizerMap::iterator> range = myVisualizers.equal_range(
195  VisualizerClass::theTypeInfo().schema.name());
196 
197  for(; range.first != range.second; ++range.first)
198  {
199  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(
200  range.first->second);
201  if(instance)
202  {
203  visualizers.push_back(instance);
204  }
205  }
206  }
207 
208  template <typename VisualizerClass>
210  std::vector<VisualizerClass*>& visualizers)
211  {
212  StateVisualizerMap::const_iterator iter = myVisualizers.begin();
213 
214  for(; iter != myVisualizers.end(); ++iter)
215  {
216  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(iter->second);
217 
218  if (instance)
219  {
220  visualizers.push_back(instance);
221  }
222  }
223  }
224 }
DtStateVisualizerFactory & myCachedFactory
Definition: DtVisualizerSet.h:168
Contains makVrv::DtVisualizerSchema class.
void findVisualizers(std::vector< VisualizerClass * > &visualizers)
Find all instances of a Visualizer by schema name.
Definition: DtVisualizerSet.h:190
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:171
boost::unordered_multimap< std::string, DtStateVisualizer * > StateVisualizerMap
Definition: DtVisualizerSet.h:165
bool myVisible
Definition: DtVisualizerSet.h:175
Contains integers that determine the context with which to show/hide a visualizer.
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:42
Base class for visualizing generic objects in the scene.
Definition: DtSceneObjectVisualizer.h:24
DtSceneObjectAgent * mySceneObjectAgent
Definition: DtVisualizerSet.h:178
A factory for DtStateVisualizer&#39;s.
Definition: DtStateVisualizerFactory.h:30
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:38
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
StateVisualizerMap myVisualizers
Definition: DtVisualizerSet.h:170
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:41
Contains makVrv:DtStateVisualizer class.
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::string myVisualTypeString
Definition: DtVisualizerSet.h:186
std::vector< DtStateVisualizer * > VisualizerList
Definition: DtVisualizerSet.h:36
Contains makVrv::DtVisualizerCreationSettings class.
The element definition class contains the element definition information. The makVrv::DtElementDefini...
Definition: DtElementDefinitionNew.h:25
std::vector< DtShowHideContext::ShowHideContext > ShowHideContexts
Definition: DtVisualizerSet.h:181
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:152
bool myPickable
Definition: DtVisualizerSet.h:174
This contains all the DtVisualizers used to visualize an element in a particular model set...
Definition: DtVisualizerSet.h:32
The DtStateVisualizer is an abstract class. Developers derive from this to create logic that &quot;directs...
Definition: DtStateVisualizer.h:32
DtStateListener & myStateListener
Definition: DtVisualizerSet.h:169
DtBaseConnection & myBaseConnection
Definition: DtVisualizerSet.h:167
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:209
A definition of a visualizer. Visualizer definition are always members of a visualizer definition set...
Definition: DtVisualizerDefinition.h:22
ShowHideContexts myShowHideContexts
Definition: DtVisualizerSet.h:183
VisualizerShowHideContext
Definition: DtShowHideContext.h:39
const DtElementDefinitionNew * myDefinition
Definition: DtVisualizerSet.h:172
The DtStateListener is an abstract class. Subclasses implement functionality that will allow data to ...
Definition: DtStateListener.h:25
Definition: DtVisualizerSchema.h:19
bool myDistribute
Definition: DtVisualizerSet.h:176
DtSceneObjectVisualizer * mySceneObjectVisualizer
Definition: DtVisualizerSet.h:180
int myModelSet
Definition: DtVisualizerSet.h:184

Document ID: Generated on Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)