mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-23 07:46:36 +08:00
fix(vector): use layer stride for thorvg canvas stride
ThorVG supports only ARGB8888, so added check. Update test to use non-regular stride. Signed-off-by: Xu Xingliang <xuxingliang@xiaomi.com>
This commit is contained in:
committed by
Gabor Kiss-Vamosi
parent
d0b59cba9b
commit
28eced31a7
@@ -735,7 +735,7 @@ void _lv_vector_for_each_destroy_tasks(lv_ll_t * task_list, vector_draw_task_cb
|
||||
_lv_ll_remove(task_list, task);
|
||||
|
||||
if(cb) {
|
||||
cb(data ? data : NULL, task->path, &(task->dsc));
|
||||
cb(data, task->path, &(task->dsc));
|
||||
}
|
||||
|
||||
if(task->path) {
|
||||
|
||||
@@ -439,8 +439,10 @@ void lv_draw_sw_vector(lv_draw_unit_t * draw_unit, const lv_draw_vector_task_dsc
|
||||
void * buf = layer->buf;
|
||||
int32_t width = lv_area_get_width(&layer->buf_area);
|
||||
int32_t height = lv_area_get_height(&layer->buf_area);
|
||||
uint32_t stride = layer->buf_stride;
|
||||
stride /= 4;
|
||||
Tvg_Canvas * canvas = tvg_swcanvas_create();
|
||||
tvg_swcanvas_set_target(canvas, buf, width, width, height, TVG_COLORSPACE_ARGB8888);
|
||||
tvg_swcanvas_set_target(canvas, buf, stride, width, height, TVG_COLORSPACE_ARGB8888);
|
||||
|
||||
lv_ll_t * task_list = dsc->task_list;
|
||||
_lv_vector_for_each_destroy_tasks(task_list, _task_draw_cb, canvas);
|
||||
|
||||
@@ -202,10 +202,11 @@ static void draw_lines(lv_layer_t * layer)
|
||||
|
||||
static void canvas_draw(const char * name, void (*draw_cb)(lv_layer_t *))
|
||||
{
|
||||
static uint8_t canvas_buf[LV_CANVAS_BUF_SIZE(640, 480, 32, LV_DRAW_BUF_STRIDE_ALIGN)];
|
||||
lv_obj_t * canvas = lv_canvas_create(lv_screen_active());
|
||||
lv_canvas_set_buffer(canvas, canvas_buf, 640, 480,
|
||||
LV_COLOR_FORMAT_ARGB8888);
|
||||
uint32_t stride = 640 * 4 + 128; /*Test non-default stride*/
|
||||
lv_draw_buf_t * draw_buf = lv_draw_buf_create(640, 480, LV_COLOR_FORMAT_ARGB8888, stride);
|
||||
TEST_ASSERT_NOT_NULL(draw_buf);
|
||||
lv_canvas_set_draw_buf(canvas, draw_buf);
|
||||
|
||||
lv_layer_t layer;
|
||||
lv_canvas_init_layer(canvas, &layer);
|
||||
@@ -219,6 +220,9 @@ static void canvas_draw(const char * name, void (*draw_cb)(lv_layer_t *))
|
||||
lv_snprintf(fn_buf, sizeof(fn_buf), "draw/vector_%s.png", name);
|
||||
TEST_ASSERT_EQUAL_SCREENSHOT(fn_buf);
|
||||
#endif
|
||||
lv_image_cache_drop(draw_buf);
|
||||
lv_draw_buf_destroy(draw_buf);
|
||||
lv_obj_del(canvas);
|
||||
}
|
||||
|
||||
void test_draw_lines(void)
|
||||
|
||||
Reference in New Issue
Block a user