mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-28 05:26:18 +08:00
feat(draw): add img_header to lv_draw_img_dsc_t and init. it in lv_draw_img
This way all image data will be avaialbel for the draw_units to decide if they are interested in an image or not
This commit is contained in:
+13
-4
@@ -73,11 +73,20 @@ void lv_draw_img(lv_layer_t * layer, const lv_draw_img_dsc_t * dsc, const lv_are
|
|||||||
}
|
}
|
||||||
if(dsc->opa <= LV_OPA_MIN) return;
|
if(dsc->opa <= LV_OPA_MIN) return;
|
||||||
|
|
||||||
LV_PROFILER_BEGIN;
|
|
||||||
lv_draw_task_t * t = lv_draw_add_task(layer, coords);
|
|
||||||
|
|
||||||
t->draw_dsc = lv_malloc(sizeof(*dsc));
|
LV_PROFILER_BEGIN;
|
||||||
lv_memcpy(t->draw_dsc, dsc, sizeof(*dsc));
|
|
||||||
|
lv_draw_img_dsc_t * new_img_dsc = lv_malloc(sizeof(*dsc));
|
||||||
|
lv_memcpy(new_img_dsc, dsc, sizeof(*dsc));
|
||||||
|
lv_res_t res = lv_img_decoder_get_info(new_img_dsc->src, &new_img_dsc->header);
|
||||||
|
if(res != LV_RES_OK) {
|
||||||
|
LV_LOG_WARN("Couldn't get info about the image");
|
||||||
|
lv_free(new_img_dsc);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
lv_draw_task_t * t = lv_draw_add_task(layer, coords);
|
||||||
|
t->draw_dsc = new_img_dsc;
|
||||||
t->type = LV_DRAW_TASK_TYPE_IMAGE;
|
t->type = LV_DRAW_TASK_TYPE_IMAGE;
|
||||||
|
|
||||||
lv_draw_finalize_task_creation(layer, t);
|
lv_draw_finalize_task_creation(layer, t);
|
||||||
|
|||||||
@@ -40,6 +40,8 @@ typedef struct _lv_draw_img_dsc_t {
|
|||||||
lv_draw_dsc_base_t base;
|
lv_draw_dsc_base_t base;
|
||||||
|
|
||||||
const void * src;
|
const void * src;
|
||||||
|
lv_img_header_t header;
|
||||||
|
|
||||||
|
|
||||||
lv_coord_t angle;
|
lv_coord_t angle;
|
||||||
lv_coord_t zoom;
|
lv_coord_t zoom;
|
||||||
|
|||||||
Reference in New Issue
Block a user