VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtVisualizerSet.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
9 #pragma once
10 
11 #include <vrvCore/vrvCore.h>
12 #include <vrvUtil/signalslib.h>
16 
18 
19 #include <string>
20 #include <vector>
21 #include <boost/bind.hpp>
22 #include <boost/unordered_map.hpp>
23 
24 namespace makVrv
25 {
26  class DtBaseConnection;
27  class DtMouseState;
28  class DtSceneObjectVisualizer;
29  class DtStateListener;
30  class DtStateVisualizerFactory;
31 
32  class DtElementDefinitionNew;
33  class DtVisualizerDefinitionSet;
34  class DtVisualizerDefinition;
35 
40  {
41  public:
42 
43  typedef std::vector<DtStateVisualizer*> VisualizerList;
44 
47  int modelSet, bool distribute);
48 
50  virtual ~DtVisualizerSet();
51 
53  virtual void visualizeElementDefinition(const DtUnicode& elementName,
54  const DtElementDefinitionNew& def,
56 
58  virtual void visualizeElementDefinition(const DtUnicode& elementName,
59  const DtElementDefinitionNew& def);
60 
66  virtual void createVisualizersByType( int visualType );
67 
70  virtual void destroyVisualizersByType( int visualType );
71 
73  const DtElementDefinitionNew* definition() const;
74 
76  int modelSet() const;
77 
79  template <typename VisualizerClass>
80  inline void findVisualizers(std::vector<VisualizerClass*>& visualizers);
81 
85  template <typename VisualizerClass>
86  inline void findVisualizersByDynamicCast(std::vector<VisualizerClass*>& visualizers);
87 
89  virtual void findVisualizers(const DtVisualizerSchema&,
90  VisualizerList& visualizers);
91 
99  virtual bool setVisible(bool visible,
102 
104  virtual bool isVisible() const;
105 
108  virtual bool show(DtShowHideContext::ShowHideContext);
109  virtual bool hide(DtShowHideContext::ShowHideContext);
110 
112  bool isHiddenByContext(DtShowHideContext::ShowHideContext) const;
114  virtual DtUniqueID uniqueID() const;
115 
116  DtSceneObjectVisualizer* sceneObjectVisualizer() const;
117 
119  virtual void setPickable( bool pickable );
120 
122  bool pickable() const;
123 
125  virtual void setSelected(bool);
126 
128  bool selected() const;
129 
132  bool addVisualizer(const DtVisualizerDefinition& def);
133 
135  virtual void destroyAllModelVisualizers();
136 
138  virtual DtStateVisualizer::Type supportsVisualizerType() const;
139 
141  boost::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
142  const std::string& windowName, const std::string& channelName,
145  boost::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
146  const std::string& windowName, const std::string& channelName,
149  boost::signal<void (DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
150  const std::string& windowName, const std::string& channelName,
153 
154  boost::signal< void (bool, DtVisualizerSet* vis) > signal_selectionStateChanged;
155 
156  protected:
158  void destroyAllModelVisualizersInternal();
159 
162  virtual void visualizeVisualizerDefinitionSet(const DtVisualizerDefinitionSet& set,
164 
166  virtual DtStateVisualizer* createVisualizerFromDefinition(const DtVisualizerDefinition& def);
167 
171  virtual void addVisualizer(const std::string& schemaName,
172  DtStateVisualizer* visualizer);
173 
175  bool suppressVisualizerCreation( const DtVisualizerDefinition* visDef,
177  creationMap ) const;
178 
181  int findVisualType( const DtVisualizerDefinition& visDef ) const;
182 
184  virtual void setModelVisualizerVisible(const std::string& schemaName,
185  bool onOff, int context);
186 
188  virtual void slot_mouseDown(
189  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
190  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
191  virtual void slot_mouseUp(
192  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
193  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
194  virtual void slot_mouseDblClick(
195  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
196  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
197 
200  template <typename T, typename C>
201  void connectAndUpdate(boost::signal<void (T)>& sig, void (C::*fp)(T), T val)
202  {
203  myConnections.manageConnection(sig.connect(boost::bind(fp, static_cast<C*>(this), _1)));
204  ((C&)(*this).*fp)(val);
205  }
206 
207  protected:
208 
211  const DtUnicode* chooseRandomString(const std::vector<DtUnicode>& stringList);
212 
213  protected:
214  typedef boost::unordered_multimap<std::string,DtStateVisualizer* >StateVisualizerMap;
215 
222 
223 
226  bool myVisible;
228 
230  typedef std::vector<DtShowHideContext::ShowHideContext> ShowHideContexts;
231 
234  };
235 
236  template <typename VisualizerClass>
238  std::vector<VisualizerClass*>& visualizers)
239  {
240  std::pair<StateVisualizerMap::iterator,
241  StateVisualizerMap::iterator> range = myVisualizers.equal_range(
242  VisualizerClass::theTypeInfo().schema.name());
243 
244  for(; range.first != range.second; ++range.first)
245  {
246  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(
247  range.first->second);
248  if(instance)
249  {
250  visualizers.push_back(instance);
251  }
252  }
253  }
254 
255  template <typename VisualizerClass>
257  std::vector<VisualizerClass*>& visualizers)
258  {
259  StateVisualizerMap::const_iterator iter = myVisualizers.begin();
260 
261  for(; iter != myVisualizers.end(); iter++)
262  {
263  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(iter->second);
264 
265  if (instance)
266  {
267  visualizers.push_back(instance);
268  }
269  }
270  }
271 }

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)