diff --git a/lv_objx/lv_canvas.c b/lv_objx/lv_canvas.c index a35971bdf..5976623ca 100644 --- a/lv_objx/lv_canvas.c +++ b/lv_objx/lv_canvas.c @@ -273,8 +273,7 @@ void lv_canvas_mult_buf(lv_obj_t * canvas, void * to_copy, lv_coord_t w, lv_coor * @param w width of the canvas * @param h height of the canvas * @param cf color format. The following formats are supported: - * LV_IMG_CF_TRUE_COLOR, LV_IMG_CF_TRUE_COLOR_ALPHA, LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED - * + * LV_IMG_CF_TRUE_COLOR, LV_IMG_CF_TRUE_COLOR_ALPHA, LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED, LV_IMG_CF_INDEXED_1/2/4/8BIT */ void lv_canvas_set_buffer(lv_obj_t * canvas, void * buf, lv_coord_t w, lv_coord_t h, lv_img_cf_t cf) { @@ -379,8 +378,6 @@ void lv_canvas_draw_circle(lv_obj_t * canvas, lv_coord_t x0, lv_coord_t y0, lv_c * @param point1 start point of the line * @param point2 end point of the line * @param color color of the line - * - * NOTE: The lv_canvas_draw_line function originates from https://github.com/jb55/bresenham-line.c. */ /* * NOTE: The lv_canvas_draw_line function originates from https://github.com/jb55/bresenham-line.c. @@ -398,7 +395,8 @@ void lv_canvas_draw_line(lv_obj_t * canvas, lv_point_t point1, lv_point_t point2 int dy = abs(y1-y0), sy = y0dy ? dx : -dy)/2, e2; - for(;;){ + for(;;){ + // setPixel(x0,y0); lv_canvas_set_px(canvas, x0, y0, color); if (x0==x1 && y0==y1) break; @@ -453,10 +451,10 @@ void lv_canvas_draw_polygon(lv_obj_t * canvas, lv_point_t * points, size_t size, * @param canvas pointer to a canvas object * @param points edge points of the polygon * @param size edge count of the polygon - * @param boundary_color line color of the polygon - * @param fill_color fill color of the polygon + * @param color line color of the polygon + * @param bg_color background color of the polygon */ -void lv_canvas_fill_polygon(lv_obj_t * canvas, lv_point_t * points, size_t size, lv_color_t boundary_color, lv_color_t fill_color) +void lv_canvas_fill_polygon(lv_obj_t * canvas, lv_point_t * points, size_t size, lv_color_t color, lv_color_t bg_color) { uint32_t x = 0, y = 0; uint8_t i; @@ -469,7 +467,8 @@ void lv_canvas_fill_polygon(lv_obj_t * canvas, lv_point_t * points, size_t size, x = x / size; y = y / size; - lv_canvas_boundary_fill4(canvas, (lv_coord_t) x, (lv_coord_t) y, boundary_color, fill_color); + // lv_canvas_flood_fill(canvas, (lv_coord_t) x, (lv_coord_t) y, color, bg_color); + lv_canvas_boundary_fill4(canvas, (lv_coord_t) x, (lv_coord_t) y, color, color); } /** @@ -477,10 +476,10 @@ void lv_canvas_fill_polygon(lv_obj_t * canvas, lv_point_t * points, size_t size, * @param canvas pointer to a canvas object * @param x x coordinate of the start position (seed) * @param y y coordinate of the start position (seed) + * @param fill_color fill color of the area * @param boundary_color edge/boundary color of the area - * @param fill_color fill color of the area */ -void lv_canvas_boundary_fill4(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, lv_color_t boundary_color, lv_color_t fill_color) +void lv_canvas_boundary_fill4(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, lv_color_t fill_color, lv_color_t boundary_color) { lv_color_t c; @@ -489,12 +488,13 @@ void lv_canvas_boundary_fill4(lv_obj_t * canvas, lv_coord_t x, lv_coord_t y, lv_ if(c.full != boundary_color.full && c.full != fill_color.full) { + // putpixel(x, y, fill_color); lv_canvas_set_px(canvas, x, y, fill_color); - lv_canvas_boundary_fill4(canvas, x + 1, y, boundary_color, fill_color); - lv_canvas_boundary_fill4(canvas, x, y + 1, boundary_color, fill_color); - lv_canvas_boundary_fill4(canvas, x - 1, y, boundary_color, fill_color); - lv_canvas_boundary_fill4(canvas, x, y - 1, boundary_color, fill_color); + lv_canvas_boundary_fill4(canvas, x + 1, y, fill_color, boundary_color); + lv_canvas_boundary_fill4(canvas, x, y + 1, fill_color, boundary_color); + lv_canvas_boundary_fill4(canvas, x - 1, y, fill_color, boundary_color); + lv_canvas_boundary_fill4(canvas, x, y - 1, fill_color, boundary_color); } } diff --git a/lv_objx/lv_canvas.h b/lv_objx/lv_canvas.h index a7c118cc7..ef49f9b33 100644 --- a/lv_objx/lv_canvas.h +++ b/lv_objx/lv_canvas.h @@ -108,17 +108,16 @@ void lv_canvas_mult_buf(lv_obj_t * canvas, void * to_copy, lv_coord_t w, lv_coor /** * Set a buffer for the canvas. - * @param buf a buffer where the contant of the canvas will be. + * @param buf a buffer where the content of the canvas will be. * The required size is (lv_img_color_format_get_px_size(cf) * w * h) / 8) * It can be allocated with `lv_mem_alloc()` or * it can be statically allocated array (e.g. static lv_color_t buf[100*50]) or * it can be an address in RAM or external SRAM - * @param canvas pointer to a canvas obejct + * @param canvas pointer to a canvas object * @param w width of the canvas - * @param h hight of the canvas + * @param h height of the canvas * @param cf color format. The following formats are supported: - * LV_IMG_CF_TRUE_COLOR, LV_IMG_CF_TRUE_COLOR_ALPHA, LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED - * + * LV_IMG_CF_TRUE_COLOR, LV_IMG_CF_TRUE_COLOR_ALPHA, LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED, LV_IMG_CF_INDEXED_1/2/4/8BIT */ void lv_canvas_set_buffer(lv_obj_t * canvas, void * buf, lv_coord_t w, lv_coord_t h, lv_img_cf_t cf);