Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
mri_to_rgba.c
Go to the documentation of this file.00001 #include "mrilib.h"
00002
00003
00004
00005 MRI_IMAGE *mri_to_rgba( MRI_IMAGE *oldim )
00006 {
00007 MRI_IMAGE *newim ;
00008 register int ii , npix ;
00009 register rgba * oar ;
00010
00011 ENTRY("mri_to_rgba") ;
00012
00013 if( oldim == NULL ) RETURN( NULL );
00014
00015 newim = mri_new_conforming( oldim , MRI_rgba ) ; oar = MRI_RGBA_PTR(newim) ;
00016 npix = oldim->nvox ;
00017
00018 switch( oldim->kind ){
00019
00020 case MRI_byte:
00021 for( ii=0 ; ii < npix ; ii++ ){
00022 oar[ii].r = oar[ii].g = oar[ii].b = oldim->im.byte_data[ii] ;
00023 oar[ii].a = 255 ;
00024 }
00025 break ;
00026
00027 case MRI_float:
00028 for( ii=0 ; ii < npix ; ii++ ){
00029 oar[ii].r = oar[ii].g = oar[ii].b = oldim->im.float_data[ii] ;
00030 oar[ii].a = 255 ;
00031 }
00032 break ;
00033
00034 case MRI_short:
00035 for( ii=0 ; ii < npix ; ii++ ){
00036 oar[ii].r = oar[ii].g = oar[ii].b = oldim->im.short_data[ii] ;
00037 oar[ii].a = 255 ;
00038 }
00039 break ;
00040
00041 case MRI_rgb:
00042 for( ii=0 ; ii < npix ; ii++ ){
00043 oar[ii].r = oldim->im.rgb_data[3*ii] ;
00044 oar[ii].g = oldim->im.rgb_data[3*ii+1] ;
00045 oar[ii].b = oldim->im.rgb_data[3*ii+2] ;
00046 oar[ii].a = 255 ;
00047 }
00048 break ;
00049
00050 case MRI_rgba:
00051 memcpy( oar , oldim->im.rgba_data , sizeof(rgba)*npix ) ;
00052 break ;
00053
00054 default:
00055 fprintf(stderr,"mri_to_rgb: unrecognized image conversion %d\n",oldim->kind) ;
00056 RETURN( NULL );
00057 }
00058
00059 MRI_COPY_AUX(newim,oldim) ;
00060 RETURN( newim );
00061 }