VR-Forces 4.3 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>
13 #include <vrvCore/DtElementData.h>
15 #include <vrvCore/DtUniqueID.h>
17 
18 #include <vrvUtil/DtUnicode.h>
20 
21 #include <boost/signals.hpp>
22 #include <boost/unordered_map.hpp>
23 #include <matrix/vlVector.h>
24 
25 namespace makVrv
26 {
27 
28  class DtDe;
29  class DtChannel;
30  class DtCoordinateSystem;
31  class DtDisplayUnitsConverter;
32  class DtBasicEditingEventProcessor;
33  class DtElementDefinitionManager;
34  class DtIntervisibilityElement;
35  class DtIntervisibilityStateListener;
36  class DtIntervisibilityStateListenerCreator;
37 
43  {
44  public:
45 
46  typedef boost::unordered_map<DtElementID, DtIntervisibilityElement*>
48  typedef boost::unordered_map<DtElementID, DtIntervisibilityStateListener*>
50  typedef std::pair<DtElementID, DtVector> AttachPoint;
51  typedef std::vector<AttachPoint> AttachPoints;
52 
53  public:
54 
56  DtIntervisibilityDriver( DtDe&, const std::string& className );
57 
59  virtual ~DtIntervisibilityDriver();
60 
62  virtual bool autoStart() const;
63 
65  DtIntervisibilityElement* findElement(DtElementID id);
66 
69  virtual DtIntervisibilityElement* createIntervisibilityLine(
70  const DtVector& startPoint, const DtVector& endPoint);
71 
76  virtual void createIntervisibilityLine(
77  const AttachPoints& = AttachPoints());
78 
81  const DtUnicode& intervisibilityLine() const;
82 
85  virtual DtIntervisibilityElement* createIntervisibilityFan(
86  const DtVector& startPoint, const DtVector& endPoint);
87 
93  virtual void createIntervisibilityFan(
94  const AttachPoints& = AttachPoints());
95 
98  const DtUnicode& intervisibilityFan() const;
99 
102  virtual DtIntervisibilityElement* createIntervisibilityEntityFan(
103  const DtVector& startPoint, const DtVector& endPoint);
104 
110  virtual void createIntervisibilityEntityFan(
111  const AttachPoints& = AttachPoints());
112 
115  const DtUnicode& intervisibilityEntityFan() const;
116 
119  void addListenerCreator(const std::string&,
121 
123  virtual void cancelChanges();
124 
127  virtual void destroy(DtElementID id);
128 
130  virtual void destroyAll();
131 
136  virtual void setAllowCreating(bool);
137 
144  virtual void setAllowEditing(bool);
145 
147  virtual DtIntervisibilityElement* create(const DtUnicode& definition,
148  const DtVector& startPoint, const DtVector& endPoint);
149 
150  virtual void intervisibilityObjectsShown( bool show );
151 
153  static DtIntervisibilityDriver* findDriver(DtDe& de);
154 
156  const std::string& className() const
157  {
158  return myClassName;
159  }
160 
162  static std::string theInstanceName();
163 
165  DtBaseConnection* connection()
166  {
167  return myConnection;
168  }
169 
171  const DtBaseConnection* connection() const
172  {
173  return myConnection;
174  }
175 
176  protected:
180  virtual DtBasicEditingEventProcessor* createEventProcessor() const;
181 
183  virtual DtIntervisibilityStateListener* createListener(
184  const std::string& definition) const;
185 
187  virtual DtIntervisibilityElement* createElement(
188  DtIntervisibilityStateListener*, const DtUnicode& definition) const;
189 
195  virtual void create(const DtUnicode& elementDefinitionName,
196  const AttachPoints& = AttachPoints());
197 
199  virtual bool onTick();
200 
204  virtual bool onStart();
205 
209  virtual bool onStop();
210 
212  virtual void completeSetup();
213 
215  virtual void slot_onCurrentSelectionChanged(
216  const DtSelectionManager::IdSet& selected,
217  const DtSelectionManager::IdSet& deselected);
218 
220  virtual void select(const DtSelectionManager::IdSet&, bool);
221 
223  virtual void connectProcessorSignals();
224 
227  virtual void slot_locationChanged(DtVector, double altAboveGround);
228 
230  virtual void slot_altitudeChanged(DtVector, double);
231 
233  virtual void slot_altitudeIsDragging(bool);
234 
237  virtual void slot_place(DtUniqueID, DtVector, double altAboveGround);
238 
240  virtual void finishEditing();
241 
245  virtual void slot_dragStart(const DtSelectionManager::IdSet& set,
246  const DtVector&);
247 
251  virtual void modifyEditingObjects(const DtVector& pos, double altAboveGround);
252 
255  virtual void resetSelectionForEditableObjects();
256 
258  virtual DtVector clamp(const DtVector&, double altAboveGround) const;
259 
262  virtual void elementsRemoved(const DtElementData::UniqueIdList&);
263 
265  void installElementDefinitions(DtElementDefinitionManager& manager);
266 
267  public:
268 
274  {
275  public:
276 
279 
281  virtual ~DtIntervisibilityConnection();
282 
288  virtual DtVirtualBaseClass* findInstance( const std::string& instanceName );
289 
295  virtual void registerInstance( const std::string& instanceName, DtVirtualBaseClass* instance );
296 
298  virtual const DtDisplayUnitsConverter& displayUnitsConverter() const;
299 
301  virtual const DtCoordinateSystem& coordinateSystem() const;
302 
303  protected:
304 
306 
307  };
308 
309  protected:
310 
313  {
314 
318 
322 
326 
330 
331  };
332 
333  protected:
334 
335  typedef boost::unordered_map<DtElementID, OriginalInformation> Editing;
336  typedef std::map<std::string, DtIntervisibilityStateListenerCreator*>
338 
343  std::string myClassName;
348 
350 
356 
359 
363 
364  };
365 
366 
370  : public DtVirtualBaseClass
371  {
372  public:
373 
374  static DtIntervisibilityDriverCreator& instance( DtDe& de );
375 
376  static void registerInstance( DtDe& de, DtIntervisibilityDriverCreator* creator );
377 
380  virtual const std::string& extension() const;
381 
383  virtual DtIntervisibilityDriver* create( DtDe& de ) const;
384 
385  };
386 
387 }

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)