/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ------------------------------------------------------------------------------*/ #ifndef __NPICTUREIOCODEC__ #define __NPICTUREIOCODEC__ #include "filesystem/io_handle.h" #include "nstring/nstring.h" namespace GS { class Picture; /* @short Picture I/O codec. @author Emmanuel Julien (ejulien@gsworks.fr) */ struct PictureCodec { enum { NoCaps = 0, CanRead = (1 << 0), ///< Codec can read data. CanWrite = (1 << 1), ///< Codec can write data. WriteRaw = (1 << 2), ///< Codec supports raw output. WriteLossy = (1 << 3), ///< Codec supports lossy compression. WriteLossless = (1 << 4), ///< Codec supports lossless compression. AlphaChannel = (1 << 5), ///< Codec supports alpha channel. RealData = (1 << 6) ///< Codec works on real data. }; virtual bool Load(IO::Handle &, Picture &) = 0; virtual bool Save(IO::Handle &, const Picture &) { return false; } virtual const char *GetName() const = 0; virtual const char *GetDesc() const = 0; virtual uint GetCaps() const = 0; virtual ~PictureCodec() {} }; } // GS #endif // __NPICTUREIOCODEC__