From ebe4672eff175bde39db193d061eb9ca4257118a Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 6 Nov 2023 16:46:14 +0900 Subject: [PATCH] saver/gif: Fix a clipping issue. The Lottie loader missed handling the base clipper resizing. This patch addresses the issue. --- src/loaders/lottie/tvgLottieLoader.cpp | 5 +++++ src/savers/gif/tvgGifSaver.cpp | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/loaders/lottie/tvgLottieLoader.cpp b/src/loaders/lottie/tvgLottieLoader.cpp index 549c9968..9d420583 100644 --- a/src/loaders/lottie/tvgLottieLoader.cpp +++ b/src/loaders/lottie/tvgLottieLoader.cpp @@ -274,6 +274,11 @@ bool LottieLoader::resize(Paint* paint, float w, float h) Matrix m = {sx, 0, 0, 0, sy, 0, 0, 0, 1}; paint->transform(m); + //apply the scale to the base clipper + const Paint* clipper; + paint->composite(&clipper); + if (clipper) const_cast(clipper)->transform(m); + return true; } diff --git a/src/savers/gif/tvgGifSaver.cpp b/src/savers/gif/tvgGifSaver.cpp index 93c6bfa9..dd81bc76 100644 --- a/src/savers/gif/tvgGifSaver.cpp +++ b/src/savers/gif/tvgGifSaver.cpp @@ -53,8 +53,7 @@ void GifSaver::run(unsigned tid) //use the default fps if (fps > 60.0f) fps = 60.0f; // just in case - - if (mathZero(fps)) { + else if (mathZero(fps) || fps < 0.0f) { fps = (animation->totalFrame() / animation->duration()); }