diff options
author | Rodrigo Arias Mallo <rodarima@gmail.com> | 2024-07-07 12:25:47 +0200 |
---|---|---|
committer | Rodrigo Arias Mallo <rodarima@gmail.com> | 2024-07-26 00:39:27 +0200 |
commit | 24a3915dbfd9685e226e4a4a3a7899acfe885159 (patch) | |
tree | 971d95ba09817a83cf866861d8ab608b0a5a89ce /src | |
parent | 4579a3ec41fef0ee7f15de2f6572bccc83be9489 (diff) |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/nanosvg.h | 21 |
1 files 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 <defs>\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; } } |