From f1d5571aad555038c8cfd8f90be81922928d4f69 Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Fri, 28 May 2021 04:30:09 +0200 Subject: [PATCH] Revert "svg_loader: clipping composite layer is added independently on the bounds of the shapes" This reverts commit c38e4e40a7e0a573200e03ea57941a30f88b9939. It was pushed by mistake. The same changes are currently under rev in PR #399 --- src/loaders/svg/tvgSvgSceneBuilder.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index 87b8a22b..464f267d 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -402,18 +402,25 @@ unique_ptr svgSceneBuild(SvgNode* node, float vx, float vy, float vw, flo { if (!node || (node->type != SvgNodeType::Doc)) return nullptr; + unique_ptr root; auto docNode = _sceneBuildHelper(node, vx, vy, vw, vh); + float x, y, w, h; - auto viewBoxClip = Shape::gen(); - viewBoxClip->appendRect(vx, vy ,vw, vh, 0, 0); - viewBoxClip->fill(0, 0, 0, 255); + if (docNode->bounds(&x, &y, &w, &h) != Result::Success) return nullptr; - auto compositeLayer = Scene::gen(); - compositeLayer->composite(move(viewBoxClip), CompositeMethod::ClipPath); - compositeLayer->push(move(docNode)); + if (x < vx || y < vy || w > vh || h > vh) { + auto viewBoxClip = Shape::gen(); + viewBoxClip->appendRect(vx, vy ,vw, vh, 0, 0); + viewBoxClip->fill(0, 0, 0, 255); - auto root = Scene::gen(); - root->push(move(compositeLayer)); + auto compositeLayer = Scene::gen(); + compositeLayer->composite(move(viewBoxClip), CompositeMethod::ClipPath); + compositeLayer->push(move(docNode)); + root = Scene::gen(); + root->push(move(compositeLayer)); + } else { + root = move(docNode); + } return root; }