From e9613526f81845d146aca5a02fcaef2420a4797c Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Mon, 22 Feb 2021 20:27:46 +0100 Subject: [PATCH] fix(anim) fix anim_exec_cb casts --- examples/layouts/flex/lv_example_flex_5.c | 8 +-- examples/layouts/grid/lv_example_grid_5.c | 8 +-- examples/widgets/bar/lv_example_bar_6.c | 4 +- examples/widgets/img/lv_example_img_4.c | 7 ++- examples/widgets/meter/lv_example_meter_1.c | 4 +- examples/widgets/meter/lv_example_meter_2.c | 4 +- examples/widgets/meter/lv_example_meter_3.c | 4 +- src/lv_core/lv_disp.c | 44 +++++++++----- src/lv_core/lv_obj_scroll.c | 28 ++++----- src/lv_core/lv_obj_style.c | 15 ++--- src/lv_widgets/lv_bar.c | 11 ++-- src/lv_widgets/lv_label.c | 65 ++++++++++----------- src/lv_widgets/lv_roller.c | 14 ++++- src/lv_widgets/lv_textarea.c | 18 +++--- 14 files changed, 130 insertions(+), 104 deletions(-) diff --git a/examples/layouts/flex/lv_example_flex_5.c b/examples/layouts/flex/lv_example_flex_5.c index 93bc656b1..0c2e3c9db 100644 --- a/examples/layouts/flex/lv_example_flex_5.c +++ b/examples/layouts/flex/lv_example_flex_5.c @@ -1,12 +1,12 @@ #include "../../../lvgl.h" #if LV_USE_FLEX && LV_BUILD_EXAMPLES -static void row_gap_anim(lv_obj_t * obj, int32_t v) +static void row_gap_anim(void * obj, int32_t v) { lv_obj_set_style_pad_row(obj, LV_PART_MAIN, LV_STATE_DEFAULT, v); } -static void column_gap_anim(lv_obj_t * obj, int32_t v) +static void column_gap_anim(void * obj, int32_t v) { lv_obj_set_style_pad_column(obj, LV_PART_MAIN, LV_STATE_DEFAULT, v); } @@ -37,12 +37,12 @@ void lv_example_flex_5(void) lv_anim_set_values(&a, 0, 10); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) row_gap_anim); + lv_anim_set_exec_cb(&a, row_gap_anim); lv_anim_set_time(&a, 500); lv_anim_set_playback_time(&a, 500); lv_anim_start(&a); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) column_gap_anim); + lv_anim_set_exec_cb(&a, column_gap_anim); lv_anim_set_time(&a, 3000); lv_anim_set_playback_time(&a, 3000); lv_anim_start(&a); diff --git a/examples/layouts/grid/lv_example_grid_5.c b/examples/layouts/grid/lv_example_grid_5.c index 79599767b..c1370e4e3 100644 --- a/examples/layouts/grid/lv_example_grid_5.c +++ b/examples/layouts/grid/lv_example_grid_5.c @@ -1,12 +1,12 @@ #include "../../../lvgl.h" #if LV_USE_GRID && LV_BUILD_EXAMPLES -static void row_gap_anim(lv_obj_t * obj, int32_t v) +static void row_gap_anim(void * obj, int32_t v) { lv_obj_set_style_pad_row(obj, LV_PART_MAIN, LV_STATE_DEFAULT, v); } -static void column_gap_anim(lv_obj_t * obj, int32_t v) +static void column_gap_anim(void * obj, int32_t v) { lv_obj_set_style_pad_column(obj, LV_PART_MAIN, LV_STATE_DEFAULT, v); } @@ -51,12 +51,12 @@ void lv_example_grid_5(void) lv_anim_set_values(&a, 0, 10); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) row_gap_anim); + lv_anim_set_exec_cb(&a, row_gap_anim); lv_anim_set_time(&a, 500); lv_anim_set_playback_time(&a, 500); lv_anim_start(&a); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) column_gap_anim); + lv_anim_set_exec_cb(&a, column_gap_anim); lv_anim_set_time(&a, 3000); lv_anim_set_playback_time(&a, 3000); lv_anim_start(&a); diff --git a/examples/widgets/bar/lv_example_bar_6.c b/examples/widgets/bar/lv_example_bar_6.c index 24ca01dcf..e2aa70175 100644 --- a/examples/widgets/bar/lv_example_bar_6.c +++ b/examples/widgets/bar/lv_example_bar_6.c @@ -1,7 +1,7 @@ #include "../../../lvgl.h" #if LV_USE_BAR && LV_BUILD_EXAMPLES -static void set_value(lv_obj_t *bar, int32_t v) +static void set_value(void *bar, int32_t v) { lv_bar_set_value(bar, v, LV_ANIM_OFF); } @@ -62,7 +62,7 @@ void lv_example_bar_6(void) lv_anim_init(&a); lv_anim_set_var(&a, bar); lv_anim_set_values(&a, 0, 100); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) set_value); + lv_anim_set_exec_cb(&a, set_value); lv_anim_set_time(&a, 2000); lv_anim_set_playback_time(&a, 2000); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); diff --git a/examples/widgets/img/lv_example_img_4.c b/examples/widgets/img/lv_example_img_4.c index 9787eb396..8f4faa221 100644 --- a/examples/widgets/img/lv_example_img_4.c +++ b/examples/widgets/img/lv_example_img_4.c @@ -1,6 +1,11 @@ #include "../../../lvgl.h" #if LV_USE_IMG && LV_BUILD_EXAMPLES +static void ofs_y_anim(void * img, int32_t v) +{ + lv_img_set_offset_y(img, v); +} + /** * Image styling and offset */ @@ -24,7 +29,7 @@ void lv_example_img_4(void) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, img); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)lv_img_set_offset_y); + lv_anim_set_exec_cb(&a, ofs_y_anim); lv_anim_set_values(&a, 0, 100); lv_anim_set_time(&a, 3000); lv_anim_set_playback_time(&a, 500); diff --git a/examples/widgets/meter/lv_example_meter_1.c b/examples/widgets/meter/lv_example_meter_1.c index 814c9e218..68d754569 100644 --- a/examples/widgets/meter/lv_example_meter_1.c +++ b/examples/widgets/meter/lv_example_meter_1.c @@ -3,7 +3,7 @@ static lv_obj_t * meter; -static void set_value(lv_meter_indicator_t * indic, int32_t v) +static void set_value(void * indic, int32_t v) { lv_meter_set_indicator_value(meter, indic, v); } @@ -39,7 +39,7 @@ void lv_example_meter_1(void) /*Create an animation to set the value*/ lv_anim_t a; lv_anim_init(&a); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) set_value); + lv_anim_set_exec_cb(&a, set_value); lv_anim_set_var(&a, indic); lv_anim_set_values(&a, 0, 100); lv_anim_set_time(&a, 2000); diff --git a/examples/widgets/meter/lv_example_meter_2.c b/examples/widgets/meter/lv_example_meter_2.c index 8707d377a..c6fde2ea0 100644 --- a/examples/widgets/meter/lv_example_meter_2.c +++ b/examples/widgets/meter/lv_example_meter_2.c @@ -3,7 +3,7 @@ static lv_obj_t * meter; -static void set_value(lv_meter_indicator_t * indic, int32_t v) +static void set_value(void * indic, int32_t v) { lv_meter_set_indicator_end_value(meter, indic, v); } @@ -34,7 +34,7 @@ void lv_example_meter_2(void) /*Create an animation to set the value*/ lv_anim_t a; lv_anim_init(&a); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) set_value); + lv_anim_set_exec_cb(&a, set_value); lv_anim_set_values(&a, 0, 100); lv_anim_set_repeat_delay(&a, 100); lv_anim_set_playback_delay(&a, 100); diff --git a/examples/widgets/meter/lv_example_meter_3.c b/examples/widgets/meter/lv_example_meter_3.c index 8b7fab20b..cce562500 100644 --- a/examples/widgets/meter/lv_example_meter_3.c +++ b/examples/widgets/meter/lv_example_meter_3.c @@ -3,7 +3,7 @@ static lv_obj_t * meter; -static void set_value(lv_meter_indicator_t * indic, int32_t v) +static void set_value(void * indic, int32_t v) { lv_meter_set_indicator_end_value(meter, indic, v); } @@ -38,7 +38,7 @@ void lv_example_meter_3(void) /*Create an animation to set the value*/ lv_anim_t a; lv_anim_init(&a); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) set_value); + lv_anim_set_exec_cb(&a, set_value); lv_anim_set_values(&a, 0, 60); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); lv_anim_set_time(&a, 2000); /*2 sec for 1 turn of the minute hand (1 hour)*/ diff --git a/src/lv_core/lv_disp.c b/src/lv_core/lv_disp.c index 08fbac5e0..3ee72845c 100644 --- a/src/lv_core/lv_disp.c +++ b/src/lv_core/lv_disp.c @@ -23,7 +23,9 @@ **********************/ static void scr_load_anim_start(lv_anim_t * a); -static void opa_scale_anim(lv_obj_t * obj, int32_t v); +static void opa_scale_anim(void * obj, int32_t v); +static void set_x_anim(void * obj, int32_t v); +static void set_y_anim(void * obj, int32_t v); static void scr_anim_ready(lv_anim_t * a); /********************** @@ -238,56 +240,56 @@ void lv_scr_load_anim(lv_obj_t * new_scr, lv_scr_load_anim_t anim_type, uint32_t switch(anim_type) { case LV_SCR_LOAD_ANIM_NONE: /* Create a dummy animation to apply the delay*/ - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_x); + lv_anim_set_exec_cb(&a_new, set_x_anim); lv_anim_set_values(&a_new, 0, 0); break; case LV_SCR_LOAD_ANIM_OVER_LEFT: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_x); + lv_anim_set_exec_cb(&a_new, set_x_anim); lv_anim_set_values(&a_new, lv_disp_get_hor_res(d), 0); break; case LV_SCR_LOAD_ANIM_OVER_RIGHT: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_x); + lv_anim_set_exec_cb(&a_new, set_x_anim); lv_anim_set_values(&a_new, -lv_disp_get_hor_res(d), 0); break; case LV_SCR_LOAD_ANIM_OVER_TOP: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_y); + lv_anim_set_exec_cb(&a_new, set_y_anim); lv_anim_set_values(&a_new, lv_disp_get_ver_res(d), 0); break; case LV_SCR_LOAD_ANIM_OVER_BOTTOM: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_y); + lv_anim_set_exec_cb(&a_new, set_y_anim); lv_anim_set_values(&a_new, -lv_disp_get_ver_res(d), 0); break; case LV_SCR_LOAD_ANIM_MOVE_LEFT: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_x); + lv_anim_set_exec_cb(&a_new, set_x_anim); lv_anim_set_values(&a_new, lv_disp_get_hor_res(d), 0); - lv_anim_set_exec_cb(&a_old, (lv_anim_exec_xcb_t) lv_obj_set_x); + lv_anim_set_exec_cb(&a_old, set_x_anim); lv_anim_set_values(&a_old, 0, -lv_disp_get_hor_res(d)); break; case LV_SCR_LOAD_ANIM_MOVE_RIGHT: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_x); + lv_anim_set_exec_cb(&a_new, set_x_anim); lv_anim_set_values(&a_new, -lv_disp_get_hor_res(d), 0); - lv_anim_set_exec_cb(&a_old, (lv_anim_exec_xcb_t) lv_obj_set_x); + lv_anim_set_exec_cb(&a_old, set_x_anim); lv_anim_set_values(&a_old, 0, lv_disp_get_hor_res(d)); break; case LV_SCR_LOAD_ANIM_MOVE_TOP: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_y); + lv_anim_set_exec_cb(&a_new, set_y_anim); lv_anim_set_values(&a_new, lv_disp_get_ver_res(d), 0); - lv_anim_set_exec_cb(&a_old, (lv_anim_exec_xcb_t) lv_obj_set_y); + lv_anim_set_exec_cb(&a_old, set_y_anim); lv_anim_set_values(&a_old, 0, -lv_disp_get_ver_res(d)); break; case LV_SCR_LOAD_ANIM_MOVE_BOTTOM: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) lv_obj_set_y); + lv_anim_set_exec_cb(&a_new, set_y_anim); lv_anim_set_values(&a_new, -lv_disp_get_ver_res(d), 0); - lv_anim_set_exec_cb(&a_old, (lv_anim_exec_xcb_t) lv_obj_set_y); + lv_anim_set_exec_cb(&a_old, set_y_anim); lv_anim_set_values(&a_old, 0, lv_disp_get_ver_res(d)); break; case LV_SCR_LOAD_ANIM_FADE_ON: - lv_anim_set_exec_cb(&a_new, (lv_anim_exec_xcb_t) opa_scale_anim); + lv_anim_set_exec_cb(&a_new, opa_scale_anim); lv_anim_set_values(&a_new, LV_OPA_TRANSP, LV_OPA_COVER); break; } @@ -377,11 +379,21 @@ static void scr_load_anim_start(lv_anim_t * a) lv_disp_load_scr(a->var); } -static void opa_scale_anim(lv_obj_t * obj, int32_t v) +static void opa_scale_anim(void * obj, int32_t v) { lv_obj_set_style_opa(obj, LV_PART_MAIN, LV_STATE_DEFAULT, v); } +static void set_x_anim(void * obj, int32_t v) +{ + lv_obj_set_x(obj, v); +} + +static void set_y_anim(void * obj, int32_t v) +{ + lv_obj_set_y(obj, v); +} + static void scr_anim_ready(lv_anim_t * a) { lv_disp_t * d = lv_obj_get_disp(a->var); diff --git a/src/lv_core/lv_obj_scroll.c b/src/lv_core/lv_obj_scroll.c index 71899d1b3..82f025c5e 100644 --- a/src/lv_core/lv_obj_scroll.c +++ b/src/lv_core/lv_obj_scroll.c @@ -28,8 +28,8 @@ void lv_obj_move_children_by(lv_obj_t * obj, lv_coord_t x_diff, lv_coord_t y_dif /********************** * STATIC PROTOTYPES **********************/ -static void scroll_anim_x_cb(lv_obj_t * obj, int32_t v); -static void scroll_anim_y_cb(lv_obj_t * obj, int32_t v); +static void scroll_x_anim(void * obj, int32_t v); +static void scroll_y_anim(void * obj, int32_t v); static void scroll_anim_ready_cb(lv_anim_t * a); /********************** @@ -219,10 +219,10 @@ lv_coord_t lv_obj_get_scroll_right(lv_obj_t * obj) void lv_obj_get_scroll_end(struct _lv_obj_t * obj, lv_point_t * end) { lv_anim_t * a; - a = lv_anim_get(obj, (lv_anim_exec_xcb_t)scroll_anim_x_cb); + a = lv_anim_get(obj, scroll_x_anim); end->x = a ? -a->end : lv_obj_get_scroll_x(obj); - a = lv_anim_get(obj, (lv_anim_exec_xcb_t)scroll_anim_y_cb); + a = lv_anim_get(obj, scroll_y_anim); end->y = a ? -a->end : lv_obj_get_scroll_y(obj); } @@ -273,7 +273,7 @@ void lv_obj_scroll_by(lv_obj_t * obj, lv_coord_t x, lv_coord_t y, lv_anim_enable lv_anim_set_time(&a, t); lv_coord_t sx = lv_obj_get_scroll_x(obj); lv_anim_set_values(&a, -sx, -sx + x); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) scroll_anim_x_cb); + lv_anim_set_exec_cb(&a, scroll_x_anim); lv_anim_set_path(&a, &path); lv_anim_start(&a); } @@ -292,14 +292,14 @@ void lv_obj_scroll_by(lv_obj_t * obj, lv_coord_t x, lv_coord_t y, lv_anim_enable lv_anim_set_time(&a, t); lv_coord_t sy = lv_obj_get_scroll_y(obj); lv_anim_set_values(&a, -sy, -sy + y); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t) scroll_anim_y_cb); + lv_anim_set_exec_cb(&a, scroll_y_anim); lv_anim_set_path(&a, &path); lv_anim_start(&a); } } else { /*Remove pending animations*/ - lv_anim_del(obj, (lv_anim_exec_xcb_t) scroll_anim_y_cb); - lv_anim_del(obj, (lv_anim_exec_xcb_t) scroll_anim_x_cb); + lv_anim_del(obj, scroll_y_anim); + lv_anim_del(obj, scroll_x_anim); _lv_obj_scroll_by_raw(obj, x, y); } } @@ -312,7 +312,7 @@ void lv_obj_scroll_to(lv_obj_t * obj, lv_coord_t x, lv_coord_t y, lv_anim_enable void lv_obj_scroll_to_x(lv_obj_t * obj, lv_coord_t x, lv_anim_enable_t anim_en) { - lv_anim_del(obj, (lv_anim_exec_xcb_t) scroll_anim_x_cb); + lv_anim_del(obj, scroll_x_anim); /*Don't let scroll more then naturally possible by the size of the content*/ if(x < 0) x = 0; @@ -329,7 +329,7 @@ void lv_obj_scroll_to_x(lv_obj_t * obj, lv_coord_t x, lv_anim_enable_t anim_en) void lv_obj_scroll_to_y(lv_obj_t * obj, lv_coord_t y, lv_anim_enable_t anim_en) { - lv_anim_del(obj, (lv_anim_exec_xcb_t) scroll_anim_y_cb); + lv_anim_del(obj, scroll_y_anim); /*Don't let scroll more then naturally possible by the size of the content*/ if(y < 0) y = 0; @@ -370,8 +370,8 @@ void lv_obj_scroll_to_view(lv_obj_t * obj, lv_anim_enable_t anim_en) } /* Remove any pending scroll animations.*/ - lv_anim_del(parent, (lv_anim_exec_xcb_t)scroll_anim_x_cb); - lv_anim_del(parent, (lv_anim_exec_xcb_t)scroll_anim_y_cb); + lv_anim_del(parent, scroll_x_anim); + lv_anim_del(parent, scroll_y_anim); lv_obj_scroll_by(parent, x_scroll, y_scroll, anim_en); } @@ -390,12 +390,12 @@ void lv_obj_scroll_to_view_recursive(lv_obj_t * obj, lv_anim_enable_t anim_en) * STATIC FUNCTIONS **********************/ -static void scroll_anim_x_cb(lv_obj_t * obj, int32_t v) +static void scroll_x_anim(void * obj, int32_t v) { _lv_obj_scroll_by_raw(obj, v + lv_obj_get_scroll_x(obj), 0); } -static void scroll_anim_y_cb(lv_obj_t * obj, int32_t v) +static void scroll_y_anim(void * obj, int32_t v) { _lv_obj_scroll_by_raw(obj, 0, v + lv_obj_get_scroll_y(obj)); } diff --git a/src/lv_core/lv_obj_style.c b/src/lv_core/lv_obj_style.c index b18b22c13..0d6670d32 100644 --- a/src/lv_core/lv_obj_style.c +++ b/src/lv_core/lv_obj_style.c @@ -55,10 +55,10 @@ static cache_t read_cache(const lv_obj_t * obj, lv_part_t part, lv_style_prop_t static void report_style_change_core(void * style, lv_obj_t * obj); static void refresh_children_style(lv_obj_t * obj); static bool trans_del(lv_obj_t * obj, uint8_t part, lv_style_prop_t prop, trans_t * tr_limit); -static void trans_anim_cb(trans_t * tr, int32_t v); +static void trans_anim_cb(void * _tr, int32_t v); static void trans_anim_start_cb(lv_anim_t * a); static void trans_anim_ready_cb(lv_anim_t * a); -static void fade_anim_cb(lv_obj_t * obj, int32_t v); +static void fade_anim_cb(void * obj, int32_t v); static void fade_in_anim_ready(lv_anim_t * a); /********************** @@ -293,7 +293,7 @@ void _lv_obj_style_create_transition(lv_obj_t * obj, lv_style_prop_t prop, uint8 lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, tr); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)trans_anim_cb); + lv_anim_set_exec_cb(&a, trans_anim_cb); lv_anim_set_start_cb(&a, trans_anim_start_cb); lv_anim_set_ready_cb(&a, trans_anim_ready_cb); lv_anim_set_values(&a, 0x00, 0xFF); @@ -374,7 +374,7 @@ void lv_obj_fade_in(lv_obj_t * obj, uint32_t time, uint32_t delay) lv_anim_init(&a); lv_anim_set_var(&a, obj); lv_anim_set_values(&a, LV_OPA_TRANSP, LV_OPA_COVER); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)fade_anim_cb); + lv_anim_set_exec_cb(&a, fade_anim_cb); lv_anim_set_ready_cb(&a, fade_in_anim_ready); lv_anim_set_time(&a, time); lv_anim_set_delay(&a, delay); @@ -387,7 +387,7 @@ void lv_obj_fade_out(lv_obj_t * obj, uint32_t time, uint32_t delay) lv_anim_init(&a); lv_anim_set_var(&a, obj); lv_anim_set_values(&a, LV_OPA_COVER, LV_OPA_TRANSP); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)fade_anim_cb); + lv_anim_set_exec_cb(&a, fade_anim_cb); lv_anim_set_time(&a, time); lv_anim_set_delay(&a, delay); lv_anim_start(&a); @@ -848,8 +848,9 @@ static bool trans_del(lv_obj_t * obj, uint8_t part, lv_style_prop_t prop, trans_ return removed; } -static void trans_anim_cb(trans_t * tr, int32_t v) +static void trans_anim_cb(void * _tr, int32_t v) { + trans_t * tr = _tr; lv_obj_style_list_t * list = &tr->obj->style_list; uint32_t i; @@ -968,7 +969,7 @@ static void trans_anim_ready_cb(lv_anim_t * a) } } -static void fade_anim_cb(lv_obj_t * obj, int32_t v) +static void fade_anim_cb(void * obj, int32_t v) { lv_obj_set_style_opa(obj, LV_PART_MAIN, LV_STATE_DEFAULT, v); } diff --git a/src/lv_widgets/lv_bar.c b/src/lv_widgets/lv_bar.c index e901dccb6..80ddafc09 100644 --- a/src/lv_widgets/lv_bar.c +++ b/src/lv_widgets/lv_bar.c @@ -53,7 +53,7 @@ static void draw_indic(lv_obj_t * bar, const lv_area_t * clip_area); static void lv_bar_set_value_with_anim(lv_obj_t * obj, int16_t new_value, int16_t * value_ptr, lv_bar_anim_t * anim_info, lv_anim_enable_t en); static void lv_bar_init_anim(lv_obj_t * bar, lv_bar_anim_t * bar_anim); -static void lv_bar_anim(lv_bar_anim_t * bar, int32_t value); +static void lv_bar_anim(void * bar, int32_t value); static void lv_bar_anim_ready(lv_anim_t * a); /********************** @@ -497,10 +497,11 @@ static lv_res_t lv_bar_signal(lv_obj_t * obj, lv_signal_t sign, void * param) return res; } -static void lv_bar_anim(lv_bar_anim_t * var, int32_t value) +static void lv_bar_anim(void * var, int32_t value) { - var->anim_state = value; - lv_obj_invalidate(var->bar); + lv_bar_anim_t * bar_anim = var; + bar_anim->anim_state = value; + lv_obj_invalidate(bar_anim->bar); } static void lv_bar_anim_ready(lv_anim_t * a) @@ -542,7 +543,7 @@ static void lv_bar_set_value_with_anim(lv_obj_t * obj, int16_t new_value, int16_ lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, anim_info); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)lv_bar_anim); + lv_anim_set_exec_cb(&a, lv_bar_anim); lv_anim_set_values(&a, LV_BAR_ANIM_STATE_START, LV_BAR_ANIM_STATE_END); lv_anim_set_ready_cb(&a, lv_bar_anim_ready); lv_anim_set_time(&a, lv_obj_get_style_anim_time(obj, LV_PART_MAIN)); diff --git a/src/lv_widgets/lv_label.c b/src/lv_widgets/lv_label.c index 7d7902fb6..3d24499a6 100644 --- a/src/lv_widgets/lv_label.c +++ b/src/lv_widgets/lv_label.c @@ -42,13 +42,12 @@ static lv_draw_res_t lv_label_draw(lv_obj_t * label, const lv_area_t * clip_area static void lv_label_refr_text(lv_obj_t * obj); static void lv_label_revert_dots(lv_obj_t * label); -static void lv_label_set_offset_x(lv_obj_t * label, lv_coord_t x); -static void lv_label_set_offset_y(lv_obj_t * label, lv_coord_t y); - static bool lv_label_set_dot_tmp(lv_obj_t * label, char * data, uint32_t len); static char * lv_label_get_dot_tmp(lv_obj_t * label); static void lv_label_dot_tmp_free(lv_obj_t * label); static void get_txt_coords(const lv_obj_t * label, lv_area_t * area); +static void set_ofs_x_anim(void * obj, int32_t v); +static void set_ofs_y_anim(void * obj, int32_t v); /********************** * STATIC VARIABLES @@ -194,10 +193,8 @@ void lv_label_set_long_mode(lv_obj_t * obj, lv_label_long_mode_t long_mode) lv_label_t * label = (lv_label_t *)obj; /*Delete the old animation (if exists)*/ - lv_anim_del(obj, (lv_anim_exec_xcb_t)lv_obj_set_x); - lv_anim_del(obj, (lv_anim_exec_xcb_t)lv_obj_set_y); - lv_anim_del(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_x); - lv_anim_del(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_y); + lv_anim_del(obj, set_ofs_x_anim); + lv_anim_del(obj, set_ofs_y_anim); label->offset.x = 0; label->offset.y = 0; @@ -917,11 +914,11 @@ static void lv_label_refr_text(lv_obj_t * obj) bool hor_anim = false; if(size.x > lv_area_get_width(&txt_coords)) { lv_anim_set_values(&a, 0, lv_area_get_width(&txt_coords) - size.x); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)lv_label_set_offset_x); + lv_anim_set_exec_cb(&a, set_ofs_x_anim); lv_anim_set_time(&a, lv_anim_speed_to_time(anim_speed, a.start, a.end)); lv_anim_set_playback_time(&a, a.time); - lv_anim_t * anim_cur = lv_anim_get(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_x); + lv_anim_t * anim_cur = lv_anim_get(obj, set_ofs_x_anim); int32_t act_time = 0; bool playback_now = false; if(anim_cur) { @@ -946,17 +943,17 @@ static void lv_label_refr_text(lv_obj_t * obj) } else { /*Delete the offset animation if not required*/ - lv_anim_del(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_x); + lv_anim_del(obj, set_ofs_x_anim); label->offset.x = 0; } if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { lv_anim_set_values(&a, 0, lv_area_get_height(&txt_coords) - size.y - (lv_font_get_line_height(font))); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)lv_label_set_offset_y); + lv_anim_set_exec_cb(&a, set_ofs_y_anim); lv_anim_set_time(&a, lv_anim_speed_to_time(anim_speed, a.start, a.end)); lv_anim_set_playback_time(&a, a.time); - lv_anim_t * anim_cur = lv_anim_get(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_y); + lv_anim_t * anim_cur = lv_anim_get(obj, set_ofs_y_anim); int32_t act_time = 0; bool playback_now = false; if(anim_cur) { @@ -980,7 +977,7 @@ static void lv_label_refr_text(lv_obj_t * obj) } else { /*Delete the offset animation if not required*/ - lv_anim_del(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_y); + lv_anim_del(obj, set_ofs_y_anim); label->offset.y = 0; } } @@ -996,10 +993,10 @@ static void lv_label_refr_text(lv_obj_t * obj) bool hor_anim = false; if(size.x > lv_area_get_width(&txt_coords)) { lv_anim_set_values(&a, 0, -size.x - lv_font_get_glyph_width(font, ' ', ' ') * LV_LABEL_WAIT_CHAR_COUNT); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)lv_label_set_offset_x); + lv_anim_set_exec_cb(&a, set_ofs_x_anim); lv_anim_set_time(&a, lv_anim_speed_to_time(anim_speed, a.start, a.end)); - lv_anim_t * anim_cur = lv_anim_get(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_x); + lv_anim_t * anim_cur = lv_anim_get(obj, set_ofs_x_anim); int32_t act_time = anim_cur ? anim_cur->act_time : 0; if(act_time < a.time) { a.act_time = act_time; /*To keep the old position*/ @@ -1011,16 +1008,16 @@ static void lv_label_refr_text(lv_obj_t * obj) } else { /*Delete the offset animation if not required*/ - lv_anim_del(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_x); + lv_anim_del(obj, set_ofs_x_anim); label->offset.x = 0; } if(size.y > lv_area_get_height(&txt_coords) && hor_anim == false) { lv_anim_set_values(&a, 0, -size.y - (lv_font_get_line_height(font))); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)lv_label_set_offset_y); + lv_anim_set_exec_cb(&a, set_ofs_y_anim); lv_anim_set_time(&a, lv_anim_speed_to_time(anim_speed, a.start, a.end)); - lv_anim_t * anim_cur = lv_anim_get(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_y); + lv_anim_t * anim_cur = lv_anim_get(obj, set_ofs_y_anim); int32_t act_time = anim_cur ? anim_cur->act_time : 0; if(act_time < a.time) { a.act_time = act_time; /*To keep the old position*/ @@ -1031,7 +1028,7 @@ static void lv_label_refr_text(lv_obj_t * obj) } else { /*Delete the offset animation if not required*/ - lv_anim_del(obj, (lv_anim_exec_xcb_t)lv_label_set_offset_y); + lv_anim_del(obj, set_ofs_y_anim); label->offset.y = 0; } } @@ -1125,20 +1122,6 @@ static void lv_label_revert_dots(lv_obj_t * obj) label->dot_end = LV_LABEL_DOT_END_INV; } -static void lv_label_set_offset_x(lv_obj_t * obj, lv_coord_t x) -{ - lv_label_t * label = (lv_label_t *)obj; - label->offset.x = x; - lv_obj_invalidate(obj); -} - -static void lv_label_set_offset_y(lv_obj_t * obj, lv_coord_t y) -{ - lv_label_t * label = (lv_label_t *)obj; - label->offset.y = y; - lv_obj_invalidate(obj); -} - /** * Store `len` characters from `data`. Allocates space if necessary. * @@ -1216,4 +1199,20 @@ static void get_txt_coords(const lv_obj_t * obj, lv_area_t * area) area->y2 -= bottom; } + +static void set_ofs_x_anim(void * obj, int32_t v) +{ + lv_label_t * label = (lv_label_t *)obj; + label->offset.x = v; + lv_obj_invalidate(obj); +} + +static void set_ofs_y_anim(void * obj, int32_t v) +{ + lv_label_t * label = (lv_label_t *)obj; + label->offset.y = v; + lv_obj_invalidate(obj); +} + + #endif diff --git a/src/lv_widgets/lv_roller.c b/src/lv_widgets/lv_roller.c index f24b58778..70d6f433c 100644 --- a/src/lv_widgets/lv_roller.c +++ b/src/lv_widgets/lv_roller.c @@ -39,6 +39,7 @@ static void inf_normalize(lv_obj_t * obj_scrl); static lv_obj_t * get_label(const lv_obj_t * obj); static lv_coord_t get_selected_label_width(const lv_obj_t * obj); static void scroll_anim_ready_cb(lv_anim_t * a); +static void set_y_anim(void * obj, int32_t v); /********************** * STATIC VARIABLES @@ -476,7 +477,7 @@ static lv_res_t lv_roller_signal(lv_obj_t * obj, lv_signal_t sign, void * param) } else if(sign == LV_SIGNAL_PRESSED) { roller->moved = 0; - lv_anim_del(get_label(obj), (lv_anim_exec_xcb_t)lv_obj_set_y); + lv_anim_del(get_label(obj), set_y_anim); } else if(sign == LV_SIGNAL_PRESSING) { lv_indev_t * indev = lv_indev_get_act(); @@ -616,7 +617,7 @@ static void refr_position(lv_obj_t * obj, lv_anim_enable_t anim_en) lv_coord_t new_y = mid_y1 - sel_y1; if(anim_en == LV_ANIM_OFF || anim_time == 0) { - lv_anim_del(label, (lv_anim_exec_xcb_t)lv_obj_set_y); + lv_anim_del(label, set_y_anim); lv_obj_set_y(label, new_y); } else { @@ -626,7 +627,7 @@ static void refr_position(lv_obj_t * obj, lv_anim_enable_t anim_en) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, label); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)lv_obj_set_y); + lv_anim_set_exec_cb(&a, set_y_anim); lv_anim_set_values(&a, lv_obj_get_y(label), new_y); lv_anim_set_time(&a, anim_time); lv_anim_set_ready_cb(&a, scroll_anim_ready_cb); @@ -764,4 +765,11 @@ static void scroll_anim_ready_cb(lv_anim_t * a) lv_obj_t * obj = lv_obj_get_parent(a->var); /*The label is animated*/ inf_normalize(obj); } + + +static void set_y_anim(void * obj, int32_t v) +{ + lv_obj_set_y(obj, v); +} + #endif diff --git a/src/lv_widgets/lv_textarea.c b/src/lv_widgets/lv_textarea.c index cdd49a392..f4015f690 100644 --- a/src/lv_widgets/lv_textarea.c +++ b/src/lv_widgets/lv_textarea.c @@ -49,8 +49,8 @@ static void lv_textarea_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_textarea_destructor(lv_obj_t * obj); static lv_draw_res_t lv_textarea_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_res_t lv_textarea_signal(lv_obj_t * obj, lv_signal_t sign, void * param); -static void cursor_blink_anim_cb(lv_obj_t * obj, int32_t show); -static void pwd_char_hider_anim(lv_obj_t * obj, int32_t x); +static void cursor_blink_anim_cb(void * obj, int32_t show); +static void pwd_char_hider_anim(void * obj, int32_t x); static void pwd_char_hider_anim_ready(lv_anim_t * a); static void pwd_char_hider(lv_obj_t * obj); static bool char_is_accepted(lv_obj_t * obj, uint32_t c); @@ -168,7 +168,7 @@ void lv_textarea_add_char(lv_obj_t * obj, uint32_t c) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, ta); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)pwd_char_hider_anim); + lv_anim_set_exec_cb(&a, pwd_char_hider_anim); lv_anim_set_time(&a, ta->pwd_show_time); lv_anim_set_values(&a, 0, 1); lv_anim_set_path(&a, &path); @@ -239,7 +239,7 @@ void lv_textarea_add_text(lv_obj_t * obj, const char * txt) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, ta); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)pwd_char_hider_anim); + lv_anim_set_exec_cb(&a, pwd_char_hider_anim); lv_anim_set_time(&a, ta->pwd_show_time); lv_anim_set_values(&a, 0, 1); lv_anim_set_path(&a, &path); @@ -376,7 +376,7 @@ void lv_textarea_set_text(lv_obj_t * obj, const char * txt) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, ta); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)pwd_char_hider_anim); + lv_anim_set_exec_cb(&a, pwd_char_hider_anim); lv_anim_set_time(&a, ta->pwd_show_time); lv_anim_set_values(&a, 0, 1); lv_anim_set_path(&a, &path); @@ -1130,7 +1130,7 @@ static lv_res_t lv_textarea_signal(lv_obj_t * obj, lv_signal_t sign, void * para * @param ta pointer to a text area * @param hide 1: hide the cursor, 0: show it */ -static void cursor_blink_anim_cb(lv_obj_t * obj, int32_t show) +static void cursor_blink_anim_cb(void * obj, int32_t show) { lv_textarea_t * ta = (lv_textarea_t *) obj; if(show != ta->cursor.show) { @@ -1152,7 +1152,7 @@ static void cursor_blink_anim_cb(lv_obj_t * obj, int32_t show) * @param ta unused * @param x unused */ -static void pwd_char_hider_anim(lv_obj_t * obj, int32_t x) +static void pwd_char_hider_anim(void * obj, int32_t x) { LV_UNUSED(obj); LV_UNUSED(x); @@ -1243,7 +1243,7 @@ static void start_cursor_blink(lv_obj_t * obj) lv_textarea_t * ta = (lv_textarea_t *) obj; uint32_t blink_time = lv_obj_get_style_anim_time(obj, LV_PART_MARKER); if(blink_time == 0) { - lv_anim_del(obj, (lv_anim_exec_xcb_t)cursor_blink_anim_cb); + lv_anim_del(obj, cursor_blink_anim_cb); ta->cursor.show = 1; } else { lv_anim_path_t path; @@ -1253,7 +1253,7 @@ static void start_cursor_blink(lv_obj_t * obj) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, ta); - lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)cursor_blink_anim_cb); + lv_anim_set_exec_cb(&a, cursor_blink_anim_cb); lv_anim_set_time(&a, blink_time); lv_anim_set_playback_time(&a, blink_time); lv_anim_set_values(&a, 1, 0);