fix(canvas): lv_canvas_set_px for indexed images (#6226)

Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
Co-authored-by: Xu Xingliang <xuxingliang@xiaomi.com>
This commit is contained in:
Gabor Kiss-Vamosi
2024-05-21 11:04:34 +02:00
committed by GitHub
parent 74b50b2c56
commit 25c469db58
5 changed files with 98 additions and 14 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -61,4 +61,74 @@ void test_canvas_functions_invalidate(void)
TEST_ASSERT(draw_counter == 4);
}
void test_canvas_fill_and_set_px(void)
{
lv_obj_t * canvas = lv_canvas_create(lv_screen_active());
lv_obj_center(canvas);
LV_DRAW_BUF_DEFINE_STATIC(buf_i1, 10, 10, LV_COLOR_FORMAT_I1);
LV_DRAW_BUF_INIT_STATIC(buf_i1);
lv_canvas_set_draw_buf(canvas, &buf_i1);
lv_canvas_set_palette(canvas, 0, lv_color32_make(0x00, 0xff, 0x00, 0xff));
lv_canvas_set_palette(canvas, 1, lv_color32_make(0x00, 0x00, 0xff, 0xff));
lv_canvas_fill_bg(canvas, lv_color_hex(0), LV_OPA_COVER);
lv_canvas_set_px(canvas, 1, 7, lv_color_hex(1), 0);
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/canvas_1.png");
LV_DRAW_BUF_DEFINE_STATIC(buf_i2, 10, 10, LV_COLOR_FORMAT_I2);
LV_DRAW_BUF_INIT_STATIC(buf_i2);
lv_canvas_set_draw_buf(canvas, &buf_i2);
lv_canvas_set_palette(canvas, 0, lv_color32_make(0x00, 0xff, 0x00, 0xff));
lv_canvas_set_palette(canvas, 3, lv_color32_make(0x00, 0x00, 0xff, 0xff));
lv_canvas_fill_bg(canvas, lv_color_hex(0), LV_OPA_COVER);
lv_canvas_set_px(canvas, 1, 7, lv_color_hex(3), 0);
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/canvas_1.png");
LV_DRAW_BUF_DEFINE_STATIC(buf_i4, 10, 10, LV_COLOR_FORMAT_I4);
LV_DRAW_BUF_INIT_STATIC(buf_i4);
lv_canvas_set_draw_buf(canvas, &buf_i4);
lv_canvas_set_palette(canvas, 0, lv_color32_make(0x00, 0xff, 0x00, 0xff));
lv_canvas_set_palette(canvas, 15, lv_color32_make(0x00, 0x00, 0xff, 0xff));
lv_canvas_fill_bg(canvas, lv_color_hex(0), LV_OPA_COVER);
lv_canvas_set_px(canvas, 1, 7, lv_color_hex(15), 0);
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/canvas_1.png");
LV_DRAW_BUF_DEFINE_STATIC(buf_i8, 10, 10, LV_COLOR_FORMAT_I8);
LV_DRAW_BUF_INIT_STATIC(buf_i8);
lv_canvas_set_draw_buf(canvas, &buf_i8);
lv_canvas_set_palette(canvas, 0, lv_color32_make(0x00, 0xff, 0x00, 0xff));
lv_canvas_set_palette(canvas, 255, lv_color32_make(0x00, 0x00, 0xff, 0xff));
lv_canvas_fill_bg(canvas, lv_color_hex(0), LV_OPA_COVER);
lv_canvas_set_px(canvas, 1, 7, lv_color_hex(255), 0);
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/canvas_1.png");
LV_DRAW_BUF_DEFINE_STATIC(buf_rgb888, 10, 10, LV_COLOR_FORMAT_RGB888);
LV_DRAW_BUF_INIT_STATIC(buf_rgb888);
lv_canvas_set_draw_buf(canvas, &buf_rgb888);
lv_canvas_fill_bg(canvas, lv_color_hex(0x00ff00), LV_OPA_COVER);
lv_canvas_set_px(canvas, 1, 7, lv_color_hex(0x0000ff), 0);
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/canvas_1.png");
LV_DRAW_BUF_DEFINE_STATIC(buf_rgb565, 10, 10, LV_COLOR_FORMAT_RGB565);
LV_DRAW_BUF_INIT_STATIC(buf_rgb565);
lv_canvas_set_draw_buf(canvas, &buf_rgb565);
lv_canvas_fill_bg(canvas, lv_color_hex(0x00ff00), LV_OPA_COVER);
lv_canvas_set_px(canvas, 1, 7, lv_color_hex(0x0000ff), 0);
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/canvas_1.png");
LV_DRAW_BUF_DEFINE_STATIC(buf_xrgb8888, 10, 10, LV_COLOR_FORMAT_XRGB8888);
LV_DRAW_BUF_INIT_STATIC(buf_xrgb8888);
lv_canvas_set_draw_buf(canvas, &buf_xrgb8888);
lv_canvas_fill_bg(canvas, lv_color_hex(0x00ff00), LV_OPA_COVER);
lv_canvas_set_px(canvas, 1, 7, lv_color_hex(0x0000ff), 0);
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/canvas_1.png");
LV_DRAW_BUF_DEFINE_STATIC(buf_argb8888, 10, 10, LV_COLOR_FORMAT_ARGB8888);
LV_DRAW_BUF_INIT_STATIC(buf_argb8888);
lv_canvas_set_draw_buf(canvas, &buf_argb8888);
lv_canvas_fill_bg(canvas, lv_color_hex(0x00ff00), LV_OPA_COVER);
lv_canvas_set_px(canvas, 1, 7, lv_color_hex(0x0000ff), LV_OPA_COVER);
TEST_ASSERT_EQUAL_SCREENSHOT("widgets/canvas_1.png");
}
#endif