00001 #ifndef SUMA_SURFACE_IO_INCLUDED
00002 #define SUMA_SURFACE_IO_INCLUDED
00003
00004 #define SUMA_MAX_OPEN_DX_FIELD_COMPONENTS 500
00005 #define SUMA_MAX_OPEN_DX_FIELD_ATTRIBUTES 500
00006 #define SUMA_MAX_OPEN_DX_OBJECTS 500
00007
00008 typedef struct {
00009 int rank;
00010 int shape;
00011 int items;
00012 int bad_data;
00013 char *type;
00014 char *object;
00015 char *class;
00016 char *data;
00017 char *data_off;
00018 int data_format;
00019 void *datap;
00020 int n_comp;
00021 char *comp_name[SUMA_MAX_OPEN_DX_FIELD_COMPONENTS];
00022 char *comp_value[SUMA_MAX_OPEN_DX_FIELD_COMPONENTS];
00023 int n_attr;
00024 char *attr_name[SUMA_MAX_OPEN_DX_FIELD_ATTRIBUTES];
00025 char *attr_string[SUMA_MAX_OPEN_DX_FIELD_ATTRIBUTES];
00026 int *counts;
00027 int n_counts;
00028 float *delta;
00029 int n_delta;
00030 float *origin;
00031 int n_origin;
00032 } SUMA_OPEN_DX_STRUCT;
00033
00034 #define SUMA_OK_OPENDX_DATA_TYPE(tp) ( ( tp == SUMA_int || \
00035 tp == SUMA_float || \
00036 tp == SUMA_double || \
00037 tp == SUMA_byte ) \
00038 ? 1 : 0 )
00039
00040 #define SUMA_NCOL_OPENDX(dx) ( ( ( (dx)->shape == 0 ) ? 1 : ((dx)->shape) ) )
00041
00042 SUMA_SurfaceObject *SUMA_Load_Surface_Object_Wrapper ( char *if_name, char *if_name2, char *vp_name,
00043 SUMA_SO_File_Type SO_FT, SUMA_SO_File_Format SO_FF, char *sv_name, int debug);
00044 char *SUMA_RemoveSurfNameExtension (char*Name, SUMA_SO_File_Type oType);
00045 void *SUMA_Prefix2SurfaceName (char *prefix, char *path, char *vp_name, SUMA_SO_File_Type oType, SUMA_Boolean *exists);
00046 void * SUMA_2Prefix2SurfaceName (char *namecoord, char *nametopo, char *path, char *vp_name, SUMA_SO_File_Type oType, SUMA_Boolean *exists);
00047 SUMA_Boolean SUMA_SureFit_Read_Coord (char * f_name, SUMA_SureFit_struct *SF);
00048 SUMA_Boolean SUMA_SureFit_Read_Topo (char * f_name, SUMA_SureFit_struct *SF);
00049 void SUMA_Show_SureFit (SUMA_SureFit_struct *SF, FILE *Out);
00050 SUMA_Boolean SUMA_Free_SureFit (SUMA_SureFit_struct *SF);
00051 SUMA_Boolean SUMA_FreeSurfer_Read (char * f_name, SUMA_FreeSurfer_struct *FS);
00052 SUMA_Boolean SUMA_FreeSurfer_Read_eng (char * f_name, SUMA_FreeSurfer_struct *FS, int debug);
00053 SUMA_Boolean SUMA_FreeSurfer_ReadBin_eng (char * f_name, SUMA_FreeSurfer_struct *FS, int debug);
00054 SUMA_Boolean SUMA_Free_FreeSurfer (SUMA_FreeSurfer_struct *FS);
00055 void SUMA_Show_FreeSurfer (SUMA_FreeSurfer_struct *FS, FILE *Out);
00056 SUMA_Boolean SUMA_Ply_Read (char * f_name, SUMA_SurfaceObject *SO);
00057 SUMA_Boolean SUMA_Ply_Write (char * f_name, SUMA_SurfaceObject *SO);
00058 SUMA_Boolean SUMA_VEC_Write (SUMA_SFname *Fname, SUMA_SurfaceObject *SO);
00059 SUMA_Boolean SUMA_VEC_Read(SUMA_SFname *Fname, SUMA_SurfaceObject *SO);
00060 SUMA_Boolean SUMA_FS_Write (char *fileNm, SUMA_SurfaceObject *SO, char *firstLine);
00061 SUMA_Boolean SUMA_SureFit_Write (SUMA_SFname *Fname, SUMA_SurfaceObject *SO);
00062 void SUMA_SaveDrawnROI (char *filename, void *data);
00063 SUMA_Boolean SUMA_SaveDrawnROI_1D (char *filename, SUMA_SurfaceObject *SO, SUMA_DRAWN_ROI *DrawnROI, int SaveWhat);
00064 SUMA_Boolean SUMA_SaveDrawnROINIML (char *filename, SUMA_SurfaceObject *SO, SUMA_DRAWN_ROI *DrawnROI, int SaveWhat, int Format);
00065 SUMA_1D_DRAWN_ROI * SUMA_Free_1DDrawROI (SUMA_1D_DRAWN_ROI *ROI1D);
00066 SUMA_Boolean SUMA_Write_DrawnROI_1D (SUMA_DRAWN_ROI **ROIv, int N_ROI, char *filename);
00067 SUMA_1D_DRAWN_ROI * SUMA_DrawnROI_to_1DDrawROI (SUMA_DRAWN_ROI *ROI);
00068 SUMA_DRAWN_ROI ** SUMA_OpenDrawnROI_NIML (char *filename, int *N_ROI, SUMA_Boolean ForDisplay);
00069 SUMA_DRAWN_ROI ** SUMA_OpenDrawnROI_1D(char *filename, char *Parent_idcode_str, int *N_ROI, SUMA_Boolean ForDisplay);
00070 void SUMA_OpenDrawnROI (char *filename, void *data);
00071 SUMA_DSET *SUMA_ROIv2Grpdataset (SUMA_DRAWN_ROI** ROIv, int N_ROIv, char *Parent_idcode_str, int Pad_to, int Pad_val) ;
00072 NI_element *SUMA_ROIv2dataset (SUMA_DRAWN_ROI** ROIv, int N_ROIv, char *Parent_idcode_str, int pad_to, int pad_val);
00073 void SUMA_SaveSOascii (char *filename, void *data);
00074 float * SUMA_readFScurv (char *f_name, int *nrows, int *ncols, SUMA_Boolean rowmajor, SUMA_Boolean SkipCoords);
00075 SUMA_Boolean SUMA_BrainVoyager_Read(char *f_name, SUMA_SurfaceObject *SO, int debug);
00076 SUMA_Boolean SUMA_FreeSurfer_WritePatch (char *fileNm, SUMA_SurfaceObject *SO, char *firstLine, SUMA_SurfaceObject *SOparent);
00077 SUMA_FORM_AFNI_DSET_STRUCT *SUMA_New_FormAfniDset_Opt(void);
00078 SUMA_FORM_AFNI_DSET_STRUCT *SUMA_Free_FormAfniDset_Opt(SUMA_FORM_AFNI_DSET_STRUCT *Opt);
00079 THD_3dim_dataset *SUMA_FormAfnidset (float *NodeList, float *vals, int N_vals, SUMA_FORM_AFNI_DSET_STRUCT *Opt);
00080 NI_group *SUMA_SO2nimlSO(SUMA_SurfaceObject *SO, char *optlist, int nlee) ;
00081 SUMA_SurfaceObject *SUMA_nimlSO2SO(NI_group *ngr);
00082 SUMA_OPEN_DX_STRUCT *SUMA_Alloc_OpenDX_Struct(void);
00083 SUMA_OPEN_DX_STRUCT *SUMA_Free_OpenDX_Struct(SUMA_OPEN_DX_STRUCT *dx);
00084 SUMA_OPEN_DX_STRUCT ** SUMA_Free_OpenDX_StructVec(SUMA_OPEN_DX_STRUCT **dxv, int nobj);
00085 void SUMA_Show_OpenDX_Struct(SUMA_OPEN_DX_STRUCT **dxv, int N_dxv, FILE *out);
00086 SUMA_Boolean SUMA_OpenDX_Write(char *fname, SUMA_SurfaceObject *SO);
00087 SUMA_Boolean SUMA_OpenDx_Object_Data(char *op, int nchar, SUMA_OPEN_DX_STRUCT *dx);
00088 SUMA_Boolean SUMA_OpenDx_Object_Attr(char *op, int nchar, SUMA_OPEN_DX_STRUCT *dx);
00089 SUMA_Boolean SUMA_OpenDx_Object_Components(char *op, int nchar, SUMA_OPEN_DX_STRUCT *dx);
00090 void * SUMA_OpenDx_Object_Header_Field(char *op, int nchar, const char *attr, char **op_end);
00091 SUMA_OPEN_DX_STRUCT **SUMA_OpenDX_Read(char *fname, int *nobj);
00092 SUMA_OPEN_DX_STRUCT *SUMA_Find_OpenDX_Object_Name(SUMA_OPEN_DX_STRUCT **dxv, int iop, char *nm, int *nf);
00093 SUMA_OPEN_DX_STRUCT *SUMA_Find_OpenDX_Object_Class(SUMA_OPEN_DX_STRUCT **dxv, int iop, char *nm, int *nf);
00094 SUMA_Boolean SUMA_OpenDX_Read_SO(char *fname, SUMA_SurfaceObject *SO);
00095 char * SUMA_OpenDX_Read_CruiseVolHead(char *fname, THD_3dim_dataset *dset, int loaddata);
00096
00097
00098 #endif