#include <lstfastio.h>
Inheritance diagram for EMAN::LstFastIO:
Public Member Functions | |
LstFastIO (const string &filename, IOMode rw_mode=READ_ONLY) | |
~LstFastIO () | |
bool | is_single_image_format () const |
Is this image format only storing 1 image or not. | |
int | get_nimg () |
Return the number of images in this image file. | |
Static Public Member Functions | |
bool | is_valid (const void *first_block) |
Public Attributes | |
DEFINE_IMAGEIO_FUNC | |
Private Member Functions | |
int | calc_ref_image_index (int image_index) |
Private Attributes | |
string | filename |
IOMode | rw_mode |
FILE * | lst_file |
bool | is_big_endian |
bool | initialized |
int | nimg |
unsigned int | line_length |
unsigned int | head_length |
ImageIO * | imageio |
string | ref_filename |
int | last_lst_index |
int | last_ref_index |
Static Private Attributes | |
const char * | MAGIC = "#LSX" |
Each line of a LSX file has the following format: after the #LSX magic number are 2 lines, the second line containing # comment # line-length Denoting the length of each line in the file. If writing additional lines to the file, this length must not be exceeded.
Additional '#' comment lines are NOT permitted within the file
lines have the form: reference_image_index reference-image-filename comments
Definition at line 58 of file lstfastio.h.
|
Definition at line 56 of file lstfastio.cpp. References imageio, initialized, is_big_endian, EMAN::ByteOrder::is_host_big_endian(), last_lst_index, last_ref_index, nimg, and ref_filename. 00057 : filename(file), rw_mode(rw), lst_file(0) 00058 { 00059 is_big_endian = ByteOrder::is_host_big_endian(); 00060 initialized = false; 00061 nimg = 0; 00062 imageio = 0; 00063 ref_filename = ""; 00064 last_lst_index = -1; 00065 last_ref_index = -1; 00066 }
|
|
Definition at line 68 of file lstfastio.cpp. References imageio, lst_file, and ref_filename. 00069 { 00070 if (lst_file) { 00071 fclose(lst_file); 00072 lst_file = 0; 00073 } 00074 ref_filename = ""; 00075 if(imageio) { 00076 delete imageio; 00077 imageio = 0; 00078 } 00079 }
|
|
Definition at line 132 of file lstfastio.cpp. References filename, EMAN::EMUtil::get_imageio(), head_length, imageio, last_lst_index, last_ref_index, line_length, LOGERR, lst_file, ref_filename, and rw_mode. 00133 { 00134 if (image_index == last_lst_index) { 00135 return last_ref_index; 00136 } 00137 else { 00138 char buf[MAXPATHLEN]; 00139 00140 fseek(lst_file,head_length+line_length*image_index,SEEK_SET); 00141 if (!fgets(buf, MAXPATHLEN, lst_file)) { 00142 LOGERR("reach EOF in file '%s' before reading %dth image", 00143 filename.c_str(), image_index); 00144 return 1; 00145 } 00146 00147 int ref_image_index = 0; 00148 char ref_image_path[MAXPATHLEN]; 00149 char unused[256]; 00150 sscanf(buf, " %d %s %[ .,0-9-]", &ref_image_index, ref_image_path, unused); 00151 00152 char fullpath[MAXPATHLEN]; 00153 00154 char sep = '/'; 00155 #ifdef WIN32 00156 sep = '\\'; 00157 #endif 00158 if (ref_image_path[0] == sep) { 00159 strcpy(fullpath, ref_image_path); 00160 } 00161 else { 00162 if (strrchr(filename.c_str(), sep)) { 00163 strcpy(fullpath, filename.c_str()); 00164 } 00165 else { 00166 #ifndef WIN32 00167 getcwd(fullpath, MAXPATHLEN); 00168 #else 00169 //GetCurrentDirectory(MAXPATHLEN, fullpath); 00170 #endif 00171 } 00172 00173 char *p_basename = strrchr(fullpath, sep); 00174 if (p_basename) { 00175 //p_basename++; 00176 //*p_basename = '\0'; 00177 char ssep[2]; 00178 ssep[0] = sep; 00179 ssep[1] = '\0'; 00180 strcat(fullpath, ssep); 00181 strcat(fullpath, ref_image_path); 00182 } 00183 } 00184 00185 ref_filename = string(fullpath); 00186 imageio = EMUtil::get_imageio(ref_filename, rw_mode); 00187 00188 last_ref_index = ref_image_index; 00189 } 00190 // printf("%d\t%d\t%s\n",image_index,last_ref_index,ref_filename.c_str()); 00191 00192 last_lst_index = image_index; 00193 00194 return last_ref_index; 00195 }
|
|
Return the number of images in this image file.
Reimplemented from EMAN::ImageIO. Definition at line 255 of file lstfastio.cpp. References EMAN::ImageIO::init(). 00256 { 00257 init(); 00258 return nimg; 00259 }
|
|
Is this image format only storing 1 image or not. Some image formats like MRC only store 1 image in a file, so this function returns 'true' for them. Other image formats like IMAGIC/HDF5 may store mutliple images, so this function returns 'false' for them. Reimplemented from EMAN::ImageIO. Definition at line 67 of file lstfastio.h. 00068 { 00069 return false; 00070 }
|
|
Definition at line 116 of file lstfastio.cpp. References EMAN::Util::check_file_by_magic(), and MAGIC. Referenced by EMAN::EMUtil::fast_get_image_type(), and EMAN::EMUtil::get_image_type(). 00117 { 00118 ENTERFUNC; 00119 bool result = false; 00120 00121 if (!first_block) { 00122 result = false; 00123 } 00124 else { 00125 result = Util::check_file_by_magic(first_block, MAGIC); 00126 } 00127 00128 EXITFUNC; 00129 return result; 00130 }
|
|
Definition at line 64 of file lstfastio.h. |
|
Definition at line 73 of file lstfastio.h. Referenced by calc_ref_image_index(). |
|
Definition at line 81 of file lstfastio.h. Referenced by calc_ref_image_index(). |
|
Definition at line 83 of file lstfastio.h. Referenced by calc_ref_image_index(), LstFastIO(), and ~LstFastIO(). |
|
Definition at line 78 of file lstfastio.h. Referenced by LstFastIO(). |
|
Definition at line 77 of file lstfastio.h. Referenced by LstFastIO(). |
|
Definition at line 86 of file lstfastio.h. Referenced by calc_ref_image_index(), and LstFastIO(). |
|
Definition at line 87 of file lstfastio.h. Referenced by calc_ref_image_index(), and LstFastIO(). |
|
Definition at line 80 of file lstfastio.h. Referenced by calc_ref_image_index(). |
|
Definition at line 75 of file lstfastio.h. Referenced by calc_ref_image_index(), and ~LstFastIO(). |
|
Definition at line 54 of file lstfastio.cpp. Referenced by is_valid(). |
|
Definition at line 79 of file lstfastio.h. Referenced by LstFastIO(). |
|
Definition at line 84 of file lstfastio.h. Referenced by calc_ref_image_index(), LstFastIO(), and ~LstFastIO(). |
|
Definition at line 74 of file lstfastio.h. Referenced by calc_ref_image_index(). |