feat(anim_timeline): add repeat and more (#6127)

Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
This commit is contained in:
zipeartnes
2024-08-23 02:15:42 -05:00
committed by GitHub
parent 69e91cc560
commit f2303758bf
3 changed files with 170 additions and 6 deletions
+114 -6
View File
@@ -327,39 +327,147 @@ void test_anim_timeline_reverse(void)
TEST_ASSERT_EQUAL(20, lv_obj_get_x(obj));
}
void test_anim_timeline_repeat(void)
{
lv_obj_t * obj = lv_obj_create(lv_screen_active());
lv_obj_set_size(obj, 100, 100);
lv_obj_set_pos(obj, 30, 40);
lv_anim_t a1;
lv_anim_init(&a1);
lv_anim_set_exec_cb(&a1, (lv_anim_exec_xcb_t)lv_obj_set_x);
lv_anim_set_var(&a1, obj);
lv_anim_set_values(&a1, 0, 1000);
lv_anim_set_duration(&a1, 1000);
anim_timeline = lv_anim_timeline_create();
TEST_ASSERT_NOT_NULL(anim_timeline);
lv_anim_timeline_add(anim_timeline, 0, &a1);
lv_anim_timeline_set_repeat_count(anim_timeline, 3);
lv_anim_timeline_set_repeat_delay(anim_timeline, 1);
lv_anim_timeline_start(anim_timeline);
lv_refr_now(NULL);
TEST_ASSERT_EQUAL(1, lv_anim_timeline_get_repeat_delay(anim_timeline));
TEST_ASSERT_EQUAL(1000, lv_anim_timeline_get_playtime(anim_timeline));
lv_test_wait(100);
TEST_ASSERT_EQUAL(99, lv_obj_get_x(obj));
lv_test_wait(500);
TEST_ASSERT_EQUAL(599, lv_obj_get_x(obj));
lv_test_wait(400);
TEST_ASSERT_EQUAL(1000, lv_obj_get_x(obj));
lv_test_wait(1);
TEST_ASSERT_EQUAL(0, lv_obj_get_x(obj));
lv_test_wait(500);
TEST_ASSERT_EQUAL(500, lv_obj_get_x(obj));
lv_test_wait(500);
TEST_ASSERT_EQUAL(1000, lv_obj_get_x(obj));
lv_test_wait(701);
TEST_ASSERT_EQUAL(699, lv_obj_get_x(obj));
lv_test_wait(1000);
TEST_ASSERT_EQUAL(1000, lv_obj_get_x(obj));
lv_test_wait(1000);
TEST_ASSERT_EQUAL(1000, lv_obj_get_x(obj));
}
void test_anim_timeline_delay(void)
{
lv_obj_t * obj = lv_obj_create(lv_screen_active());
lv_obj_set_size(obj, 100, 100);
lv_obj_set_pos(obj, 30, 40);
lv_anim_t a1;
lv_anim_init(&a1);
lv_anim_set_exec_cb(&a1, (lv_anim_exec_xcb_t)lv_obj_set_x);
lv_anim_set_var(&a1, obj);
lv_anim_set_values(&a1, 0, 1000);
lv_anim_set_duration(&a1, 1000);
anim_timeline = lv_anim_timeline_create();
TEST_ASSERT_NOT_NULL(anim_timeline);
lv_anim_timeline_add(anim_timeline, 0, &a1);
lv_anim_timeline_set_repeat_count(anim_timeline, 3);
lv_anim_timeline_set_repeat_delay(anim_timeline, 1000);
lv_anim_timeline_start(anim_timeline);
lv_refr_now(NULL);
TEST_ASSERT_EQUAL(1000, lv_anim_timeline_get_repeat_delay(anim_timeline));
TEST_ASSERT_EQUAL(1000, lv_anim_timeline_get_playtime(anim_timeline));
lv_test_wait(100);
TEST_ASSERT_EQUAL(99, lv_obj_get_x(obj));
lv_test_wait(500);
TEST_ASSERT_EQUAL(599, lv_obj_get_x(obj));
lv_test_wait(400);
TEST_ASSERT_EQUAL(1000, lv_obj_get_x(obj));
lv_test_wait(1000);
TEST_ASSERT_EQUAL(0, lv_obj_get_x(obj));
lv_test_wait(500);
TEST_ASSERT_EQUAL(500, lv_obj_get_x(obj));
lv_test_wait(500);
TEST_ASSERT_EQUAL(1000, lv_obj_get_x(obj));
lv_test_wait(1700);
TEST_ASSERT_EQUAL(699, lv_obj_get_x(obj));
lv_test_wait(1000);
TEST_ASSERT_EQUAL(1000, lv_obj_get_x(obj));
lv_test_wait(1000);
TEST_ASSERT_EQUAL(1000, lv_obj_get_x(obj));
}
void anim1_exec_cb(void * var, int32_t v)
{
LV_UNUSED(var);
printf("[anim1] %d\n", v);
LV_UNUSED(v);
}
void anim1_start(lv_anim_t * a)
{
LV_UNUSED(a);
printf("[anim1] start\n");
anim1_start_called++;
}
void anim1_completed(lv_anim_t * a)
{
LV_UNUSED(a);
printf("[anim1] completed\n");
anim1_completed_called++;
}
void anim2_exec_cb(void * var, int32_t v)
{
LV_UNUSED(var);
printf(" [anim2] %d\n", v);
LV_UNUSED(v);
}
void anim2_start(lv_anim_t * a)
{
LV_UNUSED(a);
printf(" [anim2] start\n");
anim2_start_called++;
}
void anim2_completed(lv_anim_t * a)
{
LV_UNUSED(a);
printf(" [anim2] completed\n");
anim2_completed_called++;
}