Doxygen Source Code Documentation
edt_addbrick.c File Reference
#include "mrilib.h"Go to the source code of this file.
Functions | |
| void | EDIT_add_bricklist (THD_3dim_dataset *dset, int nbr, int *tbr, float *fbr, void *sbr[]) |
| void | EDIT_add_brick (THD_3dim_dataset *dset, int typ, float fac, void *br) |
Function Documentation
|
||||||||||||||||||||
|
stataux * Definition at line 115 of file edt_addbrick.c. References EDIT_add_bricklist(), and typ. Referenced by AFNI_fimmer_compute(), main(), RT_process_image(), RT_registration_2D_onevol(), RT_registration_3D_onevol(), and THD_add_bricks().
00116 {
00117 int ttt = typ ;
00118 float fff = fac ;
00119 void * bbb = br ;
00120
00121 EDIT_add_bricklist( dset , 1 , &ttt , &fff , &bbb ) ;
00122 return ;
00123 }
|
|
||||||||||||||||||||||||
|
Definition at line 24 of file edt_addbrick.c. References ADDTO_IMARR, THD_datablock::brick, THD_datablock::brick_bytes, THD_datablock::brick_fac, THD_datablock::brick_keywords, THD_datablock::brick_lab, THD_datablock::brick_stataux, THD_datablock::brick_statcode, DATABLOCK_MEM_MALLOC, THD_3dim_dataset::dblk, THD_diskptr::dimsizes, THD_datablock::diskptr, ENTRY, ISVALID_3DIM_DATASET, THD_datablock::malloc_type, mri_fix_data_pointer(), mri_new_vol_empty(), THD_diskptr::nvals, THD_datablock::nvals, MRI_IMAGE::nvox, nz, MRI_IMAGE::pixel_size, THD_init_datablock_keywords(), THD_init_datablock_labels(), THD_store_datablock_keywords(), THD_store_datablock_label(), THD_datablock::total_bytes, typ, and XtRealloc. Referenced by do_xrestore_stuff(), and EDIT_add_brick().
00026 {
00027 int ibr , typ , nx,ny,nz , nvals,new_nvals ;
00028 THD_datablock * dblk ;
00029 MRI_IMAGE * qim ;
00030 char str[32] ;
00031
00032 ENTRY("EDIT_add_bricklist") ;
00033
00034 /**-- Sanity Checks --**/
00035
00036 if( ! ISVALID_3DIM_DATASET(dset) || nbr <= 0 ) EXRETURN; /* error! */
00037 if( dset->dblk->brick == NULL ) EXRETURN; /* error! */
00038 if( dset->dblk->malloc_type != DATABLOCK_MEM_MALLOC )EXRETURN; /* error! */
00039
00040 dblk = dset->dblk ;
00041 nvals = dblk->nvals ;
00042 nx = dblk->diskptr->dimsizes[0] ;
00043 ny = dblk->diskptr->dimsizes[1] ;
00044 nz = dblk->diskptr->dimsizes[2] ;
00045
00046 /**-- reallocate the brick control information --**/
00047
00048 new_nvals = nvals + nbr ;
00049 dblk->brick_bytes = (int *) XtRealloc( (char *) dblk->brick_bytes ,
00050 sizeof(int) * new_nvals ) ;
00051
00052 dblk->brick_fac = (float *) XtRealloc( (char *) dblk->brick_fac ,
00053 sizeof(float) * new_nvals ) ;
00054
00055 dblk->nvals = dblk->diskptr->nvals = new_nvals ;
00056
00057 /** allocate new sub-brick images **/
00058
00059 for( ibr=0 ; ibr < nbr ; ibr++ ){
00060 typ = (tbr != NULL ) ? tbr[ibr] : MRI_short ;
00061 qim = mri_new_vol_empty( nx,ny,nz , typ ) ; /* image with no data */
00062
00063 if( sbr != NULL && sbr[ibr] != NULL ) /* attach data to image */
00064 mri_fix_data_pointer( sbr[ibr] , qim ) ;
00065
00066 ADDTO_IMARR( dblk->brick , qim ) ; /* attach image to dset */
00067
00068 dblk->brick_fac[nvals+ibr] = (fbr != NULL) ? fbr[ibr] : 0.0 ;
00069 dblk->brick_bytes[nvals+ibr] = qim->pixel_size * qim->nvox ;
00070 dblk->total_bytes += dblk->brick_bytes[ibr] ;
00071 }
00072
00073 /** allocate new sub-brick auxiliary data: labels **/
00074
00075 if( dblk->brick_lab == NULL )
00076 THD_init_datablock_labels( dblk ) ;
00077 else
00078 dblk->brick_lab = (char **) XtRealloc( (char *) dblk->brick_lab ,
00079 sizeof(char *) * new_nvals ) ;
00080 for( ibr=0 ; ibr < nbr ; ibr++ ){
00081 sprintf( str , "#%d" , nvals+ibr ) ;
00082 dblk->brick_lab[nvals+ibr] = NULL ;
00083 THD_store_datablock_label( dblk , nvals+ibr , str ) ;
00084 }
00085
00086 /** keywords **/
00087
00088 if( dblk->brick_keywords == NULL )
00089 THD_init_datablock_keywords( dblk ) ;
00090 else
00091 dblk->brick_keywords = (char **) XtRealloc( (char *) dblk->brick_keywords ,
00092 sizeof(char *) * new_nvals ) ;
00093 for( ibr=0 ; ibr < nbr ; ibr++ ){
00094 dblk->brick_keywords[nvals+ibr] = NULL ;
00095 THD_store_datablock_keywords( dblk , nvals+ibr , NULL ) ;
00096 }
00097
00098 /** stataux **/
00099
00100 if( dblk->brick_statcode != NULL ){
00101 dblk->brick_statcode = (int *) XtRealloc( (char *) dblk->brick_statcode ,
00102 sizeof(int) * new_nvals ) ;
00103 dblk->brick_stataux = (float **) XtRealloc( (char *) dblk->brick_stataux ,
00104 sizeof(float *) * new_nvals ) ;
00105
00106 for( ibr=0 ; ibr < nbr ; ibr++ ){
00107 dblk->brick_statcode[nvals+ibr] = 0 ;
00108 dblk->brick_stataux[nvals+ibr] = NULL ;
00109 }
00110 }
00111
00112 EXRETURN;
00113 }
|