mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-07-12 08:22:05 +08:00
加入 minimal UI
This commit is contained in:
+77
-4
@@ -35,6 +35,7 @@
|
||||
|
||||
#include "cereal/gen/c/log.capnp.h"
|
||||
#include "slplay.h"
|
||||
#include <time.h>
|
||||
|
||||
#define STATUS_STOPPED 0
|
||||
#define STATUS_DISENGAGED 1
|
||||
@@ -164,6 +165,11 @@ typedef struct UIScene {
|
||||
bool gps_planner_active;
|
||||
|
||||
bool is_playing_alert;
|
||||
|
||||
// for minimal UI
|
||||
float angleSteersDes;
|
||||
float angleSteers;
|
||||
|
||||
} UIScene;
|
||||
|
||||
typedef struct {
|
||||
@@ -1411,13 +1417,76 @@ static void ui_draw_vision_header(UIState *s) {
|
||||
nvgRect(s->vg, ui_viz_rx, box_y, ui_viz_rw, header_h);
|
||||
nvgFill(s->vg);
|
||||
|
||||
ui_draw_vision_maxspeed(s);
|
||||
//ui_draw_vision_maxspeed(s);
|
||||
|
||||
#ifdef SHOW_SPEEDLIMIT
|
||||
ui_draw_vision_speedlimit(s);
|
||||
#endif
|
||||
ui_draw_vision_speed(s);
|
||||
ui_draw_vision_event(s);
|
||||
//ui_draw_vision_event(s);
|
||||
}
|
||||
|
||||
static void ui_draw_infobar(UIState *s) {
|
||||
// timestamp from pjlao307 dashcam (https://github.com/pjlao307)
|
||||
int rect_w = 1440; // 1920 * 0.75
|
||||
int rect_h = 50;
|
||||
int rect_x = (1920-rect_w)/2;
|
||||
int rect_y = (1080-rect_h-50);
|
||||
int sidebar_offset = 0;
|
||||
bool hasSidebar = !s->scene.uilayout_sidebarcollapsed;
|
||||
if (hasSidebar) {
|
||||
sidebar_offset = 100;
|
||||
}
|
||||
|
||||
|
||||
// Get local time to display
|
||||
char infobar[68];
|
||||
time_t t = time(NULL);
|
||||
struct tm tm = *localtime(&t);
|
||||
|
||||
char rel_steer[9];
|
||||
snprintf(rel_steer, sizeof(rel_steer), "%s%05.1f°", s->scene.angleSteers < 0? "-" : "+", fabs(s->scene.angleSteers));
|
||||
|
||||
char des_steer[9];
|
||||
if (s->scene.engaged) {
|
||||
snprintf(des_steer, sizeof(des_steer), "%s%05.1f°", s->scene.angleSteersDes < 0? "-" : "+", fabs(s->scene.angleSteersDes));
|
||||
} else {
|
||||
snprintf(des_steer, sizeof(des_steer), "%6s", "N/A");
|
||||
}
|
||||
|
||||
|
||||
char lead_dist[8];
|
||||
if (s->scene.lead_status) {
|
||||
snprintf(lead_dist, sizeof(lead_dist), "%06.2fm", s->scene.lead_d_rel);
|
||||
} else {
|
||||
snprintf(lead_dist, sizeof(lead_dist), "%6s", "N/A");
|
||||
}
|
||||
|
||||
|
||||
snprintf(
|
||||
infobar,
|
||||
sizeof(infobar),
|
||||
"%04d/%02d/%02d %02d:%02d:%02d | REL: %s | DES: %s | DIST: %s",
|
||||
tm.tm_year + 1900,
|
||||
tm.tm_mon + 1,
|
||||
tm.tm_mday,
|
||||
tm.tm_hour,
|
||||
tm.tm_min,
|
||||
tm.tm_sec,
|
||||
rel_steer,
|
||||
des_steer,
|
||||
lead_dist
|
||||
);
|
||||
|
||||
nvgBeginPath(s->vg);
|
||||
nvgRoundedRect(s->vg, rect_x + sidebar_offset, rect_y, rect_w, rect_h, 15);
|
||||
nvgFillColor(s->vg, nvgRGBA(0, 0, 0, 100));
|
||||
nvgFill(s->vg);
|
||||
|
||||
nvgFontSize(s->vg, 40);
|
||||
nvgFontFace(s->vg, "courbd");
|
||||
nvgFillColor(s->vg, nvgRGBA(255, 255, 255, 175));
|
||||
nvgText(s->vg, rect_x + 720 + sidebar_offset, rect_y + 35, infobar, NULL);
|
||||
}
|
||||
|
||||
static void ui_draw_vision_footer(UIState *s) {
|
||||
@@ -1428,11 +1497,12 @@ static void ui_draw_vision_footer(UIState *s) {
|
||||
nvgBeginPath(s->vg);
|
||||
nvgRect(s->vg, ui_viz_rx, footer_y, ui_viz_rw, footer_h);
|
||||
|
||||
ui_draw_vision_face(s);
|
||||
//ui_draw_vision_face(s);
|
||||
|
||||
#ifdef SHOW_SPEEDLIMIT
|
||||
ui_draw_vision_map(s);
|
||||
#endif
|
||||
ui_draw_infobar(s);
|
||||
}
|
||||
|
||||
static void ui_draw_vision_alert(UIState *s, int va_size, int va_color,
|
||||
@@ -1849,6 +1919,9 @@ static void ui_update(UIState *s) {
|
||||
s->scene.v_curvature = datad.vCurvature;
|
||||
s->scene.decel_for_turn = datad.decelForTurn;
|
||||
|
||||
s->scene.angleSteers = datad.angleSteers;
|
||||
s->scene.angleSteersDes = datad.angleSteersDes;
|
||||
|
||||
if (datad.alertSound.str && datad.alertSound.str[0] != '\0' && strcmp(s->alert_type, datad.alertType.str) != 0) {
|
||||
char* error = NULL;
|
||||
if (s->alert_sound[0] != '\0') {
|
||||
@@ -2348,4 +2421,4 @@ int main(int argc, char* argv[]) {
|
||||
assert(err == 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user