#pragma once #include "EHS.h" #include "Str.h" #include "io/File.h" namespace ehs { class Img; class ImgCodec { private: Str_8 id; UInt_64 hashExt; Str_8 ext; Endianness endianness; bool (*encodeCb)(const ImgCodec* const, Serializer&, const Img*); bool (*decodeCb)(const ImgCodec* const, Serializer&, Img*); public: ImgCodec(); ImgCodec(Str_8 id, Str_8 ext, const Endianness end, bool (*encodeCb)(const ImgCodec* const, Serializer&, const Img*), bool (*decodeCb)(const ImgCodec* const, Serializer&, Img*)); ImgCodec(ImgCodec&& codec) noexcept; ImgCodec(const ImgCodec& codec); ImgCodec& operator=(ImgCodec&& codec) noexcept; ImgCodec& operator=(const ImgCodec& codec); Str_8 GetId() const; UInt_64 GetHashExt() const; Str_8 GetExt() const; Endianness GetEndianness() const; bool Encode(Serializer& out, const Img* in) const; bool Decode(Serializer& in, Img* out) const; }; }