diff options
author | oehhar <harald.oehlmann@elmicron.de> | 2022-11-22 15:21:46 (GMT) |
---|---|---|
committer | oehhar <harald.oehlmann@elmicron.de> | 2022-11-22 15:21:46 (GMT) |
commit | b11488bb157992950cbcb109377b281c4c79ad45 (patch) | |
tree | 8d161a2e27c61a807ff34caec846e769d7037438 /generic/nanosvg.h | |
parent | 4dd4557d1b695615fc7b2122831f95b116c887d2 (diff) | |
download | tk-b11488bb157992950cbcb109377b281c4c79ad45.zip tk-b11488bb157992950cbcb109377b281c4c79ad45.tar.gz tk-b11488bb157992950cbcb109377b281c4c79ad45.tar.bz2 |
nanosvg#167: complex path rendered wrong: https://github.com/memononen/nanosvg/commit/f0a3e1034dd22e2e87e5db22401e44998383124e
Diffstat (limited to 'generic/nanosvg.h')
-rw-r--r-- | generic/nanosvg.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/generic/nanosvg.h b/generic/nanosvg.h index d3cfba2..862b7d4 100644 --- a/generic/nanosvg.h +++ b/generic/nanosvg.h @@ -1266,6 +1266,19 @@ static const char* nsvg__parseNumber(const char* s, char* it, const int size) return s; } +static const char* nsvg__getNextPathItemWhenArcFlag(const char* s, char* it) +{ + it[0] = '\0'; + while (*s && (nsvg__isspace(*s) || *s == ',')) s++; + if (!*s) return s; + if (*s == '0' || *s == '1') { + it[0] = *s++; + it[1] = '\0'; + return s; + } + return s; +} + static const char* nsvg__getNextPathItem(const char* s, char* it) { it[0] = '\0'; @@ -2374,7 +2387,11 @@ static void nsvg__parsePath(NSVGparser* p, const char** attr) nargs = 0; while (*s) { - s = nsvg__getNextPathItem(s, item); + item[0] = '\0'; + if ((cmd == 'A' || cmd == 'a') && (nargs == 3 || nargs == 4)) + s = nsvg__getNextPathItemWhenArcFlag(s, item); + if (!*item) + s = nsvg__getNextPathItem(s, item); if (!*item) break; if (cmd != '\0' && nsvg__isCoordinate(item)) { if (nargs < 10) |