/*
 *
 * (c) Copyright, 1986-1991
 * Biodynamics Research Unit
 * Mayo Foundation
 *
 * dbh.h
 *
 *
 * database sub-definitions
 */

/*
 *
 * The previous-generation header for Analyze images. Although (c) Mayo
 * Foundation, it has been in the public domain for many years.
 *
 * Analyze images have a 348 byte header stored in a file with a .hdr suffix,
 * and a corresponding .img file containing just the pixel data.
 *
 */

struct header_key			 /*      header_key       */
{							 /* off + size*/
	int sizeof_hdr;			 /* 0 + 4     */
	char data_type[10];		 /* 4 + 10    */
	char db_name[18];		 /* 14 + 18   */
	int extents;			 /* 32 + 4    */
	short int session_error; /* 36 + 2    */
	char regular;			 /* 38 + 1    */
	char hkey_un0;			 /* 39 + 1    */
};							 /* total=40  */

struct image_dimension	/*      image_dimension  */
{						/* off + size*/
	short int dim[8];	/* 0 + 16    */
	char vox_units[4];	/* 16 + 4    */
	char cal_units[8];	/* 20 + 4    */
	short int unused1;	/* 24 + 2    */
	short int datatype; /* 30 + 2    */
	short int bitpix;	/* 32 + 2    */
	short int dim_un0;	/* 34 + 2    */
	float pixdim[8];	/* 36 + 32   */

	/*	pixdim[] specifies the voxel dimensions:
		pixdim[1] - voxel width
		pixdim[2] - voxel height
		pixdim[3] - interslice distance
			..etc
	*/
	float vox_offset; /* 68 + 4    */
	float funused1;	  /* 72 + 4    */
	float funused2;	  /* 76 + 4    */
	float funused3;	  /* 80 + 4    */
	float cal_max;	  /* 84 + 4    */
	float cal_min;	  /* 88 + 4    */
	int compressed;	  /* 92 + 4    */
	int verified;	  /* 96 + 4    */
	int glmax, glmin; /* 100 + 8   */
};

struct data_history		 /*      data_history     */
{						 /* off + size*/
	char descrip[80];	 /* 0 + 80    */
	char aux_file[24];	 /* 80 + 24   */
	char orient;		 /* 104 + 1   */
	char originator[10]; /* 105 + 10  */
	char generated[10];	 /* 115 + 10  */
	char scannum[10];	 /* 125 + 10  */
	char patient_id[10]; /* 135 + 10  */
	char exp_date[10];	 /* 145 + 10  */
	char exp_time[10];	 /* 155 + 10  */
	char hist_un0[3];	 /* 165 + 3   */
	int views;			 /* 168 + 4   */
	int vols_added;		 /* 172 + 4   */
	int start_field;	 /* 176 + 4   */
	int field_skip;		 /* 180 + 4   */
	int omax, omin;		 /* 184 + 8   */
	int smax, smin;		 /* 192 + 8   */
};						 /* total=200 */

struct dsr						 /*      dsr              */
{								 /* off + size*/
	struct header_key hk;		 /* 0 + 40    */
	struct image_dimension dime; /* 40 + 108  */
	struct data_history hist;	 /* 148 + 200 */
};								 /* total=348 */

/* Acceptable values for hdr.dime.datatype */

/*
 * commented this one out: we don't use it, and dirent.h defines this on some
 * platforms.
 *
#define DT_UNKNOWN			0
 */

#define DT_BINARY 1
#define DT_UNSIGNED_CHAR 2
#define DT_SIGNED_SHORT 4
#define DT_SIGNED_INT 8
#define DT_FLOAT 16
#define DT_COMPLEX 32
#define DT_DOUBLE 64
#define DT_RGB 128
