/* myreadpict.h */

#ifndef MYREADPICT_H
#define MYREADPICT_H

#ifndef ILBM_H
#include <iff/ilbm.h>
#endif

#ifndef GRAPHICS_GFX_H
#include <graphics/gfx.h>
#endif

#ifndef PICTURE_H
#include "picture.h"
#endif

#define EXDepth 6        /* Maximum depth (6=HAM) */
#define maxColorReg 32
#define maxCycles   8
#define RNG_NORATE  36   /* Dpaint uses this rate to mean non-active */

typedef struct {
   ULONG ViewModes;
   } CamgChunk;

typedef struct {
   WORD  pad1;   /* future exp - store 0 here */
   WORD  rate;   /* 60/sec=16384, 30/sec=8192, 1/sec=16384/60=273 */
   WORD  active; /* lo bit 0=no cycle, 1=yes; next bit 1=rvs */
   UBYTE low;    /* range lower */
   UBYTE high;   /* range upper */
   } CrngChunk;

typedef struct {
   WORD  direction;  /* 0=don't cycle, 1=forward, -1=backwards */
   UBYTE start;      /* range lower */
   UBYTE end;        /* range upper */
   LONG  seconds;    /* seconds between cycling */
   LONG  microseconds; /* msecs between cycling */
   WORD  pad;        /* future exp - store 0 here */
   } CcrtChunk;


#define GetCAMG(context, camg)  \
    IFFReadBytes(context, (BYTE *)camg, sizeof(CamgChunk))

#define ID_CRNG  MakeID('C','R','N','G')
#define GetCRNG(context, crng)  \
    IFFReadBytes(context, (BYTE *)crng, sizeof(CrngChunk))

#define ID_CCRT  MakeID('C','C','R','T')
#define GetCCRT(context, ccrt)  \
    IFFReadBytes(context, (BYTE *)ccrt, sizeof(CcrtChunk))


typedef struct {
	ClientFrame	clientFrame;
	UBYTE		foundBMHD;
	BitMapHeader	bmHdr;
	/*
	** If you want to read any other property chunks, e.g. GRAB or CAMG, add
	** fields to this record to store them.
	*/
	Picture		*pic;
	NewImage	*ni;
   } ILBMFrame;

typedef UBYTE *UBytePtr;

#ifdef FDwAT
extern IFFP myReadPicture(LONG, ILBMFrame *);
extern struct BitMap *getBitMap(ILBMFrame *);
#else 
extern IFFP myReadPicture();
extern struct BitMap *getBitMap();
#endif

#endif MYREADPICT_H

