1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-02-04 07:13: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 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`) * @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_OBJ(objmask, LV_OBJX_NAME);
LV_ASSERT_NULL(mask); 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 * Remove a mask
* @param objmask pointer to an Object mask object * @param objmask pointer to an Object mask object
* @param mask pointer to created mask (returned by `lv_objmask_add_mask`) * @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) void lv_objmask_remove_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask)
{ {
LV_ASSERT_OBJ(objmask, LV_OBJX_NAME); LV_ASSERT_OBJ(objmask, LV_OBJX_NAME);
LV_ASSERT_NULL(mask);
lv_objmask_ext_t * ext = lv_obj_get_ext_attr(objmask); 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_mem_free(mask->param);
lv_ll_rem(&ext->mask_ll, mask); lv_ll_remove(&ext->mask_ll, mask);
}
lv_obj_invalidate(objmask); lv_obj_invalidate(objmask);
} }
/*===================== /*=====================
* Setter functions * 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 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`) * @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 * Remove a mask
* @param objmask pointer to an Object mask object * @param objmask pointer to an Object mask object
* @param mask pointer to created mask (returned by `lv_objmask_add_mask`) * @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); void lv_objmask_remove_mask(lv_obj_t * objmask, lv_objmask_mask_t * mask);