analyze.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 
00003   Copyright (c) 2003-2007 by Turku PET Centre
00004 
00005   analyze.h
00006 
00007   2003-10-05 VO
00008   2003-12-05 VO
00009   2004-09-20 VO
00010   2007-02-27 VO
00011 
00012 
00013 ******************************************************************************/
00014 #ifndef _ANALYZE_H
00015 #define _ANALYZE_H
00016 /*****************************************************************************/
00017 /* Backup file extension */
00018 #ifndef BACKUP_EXTENSION
00019 #define BACKUP_EXTENSION ".bak"
00020 #endif 
00021 /*****************************************************************************/
00022 #define ANALYZE_HEADER_KEY_SIZE 40
00023 #define ANALYZE_HEADER_IMGDIM_SIZE 108
00024 #define ANALYZE_HEADER_HISTORY_SIZE 200
00025 /*****************************************************************************/
00026 #define ANALYZE_FLIP_DEFAULT 1
00027 /*****************************************************************************/
00028 /* Analyze datatypes */
00029 #define ANALYZE_DT_NONE 0
00030 #define ANALYZE_DT_UNKNOWN 0
00031 #define ANALYZE_DT_BINARY 1
00032 #define ANALYZE_DT_UNSIGNED_CHAR 2
00033 #define ANALYZE_DT_SIGNED_SHORT 4
00034 #define ANALYZE_DT_SIGNED_INT 8
00035 #define ANALYZE_DT_FLOAT 16
00036 #define ANALYZE_DT_COMPLEX 32
00037 #define ANALYZE_DT_DOUBLE 64
00038 #define ANALYZE_DT_RGB 128
00039 #define ANALYZE_DT_ALL 255
00040 /*****************************************************************************/
00041 int ANALYZE_TEST;
00042 /*****************************************************************************/
00043 typedef struct {
00044   int sizeof_hdr;
00045   char data_type[10];
00046   char db_name[18];
00047   int extents;
00048   short int session_error;
00049   char regular;
00050   char hkey_un0;
00051 } ANALYZE_HEADER_KEY;
00052 
00053 typedef struct {
00054   short int dim[8];
00055   short int unused8;
00056   short int unused9;
00057   short int unused10;
00058   short int unused11;
00059   short int unused12;
00060   short int unused13;
00061   short int unused14;
00062   short int datatype;
00063   short int bitpix;
00064   short int dim_un0;
00065   float pixdim[8];
00066   float vox_offset;
00067   float funused1;
00068   float funused2;
00069   float funused3;
00070   float cal_max;
00071   float cal_min;
00072   float compressed;
00073   float verified;
00074   int glmax;
00075   int glmin;
00076 } ANALYZE_HEADER_IMGDIM;
00077 
00078 typedef struct {
00079   char descrip[80];
00080   char aux_file[24];
00081   char orient;
00082   char originator[10];
00083   char generated[10];
00084   char scannum[10];
00085   char patient_id[10];
00086   char exp_date[10];
00087   char exp_time[10];
00088   char hist_un0[3];
00089   int views;
00090   int vols_added;
00091   int start_field;
00092   int field_skip;
00093   int omax;
00094   int omin;
00095   int smax;
00096   int smin;
00097 } ANALYZE_HEADER_HISTORY;
00098 
00099 typedef struct {
00100   ANALYZE_HEADER_KEY hk;
00101   ANALYZE_HEADER_IMGDIM dime;
00102   ANALYZE_HEADER_HISTORY hist;
00104   int little;
00105 } ANALYZE_DSR;
00106 /*****************************************************************************/
00107 extern int anaExists(const char *dbname);
00108 extern int anaRemove(const char *dbname);
00109 extern void anaRemoveFNameExtension(char *fname);
00110 extern int anaDatabaseExists(const char *dbname, char *hdrfile, char *imgfile, char *siffile);
00111 extern int anaMakeSIFName(const char *dbname, char *siffile);
00112 /*****************************************************************************/
00113 extern int anaFlipping();
00114 /*****************************************************************************/
00115 extern int anaReadHeader(char *filename, ANALYZE_DSR *h);
00116 extern int anaReadImagedata(FILE *fp, ANALYZE_DSR *h, int frame, float *data);
00117 /*****************************************************************************/
00118 extern int anaWriteHeader(char *filename, ANALYZE_DSR *h);
00119 /*****************************************************************************/
00120 extern int anaPrintHeader(ANALYZE_DSR *h, FILE *fp);
00121 /*****************************************************************************/
00122 #endif