Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

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

void EDIT_add_brick THD_3dim_dataset   dset,
int    typ,
float    fac,
void *    br
 

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 }

void EDIT_add_bricklist THD_3dim_dataset   dset,
int    nbr,
int *    tbr,
float *    fbr,
void *    sbr[]
 

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 }
 

Powered by Plone

This site conforms to the following standards: