lv_draw_image.h

Typedefs

typedef struct _lv_draw_image_dsc_t lv_draw_image_dsc_t
typedef void (*lv_draw_image_core_cb)(lv_draw_unit_t *draw_unit, const lv_draw_image_dsc_t *draw_dsc, const lv_image_decoder_dsc_t *decoder_dsc, lv_draw_image_sup_t *sup, const lv_area_t *img_coords, const lv_area_t *clipped_img_area)

PErform the actual rendering of a decoded image

Param draw_unit:

pointer to a draw unit

Param draw_dsc:

the draw descriptor of the image

Param decoder_dsc:

pointer to the decoded image's descriptor

Param sup:

supplementary data

Param img_coords:

the absolute coordinates of the image

Param clipped_img_area:

the absolute clip coordinates

Functions

void lv_draw_image_dsc_init(lv_draw_image_dsc_t *dsc)

Initialize an image draw descriptor.

Parameters:

dsc -- pointer to a draw descriptor

lv_draw_image_dsc_t *lv_draw_task_get_image_dsc(lv_draw_task_t *task)

Try to get an image draw descriptor from a draw task.

Parameters:

task -- draw task

Returns:

the task's draw descriptor or NULL if the task is not of type LV_DRAW_TASK_TYPE_IMAGE

void lv_draw_image(lv_layer_t *layer, const lv_draw_image_dsc_t *dsc, const lv_area_t *coords)

Create an image draw task

Note

coords can be small than the real image area (if only a part of the image is rendered) or can be larger (in case of tiled images). .

Parameters:
  • layer -- pointer to a layer

  • dsc -- pointer to an initialized draw descriptor

  • coords -- the coordinates of the image

void lv_draw_layer(lv_layer_t *layer, const lv_draw_image_dsc_t *dsc, const lv_area_t *coords)

Create a draw task to blend a layer to an other layer

Note

coords can be small than the total widget area from which the layer is created (if only a part of the widget was rendered to a layer)

Parameters:
  • layer -- pointer to a layer

  • dsc -- pointer to an initialized draw descriptor

  • coords -- the coordinates of the layer.

lv_image_src_t lv_image_src_get_type(const void *src)

Get the type of an image source

Parameters:

src -- pointer to an image source:

  • pointer to an 'lv_image_t' variable (image stored internally and compiled into the code)

  • a path to a file (e.g. "S:/folder/image.bin")

  • or a symbol (e.g. LV_SYMBOL_CLOSE)

Returns:

type of the image source LV_IMAGE_SRC_VARIABLE/FILE/SYMBOL/UNKNOWN

void _lv_draw_image_normal_helper(lv_draw_unit_t *draw_unit, const lv_draw_image_dsc_t *draw_dsc, const lv_area_t *coords, lv_draw_image_core_cb draw_core_cb)

Can be used by draw units to handle the decoding and prepare everything for the actual image rendering

Parameters:
  • draw_unit -- pointer to a draw unit

  • draw_dsc -- the draw descriptor of the image

  • coords -- the absolute coordinates of the image

  • draw_core_cb -- a callback to perform the actual rendering

void _lv_draw_image_tiled_helper(lv_draw_unit_t *draw_unit, const lv_draw_image_dsc_t *draw_dsc, const lv_area_t *coords, lv_draw_image_core_cb draw_core_cb)

Can be used by draw units for TILED images to handle the decoding and prepare everything for the actual image rendering

Parameters:
  • draw_unit -- pointer to a draw unit

  • draw_dsc -- the draw descriptor of the image

  • coords -- the absolute coordinates of the image

  • draw_core_cb -- a callback to perform the actual rendering

void _lv_image_buf_get_transformed_area(lv_area_t *res, int32_t w, int32_t h, int32_t angle, uint16_t scale_x, uint16_t scale_y, const lv_point_t *pivot)

Get the area of a rectangle if its rotated and scaled

Parameters:
  • res -- store the coordinates here

  • w -- width of the rectangle to transform

  • h -- height of the rectangle to transform

  • angle -- angle of rotation

  • scale_x -- zoom in x direction, (256 no zoom)

  • scale_y -- zoom in y direction, (256 no zoom)

  • pivot -- x,y pivot coordinates of rotation

struct lv_draw_image_sup_t

Public Members

lv_color_t alpha_color
const lv_color32_t *palette
uint32_t palette_size
struct _lv_draw_image_dsc_t

Public Members

lv_draw_dsc_base_t base
const void *src
lv_image_header_t header
int32_t rotation
int32_t scale_x
int32_t scale_y
int32_t skew_x
int32_t skew_y
lv_point_t pivot
lv_color_t recolor
lv_opa_t recolor_opa
lv_opa_t opa
lv_blend_mode_t blend_mode
uint16_t antialias
uint16_t tile
lv_draw_image_sup_t *sup
lv_area_t image_area

Used to indicate the entire original, non-clipped area where the image is to be drawn. This is important for:

  1. Layer rendering, where it might happen that only a smaller area of the layer is rendered.

  2. Tiled images, where the target draw area is larger than the image to be tiled.

int32_t clip_radius
const lv_image_dsc_t *bitmap_mask_src