From baaae5e41618ceaff2af8059e70d5e161fba80ea Mon Sep 17 00:00:00 2001 From: Jinny You Date: Thu, 16 May 2024 11:32:52 +0900 Subject: [PATCH] test/lottie: added the slot resetting in animated property case --- test/capi/capiLottie.cpp | 33 ++++++++++++++++++++++++++ test/resources/lottieslotkeyframe.json | 1 + test/testLottie.cpp | 27 +++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 test/resources/lottieslotkeyframe.json diff --git a/test/capi/capiLottie.cpp b/test/capi/capiLottie.cpp index b0d7ded8..df1432f8 100644 --- a/test/capi/capiLottie.cpp +++ b/test/capi/capiLottie.cpp @@ -69,6 +69,39 @@ TEST_CASE("Lottie Slot", "[capiLottie]") REQUIRE(tvg_engine_term(TVG_ENGINE_SW) == TVG_RESULT_SUCCESS); } +TEST_CASE("Lottie Slot 2", "[capiLottie]") +{ + REQUIRE(tvg_engine_init(TVG_ENGINE_SW, 0) == TVG_RESULT_SUCCESS); + + Tvg_Animation* animation = tvg_lottie_animation_new(); + REQUIRE(animation); + + Tvg_Paint* picture = tvg_animation_get_picture(animation); + REQUIRE(picture); + + Tvg_Identifier id = TVG_IDENTIFIER_UNDEF; + REQUIRE(tvg_paint_get_identifier(picture, &id) == TVG_RESULT_SUCCESS); + REQUIRE(id == TVG_IDENTIFIER_PICTURE); + + const char* slotJson = R"({"lottie-icon-outline":{"p":{"a":0,"k":[1,1,0]}},"lottie-icon-solid":{"p":{"a":0,"k":[0,0,1]}}})"; + + //Animation load + REQUIRE(tvg_picture_load(picture, TEST_DIR"/lottieslotkeyframe.json") == TVG_RESULT_SUCCESS); + + //Slot override + REQUIRE(tvg_lottie_animation_override(animation, slotJson) == TVG_RESULT_SUCCESS); + + //Slot revert + REQUIRE(tvg_lottie_animation_override(animation, nullptr) == TVG_RESULT_SUCCESS); + + //Slot override after reverting + REQUIRE(tvg_lottie_animation_override(animation, slotJson) == TVG_RESULT_SUCCESS); + + REQUIRE(tvg_animation_del(animation) == TVG_RESULT_SUCCESS); + + REQUIRE(tvg_engine_term(TVG_ENGINE_SW) == TVG_RESULT_SUCCESS); +} + TEST_CASE("Lottie Marker", "[capiLottie]") { REQUIRE(tvg_engine_init(TVG_ENGINE_SW, 0) == TVG_RESULT_SUCCESS); diff --git a/test/resources/lottieslotkeyframe.json b/test/resources/lottieslotkeyframe.json new file mode 100644 index 00000000..564c92a8 --- /dev/null +++ b/test/resources/lottieslotkeyframe.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":60,"ip":0,"op":59,"w":48,"h":48,"nm":"favorites_active","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"N","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[24,24,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.475,0.475,0.833],"y":[1,1,1]},"o":{"x":[0.42,0.42,0.167],"y":[0,0,0]},"t":0,"s":[20,20,100]},{"i":{"x":[0.577,0.577,0.833],"y":[1,1,1]},"o":{"x":[0.32,0.32,0.167],"y":[0,0,0]},"t":5,"s":[18.113,18.113,100]},{"i":{"x":[0.482,0.482,0.833],"y":[1.02,1.02,1]},"o":{"x":[0.366,0.366,0.167],"y":[0,0,0]},"t":12,"s":[20.681,20.681,100]},{"t":20,"s":[20,20,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":20,"st":-120,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".lottie-icon-gradient","cl":"lottie-icon-gradient","parent":1,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":3,"s":[20]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":10,"s":[60]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.125,0.125,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[1000,1000,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.495,-1.003],[0,0],[0,0],[-0.801,-0.781],[0,0],[0,0],[-0.99,0.521],[0,0],[0,0],[0.189,1.103],[0,0],[0,0],[1.107,0.161],[0,0]],"o":[[-0.495,-1.003],[0,0],[0,0],[-1.107,0.161],[0,0],[0,0],[-0.189,1.103],[0,0],[0,0],[0.99,0.521],[0,0],[0,0],[0.801,-0.781],[0,0],[0,0]],"v":[[1.211,-8.823],[-1.211,-8.823],[-3.569,-4.045],[-8.841,-3.279],[-9.589,-0.976],[-5.774,2.743],[-6.675,7.994],[-4.716,9.417],[0,6.938],[4.716,9.417],[6.675,7.994],[5.774,2.743],[9.589,-0.976],[8.841,-3.279],[3.569,-4.045]],"c":true},"ix":2},"nm":"Path3","mn":"ADBEVectorShape-Group","hd":false},{"ty":"gf","o":{"a":0,"k":100,"ix":10},"r":1,"bm":0,"g":{"p":3,"k":{"a":0,"k":[0.334,0.202,0.549,0.852,0.557,0.219,0.41,0.761,0.699,0.235,0.271,0.671],"sid":"lottie-icon-gradient","ix":9}},"s":{"a":0,"k":[-10.849,8.931],"ix":5},"e":{"a":0,"k":[-0.523,-5.049],"ix":6},"t":1,"nm":"GradientFill1","mn":"ADBEVectorGraphic-G-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBEVectorGroup","hd":false}],"ip":3,"op":60,"st":-16,"bm":8},{"ddd":0,"ind":3,"ty":4,"nm":".lottie-icon-solid","cl":"lottie-icon-solid","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.125,0.125,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"t":3,"s":[1000,1000,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.495,-1.003],[0,0],[0,0],[-0.801,-0.781],[0,0],[0,0],[-0.99,0.521],[0,0],[0,0],[0.189,1.103],[0,0],[0,0],[1.107,0.161],[0,0]],"o":[[-0.495,-1.003],[0,0],[0,0],[-1.107,0.161],[0,0],[0,0],[-0.189,1.103],[0,0],[0,0],[0.99,0.521],[0,0],[0,0],[0.801,-0.781],[0,0],[0,0]],"v":[[1.211,-8.823],[-1.211,-8.823],[-3.569,-4.045],[-8.841,-3.279],[-9.589,-0.976],[-5.774,2.743],[-6.675,7.994],[-4.716,9.417],[0,6.938],[4.716,9.417],[6.675,7.994],[5.774,2.743],[9.589,-0.976],[8.841,-3.279],[3.569,-4.045]],"c":true},"ix":2},"nm":"Path3","mn":"ADBEVectorShape-Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":21,"s":[0.356862745098,0.372549019608,0.780392156863,1]},{"t":60,"s":[0.058823529631,0.423529416323,0.741176486015,1]}],"sid":"lottie-icon-solid","ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill1","mn":"ADBEVectorGraphic-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBEVectorGroup","hd":false}],"ip":2,"op":60,"st":-17,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":".lottie-icon-outline","cl":"lottie-icon-outline","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0.125,0.125,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[1000,1000,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.495,-1.003],[0,0],[0,0],[-0.801,-0.781],[0,0],[0,0],[-0.99,0.521],[0,0],[0,0],[0.189,1.103],[0,0],[0,0],[1.107,0.161],[0,0]],"o":[[-0.495,-1.003],[0,0],[0,0],[-1.107,0.161],[0,0],[0,0],[-0.189,1.103],[0,0],[0,0],[0.99,0.521],[0,0],[0,0],[0.801,-0.781],[0,0],[0,0]],"v":[[1.211,-8.823],[-1.211,-8.823],[-3.569,-4.045],[-8.841,-3.279],[-9.589,-0.976],[-5.774,2.743],[-6.675,7.994],[-4.716,9.417],[0,6.938],[4.716,9.417],[6.675,7.994],[5.774,2.743],[9.589,-0.976],[8.841,-3.279],[3.569,-4.045]],"c":true},"ix":2},"nm":"Path1","mn":"ADBEVectorShape-Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-0.197,0.398],[0,0],[0,0],[-0.44,-0.064],[0,0],[0,0],[-0.075,-0.438],[0,0],[0,0],[0.393,-0.207],[0,0],[0,0],[0.318,0.31],[0,0],[0,0]],"o":[[0,0],[0,0],[0.197,0.398],[0,0],[0,0],[-0.318,0.31],[0,0],[0,0],[-0.393,-0.207],[0,0],[0,0],[0.075,-0.438],[0,0],[0,0],[0.44,-0.064]],"v":[[-2.258,-3.31],[0,-7.886],[2.258,-3.31],[3.275,-2.572],[8.325,-1.838],[4.67,1.724],[4.282,2.919],[5.145,7.948],[0.628,5.573],[-0.628,5.573],[-5.145,7.948],[-4.282,2.919],[-4.671,1.724],[-8.325,-1.838],[-3.275,-2.572]],"c":true},"ix":2},"nm":"Path2","mn":"ADBEVectorShape-Group","hd":false},{"ty":"mm","mm":1,"nm":"MergePaths1","mn":"ADBEVectorFilter-Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0.258823529412,0.258823529412,0.258823529412,1],"sid":"lottie-icon-outline","ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill1","mn":"ADBEVectorGraphic-Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Shape","np":4,"cix":2,"bm":0,"ix":1,"mn":"ADBEVectorGroup","hd":false}],"ip":0,"op":4,"st":-17,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/test/testLottie.cpp b/test/testLottie.cpp index 1887083b..30b5d9f9 100644 --- a/test/testLottie.cpp +++ b/test/testLottie.cpp @@ -70,6 +70,33 @@ TEST_CASE("Lottie Slot", "[tvgLottie]") REQUIRE(Initializer::term() == Result::Success); } +TEST_CASE("Lottie Slot 2", "[tvgLottie]") +{ + REQUIRE(Initializer::init(0) == Result::Success); + + auto animation = LottieAnimation::gen(); + REQUIRE(animation); + + auto picture = animation->picture(); + REQUIRE(picture->identifier() == Picture::identifier()); + + const char* slotJson = R"({"lottie-icon-outline":{"p":{"a":0,"k":[1,1,0]}},"lottie-icon-solid":{"p":{"a":0,"k":[0,0,1]}}})"; + + //Animation load + REQUIRE(picture->load(TEST_DIR"/lottieslotkeyframe.json") == Result::Success); + + //Slot override + REQUIRE(animation->override(slotJson) == Result::Success); + + //Slot revert + REQUIRE(animation->override(nullptr) == Result::Success); + + //Slot override after reverting + REQUIRE(animation->override(slotJson) == Result::Success); + + REQUIRE(Initializer::term() == Result::Success); +} + TEST_CASE("Lottie Marker", "[tvgLottie]") { REQUIRE(Initializer::init(0) == Result::Success);