tvg_saver: add 4 bytes reserved area for future extensions.

This memory can be used for storing feature flags.
This commit is contained in:
Hermet Park 2021-08-06 10:38:07 +09:00
parent af002df5ff
commit b6590314f6
4 changed files with 9 additions and 5 deletions

Binary file not shown.

View 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

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

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