From 24a3915dbfd9685e226e4a4a3a7899acfe885159 Mon Sep 17 00:00:00 2001 From: Rodrigo Arias Mallo Date: Sun, 7 Jul 2024 12:25:47 +0200 Subject: Add support for g and symbol inside defs These are used by Wolfram equations, example: https://mathworld.wolfram.com/images/equations/FourierTransform/Inline7.svg https://mathworld.wolfram.com/FourierTransform.html --- src/nanosvg.h | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/nanosvg.h b/src/nanosvg.h index e3610e80..3d6b4385 100644 --- a/src/nanosvg.h +++ b/src/nanosvg.h @@ -2833,6 +2833,14 @@ static void nsvg__startElement(void* ud, const char* el, const char** attr) nsvg__pushAttr(p); nsvg__parsePath(p, attr); nsvg__popAttr(p); + } else if (strcmp(el, "g") == 0) { + nsvg__pushAttr(p); + nsvg__parseAttribs(p, attr); + /* left open */ + } else if (strcmp(el, "symbol") == 0) { + nsvg__pushAttr(p); + nsvg__parseAttribs(p, attr); + /* left open */ } else { fprintf(stderr, "nanosvg: skipping unknown element \"%s\" in \n", el); } @@ -2842,6 +2850,7 @@ static void nsvg__startElement(void* ud, const char* el, const char** attr) if (strcmp(el, "g") == 0) { nsvg__pushAttr(p); nsvg__parseAttribs(p, attr); + /* left open */ } else if (strcmp(el, "use") == 0) { nsvg__pushAttr(p); nsvg__parseUse(p, attr); @@ -2895,12 +2904,20 @@ static void nsvg__endElement(void* ud, const char* el) { NSVGparser* p = (NSVGparser*)ud; + if (p->defsFlag) { + if (strcmp(el, "g") == 0) + nsvg__popAttr(p); + else if (strcmp(el, "symbol") == 0) + nsvg__popAttr(p); + else if (strcmp(el, "defs") == 0) + p->defsFlag = 0; + return; + } + if (strcmp(el, "g") == 0) { nsvg__popAttr(p); } else if (strcmp(el, "path") == 0) { p->pathFlag = 0; - } else if (strcmp(el, "defs") == 0) { - p->defsFlag = 0; } } -- cgit v1.2.3