lv_draw_sw_mask.h

Defines

LV_MASK_ID_INV
_LV_MASK_MAX_NUM

Typedefs

typedef uint8_t lv_draw_sw_mask_res_t
typedef uint8_t lv_draw_sw_mask_type_t
typedef lv_draw_sw_mask_res_t (*lv_draw_sw_mask_xcb_t)(lv_opa_t *mask_buf, lv_coord_t abs_x, lv_coord_t abs_y, lv_coord_t len, void *p)

A common callback type for every mask type. Used internally by the library.

typedef uint8_t lv_draw_sw_mask_line_side_t
typedef _lv_draw_sw_mask_radius_circle_dsc_t _lv_draw_sw_mask_radius_circle_dsc_arr_t[4]
typedef struct _lv_draw_sw_mask_map_param_t lv_draw_sw_mask_map_param_t

Enums

enum [anonymous]

Values:

enumerator LV_DRAW_SW_MASK_RES_TRANSP
enumerator LV_DRAW_SW_MASK_RES_FULL_COVER
enumerator LV_DRAW_SW_MASK_RES_CHANGED
enumerator LV_DRAW_SW_MASK_RES_UNKNOWN
enum [anonymous]

Values:

enumerator LV_DRAW_SW_MASK_TYPE_LINE
enumerator LV_DRAW_SW_MASK_TYPE_ANGLE
enumerator LV_DRAW_SW_MASK_TYPE_RADIUS
enumerator LV_DRAW_SW_MASK_TYPE_FADE
enumerator LV_DRAW_SW_MASK_TYPE_MAP
enum [anonymous]

Values:

enumerator LV_DRAW_SW_MASK_LINE_SIDE_LEFT
enumerator LV_DRAW_SW_MASK_LINE_SIDE_RIGHT
enumerator LV_DRAW_SW_MASK_LINE_SIDE_TOP
enumerator LV_DRAW_SW_MASK_LINE_SIDE_BOTTOM

Functions

void lv_draw_sw_mask_init(void)
void lv_draw_sw_mask_free_param(void *p)

Free the data from the parameter. It's called inside lv_draw_sw_mask_remove_id and lv_draw_sw_mask_remove_custom Needs to be called only in special cases when the mask is not added by lv_draw_mask_add and not removed by lv_draw_mask_remove_id or lv_draw_mask_remove_custom

Parameters:

p -- pointer to a mask parameter

void _lv_draw_sw_mask_cleanup(void)

Called by LVGL the rendering of a screen is ready to clean up the temporal (cache) data of the masks

void lv_draw_sw_mask_line_points_init(lv_draw_sw_mask_line_param_t *param, lv_coord_t p1x, lv_coord_t p1y, lv_coord_t p2x, lv_coord_t p2y, lv_draw_sw_mask_line_side_t side)

Initialize a line mask from two points.

Parameters:
  • param -- pointer to a lv_draw_mask_param_t to initialize

  • p1x -- X coordinate of the first point of the line

  • p1y -- Y coordinate of the first point of the line

  • p2x -- X coordinate of the second point of the line

  • p2y -- y coordinate of the second point of the line

  • side -- and element of lv_draw_mask_line_side_t to describe which side to keep. With LV_DRAW_MASK_LINE_SIDE_LEFT/RIGHT and horizontal line all pixels are kept With LV_DRAW_MASK_LINE_SIDE_TOP/BOTTOM and vertical line all pixels are kept

void lv_draw_sw_mask_line_angle_init(lv_draw_sw_mask_line_param_t *param, lv_coord_t p1x, lv_coord_t py, int16_t angle, lv_draw_sw_mask_line_side_t side)

Initialize a line mask from a point and an angle.

Parameters:
  • param -- pointer to a lv_draw_mask_param_t to initialize

  • px -- X coordinate of a point of the line

  • py -- X coordinate of a point of the line

  • angle -- right 0 deg, bottom: 90

  • side -- and element of lv_draw_mask_line_side_t to describe which side to keep. With LV_DRAW_MASK_LINE_SIDE_LEFT/RIGHT and horizontal line all pixels are kept With LV_DRAW_MASK_LINE_SIDE_TOP/BOTTOM and vertical line all pixels are kept

