Changed up how resources import/export files. Added Model codecs.

This commit is contained in:
2024-02-20 22:47:52 -08:00
parent 54012df3a1
commit 93f881cf03
20 changed files with 998 additions and 882 deletions

View File

@@ -4,30 +4,29 @@
namespace ehs
{
ImgCodec::ImgCodec()
: hashExt(0), endianness(Endianness::LE), encodeCb(nullptr), decodeCb(nullptr)
: hashExt(0), endianness(Endianness::LE), encoder(nullptr), decoder(nullptr)
{
}
ImgCodec::ImgCodec(Str_8 id, Str_8 ext, const Endianness end,
bool (* encodeCb)(const ImgCodec* const, Serializer<UInt_64>&, const Img*),
bool (* decodeCb)(const ImgCodec* const, Serializer<UInt_64>&, Img*))
: id(std::move(id)), hashExt(ext.Hash_64()), ext(std::move(ext)), endianness(end), encodeCb(encodeCb), decodeCb(decodeCb)
ImgCodec::ImgCodec(Str_8 id, Str_8 ext, const Endianness end, EncodeImgCb encoder, DecodeImgCb decoder)
: id(std::move(id)), hashExt(ext.Hash_64()), ext(std::move(ext)), endianness(end), encoder(encoder),
decoder(decoder)
{
}
ImgCodec::ImgCodec(ImgCodec&& codec) noexcept
: id(std::move(codec.id)), hashExt(codec.hashExt), ext(std::move(codec.ext)), endianness(codec.endianness),
encodeCb(codec.encodeCb), decodeCb(codec.decodeCb)
encoder(codec.encoder), decoder(codec.decoder)
{
codec.hashExt = 0;
codec.endianness = Endianness::LE;
codec.encodeCb = nullptr;
codec.decodeCb = nullptr;
codec.encoder = nullptr;
codec.decoder = nullptr;
}
ImgCodec::ImgCodec(const ImgCodec& codec)
: id(codec.id), hashExt(codec.hashExt), ext(codec.ext), endianness(codec.endianness), encodeCb(codec.encodeCb),
decodeCb(codec.decodeCb)
: id(codec.id), hashExt(codec.hashExt), ext(codec.ext), endianness(codec.endianness), encoder(codec.encoder),
decoder(codec.decoder)
{
}
@@ -40,13 +39,13 @@ namespace ehs
hashExt = codec.hashExt;
ext = std::move(codec.ext);
endianness = codec.endianness;
encodeCb = codec.encodeCb;
decodeCb = codec.decodeCb;
encoder = codec.encoder;
decoder = codec.decoder;
codec.hashExt = 0;
codec.endianness = Endianness::LE;
codec.encodeCb = nullptr;
codec.decodeCb = nullptr;
codec.encoder = nullptr;
codec.decoder = nullptr;
return *this;
}
@@ -60,8 +59,8 @@ namespace ehs
hashExt = codec.hashExt;
ext = codec.ext;
endianness = codec.endianness;
encodeCb = codec.encodeCb;
decodeCb = codec.decodeCb;
encoder = codec.encoder;
decoder = codec.decoder;
return *this;
}
@@ -88,23 +87,23 @@ namespace ehs
bool ImgCodec::Encode(Serializer<UInt_64>& out, const Img* in) const
{
if (!encodeCb)
if (!encoder)
{
EHS_LOG_INT("Error", 0, "Encoding is not supported for the " + id + " format.");
return false;
}
return encodeCb(this, out, in);
return encoder(this, out, in);
}
bool ImgCodec::Decode(Serializer<UInt_64>& in, Img* out) const
{
if (!decodeCb)
if (!decoder)
{
EHS_LOG_INT("Error", 0, "Decoding is not supported for the " + id + " format.");
return false;
}
return decodeCb(this, in, out);
return decoder(this, in, out);
}
}