Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

scalevud.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <fstream>
00003 #include <unistd.h>
00004 #include <errno.h>
00005 #include <stdlib.h>
00006 #include "vuFileHelper.h"
00007 #include "Volume/Regular/Unimodal/3d/1B/1B.h"
00008 #include "vuHistogram.h"
00009 
00010 using namespace std;
00011 
00012 void usage(const char* exe);
00013 bool readnumber(const char* str, int& number);
00014 
00015 int main(int argc, char ** argv)
00016 {
00017     if(argc != 6) {
00018         usage(argv[0]);
00019         return -1;
00020     }
00021 
00022     vuString fileName = argv[1];
00023     vuString fileType = vuFileHelper::getFileType(fileName);
00024     if (fileType.isEmpty()) {
00025         cout << "Error: Wrong filetype." << endl;
00026         return -1;
00027     }
00028 
00029     vuString outfileName = argv[2];
00030 
00031     int scale[3];
00032     int i;
00033     for(i=0; i<3; i++)
00034     {
00035         if(!readnumber(argv[i+3], scale[i])) {
00036             usage(argv[0]);
00037             return false;
00038         }
00039     }
00040     cout << "loading" << endl;
00041     vu11121 volume;
00042     volume.setFileName(fileName);
00043     if(!volume.read()) {
00044         cout << "Error: Could not load file " << fileName << "." << endl;
00045         return -1;
00046     }
00047     vu11121 scalevol;
00048     scalevol.scaleFrom(volume, scale[0], scale[1], scale[2]);
00049     scalevol.setFileName(outfileName);
00050     scalevol.write();
00051 
00052     cout << "done." << endl;
00053     return 0;
00054 }
00055 
00056 void usage(const char* exe)
00057 {
00058     const char *file = strrchr(exe,'/');
00059     if(!file) 
00060     {
00061         file = strrchr(exe,'\\');
00062         if(file) file++;
00063         else file = exe;
00064     } else file++;
00065 
00066     cout << "usage:  " << file << " inputfile outputfile Xscale Yscale Zscale" 
00067          << endl << endl;
00068     cout << "inputfile      name of vud file including extension"<<endl;
00069     cout << "outputfile     name of histogram file to ouput"<<endl;
00070     cout << "Xscale         new x dimension" << endl;
00071     cout << "Yscale         new y dimension" << endl;
00072     cout << "Zscale         new z dimension" << endl;
00073 }
00074 
00075 bool readnumber(const char* str, int& number)
00076 {
00077     char *endp;
00078     errno = 0;
00079     number = strtol(str,&endp,10);
00080     if(errno || 
00081        endp != str+strlen(str)) return false;
00082     return true;
00083 }
00084 

Generated on Wed Dec 15 21:20:30 2004 for vuVolume by  doxygen 1.3.9.1