/* smalliff.h */

#define MAXWIDTH  376 /* max non-HIRES width */
#define MAXHEIGHT 242 /* max non-interlaced height */
#define MAXCOLORS 32  /* max # colors supported */
#define MakeID(a,b,c,d) ((a)<<24L | (b)<<16L | (c)<<8 | (d))

#define ID_FORM MakeID('F','O','R','M')
#define ID_ILBM MakeID('I','L','B','M')
#define ID_BMHD MakeID('B','M','H','D')
#define ID_CAMG MakeID('C','A','M','G')
#define ID_CMAP MakeID('C','M','A','P')
#define ID_BODY MakeID('B','O','D','Y')

#define cmpByteRun1 1
typedef LONG ID;

#define WordAlign(a) (((a)+1)&(~1L))

typedef struct {ID ckID; LONG ckSize;} ChunkHeader;

typedef struct {
  short w,h,x,y;
  char  nPlanes,masking,compression,pad1;
  short transparentColor;
  char  xAspect, yAspect;
  short pageWidth,pageHeight;
} BitMapHeader;

typedef struct {
  BitMapHeader    bmhd;                  /* Obtained from a BHMD chunk */
  unsigned short  colortable[MAXCOLORS]; /* Obtained from CMAP chunk */
  unsigned char   colorcount;            /* Number of colors read in from CMAP */
  unsigned char   *rawsource;            /* This is obtained from a BODY chunk */
  unsigned long   rawsourcesize;         /* And the number of bytes read */
  unsigned long   viewmodes;             /* Obtained from CAMG chunk */
} PicInfoStruct;
