Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
afni_suma.h
Go to the documentation of this file.00001 #ifndef _AFNI_SUMA_HEADER_FILE_
00002 #define _AFNI_SUMA_HEADER_FILE_
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include "vecmat.h"
00012
00013
00014
00015 #ifndef SUMA_TCP_PORT
00016 #define SUMA_TCP_PORT 53211
00017 #endif
00018
00019
00020
00021
00022
00023 typedef struct {
00024 int id ;
00025 float x ;
00026 float y ;
00027 float z ;
00028 } SUMA_ixyz ;
00029
00030
00031
00032 #define SUMA_ixyz_defn "int,3*float"
00033
00034
00035
00036 typedef struct {
00037 float id,jd,kd ;
00038 } SUMA_ijk ;
00039
00040
00041
00042 #define SUMA_ijk_defn "3*int"
00043
00044
00045
00046 typedef struct {
00047 int id ;
00048 unsigned char r,g,b,a ;
00049 } SUMA_irgba ;
00050
00051
00052
00053 #define SUMA_irgba_defn "int,4*byte"
00054
00055
00056
00057 typedef struct {
00058 int nvox ;
00059 int *voxijk ;
00060 int *numnod ;
00061 int **nlist ;
00062
00063
00064 struct THD_3dim_dataset * dset ;
00065 } SUMA_vnlist ;
00066
00067
00068
00069 #define SUMA_SURFACE_TYPE 53001
00070
00071
00072
00073 #ifndef WAY_BIG
00074 #define WAY_BIG 1.e+10
00075 #endif
00076
00077
00078
00079 typedef struct {
00080 int nvox ;
00081 int *voxijk ;
00082 float *voxval ;
00083 } SUMA_vvlist ;
00084
00085
00086
00087 #define DESTROY_VVLIST(vv) \
00088 do{ if( vv != NULL ){ \
00089 if( vv->voxijk != NULL ) free(vv->voxijk) ; \
00090 if( vv->voxval != NULL ) free(vv->voxval) ; \
00091 free(vv) ; \
00092 }} while(0)
00093
00094
00095
00096
00097
00098
00099 typedef struct {
00100 int type ;
00101 int num_ixyz ;
00102 int nall_ixyz;
00103 int num_ijk ;
00104 int nall_ijk ;
00105 int seq ;
00106 int seqbase ;
00107 int sorted ;
00108
00109 SUMA_ixyz *ixyz ;
00110 THD_fvec3 *norm ;
00111 SUMA_ijk *ijk ;
00112
00113 float xbot ;
00114 float ybot ;
00115 float zbot ;
00116 float xtop ;
00117 float ytop ;
00118 float ztop ;
00119 float xcen ;
00120 float ycen ;
00121 float zcen ;
00122
00123 char idcode[32] ;
00124
00125 char idcode_ldp[32] ;
00126 char idcode_dset[32] ;
00127
00128 char label[64] ;
00129 char label_ldp[64] ;
00130
00131 SUMA_vvlist *vv ;
00132 SUMA_vnlist *vn ;
00133 } SUMA_surface ;
00134
00135
00136
00137 #define SUMA_NODE_COUNT(su) ((su)->num_ixyz)
00138
00139
00140
00141 #define SUMA_TRIANGLE_COUNT(su) ((su)->num_ijk)
00142
00143
00144
00145
00146 #define SUMA_MAX_NODES (1<<26)
00147
00148
00149
00150
00151
00152 #define SUMA_VMAP_LEVMASK(ll) (ll << 26)
00153 #define SUMA_VMAP_UNMASK(v) ((v) & ((1<<26)-1))
00154 #define SUMA_VMAP_LEVEL(v) (((v) & (7<<26)) >> 26)
00155 #define SUMA_VMAP_LEVZERO(v) (((v) & (7<<26)) == 0)
00156
00157 #define SUMA_VMAP_TO_ID(ag,v) ((ag)->ixyz[SUMA_VMAP_UNMASK(v)])
00158
00159
00160
00161 #define SUMA_SURFACEGROUP_TYPE 53003
00162
00163
00164
00165 typedef struct {
00166 int type ;
00167 int num_surf ;
00168 SUMA_surface **surf ;
00169 char idcode[32] ;
00170 } SUMA_surfacegroup ;
00171
00172
00173
00174 extern SUMA_surface * SUMA_create_empty_surface(void) ;
00175 extern void SUMA_destroy_surface( SUMA_surface * ) ;
00176
00177 extern void SUMA_add_nodes_ixyz( SUMA_surface *, int,
00178 int *, float *, float *, float *) ;
00179 extern void SUMA_add_node_ixyz( SUMA_surface *, int, float, float, float );
00180 extern int SUMA_add_norms_xyz( SUMA_surface *, int, float *, float *, float *);
00181
00182 extern void SUMA_add_triangles( SUMA_surface *, int, int *, int *, int * ) ;
00183 extern void SUMA_add_triangle( SUMA_surface *, int, int, int ) ;
00184
00185 extern void SUMA_truncate_memory ( SUMA_surface * ) ;
00186 extern void SUMA_ixyzsort_surface( SUMA_surface * ) ;
00187 extern int SUMA_find_node_id ( SUMA_surface *, int ) ;
00188
00189 extern SUMA_surface * SUMA_read_surface( char * , struct THD_3dim_dataset * ) ;
00190
00191 extern void SUMA_get_surfname( struct THD_3dim_dataset * ) ;
00192
00193 extern int * SUMA_map_vol_to_surf( SUMA_surface * ,
00194 int nx , int ny , int nz ,
00195 float xoff, float yoff, float zoff,
00196 float dx , float dy , float dz ) ;
00197
00198 extern int * SUMA_map_dset_to_surf( SUMA_surface *, struct THD_3dim_dataset *);
00199
00200 extern SUMA_vnlist * SUMA_make_vnlist(SUMA_surface *,struct THD_3dim_dataset *);
00201
00202 extern int AFNI_find_closest_node( int , SUMA_ixyz *,
00203 float,float,float ,
00204 float,float , float,float , float,float ) ;
00205 extern void AFNI_get_xhair_node( void *, int *, int * ) ;
00206
00207 extern void SUMA_load ( struct THD_3dim_dataset * ) ;
00208 extern void SUMA_unload( struct THD_3dim_dataset * ) ;
00209
00210 extern THD_fvec3 THD_dicomm_to_surefit( struct THD_3dim_dataset *, THD_fvec3 ) ;
00211 extern THD_fvec3 THD_surefit_to_dicomm( struct THD_3dim_dataset *, THD_fvec3 ) ;
00212 extern void SUMA_import_surefit( SUMA_surface *, char *, struct THD_3dim_dataset * );
00213
00214 extern void SUMA_destroy_vnlist( SUMA_vnlist *vnlist ) ;
00215
00216 #endif