From 95ebbe4339674f4b97f197a4b1cc2e82918d2c5a Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 3 Jul 2023 16:02:13 +0900 Subject: [PATCH] common array: + copy constructor introduce the copy constructor to prevent duplicated code. --- src/lib/tvgArray.h | 9 +++++++++ src/lib/tvgShapeImpl.h | 12 +++--------- src/loaders/svg/tvgSvgLoaderCommon.h | 2 +- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/lib/tvgArray.h b/src/lib/tvgArray.h index d956ca35..0d000e21 100644 --- a/src/lib/tvgArray.h +++ b/src/lib/tvgArray.h @@ -35,6 +35,15 @@ struct Array uint32_t count = 0; uint32_t reserved = 0; + Array(){} + + Array(const Array& rhs) + { + reserve(rhs.reserved); + count = rhs.count; + memcpy(data, rhs.data, sizeof(T) * count); + } + void push(T element) { if (count + 1 > reserved) { diff --git a/src/lib/tvgShapeImpl.h b/src/lib/tvgShapeImpl.h index 1015a88d..7376e7a5 100644 --- a/src/lib/tvgShapeImpl.h +++ b/src/lib/tvgShapeImpl.h @@ -316,16 +316,10 @@ struct Shape::Impl //Path if (rs.path.cmds.count > 0 && rs.path.pts.count > 0) { - dup->rs.path.cmds.reserve(rs.path.cmds.reserved); - dup->rs.path.pts.reserve(rs.path.pts.reserved); - - dup->rs.path.cmds.count = rs.path.cmds.count; - memcpy(dup->rs.path.cmds.data, rs.path.cmds.data, sizeof(PathCommand) * dup->rs.path.cmds.count); - - dup->rs.path.pts.count = rs.path.pts.count; - memcpy(dup->rs.path.pts.data, rs.path.pts.data, sizeof(Point) * dup->rs.path.pts.count); + dup->rs.path.cmds = rs.path.cmds; + dup->rs.path.pts = rs.path.pts; + dup->flag |= RenderUpdateFlag::Path; } - dup->flag |= RenderUpdateFlag::Path; //Stroke if (rs.stroke) { diff --git a/src/loaders/svg/tvgSvgLoaderCommon.h b/src/loaders/svg/tvgSvgLoaderCommon.h index b9abe6a5..69c091c3 100644 --- a/src/loaders/svg/tvgSvgLoaderCommon.h +++ b/src/loaders/svg/tvgSvgLoaderCommon.h @@ -542,7 +542,7 @@ struct SvgNodeIdPair struct SvgLoaderData { - Array stack = {nullptr, 0, 0}; + Array stack; SvgNode* doc = nullptr; SvgNode* def = nullptr; SvgNode* cssStyle = nullptr;