/*
**	MandelSquare - AmigaDOS 2.0/3.0 Mandelbrot set explorer
**
**	MandelSquareDefs.h, Local symbol definitions
**
**	Copyright © 1991-1992 by Olaf `Olsen' Barthel
**		All Rights Reserved
*/

	/* A bunch of IFF header IDs. */

#define ID_ANIM		MAKE_ID('A','N','I','M')
#define ID_ILBM		MAKE_ID('I','L','B','M')
#define ID_BODY		MAKE_ID('B','O','D','Y')
#define ID_CAMG		MAKE_ID('C','A','M','G')
#define ID_CMAP		MAKE_ID('C','M','A','P')
#define ID_BMHD		MAKE_ID('B','M','H','D')
#define ID_CRNG		MAKE_ID('C','R','N','G')
#define ID_ANHD		MAKE_ID('A','N','H','D')
#define ID_DLTA		MAKE_ID('D','L','T','A')
#define ID_MAND		MAKE_ID('M','A','N','D')

	/* A custom chunk `MandelSquare' saves which each
	 * picture, it contains the coordinates, screen
	 * width and the number iterations set when the
	 * picture was saved.
	 */

typedef struct
{
	double	MinReal,
		MinImaginary;

	double	RealWidth,
		ImaginaryHeight;

	LONG	Iterations;
} MandelHeader;

typedef struct
{
	UWORD		w,h;			/* raster width & height in pixels */
	WORD		x,y;			/* position for this image */
	UBYTE		nPlanes;		/* # source bitplanes */
	UBYTE		masking;		/* masking technique */
	UBYTE		compression;		/* compression algoithm */
	UBYTE		pad1;			/* UNUSED.  For consistency, put 0 here.*/
	UWORD		transparentColor;	/* transparent "color number" */
	UBYTE		xAspect,yAspect;	/* aspect ratio, a rational number x/y */
	WORD		pageWidth,pageHeight;	/* source "page" size in pixels */
} BitMapHeader;

typedef struct
{
	UBYTE		operation;		/* =5 for RIFF style */
	UBYTE		mask;
	UWORD		w,h;
	WORD		x,y;
	ULONG		abstime;		/* for timing w.r.t. start of anim file in jiffies (notused)*/
	ULONG		reltime;		/* for timing w.r.t. last frame in jiffies */
	UBYTE		interleave;		/* =0 for XORing to two frames back, =1 for last frame
						   (not used yet)  */
	UBYTE		pad0;
	ULONG		bits;
	UBYTE		pad[16];
} AnimationHeader;

typedef struct
{
	UBYTE		red,
			green,
			blue;
} ColorRegister;

typedef struct
{
	WORD		pad1;			/* reserved for future use; store 0 here */
	WORD		rate;			/* 60/sec=16384, 30/sec=8192, 1/sec=16384/60=273 */
	WORD		flags;			/* bit0 set = active, bit 1 set = reverse */
	UBYTE		low,			/* lower and upper color registers selected */
			high;
} CRange;

	/* Colour cycling range flags. */

#define RNG_ACTIVE	(1 << 0)
#define RNG_REVERSE	(1 << 1)

	/* Global library pointers. */

extern struct ExecBase	*SysBase;
extern struct Library	*IFFParseBase;

	/* Fixes for SAS/C 6.0. */

#ifdef	WBenchMsg
#undef	WBenchMsg
#endif	/* WBenchMsg */

#define WBenchMsg _WBenchMsg
