Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
suma_niml.c
Go to the documentation of this file.00001 #include "niml.h"
00002 #include "suma_types.h"
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 NI_element * SUMA_ixyz_to_NIML( int num_ixyz , SUMA_ixyz *ixyz )
00019 {
00020 NI_element *nel ;
00021 int ii , *ic ;
00022 float *xc,*yc,*zc ;
00023
00024
00025
00026 if( num_ixyz < 1 || ixyz == NULL ) return NULL ;
00027
00028
00029
00030 nel = NI_new_data_element( "SUMA_ixyz" , num_ixyz ) ;
00031
00032
00033
00034 ic = NI_malloc(int, sizeof(int) * num_ixyz ) ;
00035 xc = NI_malloc(float, sizeof(float) * num_ixyz ) ;
00036 yc = NI_malloc(float, sizeof(float) * num_ixyz ) ;
00037 zc = NI_malloc(float, sizeof(float) * num_ixyz ) ;
00038
00039
00040
00041 for( ii=0 ; ii < num_ixyz ; ii++ ){
00042 ic[ii] = ixyz[ii].id ;
00043 xc[ii] = ixyz[ii].x ;
00044 yc[ii] = ixyz[ii].y ;
00045 zc[ii] = ixyz[ii].z ;
00046 }
00047
00048
00049
00050 NI_add_column( nel , NI_INT , ic ) ; free(ic) ;
00051 NI_add_column( nel , NI_FLOAT , xc ) ; free(xc) ;
00052 NI_add_column( nel , NI_FLOAT , yc ) ; free(yc) ;
00053 NI_add_column( nel , NI_FLOAT , zc ) ; free(zc) ;
00054
00055 return nel ;
00056 }
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 int NIML_to_SUMA_ixyz( NI_element *nel , SUMA_ixyz **ixyz )
00074 {
00075 int num_ixyz ;
00076 SUMA_ixyz *myixyz ;
00077 int *ic , ii ;
00078 float *xc, *yc, *zc ;
00079
00080
00081
00082 if( nel == 0 ||
00083 nel->vec_len < 1 ||
00084 nel->vec_filled < 1 ||
00085 nel->vec_num < 4 ||
00086 nel->vec_typ[0] != NI_INT ||
00087 nel->vec_typ[1] != NI_FLOAT ||
00088 nel->vec_typ[2] != NI_FLOAT ||
00089 nel->vec_typ[3] != NI_FLOAT ) return 0 ;
00090
00091
00092
00093 num_ixyz = nel->vec_filled ;
00094
00095
00096
00097 myixyz = NI_malloc(SUMA_ixyz, sizeof(SUMA_ixyz) * num_ixyz ) ;
00098
00099
00100
00101 ic = (int *) nel->vec[0] ;
00102 xc = (float *) nel->vec[1] ;
00103 yc = (float *) nel->vec[2] ;
00104 zc = (float *) nel->vec[3] ;
00105
00106
00107
00108 for( ii=0 ; ii < num_ixyz ; ii++ ){
00109 myixyz[ii].id = ic[ii] ;
00110 myixyz[ii].x = xc[ii] ;
00111 myixyz[ii].y = yc[ii] ;
00112 myixyz[ii].z = zc[ii] ;
00113 }
00114
00115
00116
00117 *ixyz = myixyz ; return num_ixyz ;
00118 }