From f0540d753a86c70fb396977373a11312262ca9c9 Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Thu, 11 Mar 2021 17:20:41 +0100 Subject: [PATCH] svg_loader: applying AlphaMask during scene building The AlphaMask composition case was omitted in the _sceneBuilderHelper(). --- src/loaders/svg/tvgSvgSceneBuilder.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index af8952a3..a32df107 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -378,6 +378,16 @@ unique_ptr _sceneBuildHelper(const SvgNode* node, float vx, float vy, flo scene->composite(move(comp), CompositeMethod::ClipPath); } } + //Composite AlphaMask + if (((int)node->style->comp.flags & (int)SvgCompositeFlags::AlphaMask)) { + auto compNode = node->style->comp.node; + if (compNode->child.count > 0) { + auto comp = Shape::gen(); + auto child = compNode->child.data; + for (uint32_t i = 0; i < compNode->child.count; ++i, ++child) _appendChildShape(*child, comp.get(), vx, vy, vw, vh); + scene->composite(move(comp), CompositeMethod::AlphaMask); + } + } } scene->opacity(node->style->opacity); }