VR-Forces Development_Version 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 
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 DtVisualizerDefinitionSet& set,
155 
157  virtual DtStateVisualizer* createVisualizerFromDefinition(const DtVisualizerDefinition& def);
158 
162  virtual void addVisualizer(const std::string& schemaName,
163  DtStateVisualizer* visualizer);
164 
166  bool suppressVisualizerCreation( const DtVisualizerDefinition* visDef,
168  creationMap ) const;
169 
172  int findVisualType( const DtVisualizerDefinition& visDef ) const;
173 
175  virtual void setModelVisualizerVisible(const std::string& schemaName,
176  bool onOff, int context);
177 
179  virtual void slot_mouseDown(
180  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
181  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
182  virtual void slot_mouseUp(
183  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
184  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
185  virtual void slot_mouseDblClick(
186  DtMouseState& mouseState, const DtUniqueID& id, const std::string& displayEngineName,
187  const std::string& windowName, const std::string& channelName, DtStateVisualizer* v);
188 
191  template <typename T, typename C>
192  void connectAndUpdate(boost::signal<void (T)>& sig, void (C::*fp)(T), T val)
193  {
194  myConnections.manageConnection(sig.connect(boost::bind(fp, static_cast<C*>(this), _1)));
195  ((C&)(*this).*fp)(val);
196  }
197 
198  protected:
199 
202  const DtUnicode* chooseRandomString(const std::vector<DtUnicode>& stringList);
203 
204  protected:
205  typedef boost::unordered_multimap<std::string,DtStateVisualizer* >StateVisualizerMap;
206 
213 
214 
217  bool myVisible;
219 
221  typedef std::vector<DtShowHideContext::ShowHideContext> ShowHideContexts;
222 
225  };
226 
227  template <typename VisualizerClass>
229  std::vector<VisualizerClass*>& visualizers)
230  {
231  std::pair<StateVisualizerMap::iterator,
232  StateVisualizerMap::iterator> range = myVisualizers.equal_range(
233  VisualizerClass::theTypeInfo().schema.name());
234 
235  for(; range.first != range.second; ++range.first)
236  {
237  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(
238  range.first->second);
239  if(instance)
240  {
241  visualizers.push_back(instance);
242  }
243  }
244  }
245 
246  template <typename VisualizerClass>
248  std::vector<VisualizerClass*>& visualizers)
249  {
250  StateVisualizerMap::const_iterator iter = myVisualizers.begin();
251 
252  for(; iter != myVisualizers.end(); ++iter)
253  {
254  VisualizerClass* instance = dynamic_cast<VisualizerClass*>(iter->second);
255 
256  if (instance)
257  {
258  visualizers.push_back(instance);
259  }
260  }
261  }
262 }

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)