VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
terrainProfileWidget.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
8 #if !defined(Q_MOC_RUN)
10 
11 #include <vrvUtil/signalslib.h>
13 #include <vrvCore/DtUniqueID.h>
14 #include <vrvCore/DtStateView.h>
15 #include <vrvCore/DtEntityState.h>
18 
21 #endif
22 
23 #include <vlpi/entityType.h>
24 
25 #include <QtGui/QPixmap>
26 #include <QtWidgets/QWidget>
27 
28 class QwtPlotPicker;
29 class QwtPlot;
30 class QVBoxLayout;
31 class QwtPlotCurve;
32 class DtReferenceEllipsoid;
33 class QLabel;
34 class QwtPlotMarker;
35 class QTime;
36 class QImage;
37 class DtSimMessage;
38 class QwtSymbol;
39 
40 namespace makVrf
41 {
42  class DtTerrainProfileDataProvider;
43  class DtTerrainProfileSettingsRecord;
44  class DtSymbolTracker;
45  class DtTerrainProfileSymbol;
46 
60  {
61  Q_OBJECT
62 
63  public:
65  {
66  FullReplot = 0x00000001,
67  ReplotPoints = 0x00000002,
68  UpdateGraphOnly = 0x00000004
69  };
70 
72  DtTerrainProfileWidget(makVrv::DtDe& de, QWidget* parent = NULL, const Qt::WindowFlags& flags = 0);
73 
75  virtual ~DtTerrainProfileWidget();
76 
80  virtual void init();
81 
84  virtual void setDataProvider(DtTerrainProfileDataProvider*);
85 
87  virtual void replot();
88 
90  virtual void setSamplingRate(double);
91  double samplingRate() const;
92 
94  virtual void setMaximumSamplingPoints(int);
95  int maximumSamplingPoints() const;
96 
97  virtual void setUseBackendForProfile(bool);
98  bool useBackendForProfile() const
99  {
100  return myUseBackendForProfile;
101  }
102 
103  bool replotting() const
104  {
105  return myReplotting;
106  }
107 
109  virtual void clearGraph();
110 
112  virtual bool backendCanBeUsedForProfileData() const;
113 
115  virtual bool allDataFromFrontEnd() const;
116 
118  virtual bool allDataFromBackEnd() const;
119 
121  virtual void labelDataForTerrainProfilePosition(const QPointF& pos, const DtVector& geoc, double distanceOnLine, double height, int soilType = 0);
122 
125  virtual void setReplotTime(int);
126  int replotTime() const;
127 
130  virtual void setScaleFactor(double);
131  double scaleFactor() const;
132 
134  virtual void suspend();
135 
137  virtual void resume();
138 
140  virtual bool isSuspended() const;
141 
143  virtual void setShowVertices(bool);
144  bool showVertices() const;
145 
147  virtual void setShowVertexNumbers(bool);
148  bool showVertexNumbers() const;
149 
151  virtual void setSuspendForMovement(bool);
152  virtual bool suspendForMovement() const;
153 
155  virtual void setDistanceMoveTolerance(double);
156  virtual double distanceMoveTolerance() const;
157 
159  virtual QString dataStatus() const;
160 
162  virtual void requestPlotPointsIfNeeded(bool force = false);
163 
165  boost::signals2::signal<void ()> signal_ready;
166 
168  boost::signals2::signal<void ()> signal_dataStatusChanged;
169 
171  boost::signals2::signal<void (int)> signal_replotted;
172 
173  protected:
175  virtual void createProfileGraph();
176 
178  virtual void initConnections();
179 
181  virtual bool updateProfileData();
182 
184  virtual void slot_dataUpdated();
185 
187  virtual void slot_dataRemoved();
188 
191  virtual void calculateReplotRanges(std::vector<QPoint>&) const;
192 
195  virtual double calculateLineLength(const std::vector<DtVector>&) const;
196 
198  virtual double calculateSegment(const QPoint& segment, double lineLength);
199 
201  virtual double segmentLength(const QPoint&) const;
202  virtual double segmentLength(int start, int end) const;
203 
205  virtual double terrainHeight(const DtVector&, int position = -1) const;
206 
208  virtual double lineHeight(int pos) const;
209 
211  virtual void setupLabels();
212 
214  void slot_onUnitChanged(int attribute, int from);
215 
218  virtual double altitudeValueFor(double) const;
219  virtual double distanceValueFor(double) const;
220 
223  virtual double altitudeFromDisplayValue(double) const;
224  virtual double distanceFromDisplayValue(double) const;
225 
227  virtual void convertAltitudeAndDistance(int newAltitudeUnits, int newDistanceUnits, bool replot = true);
228 
230  virtual void convertAltitudeAndDistance(QVector<QPointF>&, int newAltitudeUnits, int newDistanceUnits) const;
231  virtual void convertAltitudeAndDistance(QwtPlotMarker*, int newAltitudeUnits, int newDistanceUnits) const;
232 
234  virtual void deferredReplot(int flag = FullReplot);
235 
237  virtual QwtPlotMarker* addMarker(double x, double y);
238 
240  virtual void setupPointMarkerLabel();
241 
243  virtual void onTerrainProfileSettingsChanged(const DtTerrainProfileSettingsRecord&);
244 
248  virtual void createSymbolTracker();
249 
251  virtual void trackEntity(const DtVector& geocentricPosition, const makVrv::DtStateView<makVrv::DtVrlinkSimulatedEntityState>*);
252 
254  virtual void stopTrackingEntity(makVrv::DtElementID);
255 
257  virtual void clearTrackingSymbols(bool suspended = false);
258 
261 
264  virtual int linePositionFromLocation(const DtVector& geocentricLocation, QPointF& result, bool trackedItem = false) const;
265 
267  virtual int locationFromPlotPosition(const QPointF& result, DtVector& geocentricLocation) const;
268 
272  virtual int closestPoint(const DtVector& v, double& range, double& totalRange, bool trackedItem = false) const;
273 
276  virtual void timedReplot();
277  virtual void replotIfTime();
278 
280  virtual void updateLineVertices(bool replot = true);
281 
282  virtual void resetAltitudeScale(bool replot = true);
283 
285  virtual double elevationAngle(const DtVector& geocentricFrom, const DtVector& geocentricTo) const;
286 
287  virtual void slot_defaultIconListChanged();
288 
289  virtual void slot_dataFrozenStateChanged(bool);
290 
291  virtual void processIntersectionResponse(DtSimMessage* msg);
292  virtual void processPointMarkerResponse(DtSimMessage* msg);
293 
294  virtual void cancelTerrainInformationRequest();
295 
296  virtual void requestPointMarkerInformation(const DtVector&);
297 
298  protected slots:
301  virtual void plotMouseReleased(const QPointF&);
302 
303  protected:
307 
309  std::vector<DtVector> myLinePoints;
310 
313  std::vector<DtVector> myPlotPoints;
314 
317 
320 
322  std::vector<int> mySegmentPoints;
323 
325  QVector<QPointF> myTerrainProfilePoints;
326 
328  std::vector<DtVector> myTerrainDatabasePoints;
329 
331  QVector<QPointF> myTerrainLinePoints;
332  DtReferenceEllipsoid* myReferenceForConversion;
333 
337 
345 
347  bool myReady;
348 
352  QwtPlotMarker* myPointMarker;
353 
355  typedef std::map<makVrv::DtElementID, QwtPlotMarker*> TrackedEntities;
357 
360 
363 
365  double myBuffer;
366 
371  QImage* myVertexImage;
372  std::vector<QwtPlotMarker*> myVertices;
375 
376  typedef std::map<makVrv::DtUniqueID, DtVector> WaitingForPlot;
382 
384 
386 
388  std::map<int, DtVector> myReceivedTerrainProfileInformationFor;
389 
390  public:
392  QVBoxLayout* myMainLayout;
393  QwtPlotCurve* myTerrainLine;
394  QwtPlotCurve* myTerrainProfile;
399  };
400 
404  {
405  public:
408 
409  static DtTerrainProfileWidgetCreator& instance(makVrv::DtDe&);
410  static void registerInstance(makVrv::DtDe&, DtTerrainProfileWidgetCreator*);
411 
412  virtual DtTerrainProfileWidget* create(QWidget* parent);
413 
414  protected:
416  };
417 }
std::vector< DtVector > myPlotPoints
The points that were last used to plot the graph.
Definition: terrainProfileWidget.h:313
QPointF myPointMarkerPosition
Definition: terrainProfileWidget.h:343
DtTerrainProfileDataProvider * myDataProvider
Definition: terrainProfileWidget.h:305
Contains makVrf::DtSymbolTracker class.
Definition: symbolTracker.h:41
double myPointMarkerCurrentHeight
Definition: terrainProfileWidget.h:342
Virtual base class.
Definition: DtVirtualBaseClass.h:22
WaitingForPlot myWaitingForPlot
Definition: terrainProfileWidget.h:377
DtSymbolTracker * mySymbolTracker
Class that will be used to track symbols within a particular distance to the given line...
Definition: terrainProfileWidget.h:351
bool myFirstPlot
Definition: terrainProfileWidget.h:373
static QColor theTerrainProfileLineColor
Definition: terrainProfileWidget.h:398
boost::signals2::signal< void()> signal_dataStatusChanged
Signal sent when the status of the data has changed.
Definition: terrainProfileWidget.h:168
boost::signals2::signal< void(int)> signal_replotted
Signal when the graph has been replotted.
Definition: terrainProfileWidget.h:171
bool replotting() const
Definition: terrainProfileWidget.h:103
makVrv::DtDe & myDe
Definition: terrainProfileWidget.h:304
bool useBackendForProfile() const
Definition: terrainProfileWidget.h:98
QwtPlotCurve * myTerrainProfile
Definition: terrainProfileWidget.h:394
QVector< QPointF > myTerrainLinePoints
The points used for the line that is being used to sample the terrain segment.
Definition: terrainProfileWidget.h:331
makVrv::DtSignalConnectionManager myDataProviderConnections
Definition: terrainProfileWidget.h:385
makVrv::DtSignalConnectionManager myConnections
Definition: terrainProfileWidget.h:306
bool myResuming
Definition: terrainProfileWidget.h:374
Contains makVrv::DtStateView class.
QwtPlotPicker * myPlotPicker
Definition: terrainProfileWidget.h:395
QVBoxLayout * myMainLayout
Definition: terrainProfileWidget.h:392
double myBuffer
Definition: terrainProfileWidget.h:365
Contains the DtUnitConverterCollection class declaration.
std::vector< DtVector > myLinePoints
Points are in geocentric.
Definition: terrainProfileWidget.h:309
QLabel * mySelectedPointLabel
Definition: terrainProfileWidget.h:396
QLabel * mySelectedPoint
Definition: terrainProfileWidget.h:397
double myScaleFactor
Definition: terrainProfileWidget.h:364
double mySamplingRate
Test the length of the line every N meters along the line.
Definition: terrainProfileWidget.h:316
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:26
Creator used to create a terrain profile widget.
Definition: terrainProfileWidget.h:403
Contains the DtDisplayUnitsSettingsManager class declaration.
DistanceUnits
Enumeration of the different distance units.
Definition: DtDisplayUnitsSettingsRecord.h:53
makVrv::DtDisplayUnitsConverter::DistanceUnits myDistanceUnits
Definition: terrainProfileWidget.h:336
QwtPlotCurve * myTerrainLine
Definition: terrainProfileWidget.h:393
DtVector myPointMarkerLocation
Geocentric location of point marker. Used for labels.
Definition: terrainProfileWidget.h:339
TrackedEntities myTrackedEntities
Definition: terrainProfileWidget.h:356
This class will display a terrain profile graph, which is the graph of a distance over a line and the...
Definition: terrainProfileWidget.h:59
Contains makVrv::DtVirtualBaseClass class.
std::vector< DtVector > myTerrainDatabasePoints
The points used for terrain intersection.
Definition: terrainProfileWidget.h:328
double myPointMarkerDistanceAlongLine
Definition: terrainProfileWidget.h:341
DtReferenceEllipsoid * myReferenceForConversion
Definition: terrainProfileWidget.h:332
bool myReplotting
Definition: terrainProfileWidget.h:368
int myTerrainInformationRequestId
Definition: terrainProfileWidget.h:387
File: simMsg.h.
Definition: simMessage.h:35
int myMaximumSamplingPoints
Maximum number of points to check.
Definition: terrainProfileWidget.h:319
std::map< makVrv::DtUniqueID, DtVector > WaitingForPlot
Definition: terrainProfileWidget.h:376
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
bool myTrackHistory
Definition: terrainProfileWidget.h:381
std::vector< QwtPlotMarker * > myVertices
Definition: terrainProfileWidget.h:372
Contains makVrv::DtEntityState class.
bool mySuspended
Definition: terrainProfileWidget.h:367
makVrv::DtDe & myDe
Definition: terrainProfileWidget.h:415
QwtPlotMarker * myPointMarker
Definition: terrainProfileWidget.h:352
#define DT_DLL_VRFGUICOMMONQT
Definition: vrfGuiCommonQt.h:22
QTime * myReplotTimer
Definition: terrainProfileWidget.h:358
int myPointMarkerSoilType
Definition: terrainProfileWidget.h:340
bool myShowVertices
Definition: terrainProfileWidget.h:369
Base class to provide boost signal/slot management.
int myPointMarkerRequestId
Definition: terrainProfileWidget.h:344
QwtPlot * myTerrainProfileGraph
Definition: terrainProfileWidget.h:391
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
QImage * myVertexImage
Definition: terrainProfileWidget.h:371
double myDistanceMoveTolerance
Definition: terrainProfileWidget.h:379
boost::signals2::signal< void()> signal_ready
Signal only once when graph is ready to show (at least two points)
Definition: terrainProfileWidget.h:165
Contains makVrv::DtUniqueID type.
bool myReady
Set to true when the graph is ready to display.
Definition: terrainProfileWidget.h:347
std::map< makVrv::DtElementID, QwtPlotMarker * > TrackedEntities
Map of plot markers for entities being tracked.
Definition: terrainProfileWidget.h:355
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
int myReplotFlag
Definition: terrainProfileWidget.h:380
Contains makVrf::DtTerrainProfileSettingsRecord class.
Definition: terrainProfileSettingsRecord.h:26
std::map< int, DtVector > myReceivedTerrainProfileInformationFor
Definition: terrainProfileWidget.h:388
double myMaximumHeight
Definition: terrainProfileWidget.h:362
Contains the makVrf::DtTerrainProfileDataProvider class.
Definition: terrainProfileDataProvider.h:40
bool myShowVertexNumbers
Definition: terrainProfileWidget.h:370
makVrv::DtDisplayUnitsConverter::DistanceUnits myAltitudeUnits
Current units for distance and altitude. Used to check to see if units need to be changed...
Definition: terrainProfileWidget.h:335
ReplotFlag
Definition: terrainProfileWidget.h:64
QVector< QPointF > myTerrainProfilePoints
The points used to plot the terrain profile.
Definition: terrainProfileWidget.h:325
bool mySuspendForMovement
Definition: terrainProfileWidget.h:378
std::vector< int > mySegmentPoints
For each segment, the number of plot points on the terrain represented by that segment.
Definition: terrainProfileWidget.h:322
int myReplotTime
Definition: terrainProfileWidget.h:359
double myMinimumHeight
Definition: terrainProfileWidget.h:361
bool myUseBackendForProfile
Definition: terrainProfileWidget.h:383

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)