openpilot/frogpilot/ui/qt/onroad/frogpilot_annotated_camera.h
2025-11-01 12:00:00 -07:00

139 lines
5.3 KiB
C++

#pragma once
#include <QJsonDocument>
#include <QJsonObject>
#include "selfdrive/ui/qt/onroad/buttons.h"
#include "selfdrive/ui/qt/widgets/cameraview.h"
const int widget_size = img_size + (UI_BORDER_SIZE / 2);
class FrogPilotAnnotatedCameraWidget : public QWidget {
Q_OBJECT
public:
explicit FrogPilotAnnotatedCameraWidget(QWidget *parent = 0);
void paintAdjacentPaths(QPainter &p, const cereal::CarState::Reader &carState, const FrogPilotUIScene &frogpilot_scene, const QJsonObject &frogpilot_toggles);
void paintBlindSpotPath(QPainter &p, const cereal::CarState::Reader &carState, const FrogPilotUIScene &frogpilot_scene);
void paintFrogPilotWidgets(QPainter &p, UIState &s, FrogPilotUIState &fs, SubMaster &sm, SubMaster &fpsm, QJsonObject &frogpilot_toggles);
void paintLeadMetrics(QPainter &p, bool adjacent, QPointF *chevron, const cereal::FrogPilotPlan::Reader &frogpilotPlan, const cereal::RadarState::LeadData::Reader &lead_data);
void paintPathEdges(QPainter &p, const cereal::NavInstruction::Reader &navInstruction, const UIScene &scene, const FrogPilotUIScene &frogpilot_scene, SubMaster &sm);
void paintRainbowPath(QPainter &p, QLinearGradient &bg, float lin_grad_point, SubMaster &sm);
void updateState(const FrogPilotUIState &fs, const QJsonObject &frogpilot_toggles);
bool bigMapOpen;
bool hideBottomIcons;
bool isCruiseSet;
bool mapButtonVisible;
bool mutcdSpeedLimit;
bool rightHandDM;
bool viennaSpeedLimit;
int alertHeight;
int frogHopCount;
int signMargin;
int standstillDuration;
float distanceConversion;
float setSpeed;
float speed;
float speedConversion;
float speedConversionMetrics;
QColor blueColor(int alpha = 255) { return QColor(0, 0, 255, alpha); }
QColor purpleColor(int alpha = 255) { return QColor(128, 0, 128, alpha); }
QPoint dmIconPosition;
QPoint experimentalButtonPosition;
QRect leadTextRect;
QRect newSpeedLimitRect;
QRect setSpeedRect;
QRect speedLimitRect;
QSize defaultSize;
QString accelerationUnit;
QString leadDistanceUnit;
QString leadSpeedUnit;
QString signalStyle;
QString speedLimitOffsetStr;
QString speedUnit;
protected:
void showEvent(QShowEvent *event) override;
private:
void paintCEMStatus(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan, FrogPilotUIScene &frogpilot_scene, SubMaster &sm);
void paintCompass(QPainter &p, QJsonObject &frogpilot_toggles);
void paintCurveSpeedControl(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan);
void paintLateralPaused(QPainter &p, FrogPilotUIScene &frogpilot_scene);
void paintLongitudinalPaused(QPainter &p, FrogPilotUIScene &frogpilot_scene);
void paintPedalIcons(QPainter &p, const cereal::CarState::Reader &carState, const cereal::FrogPilotCarState::Reader &frogpilotCarState, FrogPilotUIScene &frogpilot_scene, QJsonObject &frogpilot_toggles);
void paintPendingSpeedLimit(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan);
void paintRadarTracks(QPainter &p, const cereal::ModelDataV2::Reader &model, UIState &s, FrogPilotUIScene &frogpilot_scene, SubMaster &sm, SubMaster &fpsm);
void paintRoadName(QPainter &p);
void paintSmartControllerTraining(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan);
void paintSpeedLimitSources(QPainter &p, const cereal::FrogPilotCarState::Reader &frogpilotCarState, const cereal::FrogPilotNavigation::Reader &frogpilotNavigation, const cereal::FrogPilotPlan::Reader &frogpilotPlan);
void paintStandstillTimer(QPainter &p);
void paintStoppingPoint(QPainter &p, UIScene &scene, FrogPilotUIScene &frogpilot_scene, QJsonObject &frogpilot_toggles);
void paintTurnSignals(QPainter &p, const cereal::CarState::Reader &carState);
void paintWeather(QPainter &p, const cereal::FrogPilotPlan::Reader &frogpilotPlan, FrogPilotUIScene &frogpilot_scene);
void updateSignals();
int animationFrameIndex;
int signalAnimationLength;
int signalHeight;
int signalMovement;
int signalWidth;
int totalFrames;
Params params;
Params params_memory{"/dev/shm/params"};
QColor blackColor(int alpha = 255) { return QColor(0, 0, 0, alpha); }
QColor greenColor(int alpha = 242) { return QColor(23, 134, 68, alpha); }
QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); }
QColor whiteColor(int alpha = 255) { return QColor(255, 255, 255, alpha); }
QElapsedTimer glowTimer;
QElapsedTimer pendingLimitTimer;
QElapsedTimer standstillTimer;
QPixmap brakePedalImg;
QPixmap curveSpeedIcon;
QPixmap dashboardIcon;
QPixmap gasPedalImg;
QPixmap mapDataIcon;
QPixmap navigationIcon;
QPixmap nextMapsIcon;
QPixmap pausedIcon;
QPixmap speedIcon;
QPixmap stopSignImg;
QPixmap turnIcon;
QPoint cemStatusPosition;
QPoint compassPosition;
QPoint lateralPausedPosition;
QSharedPointer<QMovie> cemCurveIcon;
QSharedPointer<QMovie> cemLeadIcon;
QSharedPointer<QMovie> cemSpeedIcon;
QSharedPointer<QMovie> cemStopIcon;
QSharedPointer<QMovie> cemTurnIcon;
QSharedPointer<QMovie> chillModeIcon;
QSharedPointer<QMovie> experimentalModeIcon;
QSharedPointer<QMovie> weatherClearDay;
QSharedPointer<QMovie> weatherClearNight;
QSharedPointer<QMovie> weatherRain;
QSharedPointer<QMovie> weatherSnow;
QString cscSpeedStr;
QTimer *animationTimer;
QVector<QPixmap> blindspotImages;
QVector<QPixmap> signalImages;
};