tvg_saver: skip the invisible paint as possible.
authorHermet Park <chuneon.park@samsung.com>
Mon, 9 Aug 2021 11:31:49 +0000 (20:31 +0900)
committerJunsuChoi <jsuya.choi@samsung.com>
Wed, 11 Aug 2021 00:20:21 +0000 (09:20 +0900)
src/savers/tvg/tvgTvgSaver.cpp
src/savers/tvg/tvgTvgSaver.h

index a373be5..32ac23f 100644 (file)
@@ -412,7 +412,7 @@ TvgBinCounter TvgSaver::serializeComposite(const Paint* cmpTarget, CompositeMeth
     auto flag = static_cast<TvgBinFlag>(cmpMethod);
     auto cnt = writeTagProperty(TVG_TAG_PAINT_CMP_METHOD, SIZE(TvgBinFlag), &flag);
 
-    cnt += serialize(cmpTarget, nullptr);
+    cnt += serialize(cmpTarget, nullptr, true);
 
     writeReservedCount(cnt);
 
@@ -436,10 +436,13 @@ TvgBinCounter TvgSaver::serializeChildren(const Paint* paint, const Matrix* tran
 }
 
 
-TvgBinCounter TvgSaver::serialize(const Paint* paint, const Matrix* transform)
+TvgBinCounter TvgSaver::serialize(const Paint* paint, const Matrix* transform, bool compTarget)
 {
     if (!paint) return 0;
 
+    //Invisible paint, no point to save it if the paint is not the composition target...
+    if (!compTarget && paint->opacity() == 0) return 0;
+
     auto m = const_cast<Paint*>(paint)->transform();
     if (transform) m = _multiply(transform, &m);
 
index fb8190b..b2ad4fa 100644 (file)
@@ -49,7 +49,7 @@ private:
     TvgBinCounter writeTagProperty(TvgBinTag tag, TvgBinCounter cnt, const void* data);
     TvgBinCounter writeTransform(const Matrix* transform);
 
-    TvgBinCounter serialize(const Paint* paint, const Matrix* transform);
+    TvgBinCounter serialize(const Paint* paint, const Matrix* transform, bool compTarget = false);
     TvgBinCounter serializeScene(const Scene* scene, const Matrix* transform);
     TvgBinCounter serializeShape(const Shape* shape, const Matrix* transform);
     TvgBinCounter serializePicture(const Picture* picture, const Matrix* transform);