QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
TerrainProfile.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QLoggingCategory>
4#include <QtQuick/QQuickItem>
5#include <QtQuick/QSGGeometryNode>
6#include <QtQuick/QSGGeometry>
7#include <QtQmlIntegration/QtQmlIntegration>
8
9Q_DECLARE_LOGGING_CATEGORY(TerrainProfileLog)
10
14
15Q_MOC_INCLUDE("MissionController.h")
16
17class TerrainProfile : public QQuickItem
18{
19 Q_OBJECT
20 QML_ELEMENT
21
22public:
23 TerrainProfile(QQuickItem *parent = nullptr);
24
25 Q_PROPERTY(double visibleWidth MEMBER _visibleWidth NOTIFY visibleWidthChanged)
26 Q_PROPERTY(MissionController* missionController READ missionController WRITE setMissionController NOTIFY missionControllerChanged)
27 Q_PROPERTY(double pixelsPerMeter MEMBER _pixelsPerMeter NOTIFY pixelsPerMeterChanged)
28 Q_PROPERTY(double minAMSLAlt MEMBER _minAMSLAlt NOTIFY minAMSLAltChanged)
29 Q_PROPERTY(double maxAMSLAlt MEMBER _maxAMSLAlt NOTIFY maxAMSLAltChanged)
30
31 MissionController* missionController(void) { return _missionController; }
32
33 void setMissionController(MissionController* missionController);
34
35 // Overrides from QQuickItem
36 QSGNode* updatePaintNode(QSGNode* oldNode, QQuickItem::UpdatePaintNodeData* updatePaintNodeData);
37
38 // Override from QQmlParserStatus
39 void componentComplete(void) final;
40
41signals:
45 void minAMSLAltChanged (void);
46 void maxAMSLAltChanged (void);
47 void _updateSignal (void);
48
49private slots:
50 void _newVisualItems (void);
51
52private:
53 void _createGeometry (QSGGeometryNode*& geometryNode, QSGGeometry*& geometry, QSGGeometry::DrawingMode drawingMode, const QColor& color);
54 void _updateSegmentCounts (FlightPathSegment* segment, int& cFlightProfileSegments, int& cTerrainPoints, int& cMissingTerrainSegments, int& cTerrainCollisionSegments, double& minTerrainHeight, double& maxTerrainHeight);
55 void _addTerrainProfileSegment (FlightPathSegment* segment, double currentDistance, double amslAltRange, QSGGeometry::Point2D* terrainProfileVertices, int& terrainVertexIndex);
56 void _addMissingTerrainSegment (FlightPathSegment* segment, double currentDistance, QSGGeometry::Point2D* missingTerrainVertices, int& missingTerrainVertexIndex);
57 void _addTerrainCollisionSegment (FlightPathSegment* segment, double currentDistance, double amslAltRange, QSGGeometry::Point2D* terrainCollisionVertices, int& terrainCollisionVertexIndex);
58 void _addFlightProfileSegment (FlightPathSegment* segment, double currentDistance, double amslAltRange, QSGGeometry::Point2D* flightProfileVertices, int& flightProfileVertexIndex);
59 bool _shouldAddFlightProfileSegment (FlightPathSegment* segment);
60 bool _shouldAddMissingTerrainSegment (FlightPathSegment* segment);
61
62 MissionController* _missionController = nullptr;
63 QmlObjectListModel* _visualItems = nullptr;
64 double _visibleWidth = 0;
65 double _pixelsPerMeter = 0;
66 double _minAMSLAlt = 0;
67 double _maxAMSLAlt = 0;
68
69 static const int _lineWidth = 7;
70
71 Q_DISABLE_COPY(TerrainProfile)
72};
73
74QML_DECLARE_TYPE(TerrainProfile)
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
void pixelsPerMeterChanged(void)
void _updateSignal(void)
void visibleWidthChanged(void)
void minAMSLAltChanged(void)
void maxAMSLAltChanged(void)
void missionControllerChanged(void)