00001 #include <iostream> 00002 #include <fstream> 00003 #include <unistd.h> 00004 #include <errno.h> 00005 #include <stdlib.h> 00006 #include "Volume/Regular/Unimodal/3d/2B/2B.h" 00007 00008 using namespace std; 00009 00010 void usage(const char* exe); 00011 bool readnumber(const char* str, int& number); 00012 00013 int main(int argc, char ** argv) 00014 { 00015 if(argc < 5) { 00016 usage(argv[0]); 00017 return -1; 00018 } 00019 00020 vu11122 volume; 00021 int startID, endID, incID = 1; 00022 if(!readnumber(argv[3], startID)) { usage(argv[0]); return false; } 00023 if(!readnumber(argv[4], endID)) { usage(argv[0]); return false; } 00024 if (argc == 6) 00025 if(!readnumber(argv[5], incID)) { usage(argv[0]); return false; } 00026 00027 cout << "reading slices with mask " << argv[1] << " from " << startID 00028 << " to " << endID << endl; 00029 if(readFreZ(volume, argv[1], startID, endID, incID)) 00030 { 00031 volume.setFileName(argv[2]); 00032 volume.write(); 00033 } else cout << "Error: Could not load file." << endl; 00034 00035 cout << "done." << endl; 00036 return 0; 00037 } 00038 00039 void usage(const char* exe) 00040 { 00041 const char *file = strrchr(exe,'/'); 00042 if(!file) 00043 { 00044 file = strrchr(exe,'\\'); 00045 if(file) file++; 00046 else file = exe; 00047 } else file++; 00048 00049 cout << "usage: " << file << " inputmask outputfile startID " 00050 << "endID [incrementID]" << endl << endl; 00051 cout << "inputmask format string with ID, e.g., \"c_vm%i.fre.Z\" "<<endl; 00052 cout << "outputfile name of vud file including extension"<<endl; 00053 cout << "startID file ID number of first slice" << endl; 00054 cout << "endID file ID numer of last slice, has to be greater than " 00055 << "startID" << endl; 00056 cout << "incrementID stepping if only every nth slice should be read. " 00057 << "(default is 1)" << endl; 00058 } 00059 00060 bool readnumber(const char* str, int& number) 00061 { 00062 char *endp; 00063 errno = 0; 00064 number = strtol(str,&endp,10); 00065 if(errno || 00066 endp != str+strlen(str)) return false; 00067 return true; 00068 } 00069