From: <da...@us...> - 2008-02-18 23:19:41
|
Revision: 2896 http://hugin.svn.sourceforge.net/hugin/?rev=2896&view=rev Author: dangelo Date: 2008-02-18 15:19:37 -0800 (Mon, 18 Feb 2008) Log Message: ----------- Loading images should now properly detect which images should share a lens and which not. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/MainFrame.h hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp Modified: hugin/trunk/src/hugin1/hugin/MainFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-02-18 23:18:22 UTC (rev 2895) +++ hugin/trunk/src/hugin1/hugin/MainFrame.h 2008-02-18 23:19:37 UTC (rev 2896) @@ -233,7 +233,7 @@ DECLARE_EVENT_TABLE() }; -void getLensDataFromUser(wxWindow * parent, SrcPanoImage & srcImg, +bool getLensDataFromUser(wxWindow * parent, SrcPanoImage & srcImg, double & focalLength, double & cropFactor); #endif // _MAINFRAME_H Modified: hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2008-02-18 23:18:22 UTC (rev 2895) +++ hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2008-02-18 23:19:37 UTC (rev 2896) @@ -217,7 +217,11 @@ #endif // if no similar image found, ask user if (! ok) { - getLensDataFromUser(MainFrame::Get(), srcImg, focalLength, cropFactor); + if (!getLensDataFromUser(MainFrame::Get(), srcImg, focalLength, cropFactor)) { + // assume a standart lens + srcImg.setHFOV(50); + srcImg.setExifCropFactor(1); + } } if( srcImg.getSize().x == 0) { @@ -234,31 +238,44 @@ SrcPanoImage other = pano.getSrcImage(i); // force reading of exif data, as it is currently not stored in the // Panorama data class - other.readEXIF(focalLength, cropFactor, false); - if (other.getSize() == srcImg.getSize() - && other.getExifModel() == srcImg.getExifModel() - && other.getExifMake() == srcImg.getExifMake() - && other.getExifFocalLength() == srcImg.getExifFocalLength() - ) - { - matchingLensNr = pano.getImage(i).getLensNr(); - // copy data from other image, just keep - // the file name and reload the exif data (for exposure) - double ev = srcImg.getExposureValue(); - srcImg = pano.getSrcImage(i); - srcImg.setFilename(filename); - srcImg.setExposureValue(ev); - break; + if (other.readEXIF(focalLength, cropFactor, false)) { + if (other.getSize() == srcImg.getSize() + && other.getExifModel() == srcImg.getExifModel() + && other.getExifMake() == srcImg.getExifMake() + && other.getExifFocalLength() == srcImg.getExifFocalLength() + ) + { + matchingLensNr = pano.getImage(i).getLensNr(); + // copy data from other image, just keep + // the file name and reload the exif data (for exposure) + double ev = srcImg.getExposureValue(); + srcImg = pano.getSrcImage(i); + srcImg.setFilename(filename); + srcImg.setExposureValue(ev); + break; + } + } else { + // no exiv information, just check image size. + if (other.getSize() == srcImg.getSize() ) { + matchingLensNr = pano.getImage(i).getLensNr(); + // copy data from other image, just keep + // the file name + srcImg = pano.getSrcImage(i); + srcImg.setFilename(filename); + break; + } } } if (matchingLensNr == -1) { // create and add new lens Lens lens; + lens.setImageSize(srcImg.getSize()); matchingLensNr = pano.addLens(lens); } PanoImage img(filename, srcImg.getSize().x, srcImg.getSize().y, (unsigned int) matchingLensNr); + srcImg.setLensNr(matchingLensNr); int imgNr = pano.addImage(img, vars); pano.setSrcImage(imgNr, srcImg); if (imgNr == 0) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |