lv_draw_rect.h

Defines

LV_RADIUS_CIRCLE

A very big radius to always draw as circle

Functions

void lv_draw_rect_dsc_init(lv_draw_rect_dsc_t *dsc)

Initialize a rectangle draw descriptor.

Parameters:

dsc – pointer to a draw descriptor

void lv_draw_fill_dsc_init(lv_draw_fill_dsc_t *dsc)

Initialize a fill draw descriptor.

Parameters:

dsc – pointer to a draw descriptor

lv_draw_fill_dsc_t *lv_draw_task_get_fill_dsc(lv_draw_task_t *task)

Try to get a fill 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_FILL

void lv_draw_fill(lv_layer_t *layer, const lv_draw_fill_dsc_t *dsc, const lv_area_t *coords)

Fill an area

Parameters:
  • layer – pointer to a layer

  • dsc – pointer to an initialized draw descriptor variable

  • coords – the coordinates of the rectangle

void lv_draw_border_dsc_init(lv_draw_border_dsc_t *dsc)

Initialize a border draw descriptor.

Parameters:

dsc – pointer to a draw descriptor

lv_draw_border_dsc_t *lv_draw_task_get_border_dsc(lv_draw_task_t *task)

Try to get a border 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_BORDER

void lv_draw_border(lv_layer_t *layer, const lv_draw_border_dsc_t *dsc, const lv_area_t *coords)

Draw a border

Parameters:
  • layer – pointer to a layer

  • dsc – pointer to an initialized draw descriptor variable

  • coords – the coordinates of the rectangle

void lv_draw_box_shadow_dsc_init(lv_draw_box_shadow_dsc_t *dsc)

Initialize a box shadow draw descriptor.

Parameters:

dsc – pointer to a draw descriptor

lv_draw_box_shadow_dsc_t *lv_draw_task_get_box_shadow_dsc(lv_draw_task_t *task)

Try to get a box shadow 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_BOX_SHADOW

void lv_draw_box_shadow(lv_layer_t *layer, const lv_draw_box_shadow_dsc_t *dsc, const lv_area_t *coords)

Draw a box shadow

Parameters:
  • layer – pointer to a layer

  • dsc – pointer to an initialized draw descriptor variable

  • coords – the coordinates of the rectangle

void lv_draw_rect(lv_layer_t *layer, const lv_draw_rect_dsc_t *dsc, const lv_area_t *coords)

The rectangle is a wrapper for fill, border, bg. image and box shadow. Internally fill, border, image and box shadow draw tasks will be created.

Parameters:
  • layer – pointer to a layer

  • dsc – pointer to an initialized draw descriptor variable

  • coords – the coordinates of the rectangle

struct lv_draw_rect_dsc_t

Public Members

lv_draw_dsc_base_t base
int32_t radius
lv_opa_t bg_opa
lv_color_t bg_color

First element of a gradient is a color, so it maps well here

lv_grad_dsc_t bg_grad
const void *bg_image_src
const void *bg_image_symbol_font
lv_color_t bg_image_recolor
lv_opa_t bg_image_opa
lv_opa_t bg_image_recolor_opa
uint8_t bg_image_tiled
lv_color_t border_color
int32_t border_width
lv_opa_t border_opa
lv_border_side_t border_side
uint8_t border_post
lv_color_t outline_color
int32_t outline_width
int32_t outline_pad
lv_opa_t outline_opa
lv_color_t shadow_color
int32_t shadow_width
int32_t shadow_offset_x
int32_t shadow_offset_y
int32_t shadow_spread
lv_opa_t shadow_opa
struct lv_draw_fill_dsc_t

Public Members

lv_draw_dsc_base_t base
int32_t radius

Radius, LV_RADIUS_CIRCLE for max. radius

lv_opa_t opa

Opacity in 0...255 range. LV_OPA_TRANSP, LV_OPA_10, LV_OPA_20, .. LV_OPA_COVER can be used as well

lv_color_t color

The color of the rectangle. If the gradient is set (grad.dir!=LV_GRAD_DIR_NONE) it's ignored.

lv_grad_dsc_t grad

Describe a gradient. If grad.dir is not LV_GRAD_DIR_NONE color will be ignored

struct lv_draw_border_dsc_t

Public Members

lv_draw_dsc_base_t base
int32_t radius

Radius, LV_RADIUS_CIRCLE for max. radius

lv_color_t color

The color of the border.

int32_t width

The width of the border in pixels

lv_opa_t opa

Opacity in 0...255 range. LV_OPA_TRANSP, LV_OPA_10, LV_OPA_20, .. LV_OPA_COVER can be used as well

lv_border_side_t side

LV_BORDER_SIDE_NONE/LEFT/RIGHT/TOP/BOTTOM/FULL. LV_BORDER_SIDE_INTERNAL is an information for upper layers and shouldn't be used here.

struct lv_draw_box_shadow_dsc_t

Public Members

lv_draw_dsc_base_t base
int32_t radius

Radius, LV_RADIUS_CIRCLE for max. radius

lv_color_t color

Color of the the shadow

int32_t width

Width of the shadow. (radius of the blur)

int32_t spread

Make the rectangle larger with this value in all directions. Can be negative too.

int32_t ofs_x

Offset the rectangle horizontally.

int32_t ofs_y

Offset the rectangle vertically.

lv_opa_t opa

Opacity in 0...255 range. LV_OPA_TRANSP, LV_OPA_10, LV_OPA_20, .. LV_OPA_COVER can be used as well

uint8_t bg_cover

Set bg_cover to 1 if the background will cover the shadow. It's a hint to the renderer about it might skip some masking.