tvg_saver: add 4 bytes reserved area for future extensions.
authorHermet Park <chuneon.park@samsung.com>
Fri, 6 Aug 2021 01:38:07 +0000 (10:38 +0900)
committerHermet Park <chuneon.park@samsung.com>
Mon, 9 Aug 2021 06:35:31 +0000 (15:35 +0900)
This memory can be used for storing feature flags.

src/examples/images/test.tvg
src/lib/tvgBinaryDesc.h
src/loaders/tvg/tvgTvgLoader.cpp
src/savers/tvg/tvgTvgSaver.cpp

index 4ea5404..56cc056 100644 (file)
Binary files a/src/examples/images/test.tvg and b/src/examples/images/test.tvg differ
index 218553e..fe87890 100644 (file)
@@ -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
index 8a1a460..6d0433a 100644 (file)
@@ -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);
index 2cc46e4..a373be5 100644 (file)
@@ -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));