Doxygen Source Code Documentation
edt_substbrick.c File Reference
#include "mrilib.h"Go to the source code of this file.
Functions | |
| void | EDIT_substitute_brick (THD_3dim_dataset *dset, int ival, int ftype, void *fim) |
Function Documentation
|
||||||||||||||||||||
|
Definition at line 25 of file edt_substbrick.c. References THD_datablock::brick, THD_datablock::brick_bytes, calloc, DATABLOCK_MEM_MALLOC, THD_3dim_dataset::dblk, DSET_BRICK, DSET_CRUSH_BSTAT, ENTRY, EXIT, fim, ISVALID_3DIM_DATASET, THD_datablock::malloc_type, mri_empty_conforming, mri_fix_data_pointer(), mri_free(), THD_datablock::nvals, MRI_IMAGE::nvox, MRI_IMAGE::pixel_size, and THD_datablock::total_bytes. Referenced by AFNI_read_inputs(), applyMask(), attach_sub_brick(), basis_write_iresp(), basis_write_sresp(), CALC_read_opts(), copy_dset(), COPY_main(), DRAW_copy_dset(), EDIT_full_copy(), EDIT_main(), form_clusters(), Fourier_Filter_Driver(), get_options(), main(), MAKER_4D_to_typed_fbuc(), MAKER_4D_to_typed_fim(), MAKER_4D_to_typed_fith(), NUD_doall_CB(), NUD_update_base(), POWER_main(), process_NIML_Node_ROI(), r_fill_resampled_data_brick(), REORDER_main(), RT_process_image(), RT_registration_2D_onevol(), RT_registration_3D_onevol(), s2v_nodes2volume(), saveMask(), STAVG_main(), SUMA_BrainVoyager_Read_vmr(), SUMA_FormAfnidset(), SUMA_OpenDX_Read_CruiseVolHead(), THD_add_bricks(), THD_copy_dset_subs(), THD_load_tcat(), THD_warp3D(), THD_zeropad(), VOLREG_main(), WINsorize(), write_bucket(), write_bucket_data(), and write_results().
00026 {
00027 THD_datablock * dblk ;
00028 MRI_IMAGE * newim , * oldim ;
00029 int nbytes , nullfim = (fim == NULL) ;
00030
00031 ENTRY("EDIT_substitute_brick") ;
00032
00033 /**-- Sanity Checks --**/
00034
00035 if( ! ISVALID_3DIM_DATASET(dset) ) EXRETURN; /* error! */
00036 if( dset->dblk->brick == NULL ) EXRETURN; /* ditto! */
00037 if( dset->dblk->malloc_type != DATABLOCK_MEM_MALLOC )EXRETURN; /* ditto! */
00038 if( ival >= dset->dblk->nvals || ival < 0 ) EXRETURN; /* ditto! */
00039 if( ftype < 0 || ftype > LAST_MRI_TYPE ) EXRETURN; /* ditto! */
00040
00041 oldim = DSET_BRICK(dset,ival) ; if( oldim == NULL ) EXRETURN; /* ditto! */
00042
00043 newim = mri_empty_conforming( oldim , ftype ) ; /* new sub-brick */
00044 nbytes = newim->nvox * newim->pixel_size ; /* how big it is */
00045 mri_free( oldim ) ; /* kill old one */
00046
00047 if( nullfim ){ /* if needed, */
00048 fim = calloc( 1,nbytes ) ; /* make array */
00049 if( fim == NULL ){
00050 fprintf(stderr,"\n*** malloc error for dataset sub-brick\n") ; EXIT(1) ;
00051 }
00052 }
00053 mri_fix_data_pointer( fim , newim ) ; /* attach new data */
00054 DSET_BRICK(dset,ival) = newim ; /* put in dataset */
00055
00056 /** change the byte count for this sub-brick and the total dataset **/
00057
00058 dset->dblk->total_bytes += (nbytes - dset->dblk->brick_bytes[ival]) ;
00059 dset->dblk->brick_bytes[ival] = nbytes ;
00060
00061 DSET_CRUSH_BSTAT(dset,ival) ;
00062
00063 EXRETURN ;
00064 }
|