From b6590314f6cdbb26d245a55c6d823ec374792f09 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Fri, 6 Aug 2021 10:38:07 +0900 Subject: [PATCH] tvg_saver: add 4 bytes reserved area for future extensions. This memory can be used for storing feature flags. --- src/examples/images/test.tvg | Bin 302022 -> 302026 bytes src/lib/tvgBinaryDesc.h | 2 +- src/loaders/tvg/tvgTvgLoader.cpp | 7 +++++-- src/savers/tvg/tvgTvgSaver.cpp | 5 +++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/examples/images/test.tvg b/src/examples/images/test.tvg index 4ea5404e26893bfd11372e95634f7d70b891b1e9..56cc056366d57e719eac987b2d996cc37b78edf3 100644 GIT binary patch delta 39 tcmX@MUFg(yA%T#L{Gu>-0|NsS0|N#iXyj?-VQl4LYUN?x%EPj2HURVh3h@8{ delta 35 rcmX@LUFg_$A)b(o{Gu>-0|NsS1A|6^RsqIV0j5>~=B)xOyJiCb+87G~ diff --git a/src/lib/tvgBinaryDesc.h b/src/lib/tvgBinaryDesc.h index 218553ec..fe87890b 100644 --- a/src/lib/tvgBinaryDesc.h +++ b/src/lib/tvgBinaryDesc.h @@ -40,7 +40,7 @@ using TvgBinFlag = TvgBinByte; #define TVG_HEADER_SIGNATURE_LENGTH 6 #define TVG_HEADER_VERSION "000400" //Major 00, Minor 04, Micro 00 #define TVG_HEADER_VERSION_LENGTH 6 - +#define TVG_HEADER_RESERVED_LENGTH 4 //Storing flags for extensions //Paint Type #define TVG_TAG_CLASS_PICTURE (TvgBinTag)0xfc diff --git a/src/loaders/tvg/tvgTvgLoader.cpp b/src/loaders/tvg/tvgTvgLoader.cpp index 8a1a4605..6d0433a8 100644 --- a/src/loaders/tvg/tvgTvgLoader.cpp +++ b/src/loaders/tvg/tvgTvgLoader.cpp @@ -59,10 +59,13 @@ bool TvgLoader::readHeader() ptr += TVG_HEADER_VERSION_LENGTH; this->version = atoi(version); if (this->version > THORVG_VERSION_NUMBER()) { - TVGLOG("TVG", "This TVG file expects a higher version(%d) of ThorVG symbol!, Current ThorVG(%d)", this->version, THORVG_VERSION_NUMBER()); + TVGLOG("TVG", "This TVG file expects a higher version(%d) of ThorVG symbol(%d)", this->version, THORVG_VERSION_NUMBER()); } - //3. View Size + //3. Reserved + ptr += TVG_HEADER_RESERVED_LENGTH; + + //4. View Size READ_FLOAT(&w, ptr); ptr += SIZE(float); READ_FLOAT(&h, ptr); diff --git a/src/savers/tvg/tvgTvgSaver.cpp b/src/savers/tvg/tvgTvgSaver.cpp index 2cc46e4e..a373be53 100644 --- a/src/savers/tvg/tvgTvgSaver.cpp +++ b/src/savers/tvg/tvgTvgSaver.cpp @@ -83,7 +83,8 @@ bool TvgSaver::flushTo(const std::string& path) /* WARNING: Header format shall not changed! */ bool TvgSaver::writeHeader() { - buffer.grow(TVG_HEADER_SIGNATURE_LENGTH + TVG_HEADER_VERSION_LENGTH); + auto headerSize = TVG_HEADER_SIGNATURE_LENGTH + TVG_HEADER_VERSION_LENGTH + TVG_HEADER_RESERVED_LENGTH + SIZE(vsize); + buffer.grow(headerSize); //1. Signature auto ptr = buffer.ptr(); @@ -94,7 +95,7 @@ bool TvgSaver::writeHeader() memcpy(ptr, TVG_HEADER_VERSION, TVG_HEADER_VERSION_LENGTH); ptr += TVG_HEADER_VERSION_LENGTH; - buffer.count += (TVG_HEADER_SIGNATURE_LENGTH + TVG_HEADER_VERSION_LENGTH); + buffer.count += (TVG_HEADER_SIGNATURE_LENGTH + TVG_HEADER_VERSION_LENGTH + TVG_HEADER_RESERVED_LENGTH); //3. View Size writeData(vsize, SIZE(vsize));