1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-28 07:03:00 +08:00

lv_objmask_remove_mask: remove all masks is mask==NULL

This commit is contained in:
Gabor Kiss-Vamosi 2019-11-15 11:05:11 +01:00
parent 2be039e917
commit a2cc8c9b4c
2 changed files with 21 additions and 5 deletions

View File

@ -127,7 +127,7 @@ lv_objmask_mask_t * lv_objmask_add_mask(lv_obj_t * objmask, void * param)
* @param mask pointer to created mask (returned by `lv_objmask_add_mask`)
* @param param an initialized mask parameter (initialized by `lv_draw_mask_line/angle/.../_init`)
*/
void lv_objmask_upadte_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask, void * param)
void lv_objmask_update_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask, void * param)
{
LV_ASSERT_OBJ(objmask, LV_OBJX_NAME);
LV_ASSERT_NULL(mask);
@ -143,19 +143,34 @@ void lv_objmask_upadte_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask, void *
* Remove a mask
* @param objmask pointer to an Object mask object
* @param mask pointer to created mask (returned by `lv_objmask_add_mask`)
* If `NULL` passed all masks will be deleted.
*/
void lv_objmask_remove_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask)
{
LV_ASSERT_OBJ(objmask, LV_OBJX_NAME);
LV_ASSERT_NULL(mask);
lv_objmask_ext_t * ext = lv_obj_get_ext_attr(objmask);
/*Remove all masks*/
if(mask == NULL) {
lv_objmask_mask_t * m;
LV_LL_READ(ext->mask_ll, m) {
lv_mem_free(m->param);
}
lv_ll_clear(&ext->mask_ll);
}
/*Remove only the specified mask*/
else {
lv_mem_free(mask->param);
lv_ll_rem(&ext->mask_ll, mask);
lv_ll_remove(&ext->mask_ll, mask);
}
lv_obj_invalidate(objmask);
}
/*=====================
* Setter functions
*====================*/

View File

@ -81,12 +81,13 @@ lv_objmask_mask_t * lv_objmask_add_mask(lv_obj_t * objmask, void * param);
* @param mask pointer to created mask (returned by `lv_objmask_add_mask`)
* @param param an initialized mask parameter (initialized by `lv_draw_mask_line/angle/.../_init`)
*/
void lv_objmask_upadte_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask, void * param);
void lv_objmask_update_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask, void * param);
/**
* Remove a mask
* @param objmask pointer to an Object mask object
* @param mask pointer to created mask (returned by `lv_objmask_add_mask`)
* If `NULL` passed all masks will be deleted.
*/
void lv_objmask_remove_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask);