diff --git a/examples/anim/lv_example_anim_timeline_1.c b/examples/anim/lv_example_anim_timeline_1.c index 148ab17f2..aecd33593 100644 --- a/examples/anim/lv_example_anim_timeline_1.c +++ b/examples/anim/lv_example_anim_timeline_1.c @@ -10,14 +10,14 @@ static lv_obj_t * obj3 = NULL; static const int32_t obj_width = 90; static const int32_t obj_height = 70; -static void set_width(void * var, int32_t v) +static void set_width(lv_anim_t * var, int32_t v) { - lv_obj_set_width((lv_obj_t *)var, v); + lv_obj_set_width(var->var, v); } -static void set_height(void * var, int32_t v) +static void set_height(lv_anim_t * var, int32_t v) { - lv_obj_set_height((lv_obj_t *)var, v); + lv_obj_set_height(var->var, v); } static void anim_timeline_create(void) @@ -27,8 +27,7 @@ static void anim_timeline_create(void) lv_anim_init(&a1); lv_anim_set_var(&a1, obj1); lv_anim_set_values(&a1, 0, obj_width); - lv_anim_set_early_apply(&a1, false); - lv_anim_set_exec_cb(&a1, (lv_anim_exec_xcb_t)set_width); + lv_anim_set_custom_exec_cb(&a1, set_width); lv_anim_set_path_cb(&a1, lv_anim_path_overshoot); lv_anim_set_time(&a1, 300); @@ -36,8 +35,7 @@ static void anim_timeline_create(void) lv_anim_init(&a2); lv_anim_set_var(&a2, obj1); lv_anim_set_values(&a2, 0, obj_height); - lv_anim_set_early_apply(&a2, false); - lv_anim_set_exec_cb(&a2, (lv_anim_exec_xcb_t)set_height); + lv_anim_set_custom_exec_cb(&a2, set_height); lv_anim_set_path_cb(&a2, lv_anim_path_ease_out); lv_anim_set_time(&a2, 300); @@ -46,8 +44,7 @@ static void anim_timeline_create(void) lv_anim_init(&a3); lv_anim_set_var(&a3, obj2); lv_anim_set_values(&a3, 0, obj_width); - lv_anim_set_early_apply(&a3, false); - lv_anim_set_exec_cb(&a3, (lv_anim_exec_xcb_t)set_width); + lv_anim_set_custom_exec_cb(&a3, set_width); lv_anim_set_path_cb(&a3, lv_anim_path_overshoot); lv_anim_set_time(&a3, 300); @@ -55,8 +52,7 @@ static void anim_timeline_create(void) lv_anim_init(&a4); lv_anim_set_var(&a4, obj2); lv_anim_set_values(&a4, 0, obj_height); - lv_anim_set_early_apply(&a4, false); - lv_anim_set_exec_cb(&a4, (lv_anim_exec_xcb_t)set_height); + lv_anim_set_custom_exec_cb(&a4, set_height); lv_anim_set_path_cb(&a4, lv_anim_path_ease_out); lv_anim_set_time(&a4, 300); @@ -65,8 +61,7 @@ static void anim_timeline_create(void) lv_anim_init(&a5); lv_anim_set_var(&a5, obj3); lv_anim_set_values(&a5, 0, obj_width); - lv_anim_set_early_apply(&a5, false); - lv_anim_set_exec_cb(&a5, (lv_anim_exec_xcb_t)set_width); + lv_anim_set_custom_exec_cb(&a5, set_width); lv_anim_set_path_cb(&a5, lv_anim_path_overshoot); lv_anim_set_time(&a5, 300); @@ -74,8 +69,7 @@ static void anim_timeline_create(void) lv_anim_init(&a6); lv_anim_set_var(&a6, obj3); lv_anim_set_values(&a6, 0, obj_height); - lv_anim_set_early_apply(&a6, false); - lv_anim_set_exec_cb(&a6, (lv_anim_exec_xcb_t)set_height); + lv_anim_set_custom_exec_cb(&a6, set_height); lv_anim_set_path_cb(&a6, lv_anim_path_ease_out); lv_anim_set_time(&a6, 300); @@ -181,24 +175,17 @@ void lv_example_anim_timeline_1(void) /* create 3 objects */ obj1 = lv_obj_create(par); lv_obj_set_size(obj1, obj_width, obj_height); + lv_obj_set_scrollbar_mode(obj1, LV_SCROLLBAR_MODE_OFF); obj2 = lv_obj_create(par); lv_obj_set_size(obj2, obj_width, obj_height); + lv_obj_set_scrollbar_mode(obj2, LV_SCROLLBAR_MODE_OFF); obj3 = lv_obj_create(par); lv_obj_set_size(obj3, obj_width, obj_height); + lv_obj_set_scrollbar_mode(obj3, LV_SCROLLBAR_MODE_OFF); anim_timeline_create(); - - lv_anim_timeline_set_progress(anim_timeline, 32000); - lv_refr_now(NULL); - lv_anim_timeline_set_progress(anim_timeline, 65535); - lv_refr_now(NULL); - lv_anim_timeline_set_progress(anim_timeline, 50000); - lv_refr_now(NULL); - lv_anim_timeline_set_progress(anim_timeline, 60000); - lv_refr_now(NULL); - } #endif diff --git a/examples/anim/lv_example_anim_timeline_1.py b/examples/anim/lv_example_anim_timeline_1.py index 135a760e4..d615a86c7 100644 --- a/examples/anim/lv_example_anim_timeline_1.py +++ b/examples/anim/lv_example_anim_timeline_1.py @@ -58,7 +58,6 @@ class LV_ExampleAnimTimeline_1(object): self.a1 = lv.anim_t() self.a1.init() self.a1.set_values(0, self.obj_width) - self.a1.set_early_apply(False) self.a1.set_custom_exec_cb(lambda a,v: self.set_width(self.obj1,v)) self.a1.set_path_cb(lv.anim_t.path_overshoot) self.a1.set_time(300) @@ -66,7 +65,6 @@ class LV_ExampleAnimTimeline_1(object): self.a2 = lv.anim_t() self.a2.init() self.a2.set_values(0, self.obj_height) - self.a2.set_early_apply(False) self.a2.set_custom_exec_cb(lambda a,v: self.set_height(self.obj1,v)) self.a2.set_path_cb(lv.anim_t.path_ease_out) self.a2.set_time(300) @@ -75,7 +73,6 @@ class LV_ExampleAnimTimeline_1(object): self.a3=lv.anim_t() self.a3.init() self.a3.set_values(0, self.obj_width) - self.a3.set_early_apply(False) self.a3.set_custom_exec_cb(lambda a,v: self.set_width(self.obj2,v)) self.a3.set_path_cb(lv.anim_t.path_overshoot) self.a3.set_time(300) @@ -83,7 +80,6 @@ class LV_ExampleAnimTimeline_1(object): self.a4 = lv.anim_t() self.a4.init() self.a4.set_values(0, self.obj_height) - self.a4.set_early_apply(False) self.a4.set_custom_exec_cb(lambda a,v: self.set_height(self.obj2,v)) self.a4.set_path_cb(lv.anim_t.path_ease_out) self.a4.set_time(300) @@ -92,7 +88,6 @@ class LV_ExampleAnimTimeline_1(object): self.a5 = lv.anim_t() self.a5.init() self.a5.set_values(0, self.obj_width) - self.a5.set_early_apply(False) self.a5.set_custom_exec_cb(lambda a,v: self.set_width(self.obj3,v)) self.a5.set_path_cb(lv.anim_t.path_overshoot) self.a5.set_time(300) @@ -100,7 +95,6 @@ class LV_ExampleAnimTimeline_1(object): self.a6 = lv.anim_t() self.a6.init() self.a6.set_values(0, self.obj_height) - self.a6.set_early_apply(False) self.a6.set_custom_exec_cb(lambda a,v: self.set_height(self.obj3,v)) self.a6.set_path_cb(lv.anim_t.path_ease_out) self.a6.set_time(300) diff --git a/src/misc/lv_anim_timeline.c b/src/misc/lv_anim_timeline.c index f9d0e65ad..4d2407a61 100644 --- a/src/misc/lv_anim_timeline.c +++ b/src/misc/lv_anim_timeline.c @@ -66,7 +66,7 @@ void lv_anim_timeline_add(lv_anim_timeline_t * at, uint32_t start_time, lv_anim_ at->anim_dsc[at->anim_dsc_cnt - 1].start_time = start_time; /*Add default var and virtual exec_cb, used to delete animation.*/ - if(a->var == NULL && a->exec_cb == NULL) { + if(a->var == NULL && a->exec_cb == NULL && a->custom_exec_cb == NULL) { at->anim_dsc[at->anim_dsc_cnt - 1].anim.var = at; at->anim_dsc[at->anim_dsc_cnt - 1].anim.exec_cb = lv_anim_timeline_virtual_exec_cb; } @@ -105,7 +105,8 @@ void lv_anim_timeline_stop(lv_anim_timeline_t * at) for(uint32_t i = 0; i < at->anim_dsc_cnt; i++) { lv_anim_t * a = &(at->anim_dsc[i].anim); - lv_anim_delete(a->var, a->exec_cb); + if(a->exec_cb) lv_anim_delete(a->var, a->exec_cb); + else lv_anim_delete(a->var, NULL); } } @@ -125,7 +126,7 @@ void lv_anim_timeline_set_progress(lv_anim_timeline_t * at, uint16_t progress) for(uint32_t i = 0; i < at->anim_dsc_cnt; i++) { lv_anim_t * a = &(at->anim_dsc[i].anim); - if(a->exec_cb == NULL) { + if(a->exec_cb == NULL && a->custom_exec_cb == NULL) { continue; } @@ -133,18 +134,20 @@ void lv_anim_timeline_set_progress(lv_anim_timeline_t * at, uint16_t progress) int32_t value = 0; if(act_time < start_time && a->early_apply) { value = a->start_value; - a->exec_cb(a->var, value); + if(a->exec_cb) a->exec_cb(a->var, value); + if(a->custom_exec_cb) a->custom_exec_cb(a, value); } else if(act_time >= start_time && act_time <= (start_time + a->duration)) { a->act_time = act_time - start_time; value = a->path_cb(a); - a->exec_cb(a->var, value); + if(a->exec_cb) a->exec_cb(a->var, value); + if(a->custom_exec_cb) a->custom_exec_cb(a, value); } else if(act_time > start_time + a->duration) { value = a->end_value; - a->exec_cb(a->var, value); + if(a->exec_cb) a->exec_cb(a->var, value); + if(a->custom_exec_cb) a->custom_exec_cb(a, value); } - } }