00001 #include "vuSphericLightfieldBasicConverter.h" 00002 00003 void vuBasicLightfieldConverter::convert(const char *inFile, 00004 const char *outFile, 00005 bool isVerbose) 00006 { 00007 } 00008 00009 template <int SI, class TI, int SO, class TO> 00010 bool vuSphericLightfieldBasicConverter<SI,TI,SO,TO>:: 00011 _areViewsValid(vuSphericView<SI,TI> *in, vuSphericView<SO,TO> *out) 00012 { 00013 if (in == NULL || out == NULL) return false; 00014 if ((in->getWidth()==0) || (in->getHeight()==0)) return false; 00015 if (in->getWidth() != out->getWidth()) return false; 00016 if (in->getHeight() != out->getHeight()) return false; 00017 00018 return true; 00019 } 00020 00021 template <int SI, class TI, int SO, class TO> 00022 void vuSphericLightfieldBasicConverter<SI,TI,SO,TO>:: 00023 convert(const char *inFile, const char *outFile, bool isVerbose) 00024 { 00025 vuSphericLightfieldFile<SI,TI> in(inFile); 00026 00027 if (!in.open()) exitWithHint(in); 00028 if (!in.readHeader()) exitWithHint(in); 00029 00030 dword width = in.getWidth(); 00031 dword height = in.getHeight(); 00032 dword cnt = in.getNumberOfViews(); 00033 00034 if (isVerbose) { 00035 cerr << "Input file: resolution= " << width << "x" << height << endl; 00036 cerr << " views= " << cnt << endl; 00037 } 00038 00039 vuSphericLightfieldFile<SO, TO> out(width, height, cnt, outFile); 00040 00041 if (!out.open()) exitWithHint(out); 00042 if (!out.writeHeader()) exitWithHint(out); 00043 00044 vuSphericView<SI,TI> *inView = new vuSphericView<SI, TI>; 00045 vuSphericView<SO,TO> *outView = NULL; 00046 00047 outView = new vuSphericView<SO,TO>(width, height); 00048 00049 for (dword i=0; i<cnt; i++) { 00050 if (isVerbose) cerr << "view: " << i; 00051 00052 if (!in.readView(inView)) 00053 cerr << "Warning: Could not read view " << i << endl; 00054 else { 00055 outView->setLookFrom(inView->getLookFrom()); 00056 outView->setUp(inView->getUp()); 00057 _convert(inView, outView); 00058 if (!out.writeView(outView)) exitWithHint(out); 00059 } 00060 00061 if (isVerbose) cerr << endl; 00062 } 00063 in.close(); 00064 out.close(); 00065 00066 CHECKNDELETE(inView); 00067 CHECKNDELETE(outView); 00068 } 00069 00070 template <int SI, class TI, int SO, class TO> 00071 void vuSphericLightfieldBasicConverter<SI,TI,SO,TO>:: 00072 exitWithHint(vuLightfieldFile &file) 00073 { 00074 cerr << "Error while processing file '" << file.getFileName(); 00075 cerr << "': " << file.getErrorMessage() << endl; 00076 exit(1); 00077 } 00078