From 332012dd6b47e8d0a7c019fa373fd49f58a8ab44 Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Wed, 14 Apr 2021 01:19:33 +0200 Subject: [PATCH] loader svg: displaying SVG images without the specified viewBox attribute If no viewBox attribute is given, the height and width attributes are used to establish the viewBox size. However, this information was not available inside the scene builder, even though it was needed. --- src/loaders/svg/tvgSvgLoader.cpp | 2 +- src/loaders/svg/tvgSvgSceneBuilder.cpp | 7 +------ src/loaders/svg/tvgSvgSceneBuilder.h | 2 +- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/loaders/svg/tvgSvgLoader.cpp b/src/loaders/svg/tvgSvgLoader.cpp index f3598558..6e651e36 100644 --- a/src/loaders/svg/tvgSvgLoader.cpp +++ b/src/loaders/svg/tvgSvgLoader.cpp @@ -2575,7 +2575,7 @@ void SvgLoader::run(unsigned tid) _updateComposite(loaderData.doc, loaderData.doc); if (defs) _updateComposite(loaderData.doc, defs); } - root = svgSceneBuild(loaderData.doc); + root = svgSceneBuild(loaderData.doc, vx, vy, vw, vh); }; diff --git a/src/loaders/svg/tvgSvgSceneBuilder.cpp b/src/loaders/svg/tvgSvgSceneBuilder.cpp index b2be8599..df73370c 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg/tvgSvgSceneBuilder.cpp @@ -398,15 +398,10 @@ static unique_ptr _sceneBuildHelper(const SvgNode* node, float vx, float /* External Class Implementation */ /************************************************************************/ -unique_ptr svgSceneBuild(SvgNode* node) +unique_ptr svgSceneBuild(SvgNode* node, float vx, float vy, float vw, float vh) { if (!node || (node->type != SvgNodeType::Doc)) return nullptr; - auto vx = node->node.doc.vx; - auto vy = node->node.doc.vy; - auto vw = node->node.doc.vw; - auto vh = node->node.doc.vh; - unique_ptr root; auto docNode = _sceneBuildHelper(node, vx, vy, vw, vh); float x, y, w, h; diff --git a/src/loaders/svg/tvgSvgSceneBuilder.h b/src/loaders/svg/tvgSvgSceneBuilder.h index d1b8f8c5..63b6b887 100644 --- a/src/loaders/svg/tvgSvgSceneBuilder.h +++ b/src/loaders/svg/tvgSvgSceneBuilder.h @@ -25,6 +25,6 @@ #include "tvgCommon.h" -unique_ptr svgSceneBuild(SvgNode* node); +unique_ptr svgSceneBuild(SvgNode* node, float vx, float vy, float vw, float vh); #endif //_TVG_SVG_SCENE_BUILDER_H_