From 97058badbf0e4a224887942f09dbe7964a4b5f8e Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 25 Nov 2024 21:47:53 +0900 Subject: [PATCH] example: ++lottie extension --- examples/LottieExtension.cpp | 20 ++++++++++++++++++- .../lottie/extensions/slotsample5.json | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 examples/resources/lottie/extensions/slotsample5.json diff --git a/examples/LottieExtension.cpp b/examples/LottieExtension.cpp index 6a035466..5aabeea6 100644 --- a/examples/LottieExtension.cpp +++ b/examples/LottieExtension.cpp @@ -34,6 +34,7 @@ struct UserExample : tvgexam::Example unique_ptr slot2; unique_ptr slot3; unique_ptr slot4; + unique_ptr slot5; unique_ptr marker; uint32_t w, h; uint32_t size; @@ -92,6 +93,12 @@ struct UserExample : tvgexam::Example slot4->frame(slot4->totalFrame() * progress); } + //duplicate slot + { + auto progress = tvgexam::progress(elapsed, slot5->duration()); + slot5->frame(slot5->totalFrame() * progress); + } + //marker { auto progress = tvgexam::progress(elapsed, marker->duration()); @@ -184,6 +191,17 @@ struct UserExample : tvgexam::Example canvas->push(picture); } + //slot (duplicate slots with default) + { + slot5 = std::unique_ptr(tvg::LottieAnimation::gen()); + auto picture = slot5->picture(); + if (!tvgexam::verify(picture->load(EXAMPLE_DIR"/lottie/extensions/slotsample5.json"))) return false; + + sizing(picture, 5); + + canvas->push(picture); + } + //marker { marker = std::unique_ptr(tvg::LottieAnimation::gen()); @@ -191,7 +209,7 @@ struct UserExample : tvgexam::Example if (!tvgexam::verify(picture->load(EXAMPLE_DIR"/lottie/extensions/marker_sample.json"))) return false; if (!tvgexam::verify(marker->segment("sectionC"))) return false; - sizing(picture, 5); + sizing(picture, 6); canvas->push(picture); } diff --git a/examples/resources/lottie/extensions/slotsample5.json b/examples/resources/lottie/extensions/slotsample5.json new file mode 100644 index 00000000..97eb4a92 --- /dev/null +++ b/examples/resources/lottie/extensions/slotsample5.json @@ -0,0 +1 @@ +{"nm":"Main Scene","ddd":0,"h":500,"w":500,"meta":{"g":"@lottiefiles/creator 1.37.0"},"layers":[{"ty":4,"nm":"Rectangle 2","sr":1,"st":0,"op":150,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[304.5,352.2827]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"rc","bm":0,"hd":false,"nm":"Rectangle Path 2","d":1,"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[133,98.56532879503823]}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[1,0.5569,0.9255],"t":0},{"s":[0.3176,0.0157,0.2667],"t":23}],"sid":"sdf"},"r":1,"o":{"a":0,"k":100}}],"ind":1},{"ty":4,"nm":"Rectangle 1","sr":1,"st":0,"op":150,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[133,210.8551]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"shapes":[{"ty":"rc","bm":0,"hd":false,"nm":"Rectangle Path 1","d":1,"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"s":{"a":0,"k":[58.00000000000001,65.71021919669215]}},{"ty":"fl","bm":0,"hd":false,"nm":"Fill","c":{"a":0,"k":[1,0.5569,0.9255],"sid":"sdf"},"r":1,"o":{"a":0,"k":100}}],"ind":2}],"v":"5.7.0","fr":30,"op":150,"ip":0,"assets":[],"slots":{"sdf":{"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[1,0.5569,0.9255],"t":0},{"s":[0.3176,0.0157,0.2667],"t":23}]}}}} \ No newline at end of file