loader/svg: Fix maskContentUnits userSpaceOnUse/objectBoundingBox #1696 10/313810/1
authorjoogab.yun <joogab.yun@samsung.com>
Mon, 1 Jul 2024 05:54:18 +0000 (14:54 +0900)
committerjoogab.yun <joogab.yun@samsung.com>
Tue, 2 Jul 2024 05:33:16 +0000 (14:33 +0900)
Change-Id: Ieeadc6a30cf062e3d9a794873a5a6e37f29a925f

src/loaders/svg/tvgSvgSceneBuilder.cpp

index af003173ea70da37dc629d9106b453698f7cf25e..3744bfd4a5f0c7b0a5f6a446407c6668d6b3ffcd 100644 (file)
@@ -305,8 +305,12 @@ static void _applyComposition(Paint* paint, const SvgNode* node, const Box& vBox
 
             bool isMaskWhite = true;
             if (auto comp = _sceneBuildHelper(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(move(comp), CompositeMethod::LumaMask);