|
|
|
@ -11,7 +11,6 @@ |
|
|
|
|
#include "paint.hpp" |
|
|
|
|
#include "sidebar.hpp" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: this is also hardcoded in common/transformations/camera.py
|
|
|
|
|
// TODO: choose based on frame input size
|
|
|
|
|
#ifdef QCOM2 |
|
|
|
@ -22,7 +21,7 @@ const float y_offset = 0.0; |
|
|
|
|
const float zoom = 2.35; |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
static void ui_draw_text(const UIState *s, float x, float y, const char* string, float size, NVGcolor color, const char *font_name){ |
|
|
|
|
static void ui_draw_text(const UIState *s, float x, float y, const char *string, float size, NVGcolor color, const char *font_name) { |
|
|
|
|
nvgFontFace(s->vg, font_name); |
|
|
|
|
nvgFontSize(s->vg, size); |
|
|
|
|
nvgFillColor(s->vg, color); |
|
|
|
@ -66,7 +65,7 @@ static void ui_draw_circle_image(const UIState *s, int x, int y, int size, const |
|
|
|
|
ui_draw_circle_image(s, x, y, size, image, nvgRGBA(0, 0, 0, (255 * bg_alpha)), img_alpha); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void draw_lead(UIState *s, int idx){ |
|
|
|
|
static void draw_lead(UIState *s, int idx) { |
|
|
|
|
// Draw lead car indicator
|
|
|
|
|
const auto &lead = s->scene.lead_data[idx]; |
|
|
|
|
auto [x, y] = s->scene.lead_vertices[idx]; |
|
|
|
@ -134,7 +133,7 @@ static void draw_frame(UIState *s) { |
|
|
|
|
|
|
|
|
|
assert(glGetError() == GL_NO_ERROR); |
|
|
|
|
glEnableVertexAttribArray(0); |
|
|
|
|
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, (const void*)0); |
|
|
|
|
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, (const void *)0); |
|
|
|
|
glDisableVertexAttribArray(0); |
|
|
|
|
glBindVertexArray(0); |
|
|
|
|
} |
|
|
|
@ -401,7 +400,7 @@ void ui_draw(UIState *s) { |
|
|
|
|
glDisable(GL_BLEND); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void ui_draw_image(const UIState *s, const Rect &r, const char *name, float alpha){ |
|
|
|
|
void ui_draw_image(const UIState *s, const Rect &r, const char *name, float alpha) { |
|
|
|
|
nvgBeginPath(s->vg); |
|
|
|
|
NVGpaint imgPaint = nvgImagePattern(s->vg, r.x, r.y, r.w, r.h, 0, s->images.at(name), alpha); |
|
|
|
|
nvgRect(s->vg, r.x, r.y, r.w, r.h); |
|
|
|
@ -419,7 +418,7 @@ void ui_draw_rect(NVGcontext *vg, const Rect &r, NVGcolor color, int width, floa |
|
|
|
|
|
|
|
|
|
static inline void fill_rect(NVGcontext *vg, const Rect &r, const NVGcolor *color, const NVGpaint *paint, float radius) { |
|
|
|
|
nvgBeginPath(vg); |
|
|
|
|
radius > 0? nvgRoundedRect(vg, r.x, r.y, r.w, r.h, radius) : nvgRect(vg, r.x, r.y, r.w, r.h); |
|
|
|
|
radius > 0 ? nvgRoundedRect(vg, r.x, r.y, r.w, r.h, radius) : nvgRect(vg, r.x, r.y, r.w, r.h); |
|
|
|
|
if (color) nvgFillColor(vg, *color); |
|
|
|
|
if (paint) nvgFillPaint(vg, *paint); |
|
|
|
|
nvgFill(vg); |
|
|
|
@ -427,7 +426,7 @@ static inline void fill_rect(NVGcontext *vg, const Rect &r, const NVGcolor *colo |
|
|
|
|
void ui_fill_rect(NVGcontext *vg, const Rect &r, const NVGcolor &color, float radius) { |
|
|
|
|
fill_rect(vg, r, &color, nullptr, radius); |
|
|
|
|
} |
|
|
|
|
void ui_fill_rect(NVGcontext *vg, const Rect &r, const NVGpaint &paint, float radius){ |
|
|
|
|
void ui_fill_rect(NVGcontext *vg, const Rect &r, const NVGpaint &paint, float radius) { |
|
|
|
|
fill_rect(vg, r, nullptr, &paint, radius); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -547,7 +546,7 @@ void ui_nvg_init(UIState *s) { |
|
|
|
|
|
|
|
|
|
assert(glGetError() == GL_NO_ERROR); |
|
|
|
|
|
|
|
|
|
for(int i = 0; i < 2; i++) { |
|
|
|
|
for (int i = 0; i < 2; i++) { |
|
|
|
|
float x1, x2, y1, y2; |
|
|
|
|
if (i == 1) { |
|
|
|
|
// flip horizontally so it looks like a mirror
|
|
|
|
@ -583,7 +582,7 @@ void ui_nvg_init(UIState *s) { |
|
|
|
|
glGenBuffers(1, &s->frame_ibo[i]); |
|
|
|
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s->frame_ibo[i]); |
|
|
|
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(frame_indicies), frame_indicies, GL_STATIC_DRAW); |
|
|
|
|
glBindBuffer(GL_ARRAY_BUFFER,0); |
|
|
|
|
glBindBuffer(GL_ARRAY_BUFFER, 0); |
|
|
|
|
glBindVertexArray(0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|