VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtRunwaySelector.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2023 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 #include <vrvCore/vrvCore.h>
12 
13 #include <vrvCore/DtDe.h>
14 #include <vrvCore/DtUniqueID.h>
15 #include <vrvCore/DtRunwayData.h>
16 #include <vrvCore/DtSceneObject.h>
18 
20 
22 
23 #include <matrix/vlVector.h>
24 
25 #include <string>
26 
27 namespace makVrv
28 {
29  class DtModelDefinition;
30  class DtProjectedWidgetModel;
31  class DtOverlayRectangleModel;
32  class DtWidgetLabel;
33  enum class DtRunwayCondition : unsigned int;
34 
44  {
45  public:
48 
50  virtual ~DtRunwaySelector();
51 
53  DtRunwaySelector() = delete;
54 
56  DtRunwaySelector(const DtRunwaySelector&) = delete;
57 
59  DtRunwaySelector& operator=(const DtRunwaySelector&) = delete;
60 
63  virtual void initialize(const DtRunwayData& runwayData);
64 
69  virtual void updateGeometry(const DtRunwayData& runwayData);
70 
72  virtual void setSelectState(bool selected);
73 
75  virtual void setRunwayCondition(DtRunwayCondition condition);
76 
78  virtual DtRunwayCondition runwayCondition() const;
79 
81  virtual void setRunwayIsDamaged(bool damaged);
82 
84  virtual bool runwayIsDamaged() const;
85 
87  virtual void setRunway1HasArrestorsUp(bool arrestorsUp);
88 
90  virtual bool runway1HasArrestorsUp() const;
91 
93  virtual void setRunway2HasArrestorsUp(bool arrestorsUp);
94 
96  virtual bool runway2HasArrestorsUp() const;
97 
99  virtual void setRunway1Active(bool isActive);
100 
102  virtual bool runway1Active() const;
103 
105  virtual void setRunway2Active(bool isActive);
106 
108  virtual bool runway2Active() const;
109 
112  virtual bool enabled() const;
113 
117  virtual void setEnabled(bool onOrOff);
118 
120  virtual void setColor(float r, float g, float b, float a);
122  virtual void getColor(float& r, float& g, float& b, float& a);
124 
126  virtual void setSelectedColor(float r, float g, float b, float a);
128  virtual void getSelectedColor(float& r, float& g, float& b, float& a);
130 
132  virtual void setLabelPosition(const DtVector& position);
136  virtual const DtVector& labelPosition() const;
138 
140  virtual void setLabelOffsetScale(float scale);
144  virtual float labelOffsetScale() const;
146 
148  virtual void setLogicalRunway1Key(const std::string& key1);
153  virtual const std::string& logicalRunway1Key() const;
155 
157  virtual void setLogicalRunway2Key(const std::string& key2);
161  virtual const std::string& logicalRunway2Key() const;
163 
165  virtual void setLabelModelDefinitionName(const std::string& modelDefName);
169  virtual const std::string& labelModelDefinitionName() const;
171 
173  virtual void setSelectorModelDefinitionName(const std::string& modelDefName);
177  virtual const std::string& selectorModelDefinitionName() const;
179 
181  virtual void setRectangleOrderGroup(unsigned int group);
183  virtual unsigned int rectangleOrderGroup() const;
185 
187  virtual void setLabelOrderGroup(unsigned int group);
189  virtual unsigned int labelOrderGroup() const;
191 
194  virtual const std::string& runwayName() const;
195 
197  virtual const std::string& airportCode() const;
198 
199  public:
202  static void getDirectionArrow(const std::string& runwayName, std::string& result);
203 
204  protected:
205 
208  virtual std::string generatePhysicalRunwayName(const DtRunwayData& runwayData) const;
209 
211  virtual void formatActiveStatusString(std::string& str) const;
212 
214  virtual void formatArrestorStatusString(std::string& str) const;
215 
217  virtual void formatDamagedStatusString(std::string& str) const;
218 
220  virtual void formatConditionStatusString(std::string& str) const;
221 
223  virtual void formatRunwayState(std::string& status) const;
224 
227  virtual DtWidgetLabel* createWidgetLabel() = 0;
228 
231  virtual void initializeWidgetLabel();
232 
235  virtual DtOverlayRectangleModel* createRectangleModel(const DtRunwayData& runwayData) = 0;
236 
238  virtual void initializeRectangleModel(const DtRunwayData& runwayData);
239 
242  virtual DtVector calculateLabelPosition() const;
243 
245  virtual void createModels(const DtRunwayData& runwayData);
246 
249  virtual void destroyModels();
250 
252  virtual void registerSelector();
253 
255  virtual void deregisterSelector();
256 
259  virtual void slot_selectionChanged(const DtSelectionManager::IdSet& selected, const DtSelectionManager::IdSet& deselected);
260 
261  protected:
262 
264  static void readArray4(const std::string& paramName, const DtModelDefinition& definition, float result[4]);
265 
266  protected:
270  std::string myLogicalRunway1Key;
271  std::string myLogicalRunway2Key;
275 
276  // Values set through the runway selector model definition or API
277  bool myEnabled;
279  float myNormalColor[4];
280  float mySelectedColor[4];
281 
282  std::string myRunwayName;
283  std::string myRunwayNum1;
284  std::string myRunwayNum2;
288  unsigned int myRectangleOrderGroup;
289  unsigned int myLabelOrderGroup;
290  std::string myAirportCode;
291 
298 
299  // Connections to selection and lod out signal changes
301  boost::signalslib::connection myLodOutAltitudeConnection;
302  };
303 
308  {
309  public:
312  static DtRunwaySelectorCreator& instance(DtDe& de);
313 
315  static void registerInstance(DtDe& de, DtRunwaySelectorCreator* anInstance);
316  public:
318  virtual DtRunwaySelector* create(DtDe& de, DtUniqueID id) = 0;
319  };
320 }
Contains the DtAltitudeBasedScaleConfigurationRecord class declaration.
DtVector myLabelPosition
Definition: DtRunwaySelector.h:287
bool myRunwayIsDamaged
Definition: DtRunwaySelector.h:293
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
DtRunwayCondition myRunwayCondition
Definition: DtRunwaySelector.h:292
bool myRunway1HasArrestorsUp
Definition: DtRunwaySelector.h:294
float myLabelOffsetScale
Definition: DtRunwaySelector.h:278
std::string myRunwayNum2
Definition: DtRunwaySelector.h:284
Contains makVrv:DtSelectionManager class.
Contains makVrv::DtDe class.
DtWidgetLabel * myWidgetLabel
Definition: DtRunwaySelector.h:269
Distributed model for drawing rectangles on the overlay layer.
Definition: DtOverlayRectangleModel.h:19
bool myRunway2Active
Definition: DtRunwaySelector.h:297
bool myEnabled
Definition: DtRunwaySelector.h:277
bool myRunway2HasArrestorsUp
Definition: DtRunwaySelector.h:295
bool myRunway1Active
Definition: DtRunwaySelector.h:296
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:42
std::string myLogicalRunway1Key
Definition: DtRunwaySelector.h:270
std::string mySelectorModelDefinitionName
Definition: DtRunwaySelector.h:273
std::string myLogicalRunway2Key
Definition: DtRunwaySelector.h:271
unsigned int myLabelOrderGroup
Definition: DtRunwaySelector.h:289
std::string myRunwayNum1
Definition: DtRunwaySelector.h:283
std::string myLabelModelDefinitionName
Definition: DtRunwaySelector.h:272
DtVector mySelectorCenter
Definition: DtRunwaySelector.h:285
The osg implementation of the widget layout.
Definition: DtProjectedWidgetModel.h:28
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtProjectedWidgetModel * myProjectedWidgetModel
Definition: DtRunwaySelector.h:267
This is the implementation independent widget class for showing text.
Definition: DtWidgetLabel.h:25
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
DtRunwayData is the data collected from paged Aerodrome data and used for creating runway markings...
Definition: DtRunwayData.h:23
DtOverlayRectangleModel * myRectangleModel
Definition: DtRunwaySelector.h:268
boost::signalslib::connection myLodOutAltitudeConnection
Definition: DtRunwaySelector.h:301
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
std::string myRunwayName
Definition: DtRunwaySelector.h:282
DtRunwaySelector objects create a selectable runway that outlines a paged-in runway and an associated...
Definition: DtRunwaySelector.h:43
Contains makVrv::DtRunwayData class.
Base class to provide boost signal/slot management.
A DtSceneObject represents an object that can be positioned in the scene by (possibly) attaching it t...
Definition: DtSceneObject.h:44
DtRunwaySelectorCreator is singleton creator for creating DtRunwaySelector objects.
Definition: DtRunwaySelector.h:307
DtRunwayCondition
Definition: DtAerodromeStatusManager.h:30
Contains makVrv::DtUniqueID type.
std::string myAirportCode
Definition: DtRunwaySelector.h:290
bool mySelectState
Definition: DtRunwaySelector.h:274
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
DtSignalConnectionManager myConnections
Definition: DtRunwaySelector.h:300
DtVector mySelectorEndpoint
Definition: DtRunwaySelector.h:286
Contains makVrv::DtSceneObject class.
unsigned int myRectangleOrderGroup
Definition: DtRunwaySelector.h:288
Contains DLL export macros.

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)