void lv_draw_sw_mask_angle_init(lv_draw_sw_mask_angle_param_t *param, lv_coord_t vertex_x, lv_coord_t vertex_y, lv_coord_t start_angle, lv_coord_t end_angle)

Initialize an angle mask.

Parameters:
  • param -- pointer to a lv_draw_mask_param_t to initialize

  • vertex_x -- X coordinate of the angle vertex (absolute coordinates)

  • vertex_y -- Y coordinate of the angle vertex (absolute coordinates)

  • start_angle -- start angle in degrees. 0 deg on the right, 90 deg, on the bottom

  • end_angle -- end angle

void lv_draw_sw_mask_radius_init(lv_draw_sw_mask_radius_param_t *param, const lv_area_t *rect, lv_coord_t radius, bool inv)

Initialize a fade mask.

Parameters:
  • param -- pointer to an lv_draw_mask_radius_param_t to initialize

  • rect -- coordinates of the rectangle to affect (absolute coordinates)

  • radius -- radius of the rectangle

  • inv -- true: keep the pixels inside the rectangle; keep the pixels outside of the rectangle

void lv_draw_sw_mask_fade_init(lv_draw_sw_mask_fade_param_t *param, const lv_area_t *coords, lv_opa_t opa_top, lv_coord_t y_top, lv_opa_t opa_bottom, lv_coord_t y_bottom)

Initialize a fade mask.

Parameters:
  • param -- pointer to a lv_draw_mask_param_t to initialize

  • coords -- coordinates of the area to affect (absolute coordinates)

  • opa_top -- opacity on the top

  • y_top -- at which coordinate start to change to opacity to opa_bottom

  • opa_bottom -- opacity at the bottom

  • y_bottom -- at which coordinate reach opa_bottom.

void lv_draw_sw_mask_map_init(lv_draw_sw_mask_map_param_t *param, const lv_area_t *coords, const lv_opa_t *map)

Initialize a map mask.

Parameters:
  • param -- pointer to a lv_draw_mask_param_t to initialize

  • coords -- coordinates of the map (absolute coordinates)

  • map -- array of bytes with the mask values

struct _lv_draw_sw_mask_common_dsc_t
struct lv_draw_sw_mask_line_param_t

Public Members

_lv_draw_sw_mask_common_dsc_t dsc
lv_point_t p1
lv_point_t p2
lv_draw_sw_mask_line_side_t side
struct lv_draw_sw_mask_line_param_t::[anonymous] cfg
lv_point_t origo
int32_t xy_steep
int32_t yx_steep
int32_t steep
int32_t spx
uint8_t flat
uint8_t inv
struct lv_draw_sw_mask_angle_param_t

Public Members

_lv_draw_sw_mask_common_dsc_t dsc
lv_point_t vertex_p
lv_coord_t start_angle
lv_coord_t end_angle
struct lv_draw_sw_mask_angle_param_t::[anonymous] cfg
lv_draw_sw_mask_line_param_t start_line
lv_draw_sw_mask_line_param_t end_line
uint16_t delta_deg
struct _lv_draw_sw_mask_radius_circle_dsc_t

Public Members

uint8_t *buf
lv_opa_t *cir_opa
uint16_t *x_start_on_y
uint16_t *opa_start_on_y
int32_t life
uint32_t used_cnt
lv_coord_t radius
struct lv_draw_sw_mask_radius_param_t
struct lv_draw_sw_mask_fade_param_t

Public Members

_lv_draw_sw_mask_common_dsc_t dsc
lv_area_t coords
lv_coord_t y_top
lv_coord_t y_bottom
lv_opa_t opa_top
lv_opa_t opa_bottom
struct lv_draw_sw_mask_fade_param_t::[anonymous] cfg
struct _lv_draw_sw_mask_map_param_t

Public Members

_lv_draw_sw_mask_common_dsc_t dsc
lv_area_t coords
const lv_opa_t *map
struct _lv_draw_sw_mask_map_param_t::[anonymous] cfg