Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
thd_tmask.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include "mrilib.h"
00008
00009
00010
00011
00012
00013 void free_Tmask( Tmask * tm )
00014 {
00015 if( tm != NULL ){
00016 free(tm->mask[0]) ; free(tm->mask[1]) ; free(tm->mask[2]) ; free(tm) ;
00017 }
00018 return ;
00019 }
00020
00021
00022
00023 Tmask * create_Tmask_byte( int nx, int ny, int nz, byte * vol )
00024 {
00025 Tmask * tm ;
00026 int ii,jj,kk,vv , nxy,nyz,nzx ;
00027 byte * bz , *xym,*yzm,*zxm , *bxy,*byz,*bzx ;
00028
00029 tm = (Tmask *) malloc(sizeof(Tmask)) ;
00030 tm->nmask[TM_IXY] = nxy = nx*ny ;
00031 tm->nmask[TM_IYZ] = nyz = ny*nz ;
00032 tm->nmask[TM_IZX] = nzx = nz*nx ;
00033
00034 tm->mask[TM_IXY] = xym = (byte *) calloc(1,sizeof(byte)*nxy) ;
00035 tm->mask[TM_IYZ] = yzm = (byte *) calloc(1,sizeof(byte)*nyz) ;
00036 tm->mask[TM_IZX] = zxm = (byte *) calloc(1,sizeof(byte)*nzx) ;
00037
00038 for( byz=yzm,kk=0 ; kk < nz ; kk++,byz+=ny ){
00039 bz = vol + kk*nxy ;
00040 for( bxy=xym,jj=0 ; jj < ny ; jj++,bz+=nx,bxy+=nx ){
00041 for( bzx=zxm,ii=0 ; ii < nx ; ii++,bzx+=nz ){
00042 if( bz[ii] ){ bxy[ii] = byz[jj] = bzx[kk] = 1 ; }
00043 }
00044 }
00045 }
00046
00047 return tm ;
00048 }
00049
00050
00051
00052 Tmask * create_Tmask_rgba( int nx, int ny, int nz, rgba * vol )
00053 {
00054 Tmask *tm ;
00055 int ii,jj,kk,vv , nxy,nyz,nzx ;
00056 byte *xym,*yzm,*zxm , *bxy,*byz,*bzx ;
00057 rgba *bz ;
00058
00059 tm = (Tmask *) malloc(sizeof(Tmask)) ;
00060 tm->nmask[TM_IXY] = nxy = nx*ny ;
00061 tm->nmask[TM_IYZ] = nyz = ny*nz ;
00062 tm->nmask[TM_IZX] = nzx = nz*nx ;
00063
00064 tm->mask[TM_IXY] = xym = (byte *) calloc(1,sizeof(byte)*nxy) ;
00065 tm->mask[TM_IYZ] = yzm = (byte *) calloc(1,sizeof(byte)*nyz) ;
00066 tm->mask[TM_IZX] = zxm = (byte *) calloc(1,sizeof(byte)*nzx) ;
00067
00068 for( byz=yzm,kk=0 ; kk < nz ; kk++,byz+=ny ){
00069 bz = vol + kk*nxy ;
00070 for( bxy=xym,jj=0 ; jj < ny ; jj++,bz+=nx,bxy+=nx ){
00071 for( bzx=zxm,ii=0 ; ii < nx ; ii++,bzx+=nz ){
00072 if( bz[ii].a ){ bxy[ii] = byz[jj] = bzx[kk] = 1 ; }
00073 }
00074 }
00075 }
00076
00077 return tm ;
00078 }