X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FGUI%2FAirportDiagram.hxx;h=c5c87004dd62e26596d103a74c01a2803faa416f;hb=3cee5eea735545dddd0c1e5b9551d97cf8f79c2c;hp=7343bb24cfa8982f4992a7b6d82f688c0f4063cf;hpb=f9c23eb096734c85613dc18143aac49704df8687;p=flightgear.git diff --git a/src/GUI/AirportDiagram.hxx b/src/GUI/AirportDiagram.hxx index 7343bb24c..c5c87004d 100644 --- a/src/GUI/AirportDiagram.hxx +++ b/src/GUI/AirportDiagram.hxx @@ -18,39 +18,51 @@ // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -#include -#include +#ifndef GUI_AIRPORT_DIAGRAM_HXX +#define GUI_AIRPORT_DIAGRAM_HXX -#include +#include "BaseDiagram.hxx" + +#include +#include #include -class AirportDiagram : public QWidget +class AirportDiagram : public BaseDiagram { + Q_OBJECT public: AirportDiagram(QWidget* pr); + virtual ~AirportDiagram(); void setAirport(FGAirportRef apt); void addRunway(FGRunwayRef rwy); - void addParking(FGParking* park); -protected: - virtual void paintEvent(QPaintEvent* pe); - // wheel event for zoom + void addParking(FGParkingRef park); + + FGRunwayRef selectedRunway() const; + void setSelectedRunway(FGRunwayRef r); - // mouse drag for pan + void setApproachExtensionDistance(double distanceNm); +Q_SIGNALS: + void clickedRunway(FGRunwayRef rwy); + + void clickedParking(FGParkingRef park); +protected: + + virtual void mouseReleaseEvent(QMouseEvent* me); + void paintContents(QPainter*) Q_DECL_OVERRIDE; + void doComputeBounds() Q_DECL_OVERRIDE; private: - void extendBounds(const QPointF& p); - QPointF project(const SGGeod& geod) const; void buildTaxiways(); void buildPavements(); + void drawILS(QPainter *painter, FGRunwayRef runway) const; + void drawParkings(QPainter *p); + FGAirportRef m_airport; - SGGeod m_projectionCenter; - double m_scale; - QRectF m_bounds; struct RunwayData { QPointF p1, p2; @@ -58,7 +70,7 @@ private: FGRunwayRef runway; }; - QList m_runways; + QVector m_runways; struct TaxiwayData { QPointF p1, p2; @@ -70,6 +82,21 @@ private: } }; - QList m_taxiways; - QList m_pavements; + QVector m_taxiways; + QVector m_pavements; + + struct ParkingData + { + QPointF pt; + FGParkingRef parking; + }; + + QVector m_parking; + + QPainterPath m_parkingIconPath, // arrow points right + m_parkingIconLeftPath; // arrow points left + double m_approachDistanceNm; + FGRunwayRef m_selectedRunway; }; + +#endif // of GUI_AIRPORT_DIAGRAM_HXX