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);
}
-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);
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);