21#ifndef GUI_BASEDIAGRAM_HXX
22#define GUI_BASEDIAGRAM_HXX
25#include <QPainterPath>
27#include <QQuickPaintedItem>
30#include <simgear/math/sg_geodesy.hxx>
64 void paint(QPainter*
p)
override;
80 QPointF
project(
const SGGeod& geod)
const;
95 static void extendRect(QRectF& r,
const QPointF&
p);
97 static QPointF
project(
const SGGeod &geod,
const SGGeod ¢er);
99 static SGGeod
unproject(
const QPointF &xy,
const SGGeod ¢er);
102 void paintCarrierIcon(QPainter *painter,
const SGGeod &geod,
int headingDeg);
122 void paintNavaids(QPainter *
p);
126 bool isLabelRectAvailable(
const QRect& r)
const;
127 QRect rectAndFlagsForLabel(
PositionedID guid,
const QRect &item,
130 QRect labelPositioned(
const QRect &itemRect,
const QSize &bounds, LabelPosition lp)
const;
132 QTransform m_baseDeviceTransform;
133 QTransform m_viewportTransform;
134 QVector<FGPositionedRef> m_ignored;
135 QPixmap m_carrierPixmap;
137 mutable QHash<PositionedID, LabelPosition> m_labelPositions;
138 mutable QVector<QRect> m_labelRects;
140 mutable QHash<PositionedID, QPointF> m_projectedPositions;
142 static int textFlagsForLabelPosition(LabelPosition pos);
146 void paintPolygonData(QPainter *painter);
151Q_DECLARE_OPERATORS_FOR_FLAGS(BaseDiagram::IconOptions)
bool options(int, char **)
SGSharedPtr< FGAirport > FGAirportRef
SGSharedPtr< FGPositioned > FGPositionedRef
int m_wheelAngleDeltaAccumulator
BaseDiagram(QQuickItem *pr=nullptr)
void clearIgnoredNavaids()
static void extendRect(QRectF &r, const QPointF &p)
QTransform transform() const
static QVector< QLineF > projectAirportRuwaysIntoRect(FGAirportRef apt, const QRectF &bounds)
void paintAirplaneIcon(QPainter *painter, const SGGeod &geod, int headingDeg)
static SGGeod unproject(const QPointF &xy, const SGGeod ¢er)
void setAircraftType(LauncherController::AircraftType type)
static QPixmap iconForAirport(FGAirport *apt, const IconOptions &options=NoOptions)
QPointF projectedPosition(PositionedID pid) const
void wheelEvent(QWheelEvent *we) override
SGGeod m_projectionCenter
Q_INVOKABLE void resetZoom()
static QVector< QLineF > projectAirportRuwaysWithCenter(FGAirportRef apt, const SGGeod &c)
void extendBounds(const QPointF &p, double radiusM=1.0)
virtual void paintContents(QPainter *)
void addIgnoredNavaid(FGPositionedRef pos)
void paintAirways(QPainter *painter, const FGPositionedList &navs)
void paint(QPainter *p) override
QPointF project(const SGGeod &geod) const
virtual void doComputeBounds()
void paintCarrierIcon(QPainter *painter, const SGGeod &geod, int headingDeg)
void mousePressEvent(QMouseEvent *me) override
static QPixmap iconForPositioned(const FGPositionedRef &pos, const IconOptions &options=NoOptions)
void recomputeBounds(bool resetZoom)
LauncherController::AircraftType m_aircraftType
void mouseMoveEvent(QMouseEvent *me) override
std::vector< SGGeod > SGGeodVec
std::vector< FGPositionedRef > FGPositionedList