From 64a0b84d713f302e834f09702e288905b42cc718 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Tue, 2 Jul 2024 18:51:21 +0900 Subject: [PATCH] lottie: fix a regression bug of masking InverseAlphaMasking should be applied as intended, but it was mistakenly reverted to alpha. regression in v0.14.0 by: 2c7a83406ebf5811af678849b25625d50a9ac4cd --- src/loaders/lottie/tvgLottieBuilder.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/loaders/lottie/tvgLottieBuilder.cpp b/src/loaders/lottie/tvgLottieBuilder.cpp index 31774dd5..2a9913b6 100644 --- a/src/loaders/lottie/tvgLottieBuilder.cpp +++ b/src/loaders/lottie/tvgLottieBuilder.cpp @@ -1145,7 +1145,12 @@ static void _updateMaskings(LottieLayer* layer, float frameNo, LottieExpressions if (pMask->pathset(frameNo, P(pShape)->rs.path.cmds, P(pShape)->rs.path.pts, nullptr, 0.0f, exps)) { P(pShape)->update(RenderUpdateFlag::Path); } - layer->scene->composite(tvg::cast(pShape), (pMethod == CompositeMethod::SubtractMask) ? CompositeMethod::InvAlphaMask : CompositeMethod::AlphaMask); + + if (pMethod == CompositeMethod::SubtractMask || pMethod == CompositeMethod::InvAlphaMask) { + layer->scene->composite(tvg::cast(pShape), CompositeMethod::InvAlphaMask); + } else { + layer->scene->composite(tvg::cast(pShape), CompositeMethod::AlphaMask); + } //Apply the subsquent masks for (auto m = layer->masks.begin() + 1; m < layer->masks.end(); ++m) {