aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRodrigo Arias Mallo <rodarima@gmail.com>2024-07-07 12:25:47 +0200
committerRodrigo Arias Mallo <rodarima@gmail.com>2024-07-26 00:39:27 +0200
commit24a3915dbfd9685e226e4a4a3a7899acfe885159 (patch)
tree971d95ba09817a83cf866861d8ab608b0a5a89ce /src
parent4579a3ec41fef0ee7f15de2f6572bccc83be9489 (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.h21
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;
}
}