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 }