Exemple #1
0
int MRC::read2DIm_32bit(float *buf, int n)
{
	int mode = m_header.mode;
	size_t size=m_header.nx*m_header.ny;
	if(size<=0) return 0;
	
	char *buf8=NULL;
	unsigned char *bufu8=NULL;
	short *buf16=NULL;
	unsigned short *bufu16=NULL;
	size_t r,i;
	
	switch(mode)
	{
		case 0:
			buf8=new char[size];
			r=read2DIm((void*)buf8,n);
			if(r<=0) 
			{
				delete [] buf8;
				return 0;
			}
			for(i=0;i<size;i++) buf[i]=float(buf8[i]);
			delete [] buf8;
			return r;
	
		case 1:
			buf16=new short[size];
			r=read2DIm((void*)buf16,n);
			if(r<=0) 
			{
				delete [] buf16;
				return 0;
			}
			for(i=0;i<size;i++) buf[i]=float(buf16[i]);
			delete [] buf16;
			return r;

		case 2:
			return read2DIm((void*)buf,n);
			
		case 5:
			bufu8=new unsigned char[size];
			r=read2DIm((void*)bufu8,n);
			if(r<=0) 
			{
				delete [] bufu8;
				return 0;
			}
			for(i=0;i<size;i++) buf[i]=float(bufu8[i]);
			delete [] bufu8;
			return r;
			
		case 6:
			bufu16=new unsigned short[size];
			r=read2DIm((void*)bufu16,n);
			if(r<=0) 
			{
				delete [] bufu16;
				return 0;
			}
			for(i=0;i<size;i++) buf[i]=float(bufu16[i]);
			delete [] bufu16;
			return r;

	}
	
	return 0;

}
Exemple #2
0
int MRC::read2DIm_32bit(float *buf, int n)
{
#ifdef EMAN2
	if(int(imageHeader.get_attr("nImage"))==1 && m_header.nz>1)  {	// read a section in 3D map
		Region r(0, 0, n, imageHeader.get_xsize(), imageHeader.get_ysize(), 1);
		imageHeader.read_image(m_filename, 0, 0, &r);
	}
	else {
		imageHeader.read_image(m_filename, n);
	}
	
	size_t nbytes = sizeof(float)*imageHeader.get_size();
	memcpy(buf, imageHeader.get_const_data(), nbytes);
	return nbytes;
#else
	int mode = m_header.mode;
	size_t size=m_header.nx*m_header.ny;
	if(size<=0) return 0;
	
	char *buf8=NULL;
	unsigned char *bufu8=NULL;
	short *buf16=NULL;
	unsigned short *bufu16=NULL;
	size_t r,i;
	
	switch(mode)
	{
		case 0:
			buf8=new char[size];
			r=read2DIm((void*)buf8,n);
			if(r<=0) 
			{
				delete [] buf8;
				return 0;
			}
			for(i=0;i<size;i++) buf[i]=float(buf8[i]);
			delete [] buf8;
			return r;
	
		case 1:
			buf16=new short[size];
			r=read2DIm((void*)buf16,n);
			if(r<=0) 
			{
				delete [] buf16;
				return 0;
			}
			for(i=0;i<size;i++) buf[i]=float(buf16[i]);
			delete [] buf16;
			return r;

		case 2:
			return read2DIm((void*)buf,n);
			
		case 5:
			bufu8=new unsigned char[size];
			r=read2DIm((void*)bufu8,n);
			if(r<=0) 
			{
				delete [] bufu8;
				return 0;
			}
			for(i=0;i<size;i++) buf[i]=float(bufu8[i]);
			delete [] bufu8;
			return r;
			
		case 6:
			bufu16=new unsigned short[size];
			r=read2DIm((void*)bufu16,n);
			if(r<=0) 
			{
				delete [] bufu16;
				return 0;
			}
			for(i=0;i<size;i++) buf[i]=float(bufu16[i]);
			delete [] bufu16;
			return r;

	}
	return 0;
#endif
}