Doxygen Source Code Documentation
mri_copy.c File Reference
#include "mrilib.h"
Go to the source code of this file.
Functions | |
MRI_IMAGE * | mri_copy (MRI_IMAGE *oldim) |
MRI_IMAGE * | mri_expand_2D (int nup, MRI_IMAGE *imin) |
Function Documentation
|
|
Definition at line 40 of file mri_copy.c. References ENTRY, MRI_IMAGE::kind, mri_copy(), MRI_COPY_AUX, mri_data_pointer(), mri_new(), MRI_IMAGE::nx, MRI_IMAGE::ny, MRI_IMAGE::nz, MRI_IMAGE::pixel_size, and RETURN.
00041 { 00042 MRI_IMAGE *newim ; 00043 int nx,ny , nxup,nyup , ii,jj, pp,qq , ds ; 00044 char *nar , *iar ; 00045 00046 ENTRY("mri_expand") ; 00047 00048 /*-- sanity checks --*/ 00049 00050 if( nup < 1 || imin == NULL || imin->nz > 1 ) RETURN(NULL); 00051 00052 if( nup == 1 ){ newim = mri_copy(imin); RETURN(newim); } 00053 00054 iar = (char *)mri_data_pointer(imin) ; if( iar == NULL ) RETURN(NULL); 00055 00056 nx = imin->nx ; nxup = nx*nup ; 00057 ny = imin->ny ; nyup = ny*nup ; 00058 00059 newim = mri_new( nxup,nyup , imin->kind ) ; 00060 nar = (char *)mri_data_pointer(newim) ; 00061 ds = imin->pixel_size ; 00062 00063 for( jj=0 ; jj < nyup ; jj++ ){ 00064 qq = jj / nup ; 00065 for( ii=0 ; ii < nxup ; ii++ ){ 00066 pp = ii / nup ; 00067 memcpy( nar + (ii+jj*nxup)*ds , iar + (pp+qq*nx)*ds , ds ) ; 00068 } 00069 } 00070 00071 MRI_COPY_AUX( newim , imin ) ; 00072 RETURN(newim) ; 00073 } |