summaryrefslogtreecommitdiffstats
path: root/thirdparty/thorvg/src/loaders/svg/tvgSvgUtil.cpp
diff options
context:
space:
mode:
authorMartin Capitanio <capnm@capitanio.org>2023-09-29 14:58:36 +0200
committerMartin Capitanio <capnm@capitanio.org>2023-09-29 19:50:19 +0200
commitaab650f2ef97915e22312e5da543e01989bbfd76 (patch)
tree847d2e5c6033ab1d06122c57beefa6dc6c019aad /thirdparty/thorvg/src/loaders/svg/tvgSvgUtil.cpp
parent19890614c6a78ec36030ce65c7da05f07fcdb9ed (diff)
downloadredot-engine-aab650f2ef97915e22312e5da543e01989bbfd76.tar.gz
ThorVG: update to v0.11.0 release.
See https://github.com/thorvg/thorvg/releases/tag/v0.11.0 + Infrastructure Repository folder structure was make it more intuitive and coherent. "thorvg/src/lib" -> "thorvg/src/common" (providing essential common functionalities used internally among the renderer and sub-modules) "thorvg/src/lib" -> "thorvg/src/renderer" (for vector drawing features) + SVG related Fix stroke regression https://github.com/thorvg/thorvg/issues/1670 Support stroke dash offset function https://github.com/thorvg/thorvg/issues/1591#issuecomment-1681319321 Support Focal property in Radial Gradient https://github.com/thorvg/thorvg/issues/1558
Diffstat (limited to 'thirdparty/thorvg/src/loaders/svg/tvgSvgUtil.cpp')
-rw-r--r--thirdparty/thorvg/src/loaders/svg/tvgSvgUtil.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/thirdparty/thorvg/src/loaders/svg/tvgSvgUtil.cpp b/thirdparty/thorvg/src/loaders/svg/tvgSvgUtil.cpp
index 763a357f99..7940188ade 100644
--- a/thirdparty/thorvg/src/loaders/svg/tvgSvgUtil.cpp
+++ b/thirdparty/thorvg/src/loaders/svg/tvgSvgUtil.cpp
@@ -39,29 +39,32 @@ static uint8_t _hexCharToDec(const char c)
/* External Class Implementation */
/************************************************************************/
-string svgUtilURLDecode(const char *src)
+size_t svgUtilURLDecode(const char *src, char** dst)
{
- if (!src) return nullptr;
+ if (!src) return 0;
auto length = strlen(src);
- if (length == 0) return nullptr;
+ if (length == 0) return 0;
- string decoded;
- decoded.reserve(length);
+ char* decoded = (char*)malloc(sizeof(char) * length + 1);
+ decoded[length] = '\0';
char a, b;
+ int idx =0;
while (*src) {
if (*src == '%' &&
((a = src[1]) && (b = src[2])) &&
(isxdigit(a) && isxdigit(b))) {
- decoded += (_hexCharToDec(a) << 4) + _hexCharToDec(b);
+ decoded[idx++] = (_hexCharToDec(a) << 4) + _hexCharToDec(b);
src+=3;
} else if (*src == '+') {
- decoded += ' ';
+ decoded[idx++] = ' ';
src++;
} else {
- decoded += *src++;
+ decoded[idx++] = *src++;
}
}
- return decoded;
+
+ *dst = decoded;
+ return length + 1;
}