VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
routeProfileWidget.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
8 #if !defined(Q_MOC_RUN)
11 #endif
12 
13 #include <qwt_symbol.h>
14 
15 namespace makVrf
16 {
20  {
21  Q_OBJECT
22 
23  public:
24 
25  typedef unsigned DtRouteMarkerId;
26 
28  static const unsigned theInvalidVertexIndex;
29 
31  {
32  unsigned afterVertex;
34  QwtPlotMarker* plotMarker;
35  };
36  typedef std::map<DtRouteMarkerId, DtRouteMarker> DtRouteMarkerMap;
37 
38  typedef std::set<DtRouteMarkerId> DtRouteMarkerIdSet;
39 
41  DtRouteProfileWidget(makVrv::DtDe& de, QWidget* parent = NULL, const Qt::WindowFlags& flags = 0);
42 
44  virtual ~DtRouteProfileWidget();
45 
47  virtual DtVector geocentricPositionOfMarker(DtRouteMarkerId markerId) const;
48 
50  virtual DtVector geocentricPositionOfVertex(unsigned vertex) const;
51 
53  unsigned numberOfVertices() const;
54 
56  virtual DtRouteMarkerId addRouteMarker(unsigned afterVertex, double fractionToNextVertex,
57  const QString& label, QwtSymbol::Style symbol);
58  virtual DtRouteMarkerId addRouteMarker(unsigned afterVertex, double fractionToNextVertex,
59  const QString& label, const std::string& modelDefinition);
60 
62  virtual void removeRouteMarker(DtRouteMarkerId markerId);
63 
65  virtual void moveRouteMarker(DtRouteMarkerId markerId, unsigned afterVertex, double fractionToNextVertex);
66 
68  virtual void changeRouteMarkerLabel(DtRouteMarkerId markerId, const QString& label);
69 
71  virtual bool isMarkerHidden(DtRouteMarkerId markerId) const;
72 
74  virtual void hideRouteMarker(DtRouteMarkerId markerId);
75 
77  virtual void showRouteMarker(DtRouteMarkerId markerId);
78 
80  virtual void setCursor(Qt::CursorShape shape);
81 
83  virtual void selectRouteMarker(DtRouteMarkerId markerId);
84 
86  virtual void selectVertex(unsigned vertexIndex);
87 
89  virtual bool closestRouteLocationToLastCursorPosition(unsigned& afterVertex, double& fractionToNextVertex);
90 
92  virtual bool closestRouteLocationToLastDatabasePosition(const DtVector& dbLocation, unsigned& afterVertex, double& fractionToNextVertex);
93 
96  virtual bool invalidMarkerList(DtRouteMarkerIdSet& idSet) const;
97 
98  signals:
99 
101  void vertexClicked(unsigned vertexIndex, unsigned button);
102 
104  void routeMarkerClicked(unsigned markerId, unsigned button);
105 
108  void routeClicked(unsigned afterVertex, double fractionToNextVertex, unsigned button);
109 
110  protected:
112  virtual QwtPlotMarker* createPlotMarker(unsigned afterVertex, double fractionToNextVertex,
113  const QString& label, DtRouteMarkerId& id);
114 
118  virtual QPointF plotPointFromVertexAndFraction(unsigned afterVertex, double fractionToNextVertex) const;
119 
123  virtual void vertexAndFractionFromPlotX(double x, unsigned& afterVertex, double& fractionToNextVertex) const;
124 
126  virtual QwtPlotMarker* vertexSelectionMarker();
127 
129  virtual QwtPlotMarker* selectionMarker(const QwtSymbol& symbol);
130 
132  virtual void disableSelectionMarkers();
133 
135 
136  virtual void mousePressEvent(QMouseEvent *event);
137  virtual void mouseReleaseEvent(QMouseEvent *event);
139 
140  protected slots:
141 
143  virtual void plotMouseReleased(const QPointF&);
144 
145  protected:
146 
152 
153  typedef std::pair<QwtSymbol::Style, qint64> SelectionMarkerId;
154  std::map<SelectionMarkerId, QwtPlotMarker*> mySelectionMarkers;
155  QwtPlotMarker* myVertexSelectionMarker;
156  QwtPlotMarker* myCurrentSelectionMarker;
157 
159  };
160 
164  {
165  public:
167  virtual ~DtRouteProfileWidgetCreator();
168 
169  static DtRouteProfileWidgetCreator& instance(makVrv::DtDe&);
170  static void registerInstance(makVrv::DtDe&, DtRouteProfileWidgetCreator*);
171 
172  virtual DtRouteProfileWidget* create(QWidget* parent);
173 
174  protected:
176  };
177 
178 }
DtRouteMarkerMap myRouteMarkers
Definition: routeProfileWidget.h:147
unsigned mySelectedVertexIndex
Definition: routeProfileWidget.h:151
Virtual base class.
Definition: DtVirtualBaseClass.h:22
DtRouteMarkerId mySelectedMarkerId
Definition: routeProfileWidget.h:150
QwtPlotMarker * plotMarker
Definition: routeProfileWidget.h:34
Definition: routeProfileWidget.h:30
std::pair< QwtSymbol::Style, qint64 > SelectionMarkerId
Definition: routeProfileWidget.h:153
unsigned afterVertex
Definition: routeProfileWidget.h:32
QwtPlotMarker * myCurrentSelectionMarker
Definition: routeProfileWidget.h:156
double fractionToNextVertex
Definition: routeProfileWidget.h:33
std::map< SelectionMarkerId, QwtPlotMarker * > mySelectionMarkers
Definition: routeProfileWidget.h:154
Definition: routeProfileWidget.h:19
static const DtRouteMarkerId theInvalidMarkerId
Definition: routeProfileWidget.h:27
This class will display a terrain profile graph, which is the graph of a distance over a line and the...
Definition: terrainProfileWidget.h:59
std::map< DtRouteMarkerId, DtRouteMarker > DtRouteMarkerMap
Definition: routeProfileWidget.h:36
Creator used to create a route profile widget.
Definition: routeProfileWidget.h:163
unsigned DtRouteMarkerId
Definition: routeProfileWidget.h:25
QwtPlotMarker * myVertexSelectionMarker
Definition: routeProfileWidget.h:155
#define DT_DLL_VRFGUICOMMONQT
Definition: vrfGuiCommonQt.h:22
std::set< DtRouteMarkerId > DtRouteMarkerIdSet
Definition: routeProfileWidget.h:38
DtRouteMarkerMap myHiddenRouteMarkers
Definition: routeProfileWidget.h:148
QPoint myLastCursorPosition
Definition: routeProfileWidget.h:158
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
makVrv::DtDe & myDe
Definition: routeProfileWidget.h:175
DtRouteMarkerId myNextMarkerId
Definition: routeProfileWidget.h:149
static const unsigned theInvalidVertexIndex
Definition: routeProfileWidget.h:28

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)