fix(core/embed): better clamping of coordinates

[no changelog]
pull/2575/head
matejcik 2 years ago committed by matejcik
parent 9708175d19
commit 615c8a0e64

@ -48,12 +48,14 @@ static struct { int x, y; } DISPLAY_OFFSET;
// common display functions
#define CLAMP(x, min, max) (MIN(MAX((x), (min)), (max)))
static inline void clamp_coords(int x, int y, int w, int h, int *x0, int *y0,
int *x1, int *y1) {
*x0 = MAX(x, 0);
*y0 = MAX(y, 0);
*x1 = MIN(x + w - 1, DISPLAY_RESX - 1);
*y1 = MIN(y + h - 1, DISPLAY_RESY - 1);
*x0 = CLAMP(x, 0, DISPLAY_RESX);
*y0 = CLAMP(y, 0, DISPLAY_RESY);
*x1 = CLAMP(x + w - 1, -1, DISPLAY_RESX - 1);
*y1 = CLAMP(y + h - 1, -1, DISPLAY_RESY - 1);
}
void display_clear(void) {
@ -416,6 +418,9 @@ void display_icon(int x, int y, int w, int h, const void *data,
y1 -= y;
int width = x1 - x0 + 1;
if (width <= 0) {
return;
}
uint8_t b[DISPLAY_RESX / 2];
line_buffer_4bpp_t *b1 = buffers_get_line_buffer_4bpp(0, false);

Loading…
Cancel
Save