#define MAX_STR_LEN 1024
#define MOD_INVALID -1
#define MOD_STR 0
#define MOD_CHAR 1 /* char mods */
#define MOD_U1 21 /* int mods */
#define MOD_S1 22
#define MOD_U2 23
#define MOD_S2 24
#define MOD_U4 25
#define MOD_S4 26
#define MOD_F4 30 /* real mods */
#define MOD_F8 31
#define SCR_SHOW_BAD_BS 0x01 /* script display */
#define SCR_SHOW_FILE 0x02 /* script display */
#define SCR_MOD_BADBS 0x10 /* script mods */
#define SCR_MOD_FILE 0x20 /* script mods */
#define USE_SHORT 0
#define USE_LONG 1
#define USE_VERSION 2
#define USE_GE 3
#define USE_HISTORY 4
/* GE diplay bit values */
#define GE_NONE 0
#define GE_ALL 0xff
#define GE_HEADER 0x01
#define GE_EXTRAS 0x02
#define GE_UV17 0x10
#define GE_OFF 0x20
#define NDISP_NONE 0
#define NDISP_INT2 0x01
#define NDISP_INT4 0x02
#define NDISP_REAL4 0x04
#define NDISP_ALL 0xff
#define CHECK_NULL_STR(str) ( str ? str : "(nil)" )
/* from Ifile.c ... */
typedef struct /* stuff extracted from GE 5.x image */
{
int good; /* is this a good image? */
int nx, ny; /* image matrix */
int uv17; /* apparently codes for scan index */
float dx,dy,dz, zoff, tr,te; /* various dimensions */
char orients[8]; /* orientation string */
} ge_header_info;
typedef struct /* extra stuff from mri_read.c */
{
int bpp; /* bits per pixel */
int cflag; /* compression flag (0=compressed) */
int hdroff; /* offset of image header */
int skip; /* offset of image data into file */
int swap; /* did we do byte swapping? */
float xyz[9];
} ge_extras;
typedef struct
{
int num_files; /* number of files to work with */
char ** flist; /* list of files to work with */
int debug; /* debug level = 0, 1 or 2 */
int data_len; /* bytes of data in mod_data */
int ge_disp; /* do we display ge_values */
int ge4_disp; /* option bits for GEMS 4.x type */
int script; /* inputs are scripts: bit mask */
int ndisp; /* option bits for numeric display */
int swap; /* do we need to swap bytes */
int modify; /* do we modify the data? */
int mod_type; /* a string or repeated value */
long offset; /* starting location */
int length; /* bytes to display or modify */
int quiet; /* do not display header info */
char * mod_data; /* new data */
} param_t;
typedef struct /* file offsets for various fields */
{
int nx, ny;
int uv17;
int dx, dy, dz;
int tr, te;
int xyz; /* 3x3 float matrix from extras */
} ge_off;
/* local protos */
int attack_files ( param_t * p );
int check_mod_type ( char * name );
int check_usage ( int argc, char * argv[] );
int disp_numeric_data ( char * data, param_t * p, FILE * fp );
int disp_param_data ( param_t * p );
int mtype_size ( int type );
int read_ge_header ( char * pathname, ge_header_info * hi, ge_extras * E,
ge_off * off );
int process_file ( char * pathname, param_t * p );
int process_ge ( char * pathname, param_t * p );
int process_ge4 ( char * pathname, param_t * p );
int read_file ( char * filename, char ** fdata, int * flen );
int set_params ( param_t * p, int argc, char * argv[] );
int scr_show_file ( char * filename, param_t * p );
int scr_show_bad_bs ( char * filename, param_t * p );
int help_full ( char * prog );
int help_ge_structs ( char * prog );
int usage ( char * prog, int level );
int write_data_to_file( FILE * fp, char * filename, param_t * p, int length );
unsigned long THD_filesize ( char * pathname );
int disp_ge_offsets ( char * info, ge_off * D );
int r_idisp_ge_extras ( char * info, ge_extras * E );
int r_idisp_ge_header_info ( char * info, ge_header_info * I );
syntax highlighted by Code2HTML, v. 0.9.1