From aedaa7ade0ed623d09b18a34023f2e02201e67e6 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Fri, 4 Jun 2021 10:53:24 +0200 Subject: Add slow rect drawing primitive to renderer --- src/renderer.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/renderer.c') diff --git a/src/renderer.c b/src/renderer.c index 076d698..4aa583d 100644 --- a/src/renderer.c +++ b/src/renderer.c @@ -44,6 +44,32 @@ draw_pixel(u16 x, u16 y, u8 color) { dirty_tiles[tile_y] |= 1 << tile_x; } +IWRAM_CODE +void +draw_rect(int x0, int y0, int x1, int y1, u8 clr) { + if (x0 > x1) { + int tmp = x0; + x0 = x1; + x1 = tmp; + } + if (y0 > y1) { + int tmp = y0; + y0 = y1; + y1 = tmp; + } + int dx = x1 - x0; + int dy = y1 - y0; + // TODO: SLOW should be vectorized. + for (int i = 0; i <= dx; ++i) { + draw_pixel(x0 + i, y0, clr); + draw_pixel(x0 + i, y1, clr); + } + for (int i = 0; i <= dy; ++i) { + draw_pixel(x0, y0 + i, clr); + draw_pixel(x1, y0 + i, clr); + } +} + IWRAM_CODE void draw_tile(u16 x, u16 y, Tile *tile, bool merge) { -- cgit v1.2.1