diff --git a/lv_draw/lv_draw.c b/lv_draw/lv_draw.c index 81b7c5cf2..b8f02483d 100644 --- a/lv_draw/lv_draw.c +++ b/lv_draw/lv_draw.c @@ -65,13 +65,17 @@ static void point_swap(point_t * p1, point_t * p2); static void (*px_fp)(cord_t x, cord_t y, const area_t * mask_p, color_t color, opa_t opa) = lv_vpx; static void (*fill_fp)(const area_t * cords_p, const area_t * mask_p, color_t color, opa_t opa) = lv_vfill; static void (*letter_fp)(const point_t * pos_p, const area_t * mask_p, const font_t * font_p, uint8_t letter, color_t color, opa_t opa) = lv_vletter; +#if USE_FSINT != 0 static void (*map_fp)(const area_t * cords_p, const area_t * mask_p, const color_t * map_p, opa_t opa, bool transp, bool upscale, color_t recolor, opa_t recolor_opa) = lv_vmap; +#endif #else static void (*px_fp)(cord_t x, cord_t y, const area_t * mask_p, color_t color, opa_t opa) = lv_rpx; static void (*fill_fp)(const area_t * cords_p, const area_t * mask_p, color_t color, opa_t opa) = lv_rfill; static void (*letter_fp)(const point_t * pos_p, const area_t * mask_p, const font_t * font_p, uint8_t letter, color_t color, opa_t opa) = lv_rletter; +#if USE_LV_IMG != 0 && USE_FSINT != 0 static void (*map_fp)(const area_t * cords_p, const area_t * mask_p, const color_t * map_p, opa_t opa, bool transp, bool upscale, color_t recolor, opa_t recolor_opa) = lv_rmap; #endif +#endif /********************** @@ -338,6 +342,7 @@ void lv_draw_label(const area_t * cords_p,const area_t * mask_p, const lv_style_ } } +#if USE_FSINT != 0 /** * Draw an image * @param cords_p the coordinates of the image @@ -379,14 +384,21 @@ void lv_draw_img(const area_t * cords_p, const area_t * mask_p, if((mask_com.x2 & 0x1) == 0) mask_com.x2 -= 1; /*Can be only odd*/ } + + bool const_data = false; + +#if USE_UFS != 0 /*If the img. data is inside the MCU then do not use FS reading just a pointer*/ if(fn[0] == UFS_LETTER) { + const_data = true; uint8_t * f_data = ((ufs_file_t*)file.file_d)->ent->data_d; f_data += sizeof(lv_img_raw_header_t); map_fp(cords_p, &mask_com, (void*)f_data , style->opa, header.transp, upscale, style->ccolor, style->img_recolor); } +#endif + /*Read the img. with the FS interface*/ - else { + if(const_data != false) { uint8_t us_shift = 0; uint8_t us_val = 1; if(upscale != false) { @@ -434,7 +446,7 @@ void lv_draw_img(const area_t * cords_p, const area_t * mask_p, } } } - +#endif /** * Draw a line diff --git a/lv_objx/lv_img.c b/lv_objx/lv_img.c index 3fcc289df..62de520ff 100644 --- a/lv_objx/lv_img.c +++ b/lv_objx/lv_img.c @@ -8,7 +8,7 @@ *********************/ #include "lv_conf.h" #include "misc_conf.h" -#if USE_LV_IMG != 0 && USE_FSINT != 0 && USE_UFS != 0 +#if USE_LV_IMG != 0 && USE_FSINT != 0 #include "lv_img.h" #include "../lv_draw/lv_draw.h" @@ -134,11 +134,15 @@ bool lv_img_signal(lv_obj_t * img, lv_signal_t sign, void * param) */ fs_res_t lv_img_create_file(const char * fn, const color_int_t * data) { +#if USE_UFS != 0 const lv_img_raw_header_t * raw_p = (lv_img_raw_header_t *) data; fs_res_t res; res = ufs_create_const(fn, data, raw_p->w * raw_p->h * sizeof(color_t) + sizeof(lv_img_raw_header_t)); return res; +#else + return FS_RES_NOT_EX; +#endif } /*===================== @@ -156,7 +160,6 @@ void lv_img_set_file(lv_obj_t * img, const char * fn) /*Handle normal images*/ if(lv_img_is_symbol(fn) == false) { - fs_file_t file; fs_res_t res; lv_img_raw_header_t header; diff --git a/lv_objx/lv_img.h b/lv_objx/lv_img.h index 1ac1ee85b..7735bdbd9 100644 --- a/lv_objx/lv_img.h +++ b/lv_objx/lv_img.h @@ -15,15 +15,7 @@ extern "C" { *********************/ #include "lv_conf.h" #include "misc_conf.h" -#if USE_LV_IMG != 0 && USE_FSINT != 0 && USE_UFS != 0 - -#if USE_FSINT == 0 -#error "lv_img: fsint is required. Enable it in misc_conf.h (USE_FSINT 1) " -#endif - -#if USE_UFS == 0 -#error "lv_img: ufs is required. Enable it in misc_conf.h (USE_UFS 1) " -#endif +#if USE_LV_IMG != 0 && USE_FSINT != 0 #include "../lv_obj/lv_obj.h" #include "misc/fs/fsint.h" diff --git a/lv_objx/lv_list.c b/lv_objx/lv_list.c index 07f6140bf..9fab2bf51 100644 --- a/lv_objx/lv_list.c +++ b/lv_objx/lv_list.c @@ -233,7 +233,7 @@ lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, l if(hpad_tot < ext->page.sb_width) w -= ext->page.sb_width - hpad_tot; } lv_obj_set_width(liste, w); -#if USE_LV_IMG != 0 +#if USE_LV_IMG != 0 && USE_FSINT != 0 if(img_fn != NULL && img_fn[0] != '\0') { lv_obj_t * img = lv_img_create(liste, NULL); lv_img_set_file(img, img_fn); @@ -462,7 +462,7 @@ lv_obj_t * lv_list_get_element_label(lv_obj_t * liste) */ lv_obj_t * lv_list_get_element_img(lv_obj_t * liste) { -#if USE_LV_IMG != 0 +#if USE_LV_IMG != 0 && USE_FSINT != 0 lv_obj_t * img = lv_obj_get_child(liste, NULL); if(img == NULL) return NULL;