tvg_loader interpreter: tiny optmization
authorHermet Park <chuneon.park@samsung.com>
Tue, 2 Nov 2021 10:46:00 +0000 (19:46 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Thu, 4 Nov 2021 00:38:12 +0000 (09:38 +0900)
skip memory copy as possible.

src/examples/images/lineargrad1.tvg
src/examples/images/radialgrad1.tvg
src/examples/images/test.tvg
src/loaders/tvg/tvgTvgBinInterpreter.cpp

index f307bb9..9ff29ea 100644 (file)
Binary files a/src/examples/images/lineargrad1.tvg and b/src/examples/images/lineargrad1.tvg differ
index 3fdbeae..9c71ee6 100644 (file)
Binary files a/src/examples/images/radialgrad1.tvg and b/src/examples/images/radialgrad1.tvg differ
index f354a5b..3070b70 100644 (file)
Binary files a/src/examples/images/test.tvg and b/src/examples/images/test.tvg differ
index 383ae89..5469494 100644 (file)
@@ -87,9 +87,8 @@ static bool _parsePaintProperty(TvgBinBlock block, Paint *paint)
         }
         case TVG_TAG_PAINT_TRANSFORM: {
             if (block.length != SIZE(Matrix)) return false;
-            Matrix matrix;
-            memcpy(&matrix, block.data, SIZE(Matrix));
-            paint->transform(matrix);
+            auto transform = (Matrix*)(block.data);
+            paint->transform(*transform);
             return true;
         }
         case TVG_TAG_PAINT_CMP_TARGET: {
@@ -227,9 +226,8 @@ static unique_ptr<Fill> _parseShapeFill(const char *ptr, const char *end)
             }
             case TVG_TAG_FILL_TRANSFORM: {
                 if (!fillGrad || block.length != SIZE(Matrix)) return nullptr;
-                Matrix gradTransform;
-                memcpy(&gradTransform, block.data, SIZE(Matrix));
-                fillGrad->transform(gradTransform);
+                auto transform = (Matrix*)(block.data);
+                fillGrad->transform(*transform);
                 break;
             }
             default: {