svg_loader: fixing grad overwritting

Gradient was mistakenly overwritten in
files in which the <def> section existed,
but grad was defined outside it.
This commit is contained in:
Mira Grudzinska 2023-04-25 01:30:11 +02:00 committed by Hermet Park
parent 92dbc8507e
commit 83ffe9f612

View file

@ -3265,18 +3265,24 @@ static void _updateGradient(SvgLoaderData* loader, SvgNode* node, Array<SvgStyle
}
} else {
if (node->style->fill.paint.url) {
if (node->style->fill.paint.gradient) {
node->style->fill.paint.gradient->clear();
free(node->style->fill.paint.gradient);
auto newGrad = _gradientDup(loader, gradients, node->style->fill.paint.url);
if (newGrad) {
if (node->style->fill.paint.gradient) {
node->style->fill.paint.gradient->clear();
free(node->style->fill.paint.gradient);
}
node->style->fill.paint.gradient = newGrad;
}
node->style->fill.paint.gradient = _gradientDup(loader, gradients, node->style->fill.paint.url);
}
if (node->style->stroke.paint.url) {
if (node->style->stroke.paint.gradient) {
node->style->stroke.paint.gradient->clear();
free(node->style->stroke.paint.gradient);
auto newGrad = _gradientDup(loader, gradients, node->style->stroke.paint.url);
if (newGrad) {
if (node->style->stroke.paint.gradient) {
node->style->stroke.paint.gradient->clear();
free(node->style->stroke.paint.gradient);
}
node->style->stroke.paint.gradient = newGrad;
}
node->style->stroke.paint.gradient = _gradientDup(loader, gradients, node->style->stroke.paint.url);
}
}
}