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 } |