lv_image_decoder.h
Typedefs
-
typedef _lv_image_src_t lv_image_src_t
-
typedef struct _lv_image_decoder_dsc_t lv_image_decoder_dsc_t
-
typedef struct _lv_image_decoder_args_t lv_image_decoder_args_t
Image decoder args. It determines how to decoder an image, e.g. whether to premultiply the alpha or not. It should be passed to lv_img_decoder_open() function. If NULL is provided, default args are used.
Default args: all field are zero or false.
-
typedef lv_result_t (*lv_image_decoder_info_f_t)(lv_image_decoder_t *decoder, const void *src, 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
len
pixels starting from the givenx
,y
coordinates and store them inbuf
. 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 x:
start x coordinate
- Param y:
start y coordinate
- Param len:
number of pixels to decode
- Param buf:
a buffer to store the decoded pixels
- Return:
LV_RESULT_OK: ok; LV_RESULT_INVALID: failed
-
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
-
typedef struct _lv_image_decoder_cache_data_t lv_image_cache_data_t
-
typedef struct _lv_image_decoder_header_cache_data_t lv_image_header_cache_data_t
Enums
Functions
-
void _lv_image_decoder_init(void)
Initialize the image decoder module
-
void _lv_image_decoder_deinit(void)
Deinitialize the image decoder module
-
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.
- Parameters:
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 anlv_image_dsc_t
variable 3) Symbol: E.g.LV_SYMBOL_OK
header -- the image info will be stored here
- Returns:
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
- Parameters:
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 anlv_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.
- Returns:
LV_RESULT_OK: opened the image.
dsc->decoded
anddsc->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)
Decode an area of the opened image
- Parameters:
dsc -- image decoder descriptor
full_area -- start X coordinate (from left)
decoded_area -- start Y coordinate (from top)
- Returns:
LV_RESULT_OK: success; LV_RESULT_INVALID: an error occurred
-
void lv_image_decoder_close(lv_image_decoder_dsc_t *dsc)
Close a decoding session
- Parameters:
dsc -- pointer to
lv_image_decoder_dsc_t
used inlv_image_decoder_open
-
lv_image_decoder_t *lv_image_decoder_create(void)
Create a new image decoder
- Returns:
pointer to the new image decoder
-
void lv_image_decoder_delete(lv_image_decoder_t *decoder)
Delete an image decoder
- Parameters:
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
- Parameters:
decoder -- pointer to an image decoder or NULL to get the first one
- Returns:
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
- Parameters:
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
- Parameters:
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
- Parameters:
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.
- Parameters:
decoder -- pointer to an image decoder
close_cb -- a function to close a decoding session
-
void lv_image_decoder_set_cache_free_cb(lv_image_decoder_t *decoder, lv_cache_free_cb_t cache_free_cb)
Set a custom method to free cache data. Normally this is not needed. If the custom decoder allocates additional memory other than dsc->decoded draw buffer, then you need to register your own method to free it. By default the cache entry is free'ed in
image_decoder_cache_free_cb
.- Parameters:
decoder -- pointer to the image decoder
cache_free_cb -- the custom callback to free cache data. Refer to
image_decoder_cache_free_cb
.
-
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.Note
A new draw buf will be allocated if provided
decoded
is not modifiable or stride mismatch etc.- Parameters:
dsc -- pointer to a decoder descriptor
decoded -- pointer to a decoded image to post process to meet dsc->args requirement.
- Returns:
post processed draw buffer, when it differs with
decoded
, it's newly allocated.
-
struct _lv_image_decoder_args_t
- #include <lv_image_decoder.h>
Image decoder args. It determines how to decoder an image, e.g. whether to premultiply the alpha or not. It should be passed to lv_img_decoder_open() function. If NULL is provided, default args are used.
Default args: all field are zero or false.
-
struct _lv_image_decoder_t
Public Members
-
lv_image_decoder_info_f_t info_cb
-
lv_image_decoder_open_f_t open_cb
-
lv_image_decoder_get_area_cb_t get_area_cb
-
lv_image_decoder_close_f_t close_cb
-
lv_cache_free_cb_t cache_free_cb
-
void *user_data
-
lv_image_decoder_info_f_t info_cb
-
struct _lv_image_decoder_cache_data_t
Public Members
-
lv_cache_slot_size_t slot
-
const void *src
-
lv_image_src_t src_type
-
const lv_draw_buf_t *decoded
-
const lv_image_decoder_t *decoder
-
void *user_data
-
lv_cache_slot_size_t slot
-
struct _lv_image_decoder_header_cache_data_t
Public Members
-
const void *src
-
lv_image_src_t src_type
-
lv_image_header_t header
-
lv_image_decoder_t *decoder
-
const void *src
-
struct _lv_image_decoder_dsc_t
- #include <lv_image_decoder.h>
Describe an image decoding session. Stores data about the decoding
Public Members
-
lv_image_decoder_t *decoder
The decoder which was able to open the image source
-
const void *src
The image source. A file path like "S:my_img.png" or pointer to an
lv_image_dsc_t
variable
-
lv_image_src_t src_type
Type of the source: file or variable. Can be set in
open
function if required
-
lv_image_header_t header
Info about the opened image: color format, size, etc. MUST be set in
open
function
-
const lv_draw_buf_t *decoded
Pointer to a draw buffer where the image's data (pixels) are stored in a decoded, plain format. MUST be set in
open
orget_area_cb
function
-
const lv_color32_t *palette
-
uint32_t palette_size
-
uint32_t time_to_open
How much time did it take to open the image. [ms] If not set
lv_image_cache
will measure and set the time to open
-
const char *error_msg
A text to display instead of the image when the image can't be opened. Can be set in
open
function or set NULL.
-
lv_cache_t *cache
-
lv_cache_entry_t *cache_entry
Point to cache entry information
-
void *user_data
Store any custom data here is required
-
lv_image_decoder_t *decoder