#include <dm3io.h>
Inheritance diagram for EMAN::DM3IO:
Public Member Functions | |
DM3IO (const string &filename, IOMode rw_mode=READ_ONLY) | |
~DM3IO () | |
Static Public Member Functions | |
static bool | is_valid (const void *first_block) |
Public Attributes | |
DEFINE_IMAGEIO_FUNC | |
Private Types | |
NUM_ID_INT = 3 | |
enum | { NUM_ID_INT = 3 } |
Private Attributes | |
string | filename |
IOMode | rw_mode |
FILE * | dm3file |
bool | is_big_endian |
bool | initialized |
Gatan::TagTable * | tagtable |
Everything in the image is a <key, value> pair, where key may be a container-type key which contains more key/value pairs. To read its header information, the whole file has to be parsed. During parsing, we check the keys that we are interested in and get their values.
The real binary data itself is also in this key/value hierarchy.
1 Gatan DM3 file contains 1 2D image.
Definition at line 246 of file dm3io.h.
anonymous enum [private] |
DM3IO::DM3IO | ( | const string & | filename, | |
IOMode | rw_mode = READ_ONLY | |||
) | [explicit] |
Definition at line 638 of file dm3io.cpp.
References is_big_endian, EMAN::ByteOrder::is_host_big_endian(), and tagtable.
00639 : filename(dm3_filename), rw_mode(rw), dm3file(0), initialized(false) 00640 { 00641 is_big_endian = ByteOrder::is_host_big_endian(); 00642 tagtable = new TagTable(); 00643 }
DM3IO::~DM3IO | ( | ) |
bool DM3IO::is_valid | ( | const void * | first_block | ) | [static] |
Definition at line 700 of file dm3io.cpp.
References EMAN::ByteOrder::become_big_endian(), data, and ENTERFUNC.
Referenced by EMAN::EMUtil::fast_get_image_type(), and EMAN::EMUtil::get_image_type().
00701 { 00702 ENTERFUNC; 00703 00704 if (!first_block) { 00705 return false; 00706 } 00707 00708 const int *data = static_cast < const int *>(first_block); 00709 00710 int img_ver = data[0]; 00711 int img_size = data[1]; 00712 int byte_order = data[2]; 00713 00714 ByteOrder::become_big_endian(&img_ver); 00715 00716 if (img_ver != 3) { 00717 return false; 00718 } 00719 00720 ByteOrder::become_big_endian(&img_size); 00721 ByteOrder::become_big_endian(&byte_order); 00722 00723 if (byte_order != 0 && byte_order != 1) { 00724 return false; 00725 } 00726 00727 return true; 00728 }
FILE* EMAN::DM3IO::dm3file [private] |
string EMAN::DM3IO::filename [private] |
bool EMAN::DM3IO::initialized [private] |
bool EMAN::DM3IO::is_big_endian [private] |
IOMode EMAN::DM3IO::rw_mode [private] |
Gatan::TagTable* EMAN::DM3IO::tagtable [private] |