From 07cc344c87306309316d30cb3fce1f6c1f15c0be Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Thu, 15 Apr 2021 14:37:26 +0200 Subject: Test Bresenham's algorithm --- src/main.c | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/main.c b/src/main.c index c179dc4..7f04f28 100644 --- a/src/main.c +++ b/src/main.c @@ -71,6 +71,10 @@ rgb15(u32 red, u32 green, u32 blue ) { return (blue << 10) | (green << 5) | red; } +#define COLOR_RED rgb15(31, 0, 12) +#define COLOR_BLUE rgb15(2, 15, 30) +#define COLOR_CYAN rgb15(0, 30, 30) + // Using bd-font, an 8x8 bitmap font. static inline void put_char(int x, int y, Color clr, u8 chr) { @@ -175,23 +179,38 @@ int main(void) { set_display_mode(DISP_MODE_3 | DISP_BG2); - put_text(0, 0, rgb15(18, 0, 0), "\n\n\n\n"); - - draw_line(0, 0, 3, 8,rgb15(0, 30, 0)); - draw_line(8, 0, 16, 8,rgb15(0, 0, 30)); + put_text(8, 8, COLOR_RED, "Testing Bresenham's algorithm"); - draw_line(0, 0, 8, 3,rgb15(0, 0, 30)); - draw_line(8, 0, 16, 8,rgb15(0, 0, 30)); - - // Testing a "rectangle" - draw_line(0, 0, 0, 7,rgb15(0, 0, 30)); - draw_line(0, 0, 7, 0,rgb15(0, 30, 30)); - draw_line(0, 7, 7, 7,rgb15(30, 0, 0)); - draw_line(7, 0, 7, 7,rgb15(0, 30, 0)); + for (size_t i = 70; i <= SCREEN_WIDTH - 70; i += 5) { + int x0 = i; + int y0 = 30; + int x1 = SCREEN_WIDTH - i; + int y1 = SCREEN_HEIGHT - 30; + draw_line(x0, y0, x1, y1, COLOR_BLUE); + } + for (size_t i = 30; i <= SCREEN_HEIGHT - 30; i += 5) { + int x0 = 70; + int y0 = i; + int x1 = SCREEN_WIDTH - 70; + int y1 = SCREEN_HEIGHT - i; + draw_line(x0, y0, x1, y1, COLOR_BLUE); + } - draw_line(8, 7, 15, 0,rgb15(0, 0, 30)); + for (size_t i = 70; i <= SCREEN_WIDTH - 70; i += 10) { + int x0 = i; + int y0 = 30; + int x1 = SCREEN_WIDTH - i; + int y1 = SCREEN_HEIGHT - 30; + draw_line(x0, y0, x1, y1, COLOR_CYAN); + } + for (size_t i = 30; i <= SCREEN_HEIGHT - 30; i += 10) { + int x0 = 70; + int y0 = i; + int x1 = SCREEN_WIDTH - 70; + int y1 = SCREEN_HEIGHT - i; + draw_line(x0, y0, x1, y1, COLOR_CYAN); + } - char scanline_counter[16]; while(true) { wait_vsync(); }; -- cgit v1.2.1