EMAN::DM3IO Class Reference

Gatan DM3 file is a hierarchical binary image format. More...

#include <dm3io.h>

Inheritance diagram for EMAN::DM3IO:

Inheritance graph
[legend]
Collaboration diagram for EMAN::DM3IO:

Collaboration graph
[legend]
List of all members.

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::TagTabletagtable

Detailed Description

Gatan DM3 file is a hierarchical binary image format.

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.


Member Enumeration Documentation

anonymous enum [private]

Enumerator:
NUM_ID_INT 

Definition at line 256 of file dm3io.h.

00257                 { NUM_ID_INT = 3 };


Constructor & Destructor Documentation

DM3IO::DM3IO ( const string &  filename,
IOMode  rw_mode = READ_ONLY 
) [explicit]

Definition at line 637 of file dm3io.cpp.

References is_big_endian, EMAN::ByteOrder::is_host_big_endian(), and tagtable.

00638         :       filename(dm3_filename), rw_mode(rw), dm3file(0), initialized(false)
00639 {
00640         is_big_endian = ByteOrder::is_host_big_endian();
00641         tagtable = new TagTable();
00642 }

DM3IO::~DM3IO (  ) 

Definition at line 644 of file dm3io.cpp.

References dm3file, and tagtable.

00645 {
00646         if (dm3file) {
00647                 fclose(dm3file);
00648                 dm3file = 0;
00649         }
00650         if (tagtable) {
00651                 delete tagtable;
00652                 tagtable = 0;
00653         }
00654 }


Member Function Documentation

bool DM3IO::is_valid ( const void *  first_block  )  [static]

Definition at line 699 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().

00700 {
00701         ENTERFUNC;
00702 
00703         if (!first_block) {
00704                 return false;
00705         }
00706 
00707         const int *data = static_cast < const int *>(first_block);
00708 
00709         int img_ver = data[0];
00710         int img_size = data[1];
00711         int byte_order = data[2];
00712 
00713         ByteOrder::become_big_endian(&img_ver);
00714 
00715         if (img_ver != 3) {
00716                 return false;
00717         }
00718 
00719         ByteOrder::become_big_endian(&img_size);
00720         ByteOrder::become_big_endian(&byte_order);
00721 
00722         if (byte_order != 0 && byte_order != 1) {
00723                 return false;
00724         }
00725 
00726         return true;
00727 }


Member Data Documentation

EMAN::DM3IO::DEFINE_IMAGEIO_FUNC

Definition at line 252 of file dm3io.h.

FILE* EMAN::DM3IO::dm3file [private]

Definition at line 262 of file dm3io.h.

Referenced by ~DM3IO().

string EMAN::DM3IO::filename [private]

Definition at line 260 of file dm3io.h.

bool EMAN::DM3IO::initialized [private]

Definition at line 264 of file dm3io.h.

bool EMAN::DM3IO::is_big_endian [private]

Definition at line 263 of file dm3io.h.

Referenced by DM3IO().

IOMode EMAN::DM3IO::rw_mode [private]

Definition at line 261 of file dm3io.h.

Gatan::TagTable* EMAN::DM3IO::tagtable [private]

Definition at line 265 of file dm3io.h.

Referenced by DM3IO(), and ~DM3IO().


The documentation for this class was generated from the following files:
Generated on Tue Jul 12 13:48:11 2011 for EMAN2 by  doxygen 1.4.7