VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtIntervisibilityDriver.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2012 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvCore/DtDriver.h>
14 #include <vrvCore/DtUniqueID.h>
16 
17 #include <vrvUtil/DtUnicode.h>
19 
20 #include <boost/signals.hpp>
21 #include <boost/unordered_map.hpp>
22 #include <matrix/vlVector.h>
23 
24 namespace makVrv
25 {
26 
27  class DtDe;
28  class DtChannel;
29  class DtCoordinateSystem;
30  class DtDisplayUnitsConverter;
31  class DtBasicEditingEventProcessor;
32  class DtElementDefinitionManager;
33  class DtIntervisibilityElement;
34  class DtIntervisibilityStateListener;
35  class DtIntervisibilityStateListenerCreator;
36 
42  {
43  public:
44 
45  typedef boost::unordered_map<DtElementID, DtIntervisibilityElement*>
47  typedef boost::unordered_map<DtElementID, DtIntervisibilityStateListener*>
49  typedef std::pair<DtElementID, DtVector> AttachPoint;
50  typedef std::vector<AttachPoint> AttachPoints;
51 
52  public:
53 
55  DtIntervisibilityDriver( DtDe&, const std::string& className );
56 
58  virtual ~DtIntervisibilityDriver();
59 
61  virtual bool autoStart() const;
62 
64  DtIntervisibilityElement* findElement(DtElementID id);
65 
68  virtual DtIntervisibilityElement* createIntervisibilityLine(
69  const DtVector& startPoint, const DtVector& endPoint);
70 
75  virtual DtIntervisibilityElement* createIntervisibilityLine(
76  const AttachPoints& = AttachPoints());
77 
80  const DtUnicode& intervisibilityLine() const;
81 
84  virtual DtIntervisibilityElement* createIntervisibilityFan(
85  const DtVector& startPoint, const DtVector& endPoint);
86 
92  virtual DtIntervisibilityElement* createIntervisibilityFan(
93  const AttachPoints& = AttachPoints());
94 
97  const DtUnicode& intervisibilityFan() const;
98 
101  DtIntervisibilityElement* creatingElement() const;
102  DtIntervisibilityStateListener* creatingListener() const;
104 
106  const ElementMap& intervisibilityElements() const;
107 
110  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
111  const DtVector& startPoint, const DtVector& endPoint);
112 
118  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
119  const AttachPoints& = AttachPoints());
120 
123  const DtUnicode& intervisibilityEntityFan() const;
124 
127  void addListenerCreator(const std::string&,
129 
131  virtual void cancelChanges();
132 
135  virtual void destroy(DtElementID id);
136 
138  virtual void destroyAll();
139 
144  virtual void setAllowCreating(bool);
145 
152  virtual void setAllowEditing(bool);
153 
155  virtual DtIntervisibilityElement* create(const DtUnicode& definition,
156  const DtVector& startPoint, const DtVector& endPoint);
157 
158  virtual void intervisibilityObjectsShown( bool show );
159 
161  static DtIntervisibilityDriver* findDriver(DtDe& de);
162 
164  const std::string& className() const
165  {
166  return myClassName;
167  }
168 
170  static std::string theInstanceName();
171 
173  DtBaseConnection* connection()
174  {
175  return myConnection;
176  }
177 
179  const DtBaseConnection* connection() const
180  {
181  return myConnection;
182  }
183 
184  protected:
188  virtual DtBasicEditingEventProcessor* createEventProcessor() const;
189 
191  virtual DtIntervisibilityStateListener* createListener(
192  const std::string& definition) const;
193 
195  virtual DtIntervisibilityElement* createElement(
196  DtIntervisibilityStateListener*, const DtUnicode& definition) const;
197 
203  virtual DtIntervisibilityElement* create(const DtUnicode& elementDefinitionName,
204  const AttachPoints& = AttachPoints());
205 
207  virtual bool onTick();
208 
212  virtual bool onStart();
213 
217  virtual bool onStop();
218 
220  virtual void completeSetup();
221 
223  virtual void slot_onCurrentSelectionChanged(
224  const DtSelectionManager::IdSet& selected,
225  const DtSelectionManager::IdSet& deselected);
226 
228  virtual void select(const DtSelectionManager::IdSet&, bool);
229 
231  virtual void connectProcessorSignals();
232 
235  virtual void slot_locationChanged(DtVector, double altAboveGround);
236 
238  virtual void slot_altitudeChanged(DtVector, double);
239 
241  virtual void slot_altitudeIsDragging(bool);
242 
245  virtual void slot_place(DtUniqueID, DtVector, double altAboveGround);
246 
248  virtual void finishEditing();
249 
253  virtual void slot_dragStart(const DtSelectionManager::IdSet& set,
254  const DtVector&);
255 
259  virtual void modifyEditingObjects(const DtVector& pos, double altAboveGround);
260 
263  virtual void resetSelectionForEditableObjects();
264 
266  virtual DtVector clamp(const DtVector&, double altAboveGround) const;
267 
270  virtual void elementsRemoved(const DtElementData::UniqueIdList&);
271 
273  void installElementDefinitions(DtElementDefinitionManager& manager);
274 
275  public:
276 
282  {
283  public:
284 
287 
289  virtual ~DtIntervisibilityConnection();
290 
296  virtual DtVirtualBaseClass* findInstance( const std::string& instanceName );
297 
303  virtual void registerInstance( const std::string& instanceName, DtVirtualBaseClass* instance );
304 
306  virtual const DtDisplayUnitsConverter& displayUnitsConverter() const;
307 
309  virtual const DtCoordinateSystem& coordinateSystem() const;
310 
311  protected:
312 
314 
315  };
316 
317  protected:
318 
321  {
322 
326 
330 
334 
338 
339  };
340 
341  protected:
342 
343  typedef boost::unordered_map<DtElementID, OriginalInformation> Editing;
344  typedef std::map<std::string, DtIntervisibilityStateListenerCreator*>
346 
351  std::string myClassName;
356 
358 
364 
367 
371 
372  };
373 
374 
378  : public DtVirtualBaseClass
379  {
380  public:
381 
382  static DtIntervisibilityDriverCreator& instance( DtDe& de );
383 
384  static void registerInstance( DtDe& de, DtIntervisibilityDriverCreator* creator );
385 
388  virtual const std::string& extension() const;
389 
391  virtual DtIntervisibilityDriver* create( DtDe& de ) const;
392 
393  };
394 
395 }

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)