1 #include "mrilib.h"
2 
3 /*----------------------------------------------------------------------------*/
4 
THD_image_to_dset(MRI_IMAGE * im,char * prefix)5 THD_3dim_dataset * THD_image_to_dset( MRI_IMAGE *im , char *prefix )
6 {
7    THD_3dim_dataset *dset ;
8    MRI_IMAGE *cim ;
9    THD_ivec3 ivec , orixyz ;
10    THD_fvec3 fvec ;
11 
12 ENTRY("THD_image_to_dset") ;
13 
14    if( im == NULL ) RETURN(NULL) ;
15 
16    dset = EDIT_empty_copy(NULL) ;
17 
18    LOAD_IVEC3( ivec , im->nx , im->ny , im->nz ) ;
19 
20    LOAD_FVEC3( fvec , -0.5f*(im->nx-1) , -0.5f*(im->ny-1) , -0.5f*(im->nz-1) ) ;
21 
22    orixyz.ijk[0] = ORI_L2R_TYPE ; /* 02 Feb 2018 */
23    orixyz.ijk[1] = ORI_A2P_TYPE ; /* orient it so Left-on-Left viewing is good */
24    orixyz.ijk[2] = ORI_I2S_TYPE ; /* since L-on-L viewing is the AFNI default */
25 
26    EDIT_dset_items( dset ,
27                      ADN_nxyz      , ivec ,
28                      ADN_xyzorg    , fvec ,
29                      ADN_xyzorient , orixyz ,
30                      ADN_type      , HEAD_FUNC_TYPE ,
31                      ADN_func_type , FUNC_FIM_TYPE ,
32                     ADN_none ) ;
33 
34    if( THD_filename_ok(prefix) )
35      EDIT_dset_items( dset , ADN_prefix , prefix , ADN_none ) ;
36 
37    dset->dblk->diskptr->storage_mode = STORAGE_BY_IMAGE_FILE ;
38    DSET_superlock(dset) ;  /* can't be purged from memory */
39 
40    cim = mri_copy(im) ;
41    EDIT_substitute_brick( dset , 0 , cim->kind , mri_data_pointer(cim) ) ;
42    mri_clear_data_pointer(cim) ; mri_free(cim) ;
43 
44    RETURN(dset) ;
45 }
46 
47 /*----------------------------------------------------------------------------*/
48 
THD_open_image(char * fname)49 THD_3dim_dataset * THD_open_image( char *fname )
50 {
51    MRI_IMAGE *im ; THD_3dim_dataset *dset ;
52 
53 ENTRY("THD_open_image") ;
54 
55    im = mri_read_stuff(fname) ;
56 
57    if( im == NULL ) RETURN(NULL) ;
58 
59    dset = THD_image_to_dset(im,THD_trailname(fname,0)) ;
60    mri_free(im) ;
61 
62    RETURN(dset) ;
63 }
64