From a72be6159d28424d8454300290593bc671bdda94 Mon Sep 17 00:00:00 2001 From: Mira Grudzinska Date: Thu, 4 Mar 2021 01:20:36 +0100 Subject: [PATCH] svgloader: fixing SVG image display when viewBox size is not given When viewBox is not given its dimensions should be determined by the height and width parameters --- src/loaders/svg/tvgSvgLoader.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/loaders/svg/tvgSvgLoader.cpp b/src/loaders/svg/tvgSvgLoader.cpp index 15858873..f6c9c6ec 100644 --- a/src/loaders/svg/tvgSvgLoader.cpp +++ b/src/loaders/svg/tvgSvgLoader.cpp @@ -744,7 +744,7 @@ static bool _attrParseSvgNode(void* data, const char* key, const char* value) if (!strcmp(value, "none")) doc->preserveAspect = false; } else if (!strcmp(key, "style")) { return simpleXmlParseW3CAttribute(value, _parseStyleAttr, loader); - } + } #ifdef THORVG_LOG_ENABLED else if (!strcmp(key, "xmlns") || !strcmp(key, "xmlns:xlink") || !strcmp (key, "xmlns:svg")) { //No action @@ -2607,8 +2607,14 @@ bool SvgLoader::header() h = vh = loaderData.doc->node.doc.vh; //Override size - if (loaderData.doc->node.doc.w > 0) w = loaderData.doc->node.doc.w; - if (loaderData.doc->node.doc.h > 0) h = loaderData.doc->node.doc.h; + if (loaderData.doc->node.doc.w > 0) { + w = loaderData.doc->node.doc.w; + if (vw < FLT_EPSILON) vw = w; + } + if (loaderData.doc->node.doc.h > 0) { + h = loaderData.doc->node.doc.h; + if (vh < FLT_EPSILON) vh = h; + } preserveAspect = loaderData.doc->node.doc.preserveAspect; } else {