From 3752ad93b3197fb8373ecd84376b4d24d49c6795 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Tue, 12 Sep 2023 12:30:05 +0900 Subject: [PATCH] loader/lottie: do not draw zero size content skip rendering by setting opacity zero, if the scale factor is zero. --- src/loaders/lottie/tvgLottieBuilder.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/loaders/lottie/tvgLottieBuilder.cpp b/src/loaders/lottie/tvgLottieBuilder.cpp index 3b10bd5c..9c0b6299 100644 --- a/src/loaders/lottie/tvgLottieBuilder.cpp +++ b/src/loaders/lottie/tvgLottieBuilder.cpp @@ -125,7 +125,9 @@ static bool _updateTransform(LottieTransform* transform, int32_t frameNo, bool a auto anchor = transform->anchor(frameNo); mathTranslateR(&matrix, -anchor.x, -anchor.y); - opacity = transform->opacity(frameNo); + //invisible just in case. + if (scale.x == 0.0f || scale.y == 0.0f) opacity = 0; + else opacity = transform->opacity(frameNo); return true; } @@ -779,20 +781,20 @@ static void _updateLayer(LottieLayer* root, LottieLayer* layer, int32_t frameNo) { //visibility if (frameNo < layer->inFrame || frameNo > layer->outFrame) return; - auto opacity = layer->opacity(frameNo); - if (opacity == 0) return; _updateTransform(layer, frameNo); //Prepare render data layer->scene = Scene::gen().release(); - layer->scene->transform(layer->cache.matrix); //FIXME: Ignore opacity when Null layer? if (layer->type != LottieLayer::Null) { layer->scene->opacity(layer->cache.opacity); + if (layer->cache.opacity == 0) return; } + layer->scene->transform(layer->cache.matrix); + auto rFrameNo = layer->remap(frameNo); switch (layer->type) {