From 88ed685f1da609c107e8095792b4bb446cf7c480 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Mon, 6 Jul 2020 14:09:52 +0900 Subject: [PATCH] SvgLoader: Skip unnecessary transform calc Change-Id: I58e3baae6d68a2ad4a34c8b460fe67bd36f03b3d --- src/loaders/svg_loader/tvgSvgSceneBuilder.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/loaders/svg_loader/tvgSvgSceneBuilder.cpp b/src/loaders/svg_loader/tvgSvgSceneBuilder.cpp index 2be0122..442cde4 100644 --- a/src/loaders/svg_loader/tvgSvgSceneBuilder.cpp +++ b/src/loaders/svg_loader/tvgSvgSceneBuilder.cpp @@ -48,9 +48,9 @@ unique_ptr _applyProperty(SvgNode* node, unique_ptr vg) if (node->transform) { float tx = 0, ty = 0, s = 0, z = 0; _getTransformationData(node->transform, &tx, &ty, &s, &z); - vg->scale(s); - vg->rotate(z); - vg->translate(tx, ty); + if (!(fabsf(s - 1) <= FLT_EPSILON)) vg->scale(s); + if (!(fmod(fabsf(z), 360.0) <= FLT_EPSILON)) vg->rotate(fmod(z, 360.0)); + if (!(fabsf(tx) <= FLT_EPSILON) && !(fabsf(ty) <= FLT_EPSILON)) vg->translate(tx, ty); } if (node->type == SvgNodeType::Doc) return vg; @@ -174,9 +174,9 @@ unique_ptr _sceneBuildHelper(SvgNode* node) if (node->transform) { float tx = 0, ty = 0, s = 0, z = 0; _getTransformationData(node->transform, &tx, &ty, &s, &z); - scene->scale(s); - scene->rotate(z); - scene->translate(tx, ty); + if (!(fabsf(s - 1) <= FLT_EPSILON)) scene->scale(s); + if (!(fmod(fabsf(z), 360.0) <= FLT_EPSILON)) scene->rotate(fmod(z, 360.0)); + if (!(fabsf(tx) <= FLT_EPSILON) && !(fabsf(ty) <= FLT_EPSILON)) scene->translate(tx, ty); } for (vector::iterator itrChild = node->child.begin(); itrChild != node->child.end(); itrChild++) { SvgNode* child = *itrChild; -- 2.7.4