52 Q_PROPERTY(
double heading READ heading WRITE setHeading NOTIFY headingChanged)
53 Q_PROPERTY(
double targetHeading READ targetHeading WRITE setTargetHeading NOTIFY targetHeadingChanged)
54 Q_PROPERTY(DisplayMode displayMode READ displayMode WRITE setDisplayMode NOTIFY displayModeChanged)
55 Q_PROPERTY(
bool headingBugVisible READ isHeadingBugVisible WRITE setHeadingBugVisible NOTIFY appearanceChanged)
56 Q_PROPERTY(
bool headingBugInteractive READ isHeadingBugInteractive WRITE setHeadingBugInteractive NOTIFY appearanceChanged)
57 Q_PROPERTY(
bool lubberLineVisible READ isLubberLineVisible WRITE setLubberLineVisible NOTIFY appearanceChanged)
58 Q_PROPERTY(
bool digitalReadoutVisible READ isDigitalReadoutVisible WRITE setDigitalReadoutVisible NOTIFY appearanceChanged)
59 Q_PROPERTY(
double courseDeviation READ courseDeviation NOTIFY headingChanged)
61 Q_PROPERTY(QColor dialColor READ dialColor WRITE setDialColor NOTIFY appearanceChanged)
62 Q_PROPERTY(QColor bezelColor READ bezelColor WRITE setBezelColor NOTIFY appearanceChanged)
63 Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor NOTIFY appearanceChanged)
64 Q_PROPERTY(QColor cardinalColor READ cardinalColor WRITE setCardinalColor NOTIFY appearanceChanged)
65 Q_PROPERTY(QColor needleColor READ needleColor WRITE setNeedleColor NOTIFY appearanceChanged)
66 Q_PROPERTY(QColor needleTailColor READ needleTailColor WRITE setNeedleTailColor NOTIFY appearanceChanged)
67 Q_PROPERTY(QColor bugColor READ bugColor WRITE setBugColor NOTIFY appearanceChanged)
68 Q_PROPERTY(QColor lubberColor READ lubberColor WRITE setLubberColor NOTIFY appearanceChanged)
72 enum class DisplayMode {
82 explicit Compass(QWidget *parent =
nullptr);
86 [[nodiscard]]
double heading()
const;
88 [[nodiscard]]
double targetHeading()
const;
90 [[nodiscard]] DisplayMode displayMode()
const;
92 [[nodiscard]]
bool isHeadingBugVisible()
const;
94 [[nodiscard]]
bool isHeadingBugInteractive()
const;
96 [[nodiscard]]
bool isLubberLineVisible()
const;
98 [[nodiscard]]
bool isDigitalReadoutVisible()
const;
104 [[nodiscard]]
double courseDeviation()
const;
107 [[nodiscard]]
static double normalizeDegrees(
double deg);
110 [[nodiscard]] QColor dialColor()
const;
111 [[nodiscard]] QColor bezelColor()
const;
112 [[nodiscard]] QColor textColor()
const;
113 [[nodiscard]] QColor cardinalColor()
const;
114 [[nodiscard]] QColor needleColor()
const;
115 [[nodiscard]] QColor needleTailColor()
const;
116 [[nodiscard]] QColor bugColor()
const;
117 [[nodiscard]] QColor lubberColor()
const;
119 [[nodiscard]] QSize sizeHint()
const override;
120 [[nodiscard]] QSize minimumSizeHint()
const override;
124 void setHeading(
double heading);
126 void setTargetHeading(
double targetHeading);
128 void setDisplayMode(DisplayMode mode);
130 void setHeadingBugVisible(
bool visible);
132 void setHeadingBugInteractive(
bool interactive);
134 void setLubberLineVisible(
bool visible);
136 void setDigitalReadoutVisible(
bool visible);
138 void setDialColor(
const QColor &color);
139 void setBezelColor(
const QColor &color);
140 void setTextColor(
const QColor &color);
141 void setCardinalColor(
const QColor &color);
142 void setNeedleColor(
const QColor &color);
143 void setNeedleTailColor(
const QColor &color);
144 void setBugColor(
const QColor &color);
145 void setLubberColor(
const QColor &color);
149 void headingChanged(
double heading);
151 void targetHeadingChanged(
double targetHeading);
153 void displayModeChanged(DisplayMode mode);
155 void appearanceChanged();
158 void paintEvent(QPaintEvent *event)
override;
159 void resizeEvent(QResizeEvent *event)
override;
160 void changeEvent(QEvent *event)
override;
161 void mousePressEvent(QMouseEvent *event)
override;
162 void mouseMoveEvent(QMouseEvent *event)
override;
163 void mouseReleaseEvent(QMouseEvent *event)
override;
166 void invalidateCache();
167 void renderCompassCard(
const QSize &size);
168 [[nodiscard]]
double angleFromPoint(
const QPointF &pos)
const;
170 std::unique_ptr<CompassPrivate> d_ptr;