lv_image_decoder.h

Typedefs

typedef lv_result_t (*lv_image_decoder_info_f_t)(lv_image_decoder_t *decoder, lv_image_decoder_dsc_t *dsc, lv_image_header_t *header)

Get info from an image and store in the header

Param src:

the image source. Can be a pointer to a C array or a file name (Use lv_image_src_get_type to determine the type)

Param header:

store the info here

Return:

LV_RESULT_OK: info written correctly; LV_RESULT_INVALID: failed

typedef lv_result_t (*lv_image_decoder_open_f_t)(lv_image_decoder_t *decoder, lv_image_decoder_dsc_t *dsc)

Open an image for decoding. Prepare it as it is required to read it later

Param decoder:

pointer to the decoder the function associated with

Param dsc:

pointer to decoder descriptor. src, color are already initialized in it.

typedef lv_result_t (*lv_image_decoder_get_area_cb_t)(lv_image_decoder_t *decoder, lv_image_decoder_dsc_t *dsc, const lv_area_t *full_area, lv_area_t *decoded_area)

Decode full_area pixels incrementally by calling in a loop. Set decoded_area values to LV_COORD_MIN on first call. Required only if the "open" function can't return with the whole decoded pixel array.

Param decoder:

pointer to the decoder the function associated with

Param dsc:

pointer to decoder descriptor

Param full_area:

input parameter. the full area to decode after enough subsequent calls

Param decoded_area:

input+output parameter. set the values to LV_COORD_MIN for the first call and to reset decoding. the decoded area is stored here after each call.

Return:

LV_RESULT_OK: ok; LV_RESULT_INVALID: failed or there is nothing left to decode

typedef void (*lv_image_decoder_close_f_t)(lv_image_decoder_t *decoder, lv_image_decoder_dsc_t *dsc)

Close the pending decoding. Free resources etc.

Param decoder:

pointer to the decoder the function associated with

Param dsc:

pointer to decoder descriptor

Enums

enum lv_image_src_t

Source of image.

Values:

enumerator LV_IMAGE_SRC_VARIABLE
enumerator LV_IMAGE_SRC_FILE

Binary/C variable

enumerator LV_IMAGE_SRC_SYMBOL

File in filesystem

enumerator LV_IMAGE_SRC_UNKNOWN

Symbol (lv_symbol_def.h)

Functions

lv_result_t lv_image_decoder_get_info(const void *src, lv_image_header_t *header)

Get information about an image. Try the created image decoder one by one. Once one is able to get info that info will be used.

参数:
  • src -- the image source. Can be 1) File name: E.g. "S:folder/img1.png" (The drivers needs to registered via lv_fs_drv_register()) 2) Variable: Pointer to an lv_image_dsc_t variable 3) Symbol: E.g. LV_SYMBOL_OK

  • header -- the image info will be stored here

返回:

LV_RESULT_OK: success; LV_RESULT_INVALID: wasn't able to get info about the image

lv_result_t lv_image_decoder_open(lv_image_decoder_dsc_t *dsc, const void *src, const lv_image_decoder_args_t *args)

Open an image. Try the created image decoders one by one. Once one is able to open the image that decoder is saved in dsc

参数:
  • dsc -- describes a decoding session. Simply a pointer to an lv_image_decoder_dsc_t variable.

  • src -- the image source. Can be 1) File name: E.g. "S:folder/img1.png" (The drivers needs to registered via lv_fs_drv_register())) 2) Variable: Pointer to an lv_image_dsc_t variable 3) Symbol: E.g. LV_SYMBOL_OK

  • color -- The color of the image with LV_COLOR_FORMAT_ALPHA_...

  • args -- args about how the image should be opened.

返回:

LV_RESULT_OK: opened the image. dsc->decoded and dsc->header are set. LV_RESULT_INVALID: none of the registered image decoders were able to open the image.

lv_result_t lv_image_decoder_get_area(lv_image_decoder_dsc_t *dsc, const lv_area_t *full_area, lv_area_t *decoded_area)
void lv_image_decoder_close(lv_image_decoder_dsc_t *dsc)

Close a decoding session

参数:

dsc -- pointer to lv_image_decoder_dsc_t used in lv_image_decoder_open

lv_image_decoder_t *lv_image_decoder_create(void)

Create a new image decoder

返回:

pointer to the new image decoder

void lv_image_decoder_delete(lv_image_decoder_t *decoder)

Delete an image decoder

参数:

decoder -- pointer to an image decoder

lv_image_decoder_t *lv_image_decoder_get_next(lv_image_decoder_t *decoder)

Get the next image decoder in the linked list of image decoders

参数:

decoder -- pointer to an image decoder or NULL to get the first one

返回:

the next image decoder or NULL if no more image decoder exists

void lv_image_decoder_set_info_cb(lv_image_decoder_t *decoder, lv_image_decoder_info_f_t info_cb)

Set a callback to get information about the image

参数:
  • decoder -- pointer to an image decoder

  • info_cb -- a function to collect info about an image (fill an lv_image_header_t struct)

void lv_image_decoder_set_open_cb(lv_image_decoder_t *decoder, lv_image_decoder_open_f_t open_cb)

Set a callback to open an image

参数:
  • decoder -- pointer to an image decoder

  • open_cb -- a function to open an image

void lv_image_decoder_set_get_area_cb(lv_image_decoder_t *decoder, lv_image_decoder_get_area_cb_t read_line_cb)

Set a callback to a decoded line of an image

参数:
  • decoder -- pointer to an image decoder

  • read_line_cb -- a function to read a line of an image

void lv_image_decoder_set_close_cb(lv_image_decoder_t *decoder, lv_image_decoder_close_f_t close_cb)

Set a callback to close a decoding session. E.g. close files and free other resources.

参数:
  • decoder -- pointer to an image decoder

  • close_cb -- a function to close a decoding session

lv_cache_entry_t *lv_image_decoder_add_to_cache(lv_image_decoder_t *decoder, lv_image_cache_data_t *search_key, const lv_draw_buf_t *decoded, void *user_data)
lv_draw_buf_t *lv_image_decoder_post_process(lv_image_decoder_dsc_t *dsc, lv_draw_buf_t *decoded)

Check the decoded image, make any modification if decoder args requires.

备注

A new draw buf will be allocated if provided decoded is not modifiable or stride mismatch etc.

参数:
  • dsc -- pointer to a decoder descriptor

  • decoded -- pointer to a decoded image to post process to meet dsc->args requirement.

返回:

post processed draw buffer, when it differs with decoded, it's newly allocated.