/* specialparse.h */

#define STRSIZE		256


typedef enum {None, String, Integer, Number, Dimension} ValTyp;

typedef struct {
	  char    Key[STRSIZE];		/* the keyword string */
	  char    Val[STRSIZE];		/* the value string */
	  ValTyp  vt;			/* the value type */
	  union	{			/* the decoded value */
		    int  i;
		    float n;
	  } v;
	} KeyWord;

typedef struct {
	  char		*Entry;
	  ValTyp	Type;
	} KeyDesc;


#define IFFILE		0
#define HSIZE		1
#define VSIZE		2
#define HOFFSET		3
#define VOFFSET		4
#define SCALE		5
#define HSCALE		6
#define VSCALE		7
#define MODE		8
#define RED		9
#define GREEN	       10
#define BLUE	       11
#define GAMMA	       12

/* Modes */
#define	BandW		0
#define Gray		1
#define Color		2
#define Ham		3

#ifndef FALSE
#  define FALSE		0
#endif
#ifndef TRUE
#  define TRUE		(!(FALSE))
#endif



struct parse_result {
	  char	iffile[STRSIZE];
	  float	hsize;
	  float	vsize;
	  float	hoffset;
	  float	voffset;
	  float	scale;
	  float	hscale;
	  float vscale;
	  long  hres;
	  long  vres;
	  long	mode;
	  float	red;
	  float green;
	  float blue;
	  float gamma;
	};


void ParseSpecial (char *str, struct parse_result *res);
