52 lines
1.2 KiB
C++
52 lines
1.2 KiB
C++
/* -----------------------------------------------------------------------------
|
|
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__
|