From e293d73f112ef05c88f0f57f7eaa90d959b6545f Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Wed, 1 Jan 2025 18:40:30 +0100 Subject: [PATCH] svg_loader: fix transformation order If a clip was defined by a use node pointing to a basic shape subject to transformation, and the use node itself was translated, the order of applying these transformations was incorrect. --- src/loaders/svg/tvgSvgSceneBuilder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index 00c7408a..17573925 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -213,7 +213,7 @@ static bool _appendClipUseNode(SvgLoaderData& loaderData, SvgNode* node, Shape* Matrix m = {1, 0, node->node.use.x, 0, 1, node->node.use.y, 0, 0, 1}; finalTransform *= m; } - if (child->transform) finalTransform = *child->transform * finalTransform; + if (child->transform) finalTransform *= *child->transform; return _appendClipShape(loaderData, child, shape, vBox, svgPath, identity((const Matrix*)(&finalTransform)) ? nullptr : &finalTransform); }