mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-07-14 02:32:08 +08:00
ui: Speed Limit Warning
This commit is contained in:
@@ -865,8 +865,11 @@ void AnnotatedCameraWidget::drawHud(QPainter &p) {
|
||||
|
||||
const QRect sign_rect = set_speed_rect.adjusted(sign_margin, default_size.height(), -sign_margin, -sign_margin);
|
||||
uiState()->scene.sl_sign_rect = sign_rect;
|
||||
|
||||
speedLimitWarning(p, sign_rect, sign_margin);
|
||||
|
||||
// US/Canada (MUTCD style) sign
|
||||
if ((mapSourcedSpeedLimit && !is_metric && !isNavSpeedLimit) || has_us_speed_limit) {
|
||||
if (((mapSourcedSpeedLimit && !is_metric && !isNavSpeedLimit) || has_us_speed_limit) && slcShowSign) {
|
||||
p.setPen(Qt::NoPen);
|
||||
p.setBrush(whiteColor());
|
||||
p.drawRoundedRect(sign_rect, 24, 24);
|
||||
@@ -888,7 +891,7 @@ void AnnotatedCameraWidget::drawHud(QPainter &p) {
|
||||
}
|
||||
|
||||
// EU (Vienna style) sign
|
||||
if ((mapSourcedSpeedLimit && is_metric && !isNavSpeedLimit) || has_eu_speed_limit) {
|
||||
if (((mapSourcedSpeedLimit && is_metric && !isNavSpeedLimit) || has_eu_speed_limit) && slcShowSign) {
|
||||
p.setPen(Qt::NoPen);
|
||||
p.setBrush(whiteColor());
|
||||
p.drawEllipse(sign_rect);
|
||||
@@ -1570,6 +1573,14 @@ int AnnotatedCameraWidget::blinkerPulse(int frame) {
|
||||
return blinker_state;
|
||||
}
|
||||
|
||||
void AnnotatedCameraWidget::speedLimitSignPulse(int frame) {
|
||||
if (frame % UI_FREQ < (UI_FREQ / 2.5)) {
|
||||
slcShowSign = false;
|
||||
} else {
|
||||
slcShowSign = true;
|
||||
}
|
||||
}
|
||||
|
||||
void AnnotatedCameraWidget::drawFeatureStatusText(QPainter &p, int x, int y) {
|
||||
const FeatureStatusText feature_text;
|
||||
const FeatureStatusColor feature_color;
|
||||
@@ -1641,6 +1652,17 @@ void AnnotatedCameraWidget::drawFeatureStatusText(QPainter &p, int x, int y) {
|
||||
}
|
||||
}
|
||||
|
||||
void AnnotatedCameraWidget::speedLimitWarning(QPainter &p, QRect sign_rect, const int sign_margin) {
|
||||
// current speed over speed limit
|
||||
if (overSpeedLimit) {
|
||||
speed_limit_frame++;
|
||||
speedLimitSignPulse(speed_limit_frame);
|
||||
} else {
|
||||
speed_limit_frame = 0;
|
||||
slcShowSign = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void AnnotatedCameraWidget::initializeGL() {
|
||||
CameraWidget::initializeGL();
|
||||
|
||||
@@ -124,6 +124,8 @@ private:
|
||||
void updateButtonsLayout();
|
||||
|
||||
void drawFeatureStatusText(QPainter &p, int x, int y);
|
||||
void speedLimitSignPulse(int frame);
|
||||
void speedLimitWarning(QPainter &p, QRect sign_rect, const int sign_margin);
|
||||
void mousePressEvent(QMouseEvent* e) override;
|
||||
Params params;
|
||||
|
||||
@@ -233,6 +235,9 @@ private:
|
||||
int dynamicLaneProfile;
|
||||
QString mpcMode;
|
||||
|
||||
int speed_limit_frame;
|
||||
bool slcShowSign = true;
|
||||
|
||||
protected:
|
||||
void paintGL() override;
|
||||
void initializeGL() override;
|
||||
|
||||
Reference in New Issue
Block a user