From e6580eff432d2393e665784c38a9006836f12a6c Mon Sep 17 00:00:00 2001 From: Boris Stefanovic <owldev@bluewin.ch> Date: Mon, 16 May 2022 10:15:12 +0200 Subject: [PATCH] ADD: draw_everything(...) --- src/draw.c | 106 +++++++++++++++++++++++++++-------------------------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/src/draw.c b/src/draw.c index 83194fe..3f59243 100644 --- a/src/draw.c +++ b/src/draw.c @@ -1,60 +1,62 @@ +#include <stdbool.h> + #include "../utils/gfx/gfx.h" #include "field.h" void gfx_draw_line(struct gfx_context_t *ctxt, coordinates_t p0, coordinates_t p1, uint32_t color) { - int dx = abs(p1.column - p0.column); - int sx = p0.column < p1.column ? 1 : -1; - int dy = -abs(p1.row - p0.row); - int sy = p0.row < p1.row ? 1 : -1; - int error = dx + dy; - - while (true) { - gfx_putpixel(ctxt, p0.column, p0.row, color); - - if (p0.column == p1.column && p0.row == p1.row) - break; - - int e2 = 2 * error; - - if (e2 >= dy) { - if (p0.column == p1.column) - break; - error = error + dy; - p0.column = p0.column + sx; - } - - if (e2 <= dx) { - if (p0.row == p1.row) - break; - error = error + dx; - p0.row = p0.row + sy; - } - } + int dx = abs(p1.column - p0.column); + int sx = p0.column < p1.column ? 1 : -1; + int dy = -abs(p1.row - p0.row); + int sy = p0.row < p1.row ? 1 : -1; + int error = dx + dy; + + while (true) { + gfx_putpixel(ctxt, p0.column, p0.row, color); + + if (p0.column == p1.column && p0.row == p1.row) + break; + + int e2 = 2 * error; + + if (e2 >= dy) { + if (p0.column == p1.column) + break; + error = error + dy; + p0.column = p0.column + sx; + } + + if (e2 <= dx) { + if (p0.row == p1.row) + break; + error = error + dx; + p0.row = p0.row + sy; + } + } } void gfx_draw_circle(struct gfx_context_t *ctxt, coordinates c, uint32_t r, uint32_t color) { - int x = 0; - int y = r; - int d = r - 1; - while(y >= x){ - gfx_putpixel(ctxt, c.row + x, c.column + y, color); - gfx_putpixel(ctxt, c.row + y, c.column + x, color); - gfx_putpixel(ctxt, c.row - x, c.column + y, color); - gfx_putpixel(ctxt, c.row - y, c.column + x, color); - gfx_putpixel(ctxt, c.row + x, c.column - y, color); - gfx_putpixel(ctxt, c.row + y, c.column - x, color); - gfx_putpixel(ctxt, c.row - x, c.column - y, color); - gfx_putpixel(ctxt, c.row - y, c.column - x, color); - if(d >= 2*x){ - d = d-2*x-1; - x++; - }else if(d < 2 * (r-y)){ - d = d + 2*y-1; - y--; - }else { - d = d + 2 * (y-x-1); - y--; - x++; - } - } + int x = 0; + int y = r; + int d = r - 1; + while (y >= x) { + gfx_putpixel(ctxt, c.row + x, c.column + y, color); + gfx_putpixel(ctxt, c.row + y, c.column + x, color); + gfx_putpixel(ctxt, c.row - x, c.column + y, color); + gfx_putpixel(ctxt, c.row - y, c.column + x, color); + gfx_putpixel(ctxt, c.row + x, c.column - y, color); + gfx_putpixel(ctxt, c.row + y, c.column - x, color); + gfx_putpixel(ctxt, c.row - x, c.column - y, color); + gfx_putpixel(ctxt, c.row - y, c.column - x, color); + if (d >= 2 * x) { + d = d - 2 * x - 1; + x++; + } else if (d < 2 * (r - y)) { + d = d + 2 * y - 1; + y--; + } else { + d = d + 2 * (y - x - 1); + y--; + x++; + } + } } -- GitLab