IMA_ExtDecoder_Gamma, /* ULONG, gamma correction value */
IMA_ExtDecoder_BGColour, /* 0x00RRGGBB - for PNG */
IMA_ExtDecoder_ReducedProgressiveness,
IMV_ExtDecoder_NumberOf
};
enum
{
IMA_Container_Screen = IMV_Container_Base,
IMA_Container_ColourCube,
IMA_Container_ReleaseColourCube,
IMV_Container_NumberOf
};
enum
{
IMM_NewFrame = IMV_Base,
IMM_ReceiveData,
IMM_EndFrame,
IMM_Abort,
IMA_Next,
IMV_NumberOf
};
enum
{
IMM_FSDither_CacheLine = IMV_FSDither_Base,
IMM_FSDither_FreeCacheLine,
IMM_FSDither_NewErrorLine,
IMM_FSDither_FreeErrorLine,
IMA_FSDither_ColourCube,
IMV_FSDither_NumberOf
};
enum
{
IMA_Remap_ColourCube = IMV_Remap_Base,
IMV_Remap_NumberOf
};
enum
{
IMA_Probe_NewFrameHook = IMV_Probe_Base,
IMA_Probe_ReceiveDataHook,
IMA_Probe_EndFrameHook,
IMA_Probe_NunberOf
};
enum
{
IMM_File_Load = IMV_File_Base,
IMA_File_BufferSize,
IMV_File_NumberOf
};
enum
{
IMA_ScaleX_Width = IMV_ScaleX_Base,
IMA_ScaleX_Percent,
IMA_ScaleX_NunberOf
};
enum
{
IMA_Raster_RastPort = IMV_Raster_Base,
IMA_Raster_Left,
IMA_Raster_Top,
IMA_Raster_Right,
IMA_Raster_Bottom,
IMA_Raster_OffsetX,
IMA_Raster_OffsetY,
IMV_Raster_NumberOf
};
enum
{
IMA_ScaleY_Height = IMV_ScaleY_Base,
IMA_ScaleY_Percent,
IMM_ScaleY_Interpolate, /* Private */
IMV_ScaleY_NunberOf
};
enum
{
IMA_Bitmap_Bitmap = IMV_Bitmap_Base,
IMA_Bitmap_Friend,
IMV_Bitmap_NumberOf
};
/* IMM_Error & IMM_Warning */
struct IMP_ExtDecoder_Message
{
ULONG MethodID;
STRPTR String;
APTR Parms;
};
/* You're sent data with this method. */
struct IMP_ExtDecoder_ReceiveData
{
ULONG MethodID;
UBYTE *Buffer;
ULONG Length;
ULONG Flags;
};
/* When you know the dimensions of the image
(or frame for animations) then you invoke
this method on yourself. */
struct IMP_ExtDecoder_NewFrame
{
ULONG MethodID;
ULONG Width, Height;
struct TagItem Tags; /* see below for definitions */
};
enum
{
NFA_Transparency = TAG_USER, /* see below */
NFA_Background, /* background colour of image */
/* Following tags are for animations */
NFA_ScrWidth,
NFA_ScrHeight,
NFA_LeftOfs,
NFA_TopOfs,
NFA_FrameDelay,
NFA_FrameDisposal,
NFA_LoopCount,
NFA_NumberOf
};
enum
{
TransparencyNONE = 0, /* The image does not contain transparent colours */
TransparencySINGLE, /* The image has a monochrome mask ( A = 0x00 | 0xFF ) */
TransparencyALPHA /* The image has a complex mask ( 0x00 <= A <= 0xFF ) */
};
enum
{
ProgressiveOmitNone = 0,
ProgressiveOmitIntermediate,
ProgressiveOmitAll
};
/* Whenever you have a line to output, you call this method */
struct IMP_ExtDecoder_SendLine
{
ULONG MethodID;
ULONG *LineBuffer; /* Line buffer in RGBA format */
ULONG Y, Height; /* Position and height of line - Height > 1 e.g. for interlaced GIFs */
ULONG Flags; /* See below */
};
#define IMB_ExtDecoder_SendLine_Draft 0 /* This line is just a rough draft, a new one will be outputed later, at same position */
#define IMB_ExtDecoder_SendLine_KeepIntact 1 /* The owner of the buffer will need the line for further operations so make a copy if you need to destroy it */