loader/svg: Fix maskContentUnits userSpaceOnUse/objectBoundingBox

Fixes #1694
This commit is contained in:
Martin Capitanio 2023-10-10 12:53:17 +02:00 committed by Hermet Park
parent 12f2f2db44
commit 1112dc91dc

View file

@ -284,8 +284,12 @@ static void _applyComposition(SvgLoaderData& loaderData, Paint* paint, const Svg
bool isMaskWhite = true; bool isMaskWhite = true;
if (auto comp = _sceneBuildHelper(loaderData, compNode, vBox, svgPath, true, 0, &isMaskWhite)) { if (auto comp = _sceneBuildHelper(loaderData, compNode, vBox, svgPath, true, 0, &isMaskWhite)) {
Matrix finalTransform = _compositionTransform(paint, node, compNode, SvgNodeType::Mask); if (!compNode->node.mask.userSpace) {
comp->transform(finalTransform); 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) { if (compNode->node.mask.type == SvgMaskType::Luminance && !isMaskWhite) {
paint->composite(std::move(comp), CompositeMethod::LumaMask); paint->composite(std::move(comp), CompositeMethod::LumaMask);