From 1112dc91dca901d7ae55d6660edb0996d6f2330b Mon Sep 17 00:00:00 2001 From: Martin Capitanio Date: Tue, 10 Oct 2023 12:53:17 +0200 Subject: [PATCH] loader/svg: Fix maskContentUnits userSpaceOnUse/objectBoundingBox Fixes #1694 --- src/loaders/svg/tvgSvgSceneBuilder.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index 2e018e27..1791df57 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -284,8 +284,12 @@ static void _applyComposition(SvgLoaderData& loaderData, Paint* paint, const Svg bool isMaskWhite = true; if (auto comp = _sceneBuildHelper(loaderData, compNode, vBox, svgPath, true, 0, &isMaskWhite)) { - Matrix finalTransform = _compositionTransform(paint, node, compNode, SvgNodeType::Mask); - comp->transform(finalTransform); + if (!compNode->node.mask.userSpace) { + Matrix finalTransform = _compositionTransform(paint, node, compNode, SvgNodeType::Mask); + comp->transform(finalTransform); + } else { + if (node->transform) comp->transform(*node->transform); + } if (compNode->node.mask.type == SvgMaskType::Luminance && !isMaskWhite) { paint->composite(std::move(comp), CompositeMethod::LumaMask);