Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
edt_emptycopy.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include "mrilib.h"
00008
00009
00010
00011 #define DUMMY_NAME "zyxt"
00012
00013
00014
00015
00016
00017
00018
00019
00020 THD_3dim_dataset * EDIT_empty_copy( THD_3dim_dataset *old_dset )
00021 {
00022 THD_3dim_dataset *new_dset ;
00023 THD_datablock *new_dblk ;
00024 THD_dataxes *new_daxes ;
00025 THD_timeaxis *new_taxis ;
00026 THD_diskptr *new_dkptr ;
00027 int new_nvals , old_good ;
00028
00029 ENTRY("EDIT_empty_copy") ;
00030
00031 old_good = ISVALID_3DIM_DATASET(old_dset) ;
00032
00033
00034
00035 new_dset = myXtNew( THD_3dim_dataset ) ;
00036 new_dblk = new_dset->dblk = myXtNew( THD_datablock ) ;
00037 new_daxes = new_dset->daxes = myXtNew( THD_dataxes ) ;
00038 new_dkptr = new_dblk->diskptr = myXtNew( THD_diskptr ) ;
00039
00040 INIT_KILL(new_dset->kl) ; INIT_KILL(new_dblk->kl) ;
00041 ADDTO_KILL(new_dset->kl,new_dblk) ;
00042 ADDTO_KILL(new_dset->kl,new_daxes) ;
00043 ADDTO_KILL(new_dset->kl,new_dkptr) ;
00044
00045 new_dset->wod_daxes = myXtNew(THD_dataxes) ;
00046 new_dset->wod_daxes->parent = (XtPointer) new_dset ;
00047 new_dset->wod_flag = False ;
00048
00049 ADDTO_KILL(new_dset->kl,new_dset->wod_daxes) ;
00050
00051 new_dset->idcode = MCW_new_idcode() ;
00052 ZERO_IDCODE(new_dset->anat_parent_idcode) ;
00053 ZERO_IDCODE(new_dset->warp_parent_idcode) ;
00054
00055 if( old_good ){
00056 new_dset->type = old_dset->type ;
00057 new_dset->func_type = old_dset->func_type ;
00058 new_dset->view_type = old_dset->view_type ;
00059 new_nvals = old_dset->dblk->nvals ;
00060 } else {
00061 new_dset->type = HEAD_ANAT_TYPE ;
00062 new_dset->func_type = ANAT_SPGR_TYPE ;
00063 new_dset->view_type = VIEW_ORIGINAL_TYPE ;
00064 new_nvals = ANAT_nvals[new_dset->func_type] ;
00065 }
00066
00067 new_dset->warp = NULL ;
00068 new_dset->anat_parent = NULL ;
00069 new_dset->markers = NULL ;
00070 new_dset->warp_parent = NULL ;
00071
00072
00073
00074 if( old_good ){
00075 new_dset->anat_parent = old_dset->anat_parent ;
00076 EDIT_COPY_ANATOMY_PARENT_ID(new_dset,old_dset) ;
00077 }
00078
00079
00080
00081 new_dset->vox_warp = myXtNew( THD_warp ) ;
00082 new_dset->vox_warp->type = ILLEGAL_TYPE ;
00083 new_dset->self_warp = NULL ;
00084
00085 new_dset->warp_parent_name[0] = '\0' ;
00086 new_dset->anat_parent_name[0] = '\0' ;
00087
00088 MCW_strncpy( new_dset->self_name , DUMMY_NAME , THD_MAX_NAME ) ;
00089 MCW_strncpy( new_dset->label1 , DUMMY_NAME , THD_MAX_LABEL ) ;
00090 MCW_strncpy( new_dset->label2 , DUMMY_NAME , THD_MAX_LABEL ) ;
00091
00092 new_dset->death_mark = 0 ;
00093 new_dset->tcat_list = NULL ;
00094 new_dset->tcat_num = 0 ;
00095 new_dset->tcat_len = NULL ;
00096 #ifdef ALLOW_DATASET_VLIST
00097 new_dset->pts = NULL ;
00098 #endif
00099 new_dset->tagset = NULL ;
00100
00101 new_dkptr->type = DISKPTR_TYPE ;
00102 new_dkptr->rank = 3 ;
00103 new_dkptr->nvals = new_nvals ;
00104 new_dkptr->storage_mode = STORAGE_BY_BRICK ;
00105 new_dkptr->byte_order = THD_get_write_order() ;
00106 if( old_good ){
00107 new_dkptr->dimsizes[0] = old_dset->daxes->nxx ;
00108 new_dkptr->dimsizes[1] = old_dset->daxes->nyy ;
00109 new_dkptr->dimsizes[2] = old_dset->daxes->nzz ;
00110 } else {
00111 new_dkptr->dimsizes[0] = 2 ;
00112 new_dkptr->dimsizes[1] = 2 ;
00113 new_dkptr->dimsizes[2] = 2 ;
00114 }
00115
00116 if( old_good )
00117 THD_init_diskptr_names( new_dkptr ,
00118 old_dset->dblk->diskptr->directory_name ,
00119 NULL , DUMMY_NAME ,
00120 new_dset->view_type , True ) ;
00121 else
00122 THD_init_diskptr_names( new_dkptr ,
00123 "./" , NULL , DUMMY_NAME ,
00124 new_dset->view_type , True ) ;
00125
00126 new_dblk->type = DATABLOCK_TYPE ;
00127 new_dblk->nvals = new_nvals ;
00128 new_dblk->malloc_type = DATABLOCK_MEM_MALLOC ;
00129 new_dblk->natr = new_dblk->natr_alloc = 0 ;
00130 new_dblk->atr = NULL ;
00131 new_dblk->parent = (XtPointer) new_dset ;
00132
00133 DBLK_unlock(new_dblk) ;
00134
00135 new_dblk->brick_fac = NULL ;
00136 new_dblk->brick_bytes = NULL ;
00137 new_dblk->brick = NULL ;
00138 if( old_good )
00139 THD_init_datablock_brick( new_dblk , -1 , old_dset->dblk ) ;
00140 else
00141 THD_init_datablock_brick( new_dblk , MRI_short , NULL ) ;
00142
00143 if( old_good && old_dset->keywords != NULL )
00144 THD_store_dataset_keywords( new_dset , old_dset->keywords ) ;
00145 else
00146 new_dset->keywords = NULL ;
00147
00148 THD_null_datablock_auxdata( new_dblk ) ;
00149 if( old_good ) THD_copy_datablock_auxdata( old_dset->dblk , new_dblk ) ;
00150
00151 new_dblk->master_nvals = 0 ;
00152 new_dblk->master_ival = NULL ;
00153 new_dblk->master_bytes = NULL ;
00154
00155 if( old_good )
00156 *new_daxes = *(old_dset->daxes) ;
00157 else {
00158 new_daxes->type = DATAXES_TYPE ;
00159
00160 new_daxes->nxx = new_dkptr->dimsizes[0] ;
00161 new_daxes->nyy = new_dkptr->dimsizes[1] ;
00162 new_daxes->nzz = new_dkptr->dimsizes[2] ;
00163
00164 new_daxes->xxorg = new_daxes->yyorg = new_daxes->zzorg = -0.5 ;
00165 new_daxes->xxdel = new_daxes->yydel = new_daxes->zzdel = 1.0 ;
00166
00167 new_daxes->xxorient = ORI_R2L_TYPE ;
00168 new_daxes->yyorient = ORI_A2P_TYPE ;
00169 new_daxes->zzorient = ORI_I2S_TYPE ;
00170 LOAD_DIAG_MAT(new_daxes->to_dicomm,1,1,1) ;
00171
00172 new_daxes->xxmin = new_daxes->yymin = new_daxes->zzmin = -0.5 ;
00173 new_daxes->xxmax = new_daxes->yymax = new_daxes->zzmax = 0.5 ;
00174 }
00175 new_daxes->parent = (XtPointer) new_dset ;
00176
00177 new_dset->stats = NULL ;
00178 new_dset->parent = NULL ;
00179
00180 if( old_good )
00181 INIT_STAT_AUX( new_dset , MAX_STAT_AUX , old_dset->stat_aux ) ;
00182 else
00183 ZERO_STAT_AUX( new_dset ) ;
00184
00185 if( old_good && ISVALID_TIMEAXIS(old_dset->taxis) ){
00186 new_taxis = new_dset->taxis = myXtNew( THD_timeaxis ) ;
00187
00188 *new_taxis = *old_dset->taxis ;
00189
00190 if( new_taxis->nsl > 0 ){
00191 int isl ;
00192 new_taxis->toff_sl = (float *) XtMalloc( sizeof(float) * new_taxis->nsl ) ;
00193 for( isl = 0 ; isl < new_taxis->nsl ; isl++ )
00194 new_taxis->toff_sl[isl] = old_dset->taxis->toff_sl[isl] ;
00195 } else {
00196 new_taxis->toff_sl = NULL ;
00197 }
00198 } else {
00199 new_dset->taxis = NULL ;
00200 }
00201
00202 RETURN( new_dset );
00203 }
00204
00205
00206
00207
00208 THD_datablock * EDIT_empty_datablock(void)
00209 {
00210 THD_datablock *new_dblk ;
00211 THD_diskptr *new_dkptr ;
00212
00213 ENTRY("EDIT_empty_datablock") ;
00214
00215
00216
00217 new_dblk = myXtNew( THD_datablock ) ;
00218 new_dblk->type = DATABLOCK_TYPE ;
00219 new_dblk->brick = NULL ;
00220 new_dblk->brick_bytes = NULL ;
00221 new_dblk->brick_fac = NULL ;
00222 new_dblk->total_bytes = 0 ;
00223 new_dblk->malloc_type = DATABLOCK_MEM_UNDEFINED ;
00224 new_dblk->parent = NULL ;
00225 new_dblk->brick_lab = NULL ;
00226 new_dblk->brick_keywords = NULL ;
00227 new_dblk->brick_statcode = NULL ;
00228 new_dblk->brick_stataux = NULL ;
00229 new_dblk->master_nvals = 0 ;
00230 new_dblk->master_ival = NULL ;
00231 new_dblk->master_bytes = NULL ;
00232 new_dblk->master_bot = 1.0 ;
00233 new_dblk->master_top = 0.0 ;
00234 new_dblk->shm_idcode[0] = '\0' ;
00235 new_dblk->nvals = 1 ;
00236 new_dblk->natr = new_dblk->natr_alloc = 0 ;
00237 new_dblk->atr = NULL ;
00238
00239 new_dkptr = new_dblk->diskptr = myXtNew( THD_diskptr ) ;
00240
00241 new_dkptr->type = DISKPTR_TYPE ;
00242 new_dkptr->rank = 3 ;
00243 new_dkptr->nvals = 1 ;
00244 new_dkptr->storage_mode = STORAGE_UNDEFINED ;
00245 new_dkptr->byte_order = THD_get_write_order() ;
00246 new_dkptr->dimsizes[0] = 2 ;
00247 new_dkptr->dimsizes[1] = 2 ;
00248 new_dkptr->dimsizes[2] = 2 ;
00249
00250 THD_init_diskptr_names( new_dkptr ,
00251 "./" , NULL , DUMMY_NAME ,
00252 VIEW_ORIGINAL_TYPE , True ) ;
00253
00254 INIT_KILL(new_dblk->kl) ;
00255 ADDTO_KILL(new_dblk->kl,new_dkptr) ;
00256
00257 DBLK_unlock(new_dblk) ;
00258 THD_null_datablock_auxdata( new_dblk ) ;
00259
00260 RETURN( new_dblk ) ;
00261 }