From: <da...@us...> - 2007-06-19 21:45:28
|
Revision: 2120 http://hugin.svn.sourceforge.net/hugin/?rev=2120&view=rev Author: dangelo Date: 2007-06-19 14:45:27 -0700 (Tue, 19 Jun 2007) Log Message: ----------- deghosting application, skeleton for Jing Added Paths: ----------- hugin/trunk/src/deghosting/ hugin/trunk/src/deghosting/CMakeLists.txt hugin/trunk/src/deghosting/hugin_hdrmerge.cpp hugin/trunk/src/deghosting/khan.cpp hugin/trunk/src/deghosting/khan.h Added: hugin/trunk/src/deghosting/CMakeLists.txt =================================================================== --- hugin/trunk/src/deghosting/CMakeLists.txt (rev 0) +++ hugin/trunk/src/deghosting/CMakeLists.txt 2007-06-19 21:45:27 UTC (rev 2120) @@ -0,0 +1,4 @@ +# various command line utilities + +add_executable(hugin_hdrmerge hugin_hdrmerge.cpp khan.cpp) +target_link_libraries(hugin_hdrmerge ${common_libs} ${image_libs}) Added: hugin/trunk/src/deghosting/hugin_hdrmerge.cpp =================================================================== --- hugin/trunk/src/deghosting/hugin_hdrmerge.cpp (rev 0) +++ hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-06-19 21:45:27 UTC (rev 2120) @@ -0,0 +1,225 @@ +// -*- c-basic-offset: 4 -*- + +/** @file hugin_merge_images.cpp + * + * @brief merge images + * + * @author Pablo d'Angelo <pab...@we...> + * + * $Id: hugin_hdrmerge.cpp,v 1.3 2007/04/18 22:21:42 dangelo Exp $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include <config.h> +#include <fstream> +#include <sstream> +#include <math.h> +#include <algorithm> + +#include <boost/shared_ptr.hpp> + +#include <vigra/error.hxx> +#include <vigra/functorexpression.hxx> +#include <vigra_impex/codecmanager.hxx> + +#include <common/utils.h> + +#include <vigra_ext/impexalpha.hxx> +#include <vigra_ext/HDRUtils.h> + +#include <PT/PTOptimise.h> + +#ifdef WIN32 + #include <getopt.h> +#else + #include <unistd.h> +#endif + +#include "khan.h" + +using namespace PT; +using namespace std; + +using namespace utils; +using namespace vigra; +using namespace vigra::functor; +using namespace vigra_ext; + +int g_verbose = 0; + + +// load all images and apply a weighted average merge, with +// special cases for completely over or underexposed pixels. +bool mergeWeightedAverage(vector<string> inputFiles, FRGBImage & output) +{ + // load all images into memory + vector<ImagePtr> images; + vector<BImagePtr> weightImages; + + for (size_t i=0; i < inputFiles.size(); i++) + { + ImagePtr img = ImagePtr(new ImageType()); + BImagePtr weight = BImagePtr(new BImage()); + + if (g_verbose > 0) { + std::cout << "Loading image: " << inputFiles[i] << std::endl; + } + vigra::ImageImportInfo info(inputFiles[i].c_str()); + img->resize(info.size()); + weight->resize(info.size()); + vigra::importImageAlpha(info, vigra::destImage(*img), destImage(*weight)); + images.push_back(img); + weightImages.push_back(weight); + } + + // ensure all images have the same size (cropped images not supported yet) + int width=images[0]->width(); + int height=images[0]->height(); + for (int i=1; i < images.size(); i++) { + if (images[i]->width() != width || images[i]->height() != height) { + std::cerr << "Error: Input images need to be of the same size" << std::endl; + return false; + } + } + output.resize(width,height); + if (g_verbose > 0) { + std::cout << "Calculating weighted average " << std::endl; + } + // apply weighted average functor with + // heuristic to deal with pixels that are overexposed in all images + ReduceToHDRFunctor<ImageType::value_type> waverage; + + // loop over all pixels in the image (very low level access) + for (int y=0; y < height; y++) { + for (int x=0; x < width; x++) { + waverage.reset(); + // loop over all exposures + for (int imgNr=0; imgNr < images.size(); imgNr++) { + // add pixel to weighted average + waverage( (*images[imgNr])(x,y), (*weightImages[imgNr])(x,y) ); + } + // get result + output(x,y) = waverage(); + } + } + return true; +} + +static void usage(const char * name) +{ + cerr << name << ": merge overlapping images" << std::endl + << std::endl + << "Usage: " << name << " [options] -o output.exr input files" << std::endl + << "Valid options are:" << std::endl + << " -o prefix output file" << std::endl + << " -m mode merge mode, can be one of: avg, khan (not finished yet)" << std::endl + << " -v Verbose, print progress messages, repeat for" << std::endl + << " even more verbose output, -v -v -v will write debug files" << std::endl + << " -h Display help (this text)" << std::endl + << std::endl; +} + + +int main(int argc, char *argv[]) +{ + + // parse arguments + const char * optstring = "hvo:m:"; + int c; + + opterr = 0; + + g_verbose = 0; + std::string outputFile = "merged.hdr"; + std::string mode = "avg"; + string basename; + while ((c = getopt (argc, argv, optstring)) != -1) + switch (c) { + case 'm': + mode = optarg; + break; + case 'o': + outputFile = optarg; + break; + case 'v': + g_verbose++; + break; + case 'h': + usage(argv[0]); + return 1; + default: + cerr << "Invalid parameter: " << optarg << std::endl; + usage(argv[0]); + return 1; + } + + unsigned nFiles = argc - optind; + if (nFiles < 2) { + std::cerr << std::endl << "Error: at least two files need to be specified" << std::endl <<std::endl; + usage(argv[0]); + return 1; + } + + // suppress tiff warnings + TIFFSetWarningHandler(0); + + // load all images + vector<string> inputFiles; + for (size_t i=optind; i < argc; i++) + { + inputFiles.push_back(argv[i]); + } + + // output image + ImageType output; + + try { + if (mode == "avg") { + // use a weighted average, with special consideration of pixels + // that are completely over or underexposed in all exposures. + if (g_verbose > 0) { + cout << "Running simple weighted avg algorithm" << std::endl; + } + mergeWeightedAverage(inputFiles, output); + + // save output file + ImageExportInfo exinfo(outputFile.c_str()); + BImage alpha(output.width(), output.height(), 255); + exportImageAlpha(srcImageRange(output), srcImage(alpha), exinfo); + + } else if (mode == "khan") { + if (g_verbose > 0) { + cout << "Running Khan algorithm" << std::endl; + } + BImage mask; + khanMain(inputFiles, output, mask); + // save output file + ImageExportInfo exinfo(outputFile.c_str()); + exportImageAlpha(srcImageRange(output), srcImage(mask), exinfo); + } else { + std::cerr << "Unknown merge mode, see help for a list of possible modes" << std::endl; + return 1; + } + if (g_verbose > 0) { + std::cout << "Writing " << outputFile << std::endl; + } + } catch (std::exception & e) { + cerr << "caught exception: " << e.what() << std::endl; + return 1; + } + return 0; +} Added: hugin/trunk/src/deghosting/khan.cpp =================================================================== --- hugin/trunk/src/deghosting/khan.cpp (rev 0) +++ hugin/trunk/src/deghosting/khan.cpp 2007-06-19 21:45:27 UTC (rev 2120) @@ -0,0 +1,254 @@ +// -*- c-basic-offset: 4 -*- + +/** @file khan.cpp + * + * @brief Implementation of the khan deghosting algorithm + * + * @author + * + * $Id: hugin_hdrmerge.cpp,v 1.3 2007/04/18 22:21:42 dangelo Exp $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include <config.h> +#include <fstream> +#include <sstream> +#include <math.h> +#include <algorithm> + +#include <boost/shared_ptr.hpp> + +#include <common/utils.h> + +// include vigra image processing library +#include <vigra/error.hxx> +#include <vigra/functorexpression.hxx> +#include <vigra/transformimage.hxx> +#include <vigra/combineimages.hxx> + +#include <vigra_ext/impexalpha.hxx> +#include <vigra_ext/utils.h> + +#include "khan.h" + +using namespace std; +using namespace utils; +using namespace vigra; +using namespace vigra::functor; + +extern int g_verbose; + + +/** Mexican hat function, eq. 5 from Khan paper */ +float weightMexicanHat(unsigned char x) +{ + double t = (x/127.5 -1); + t *= t; // ^2 + t *= t; // ^4 + t *= t; // ^8 + return 1.0 - t; +} + +/** compute output image, apply weights to input images. + * + * Tries to save memory by loading the images one by one. + * Not perfect, but should still work quite well. + */ +bool weightedAverageOfImageFiles(vector<string> inputFiles, vector<FImagePtr> & weights, + FRGBImage & output, BImage & mask) +{ + if (g_verbose > 0) { + std::cout << "Merging input images" << std::endl; + } + + assert(inputFiles.size() > 0); + vigra::ImageImportInfo info(inputFiles[0].c_str()); + output.resize(info.size()); + mask.resize(info.size()); + + // start with first weights. + FImage weightSum(*weights[0]); + + + // special case for first image + // avg = img * weight + vigra::importImageAlpha(info, vigra::destImage(output), destImage(mask)); + + combineTwoImages(srcImageRange(output), srcImage(weightSum), + destImage(output), + Arg1()*Arg2()); + + // "invent" alpha channel, by marking original max gray values of 0 + // as transparent + transformImage(srcImageRange(mask), destImage(mask), + ifThenElse(Arg1() > Param(1), + Param(255), // yes branch + Param(0))); // no branch + + BImage origGray(info.size()); + + // load images on + for (int i=1; i < inputFiles.size(); i++) { + if (g_verbose > 0) { + std::cout << "Adding " << inputFiles[i] << std::endl; + } + + // load image from disk + vigra::ImageImportInfo info(inputFiles[i].c_str()); + + // only works on images with the same size. + assert(output.size() == info.size()); + + FRGBImage img(info.size()); + // load image + vigra::importImageAlpha(info, vigra::destImage(img), destImage(origGray)); + + // multiply with weights (avg = avg + img.*weight) + combineThreeImages(srcImageRange(img), srcImage(*weights[i]), srcImage(output), + destImage(output), + Arg1()*Arg2() + Arg3()); + + // update weight sum: weightSum = weightSum + weight + combineTwoImages(srcImageRange(weightSum), srcImage(*weights[i]), + destImage(weightSum), + Arg1() + Arg2()); + + // "invent" alpha channel, by marking original max gray values of 0 + // as transparent + transformImage(srcImageRange(origGray), destImage(origGray), + ifThenElse(Arg1() > Param(1), + Param(255), // yes branch + Param(0))); // no branch + + combineTwoImages(srcImageRange(origGray), srcImage(mask), + destImage(mask), + ifThenElse(Arg1() > Param(0) && Arg2() > Param(0), + Param(255), // yes branch + Param(0))); // no branch + } + + // normalize: output = output./weightSum + // handles weights with 0 + combineTwoImages(srcImageRange(output), srcImage(weightSum), + destImage(output), + ifThenElse(Arg2() > Param(0.0f), + (Arg1() / Arg2()), // yes branch + Param(0.0f))); // no branch + return true; +} + +bool khanMain(vector<string> inputFiles, FRGBImage & output, BImage & mask) +{ + // load images and create log grayscale and weight maps + // does not keep the original RGB images to save memory + // + // convert images to log grayscale (input for khan algorithm) + // + + + ////////////////////////////////////////////////////////////////////////// + // 1. SETUP. load and prepare images + + // log grayscale images + std::vector<FImagePtr> grayImages; + + // original greyscale values, actually max(R,G,B) of 8 bit source image + std::vector<BImagePtr> origGrayImages; + + // final weights (maybe 8 bit would be enough for them?) + std::vector<FImagePtr> weights; + + for (int i=0; i < inputFiles.size(); i++) { + if (g_verbose > 0) { + std::cout << "Loading and preparing " << inputFiles[i] << std::endl; + } + // load image from disk + vigra::ImageImportInfo info(inputFiles[i].c_str()); + + FRGBImage img(info.size()); + BImagePtr origGray(new BImage(info.size())); + FImagePtr gray(new FImage(info.size())); + // load image + vigra::importImageAlpha(info, vigra::destImage(img), destImage(*origGray)); + + // convert image to grayscale and take logarithm + vigra::RGBToGrayAccessor<ImageType::value_type> color2gray; + transformImage(srcImageRange(img, color2gray), + destImage(*gray), + log(Arg1()+Param(1.f))); + + // store for later use + grayImages.push_back(gray); + origGrayImages.push_back(origGray); + + // setup initial weights + FImagePtr weight(new FImage(info.size())); + // calculate initial weights, using mexican hat function + transformImage(srcImageRange(*origGray), + destImage(*weight), + &weightMexicanHat); + weights.push_back(weight); + + // for debugging purposes, save floating point tiff files + if (g_verbose > 2) { + char tmpfn[100]; + snprintf(tmpfn, 99, "debug_gray_%d.tif", i); + ImageExportInfo exGray(tmpfn); + exportImage(srcImageRange(*gray), exGray); + snprintf(tmpfn, 99, "debug_init_weights_%d.tif", i); + ImageExportInfo exWeights(tmpfn); + exportImage(srcImageRange(*weight), exWeights); + } + } + + ////////////////////////////////////////////////////////////////////////// + // 2. Estimation of weights + + // run khan algorithm to determine weights + // + // To reuse you matlab routines, maybe raw pointers are helpful + // + // pointers to the data are available with: + // float * img1 = grayImages[0]->data(); + // to the original "grey" value (actually max(R,G,B) value): + // unsigned char * origGray1 = origGrayImages[0]->data() + // + // Note that matlab uses column major fortran style arrays: + // indicies for the pixels: + // 1 4 7 10 + // 2 5 8 11 + // 3 6 9 12 + // + // while in C (and here too) usually row major arrays are used: + // 1 2 3 4 + // 5 6 7 8 + // 9 10 11 12 + + // TODO: place call to your Khan routine here + if (g_verbose > 0) { + std::cout << "deghosting (Khan algorithm) " << std::endl; + } + + // free gray images to save memory + grayImages.clear(); + origGrayImages.clear(); + + // apply weights and store result in output image + weightedAverageOfImageFiles(inputFiles, weights, output, mask); + return true; +} + Added: hugin/trunk/src/deghosting/khan.h =================================================================== --- hugin/trunk/src/deghosting/khan.h (rev 0) +++ hugin/trunk/src/deghosting/khan.h 2007-06-19 21:45:27 UTC (rev 2120) @@ -0,0 +1,59 @@ +// -*- c-basic-offset: 4 -*- + +/** @file khan.h + * + * @author + * + * $Id: hugin_hdrmerge.cpp,v 1.3 2007/04/18 22:21:42 dangelo Exp $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include <boost/shared_ptr.hpp> + +#include <vigra/error.hxx> +#include <common/utils.h> +#include <vigra_ext/impexalpha.hxx> + +// define the types of images we will use. +// use float for RGB +typedef vigra::FRGBImage ImageType; +// use byte for original grey value in source image +typedef vigra::BImage WeightImageType; + +// smart pointers to the images. +typedef boost::shared_ptr<ImageType> ImagePtr; +typedef boost::shared_ptr<vigra::FImage> FImagePtr; +typedef boost::shared_ptr<vigra::BImage> BImagePtr; + + +/** Mexican hat function, eq. 5 from Khan paper */ +float weightMexicanHat(unsigned char x); + +/** compute output image, apply weights to input images. + * + * Tries to save memory by loading the images one by one. + * Not perfect, but should still work quite well. + */ +bool weightedAverageOfImageFiles(std::vector<std::string> inputFiles, + std::vector<FImagePtr> & weights, + vigra::FRGBImage & output, vigra::BImage & mask); + +/** Main function of the Khan algorithm. + * Currently this is just uses the initial weights to create the HDR image + */ +bool khanMain(std::vector<std::string> inputFiles, + vigra::FRGBImage & output, vigra::BImage & mask); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-06-20 14:00:31
|
Revision: 2128 http://hugin.svn.sourceforge.net/hugin/?rev=2128&view=rev Author: dangelo Date: 2007-06-20 07:00:29 -0700 (Wed, 20 Jun 2007) Log Message: ----------- updated image cache to store 16 bit images as short, not as float Modified Paths: -------------- hugin/trunk/src/hugin/CPImageCtrl.cpp hugin/trunk/src/hugin/CropPanel.cpp hugin/trunk/src/hugin/ImageCache.cpp hugin/trunk/src/hugin/ImagesPanel.cpp hugin/trunk/src/hugin/MainFrame.cpp hugin/trunk/src/include/hugin/ImageCache.h Modified: hugin/trunk/src/hugin/CPImageCtrl.cpp =================================================================== --- hugin/trunk/src/hugin/CPImageCtrl.cpp 2007-06-20 13:58:27 UTC (rev 2127) +++ hugin/trunk/src/hugin/CPImageCtrl.cpp 2007-06-20 14:00:29 UTC (rev 2128) @@ -630,7 +630,7 @@ DEBUG_TRACE("setting Image " << file); imageFilename = file; if (imageFilename != "") { - m_img = ImageCache::getInstance().getImage(imageFilename, true); + m_img = ImageCache::getInstance().getImage(imageFilename); editState = NO_SELECTION; m_imgRotation = imgRot; rescaleImage(); @@ -651,11 +651,6 @@ if (editState == NO_IMAGE) { return; } - // rescale image - if(m_img->image8->width() == 0) { - // we do not have a valid image - return; - } wxImage img = imageCacheEntry2wxImage(m_img); if (img.GetWidth() == 0) { return; Modified: hugin/trunk/src/hugin/CropPanel.cpp =================================================================== --- hugin/trunk/src/hugin/CropPanel.cpp 2007-06-20 13:58:27 UTC (rev 2127) +++ hugin/trunk/src/hugin/CropPanel.cpp 2007-06-20 14:00:29 UTC (rev 2128) @@ -179,7 +179,7 @@ // check if we need to display a new image if (m_currentImageFile != newImgFile) { // wxImage wximg; - ImageCache::EntryPtr imgV = ImageCache::getInstance().getImage(newImgFile, true); + ImageCache::EntryPtr imgV = ImageCache::getInstance().getImage(newImgFile); m_Canvas->SetImage(imgV); m_currentImageFile == newImgFile; } Modified: hugin/trunk/src/hugin/ImageCache.cpp =================================================================== --- hugin/trunk/src/hugin/ImageCache.cpp 2007-06-20 13:58:27 UTC (rev 2127) +++ hugin/trunk/src/hugin/ImageCache.cpp 2007-06-20 14:00:29 UTC (rev 2128) @@ -91,6 +91,53 @@ #undef VIGRA_EXT_GETRANGE +template <class SrcIMG> +void convertTo8Bit(SrcIMG & src, const std::string & origType, vigra::BRGBImage & dest) +{ + // code to apply the mapping to 8 bit + // always scaled from 0..1 for integer images. + + dest.resize(src.size()); + + double min=0; + double max=getMaxValForPixelType(origType); +; + + int mapping = wxConfigBase::Get()->Read(wxT("/ImageCache/MappingInteger"), HUGIN_IMGCACHE_MAPPING_INTEGER); + + // float needs to be from min ... max. + if (origType == "FLOAT" || origType == "DOUBLE") + { + vigra::RGBToGrayAccessor<RGBValue<float> > ga; + vigra::FindMinMax<float> minmax; // init functor + vigra::inspectImage(srcImageRange(src, ga), + minmax); + min = minmax.min; + max = minmax.max; + mapping = wxConfigBase::Get()->Read(wxT("/ImageCache/MappingFloat"), HUGIN_IMGCACHE_MAPPING_FLOAT); + } + applyMapping(srcImageRange(src), destImage(dest), min, max, mapping); +} + + + +ImageCacheRGB8Ptr ImageCache::Entry::get8BitImage() +{ + if (image8->width() > 0) { + return image8; + } else if (image16->width() > 0) { + convertTo8Bit(*image16, + origType, + *image8); + } else if (imageFloat->width() > 0) { + convertTo8Bit(*imageFloat, + origType, + *image8); + } + return image8; +} + + ImageCache * ImageCache::instance = 0; ImageCache::ImageCache() @@ -165,6 +212,10 @@ imgMem += imgIt->second->image8->width() * imgIt->second->image8->height() * 3; cout << " 8bit: " << imgIt->second->image8.use_count(); } + if (imgIt->second->image16) { + imgMem += imgIt->second->image16->width() * imgIt->second->image16->height() * 3*2; + cout << " 16bit: " << imgIt->second->image8.use_count(); + } if (imgIt->second->imageFloat) { imgMem += imgIt->second->imageFloat->width() * imgIt->second->imageFloat->height() * 3 * 4; cout << " float: " << imgIt->second->imageFloat.use_count() ; @@ -220,11 +271,15 @@ } else if (accessMap.size() > 0) { std::map<int,std::string>::iterator accIt = accessMap.begin(); map<string, EntryPtr>::iterator it = images.find(accIt->second); + // check for uniqueness. if (it != images.end()) { DEBUG_DEBUG("soft flush: removing image: " << it->first); if (it->second->image8) { purgedMem += it->second->image8->width() * it->second->image8->height() * 3; } + if (it->second->image16) { + purgedMem += it->second->image16->width() * it->second->image16->height() * 3 * 2; + } if (it->second->imageFloat) { purgedMem += it->second->imageFloat->width() * it->second->imageFloat->height()*3*4; } @@ -319,33 +374,8 @@ #endif -void convertTo8Bit(vigra::FRGBImage & src, std::string origType, vigra::BRGBImage & dest) -{ - // code to apply the mapping to 8 bit - // always scaled from 0..1 for integer images. - dest.resize(src.size()); - double min=0; - double max=1; - - int mapping = wxConfigBase::Get()->Read(wxT("/ImageCache/MappingInteger"), HUGIN_IMGCACHE_MAPPING_INTEGER); - - // float needs to be from min ... max. - if (origType == "FLOAT" || origType == "DOUBLE") - { - vigra::RGBToGrayAccessor<RGBValue<float> > ga; - vigra::FindMinMax<float> minmax; // init functor - vigra::inspectImage(srcImageRange(src, ga), - minmax); - min = minmax.min; - max = minmax.max; - mapping = wxConfigBase::Get()->Read(wxT("/ImageCache/MappingFloat"), HUGIN_IMGCACHE_MAPPING_FLOAT); - } - applyMapping(srcImageRange(src), destImage(dest), min, max, mapping); -} - - struct MyMultFunc { MyMultFunc(double f) @@ -491,8 +521,7 @@ } } -ImageCache::EntryPtr ImageCache::getImage(const std::string & filename, - bool integer) +ImageCache::EntryPtr ImageCache::getImage(const std::string & filename) { // softFlush(); m_accessCounter++; @@ -500,13 +529,6 @@ it = images.find(filename); if (it != images.end()) { it->second->lastAccess = m_accessCounter; - if (integer && it->second->image8->width() == 0) { - // convert to 8 bit - it->second->image8->resize(it->second->imageFloat->size()); - convertTo8Bit(*(it->second->imageFloat), - it->second->origType, - *(it->second->image8)); - } return it->second; } else { if (m_progress) { @@ -517,6 +539,7 @@ // load images with VIGRA impex, and store either 8 bit or float images std::string pixelTypeStr; ImageCacheRGB8Ptr img8(new vigra::BRGBImage); + ImageCacheRGB16Ptr img16(new vigra::UInt16RGBImage); ImageCacheRGBFloatPtr imgFloat(new vigra::FRGBImage); ImageCache8Ptr mask(new vigra::BImage); @@ -532,6 +555,8 @@ if (pixelTypeStr == "UINT8") { img8->resize(info.size()); + } else if (pixelTypeStr == "UINT16" ) { + img16->resize(info.size()); } else { imgFloat->resize(info.size()); } @@ -546,13 +571,17 @@ destImage(*img8, VectorComponentAccessor<RGBValue<vigra::UInt8> >(1))); copyImage(srcImageRange(*img8, VectorComponentAccessor<RGBValue<vigra::UInt8> >(0)), destImage(*img8, VectorComponentAccessor<RGBValue<vigra::UInt8> >(2))); + } else if (strcmp(pixelType, "UINT16") == 0 ) { + vigra::importImage(info, destImage(*img16, + VectorComponentAccessor<RGBValue<vigra::UInt16> >(0))); + copyImage(srcImageRange(*img16, VectorComponentAccessor<RGBValue<vigra::UInt16> >(0)), + destImage(*img16, VectorComponentAccessor<RGBValue<vigra::UInt16> >(1))); + copyImage(srcImageRange(*img16, VectorComponentAccessor<RGBValue<vigra::UInt16> >(0)), + destImage(*img16, VectorComponentAccessor<RGBValue<vigra::UInt16> >(2))); } else { if (strcmp(pixelType, "INT16") == 0 ) { importAndConvertImage<vigra::Int16> (info, destImage(*imgFloat, VectorComponentAccessor<RGBValue<float> >(0)), pixelType); - } else if (strcmp(pixelType, "UINT16") == 0 ) { - importAndConvertImage<vigra::UInt16>(info, destImage(*imgFloat, - VectorComponentAccessor<RGBValue<float> >(0)), pixelType); } else if (strcmp(pixelType, "UINT32") == 0 ) { importAndConvertImage<vigra::UInt32>(info, destImage(*imgFloat, VectorComponentAccessor<vigra::RGBValue<float> >(0)), pixelType); @@ -578,10 +607,10 @@ // load and convert image to 8 bit, if needed if (strcmp(pixelType, "UINT8") == 0 ) { vigra::importImage(info, destImage(*img8)); + } else if (strcmp(pixelType, "UINT16") == 0 ) { + vigra::importImage(info, destImage(*img16)); } else if (strcmp(pixelType, "INT16") == 0 ) { importAndConvertImage<RGBValue<vigra::Int16> > (info, destImage(*imgFloat), pixelType); - } else if (strcmp(pixelType, "UINT16") == 0 ) { - importAndConvertImage<RGBValue<vigra::UInt16> >(info, destImage(*imgFloat), pixelType); } else if (strcmp(pixelType, "UINT32") == 0 ) { importAndConvertImage<RGBValue<vigra::UInt32> >(info, destImage(*imgFloat), pixelType); } else if (strcmp(pixelType, "INT32") == 0 ) { @@ -594,13 +623,14 @@ DEBUG_FATAL("Unsupported pixel type: " << pixelType); } } else if ( bands == 4 && extraBands == 1) { + mask->resize(info.size()); // load and convert image to 8 bit, if needed if (strcmp(pixelType, "UINT8") == 0 ) { vigra::importImageAlpha(info, destImage(*img8), destImage(*mask)); + } else if (strcmp(pixelType, "UINT16") == 0 ) { + vigra::importImageAlpha(info, destImage(*img16), destImage(*mask)); } else if (strcmp(pixelType, "INT16") == 0 ) { importAndConvertAlphaImage<short> (info, destImage(*imgFloat), destImage(*mask), pixelType); - } else if (strcmp(pixelType, "UINT16") == 0 ) { - importAndConvertAlphaImage<unsigned short>(info, destImage(*imgFloat), destImage(*mask), pixelType); } else if (strcmp(pixelType, "UINT32") == 0 ) { importAndConvertAlphaImage<unsigned int>(info, destImage(*imgFloat), destImage(*mask), pixelType); } else if (strcmp(pixelType, "INT32") == 0 ) { @@ -662,19 +692,14 @@ m_progress->popTask(); } - if (integer && img8->width() == 0) { - // convert to 8 bit - convertTo8Bit(*imgFloat, pixelTypeStr, *img8); - } - EntryPtr e(new Entry(img8, imgFloat, mask, pixelTypeStr)); + EntryPtr e(new Entry(img8, img16, imgFloat, mask, pixelTypeStr)); images[filename] = e; e->lastAccess = m_accessCounter; return e; } } -ImageCache::EntryPtr ImageCache::getSmallImage(const std::string & filename, - bool integer) +ImageCache::EntryPtr ImageCache::getSmallImage(const std::string & filename) { m_accessCounter++; softFlush(); @@ -694,10 +719,13 @@ // && entry->image8 size_t w=0; size_t h=0; - if (entry->image8) { + if (entry->image8->width() > 0) { w = entry->image8->width(); h = entry->image8->height(); - } else if (entry->imageFloat) { + } else if (entry->image16->width() > 0) { + w = entry->image16->width(); + h = entry->image16->height(); + } else if (entry->imageFloat->width() > 0) { w = entry->imageFloat->width(); h = entry->imageFloat->height(); } else { @@ -715,26 +743,32 @@ EntryPtr e(new Entry); e->origType = entry->origType; e->lastAccess = m_accessCounter; + // TODO: fix bug with mask reduction + BImage fullsizeMask = *(entry->mask); if (entry->imageFloat->width() != 0 ) { e->imageFloat = ImageCacheRGBFloatPtr(new FRGBImage); if (entry->mask->width() != 0) { - reduceNTimes(*(entry->imageFloat), *(entry->mask), *(e->imageFloat), *(e->mask), nLevel); + reduceNTimes(*(entry->imageFloat), fullsizeMask, *(e->imageFloat), *(e->mask), nLevel); } else { reduceNTimes(*(entry->imageFloat), *(e->imageFloat), nLevel); } } + if (entry->image16->width() != 0 ) { + e->image16 = ImageCacheRGB16Ptr(new UInt16RGBImage); + if (entry->mask->width() != 0) { + reduceNTimes(*(entry->image16), fullsizeMask, *(e->image16), *(e->mask), nLevel); + } else { + reduceNTimes(*(entry->image16), *(e->image16), nLevel); + } + } if (entry->image8->width() != 0) { e->image8 = ImageCacheRGB8Ptr(new vigra::BRGBImage); - if ((entry->mask->width() != 0) && (e->mask->width() == 0) ) { - reduceNTimes(*(entry->image8), *(entry->mask), *(e->image8), *(e->mask), nLevel); + if (entry->mask->width() != 0) { + reduceNTimes(*(entry->image8), fullsizeMask, *(e->image8), *(e->mask), nLevel); } else { reduceNTimes(*(entry->image8), *(e->image8), nLevel); } } - if (integer && e->image8->width() == 0) { - // convert to 8 bit - convertTo8Bit(*(e->imageFloat), e->origType, *(e->image8)); - } images[name] = e; DEBUG_INFO ( "created small image: " << name); if (m_progress) { @@ -850,9 +884,8 @@ } } - // WARNING: this might invalidate images that are stored somewhere.. ImageCache::getInstance().softFlush(); - + typedef BasicImageView<RGBValue<unsigned char> > BRGBImageView; // typedef vigra::NumericTraits<PixelType>::RealPromote RPixelType; @@ -865,12 +898,14 @@ const PT::ImageOptions & iopts = img.getOptions(); ImageCache::EntryPtr e = ImageCache::getInstance().getSmallImage(img.getFilename().c_str()); - if ( (e->image8->width() == 0) && (e->imageFloat->width() == 0) ) { + if ( (e->image8->width() == 0) && (e->image16->width() == 0) && (e->imageFloat->width() == 0) ) { throw std::runtime_error("could not retrieve small source image for preview generation"); } Size2D srcImgSize; if (e->image8->width() > 0) srcImgSize = e->image8->size(); + else if (e->image16->width() > 0) + srcImgSize = e->image16->size(); else srcImgSize = e->imageFloat->size(); @@ -893,6 +928,11 @@ vigra::copyImage(srcImageRange(*(e->image8), RGBToGrayAccessor<RGBValue<vigra::UInt8> >()), destImage(srcFlat)); + } else if (e->image16->width()) { + srcFlat.resize(e->image16->size()); + vigra::copyImage(srcImageRange(*(e->image16), + RGBToGrayAccessor<RGBValue<vigra::UInt16> >()), + destImage(srcFlat)); } else { srcFlat.resize(e->imageFloat->size()); vigra::copyImage(srcImageRange(*(e->imageFloat), @@ -911,6 +951,15 @@ opts, *remapped, progress); + } else if (e->image16->width()) { + // remap image + remapImage(*(e->image16), + srcMask, + srcFlat, + srcPanoImg, + opts, + *remapped, + progress); } else { remapImage(*(e->image8), srcMask, @@ -955,10 +1004,11 @@ wxImage imageCacheEntry2wxImage(ImageCache::EntryPtr e) { - if (e->image8->width() > 0) { - return wxImage(e->image8->width(), - e->image8->height(), - (unsigned char *)e->image8->data(), + ImageCacheRGB8Ptr img = e->get8BitImage(); + if (img) { + return wxImage(img->width(), + img->height(), + (unsigned char *) img->data(), true); } else { // invalid wxImage Modified: hugin/trunk/src/hugin/ImagesPanel.cpp =================================================================== --- hugin/trunk/src/hugin/ImagesPanel.cpp 2007-06-20 13:58:27 UTC (rev 2127) +++ hugin/trunk/src/hugin/ImagesPanel.cpp 2007-06-20 14:00:29 UTC (rev 2128) @@ -508,14 +508,10 @@ return; } ImageCache::EntryPtr cacheEntry = ImageCache::getInstance().getSmallImage( - pano.getImage(m_showImgNr).getFilename(), true); - // TODO: catch assertation - if (cacheEntry->image8->width() == 0) { - return; - } + pano.getImage(m_showImgNr).getFilename()); wxImage img = imageCacheEntry2wxImage(cacheEntry); - double iRatio = cacheEntry->image8->width() / (double) cacheEntry->image8->height(); + double iRatio = img.GetWidth() / (double) img.GetHeight(); wxSize sz; #ifdef USE_WX253 Modified: hugin/trunk/src/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin/MainFrame.cpp 2007-06-20 13:58:27 UTC (rev 2127) +++ hugin/trunk/src/hugin/MainFrame.cpp 2007-06-20 14:00:29 UTC (rev 2128) @@ -1193,10 +1193,10 @@ DEBUG_DEBUG("fine tuning point: " << *it); wxImage wxSearchImg; ImageCache::EntryPtr searchImg = imgCache.getImage( - pano.getImage(cps[*it].image2Nr).getFilename(), true); + pano.getImage(cps[*it].image2Nr).getFilename()); ImageCache::EntryPtr templImg = imgCache.getImage( - pano.getImage(cps[*it].image1Nr).getFilename(), true); + pano.getImage(cps[*it].image1Nr).getFilename()); // load parameters long templWidth = wxConfigBase::Get()->Read( @@ -1209,10 +1209,10 @@ if (rotatingFinetune) { res = vigra_ext::PointFineTuneRotSearch( - *(templImg->image8), + *(templImg->get8BitImage()), roundP1, templWidth, - *(searchImg->image8), + *(searchImg->get8BitImage()), roundP2, sWidth, startAngle, stopAngle, nSteps Modified: hugin/trunk/src/include/hugin/ImageCache.h =================================================================== --- hugin/trunk/src/include/hugin/ImageCache.h 2007-06-20 13:58:27 UTC (rev 2127) +++ hugin/trunk/src/include/hugin/ImageCache.h 2007-06-20 14:00:29 UTC (rev 2128) @@ -34,6 +34,7 @@ // use reference counted pointers typedef boost::shared_ptr<vigra::BRGBImage> ImageCacheRGB8Ptr; +typedef boost::shared_ptr<vigra::UInt16RGBImage> ImageCacheRGB16Ptr; typedef boost::shared_ptr<vigra::FRGBImage> ImageCacheRGBFloatPtr; typedef boost::shared_ptr<vigra::BImage> ImageCache8Ptr; @@ -75,7 +76,9 @@ class Entry { public: + ImageCacheRGB8Ptr image8; + ImageCacheRGB16Ptr image16; ImageCacheRGBFloatPtr imageFloat; ImageCache8Ptr mask; @@ -84,18 +87,33 @@ Entry() : image8(ImageCacheRGB8Ptr(new vigra::BRGBImage)), + image16(ImageCacheRGB16Ptr(new vigra::UInt16RGBImage)), imageFloat(ImageCacheRGBFloatPtr(new vigra::FRGBImage)), mask(ImageCache8Ptr(new vigra::BImage)) - { }; + { + DEBUG_TRACE("Constructing an empty ImageCache::Entry"); + }; - Entry(ImageCacheRGB8Ptr & img, ImageCacheRGBFloatPtr & imgFloat, + Entry(ImageCacheRGB8Ptr & img, + ImageCacheRGB16Ptr & img16, + ImageCacheRGBFloatPtr & imgFloat, ImageCache8Ptr & imgMask, const std::string & typ) - : image8(img), imageFloat(imgFloat), mask(imgMask), origType(typ), lastAccess(0) - { }; + : image8(img), image16(img16), imageFloat(imgFloat), mask(imgMask), origType(typ), lastAccess(0) + { + DEBUG_TRACE("Constructing ImageCache::Entry"); + }; ~Entry() { + DEBUG_TRACE("Deleting ImageCacheEntry"); } + + /** returns an 8 bit image, suitable for display on screen. + * + * If only a 16 bit or float image is available, the 8 bit + * image is derived from it. + */ + ImageCacheRGB8Ptr get8BitImage(); }; /** a shared pointer to the entry */ @@ -114,15 +132,14 @@ * * Hold the EntryPtr as long as the image data is needed! */ - EntryPtr getImage(const std::string & filename, bool forceInteger=false); + EntryPtr getImage(const std::string & filename); /** get an small image. * * This image is 512x512 pixel maximum and can be used for icons * and different previews. It is directly derived from the original. */ - EntryPtr getSmallImage(const std::string & filename, - bool forceInteger=false); + EntryPtr getSmallImage(const std::string & filename); /** remove a specific image (and dependant images) @@ -243,7 +260,11 @@ }; /** shallow copy of the 8 bit image contained in \p e + * \p e needs to be kept as long as this is */ wxImage imageCacheEntry2wxImage(ImageCache::EntryPtr e); + + + #endif // _IMAGECACHE_H This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ip...@us...> - 2007-06-30 19:15:52
|
Revision: 2199 http://hugin.svn.sourceforge.net/hugin/?rev=2199&view=rev Author: ippei Date: 2007-06-30 12:15:50 -0700 (Sat, 30 Jun 2007) Log Message: ----------- get_map functions fixed; I hope this wouldn't break anything for other platforms than gcc Modified Paths: -------------- hugin/trunk/src/Panorama/PanoToolsInterface.cpp hugin/trunk/src/Panorama/Panorama.cpp hugin/trunk/src/Panorama/SpaceTransform.cpp hugin/trunk/src/include/PT/Panorama.h hugin/trunk/src/include/common/stl_utils.h Modified: hugin/trunk/src/Panorama/PanoToolsInterface.cpp =================================================================== --- hugin/trunk/src/Panorama/PanoToolsInterface.cpp 2007-06-30 17:30:58 UTC (rev 2198) +++ hugin/trunk/src/Panorama/PanoToolsInterface.cpp 2007-06-30 19:15:50 UTC (rev 2199) @@ -745,7 +745,7 @@ #define PT_SET_OPT(n,v) \ { if (set_contains(optvec[imgNr], #v )) { \ if (set_contains(lens.variables, #v) \ - && PT::const_map_get(lens.variables, #v ).isLinked()) {\ + && const_map_get(lens.variables, #v ).isLinked()) {\ if (set_contains(linkAnchors, lensNr) \ && linkAnchors[lensNr] != imgNr) \ { \ Modified: hugin/trunk/src/Panorama/Panorama.cpp =================================================================== --- hugin/trunk/src/Panorama/Panorama.cpp 2007-06-30 17:30:58 UTC (rev 2198) +++ hugin/trunk/src/Panorama/Panorama.cpp 2007-06-30 19:15:50 UTC (rev 2199) @@ -59,54 +59,54 @@ using namespace utils; //const Map::data_type & map_get(const Map &m, const Map::key_type & key) -const PT::Variable & PT::const_map_get(const VariableMap &m, const string & key) -{ - VariableMap::const_iterator it = m.find(key); - if (it != m.end()) { - return (*it).second; - } else { - DEBUG_WARN("could not find " << key); - throw std::out_of_range("No such element in vector"); - } -} +//const PT::Variable & PT::const_map_get(const VariableMap &m, const string & key) +//{ +// VariableMap::const_iterator it = m.find(key); +// if (it != m.end()) { +// return (*it).second; +// } else { +// DEBUG_WARN("could not find " << key); +// throw std::out_of_range("No such element in vector"); +// } +//} +// +//// Map::data_type & map_get( Map &m, Map::key_type & key) +//PT::Variable & PT::map_get( VariableMap &m, const std::string & key) +//{ +// VariableMap::iterator it = m.find(key); +// if (it != m.end()) { +// return (*it).second; +// } else { +// DEBUG_WARN("could not find " << key); +// throw std::out_of_range("No such element in vector"); +// } +//} +// +//// Map::data_type & map_get( Map &m, Map::key_type & key) +//PT::LensVariable & PT::map_get(PT::LensVarMap &m, const std::string & key) +//{ +// LensVarMap::iterator it = m.find(key); +// if (it != m.end()) { +// return (*it).second; +// } else { +// DEBUG_WARN("could not find " << key); +// throw std::out_of_range("No such element in vector"); +// } +//} +// +//// Map::data_type & map_get( Map &m, Map::key_type & key) +//const PT::LensVariable & PT::const_map_get(const PT::LensVarMap &m, const std::string & key) +//{ +// LensVarMap::const_iterator it = m.find(key); +// if (it != m.end()) { +// return (*it).second; +// } else { +// DEBUG_WARN("could not find " << key); +// throw std::out_of_range("No such element in vector"); +// } +//} -// Map::data_type & map_get( Map &m, Map::key_type & key) -PT::Variable & PT::map_get( VariableMap &m, const std::string & key) -{ - VariableMap::iterator it = m.find(key); - if (it != m.end()) { - return (*it).second; - } else { - DEBUG_WARN("could not find " << key); - throw std::out_of_range("No such element in vector"); - } -} -// Map::data_type & map_get( Map &m, Map::key_type & key) -PT::LensVariable & PT::map_get(PT::LensVarMap &m, const std::string & key) -{ - LensVarMap::iterator it = m.find(key); - if (it != m.end()) { - return (*it).second; - } else { - DEBUG_WARN("could not find " << key); - throw std::out_of_range("No such element in vector"); - } -} - -// Map::data_type & map_get( Map &m, Map::key_type & key) -const PT::LensVariable & PT::const_map_get(const PT::LensVarMap &m, const std::string & key) -{ - LensVarMap::const_iterator it = m.find(key); - if (it != m.end()) { - return (*it).second; - } else { - DEBUG_WARN("could not find " << key); - throw std::out_of_range("No such element in vector"); - } -} - - /// helper functions for parsing of a script line bool PT::getPTParam(std::string & output, const std::string & line, const std::string & parameter) { Modified: hugin/trunk/src/Panorama/SpaceTransform.cpp =================================================================== --- hugin/trunk/src/Panorama/SpaceTransform.cpp 2007-06-30 17:30:58 UTC (rev 2198) +++ hugin/trunk/src/Panorama/SpaceTransform.cpp 2007-06-30 19:15:50 UTC (rev 2199) @@ -28,6 +28,7 @@ #include <math.h> #include "common/utils.h" +#include "common/stl_utils.h" #include "common/math.h" #include "PT/SpaceTransform.h" Modified: hugin/trunk/src/include/PT/Panorama.h =================================================================== --- hugin/trunk/src/include/PT/Panorama.h 2007-06-30 17:30:58 UTC (rev 2198) +++ hugin/trunk/src/include/PT/Panorama.h 2007-06-30 19:15:50 UTC (rev 2199) @@ -692,10 +692,10 @@ // helper functions, workaround for gcc 3.3, which doesn't find // the map_get template functions. -PT::LensVariable & map_get(PT::LensVarMap &m, const std::string & key); -const PT::LensVariable & const_map_get(const PT::LensVarMap &m, const std::string & key); -PT::Variable & map_get(PT::VariableMap &m, const std::string & key); -const PT::Variable & const_map_get(const PT::VariableMap &m, const std::string & key); +//PT::LensVariable & map_get(PT::LensVarMap &m, const std::string & key); +//const PT::LensVariable & const_map_get(const PT::LensVarMap &m, const std::string & key); +//PT::Variable & map_get(PT::VariableMap &m, const std::string & key); +//const PT::Variable & const_map_get(const PT::VariableMap &m, const std::string & key); Modified: hugin/trunk/src/include/common/stl_utils.h =================================================================== --- hugin/trunk/src/include/common/stl_utils.h 2007-06-30 17:30:58 UTC (rev 2198) +++ hugin/trunk/src/include/common/stl_utils.h 2007-06-30 19:15:50 UTC (rev 2199) @@ -76,7 +76,7 @@ template<typename Map> //const Map::data_type & map_get(const Map &m, const Map::key_type & key) -typename Map::data_type & map_get(Map &m, const char * key) +typename Map::mapped_type & map_get(Map &m, const char * key) { typename Map::iterator it = m.find(key); if (it != m.end()) { @@ -87,6 +87,19 @@ } } +template<typename Map> +//const Map::data_type & map_get(const Map &m, const Map::key_type & key) +const typename Map::mapped_type& const_map_get(const Map &m, const char * key) +{ + typename Map::const_iterator it = m.find(key); + if (it != m.end()) { + return (*it).second; + } else { + DEBUG_WARN("could not find " << key); + throw std::out_of_range("No such element in vector"); + } +} + /** get a map element. * * does not create a new element in the map, like operator[] does @@ -95,7 +108,7 @@ */ template<typename Map> //const Map::data_type & map_get(const Map &m, const Map::key_type & key) -typename Map::data_type & map_get(Map &m, const typename Map::key_type & key) +typename Map::mapped_type & map_get(Map &m, const typename Map::key_type & key) { typename Map::iterator it = m.find(key); if (it != m.end()) { @@ -108,7 +121,7 @@ template<class Map> //const Map::data_type & map_get(const Map &m, const Map::key_type & key) -const typename Map::data_type & map_get(const Map &m, const typename Map::key_type & key) +const typename Map::mapped_type & const_map_get(const Map &m, const typename Map::key_type & key) { typename Map::const_iterator it = m.find(key); if (it != m.end()) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-07-23 17:30:35
|
Revision: 2318 http://hugin.svn.sourceforge.net/hugin/?rev=2318&view=rev Author: dangelo Date: 2007-07-23 10:30:27 -0700 (Mon, 23 Jul 2007) Log Message: ----------- added subdirectory with VIPS implementation of merge to HDR function Added Paths: ----------- hugin/trunk/src/vips/ hugin/trunk/src/vips/CMakeLists.txt hugin/trunk/src/vips/dispatch.c hugin/trunk/src/vips/hugin_mergehdr.cpp hugin/trunk/src/vips/im_mergehdr.cpp hugin/trunk/src/vips/img2vips.cpp hugin/trunk/src/vips/vipsc++.cc hugin/trunk/src/vips/vipsc++.h Added: hugin/trunk/src/vips/CMakeLists.txt =================================================================== --- hugin/trunk/src/vips/CMakeLists.txt (rev 0) +++ hugin/trunk/src/vips/CMakeLists.txt 2007-07-23 17:30:27 UTC (rev 2318) @@ -0,0 +1,39 @@ +# various command line utilities + +########### +# Libraries + +# the basic vips operations package +add_library(im_panorama SHARED dispatch.c im_mergehdr.cpp) +# rename library to .plg +SET_TARGET_PROPERTIES(im_panorama PROPERTIES SUFFIX ".plg") +# set special compiler flags. +SET_TARGET_PROPERTIES(im_panorama PROPERTIES COMPILE_FLAGS "${VIPS_CFLAGS_OTHER_STRING}") +# set special linker flags +SET_TARGET_PROPERTIES(im_panorama PROPERTIES LINK_FLAGS "${VIPS_LDFLAGS_OTHER_STRING}") +target_link_libraries(im_panorama ${VIPS_LIBRARIES}) + +# the C++ interface to it +add_library(huginvips STATIC vipsc++.cc) +SET_TARGET_PROPERTIES(huginvips PROPERTIES COMPILE_FLAGS "${VIPSCC_CFLAGS_OTHER_STRING}") +# set special linker flags +SET_TARGET_PROPERTIES(huginvips PROPERTIES LINK_FLAGS "${VIPSCC_LDFLAGS_OTHER_STRING}") +target_link_libraries(huginvips ${VIPSCC_LIBRARIES}) + +install(TARGETS im_panorama huginvips + DESTINATION lib) + + +############## +# Applications + +add_executable(img2vips img2vips.cpp) +target_link_libraries(img2vips hugincommon ${image_libs} ${VIPSCC_LIBRARIES}) + +add_executable(vips_mergehdr hugin_mergehdr.cpp) +target_link_libraries(vips_mergehdr huginvips ${image_libs} ${VIPSCC_LIBRARIES}) + +install(TARGETS img2vips vips_mergehdr + DESTINATION bin) + + Added: hugin/trunk/src/vips/dispatch.c =================================================================== --- hugin/trunk/src/vips/dispatch.c (rev 0) +++ hugin/trunk/src/vips/dispatch.c 2007-07-23 17:30:27 UTC (rev 2318) @@ -0,0 +1,98 @@ +/* Function dispatch tables for arithmetic. + * + * J. Cupitt, 8/4/93. + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#include <config.h> +#include <vips/intl.h> + +#include <stdio.h> + +#include <vips/vips.h> + +int +im_mergehdr( IMAGE **in, IMAGE *out ); + +/* Image vector in, one out + */ +static im_arg_desc many_in_one_out[] = { + IM_INPUT_IMAGEVEC( "ins" ), + IM_OUTPUT_IMAGE( "out" ), +}; + +/* Call im_mergehdr() via arg vector. + */ +static int +mergehdr_vec( im_object *argv ) +{ +#define FUNCTION_NAME "im_mergehdr" + im_imagevec_object *ins_vec= (im_imagevec_object*) argv[0]; + IMAGE *out= (IMAGE*) argv[1]; + IMAGE **ins= IM_ARRAY( out, ins_vec-> n + 1, IMAGE* ); + int i; + + if( ! ins ) + return -1; + + for( i= 0; i < ins_vec-> n; ++i ) + ins[ i ]= ins_vec-> vec[ i ]; + + ins[ ins_vec-> n ]= NULL; + + return im_mergehdr( ins, out ); + +#undef FUNCTION_NAME +} + + +/* Description of im_mergehdr. + */ +static im_function mergehdr_desc = { + "hugin_mergehdr", /* Name */ + N_( "merge multiple photometrically aligned images to a hdr image" ), + IM_FN_PIO | IM_FN_PTOP, /* Flags */ + mergehdr_vec, /* Dispatch function */ + IM_NUMBER( many_in_one_out ), /* Size of arg list */ + many_in_one_out /* Arg list */ +}; + +/* Package up all these functions. + */ +static im_function *panorama_list[] = { + &mergehdr_desc, +}; + +/* Define the package_table symbol. This is what VIPS looks for when loading + * the plugin. + */ +G_MODULE_EXPORT im_package package_table = { + "panorama", /* Package name */ + IM_NUMBER( panorama_list ), /* Function list */ + panorama_list +}; Added: hugin/trunk/src/vips/hugin_mergehdr.cpp =================================================================== --- hugin/trunk/src/vips/hugin_mergehdr.cpp (rev 0) +++ hugin/trunk/src/vips/hugin_mergehdr.cpp 2007-07-23 17:30:27 UTC (rev 2318) @@ -0,0 +1,56 @@ +/* compile with + + g++ -g -Wall blend.cc `pkg-config vipsCC-7.11 --cflags --libs` + + */ + +#include <config.h> + +#include "vipsc++.h" + +#include <vips/vips> +#include <unistd.h> + + +using namespace vips; + +int +main (int argc, char **argv) +{ + try + { + // 1 is the output image, the other args are input + if (argc < 2) + throw VError ("usage: out in1, in2 ...\n"); + + std::vector<VImage> ins; + int nin = argc - 2; + int w=0, h=0; + for (int i = 0; i < nin; i++) { + VImage in (argv[i+2]); + int nw = in.Xoffset() + in.Xsize(); + int nh = in.Yoffset() + in.Ysize(); + if (w < nw) w = nw; + if (h < nh) h = nh; + ins.push_back( in ); + } + + // embed in the output image + for (int i = 0; i < nin; i++) { + ins[i] = ins[i].embed (0, + ins[i].Xoffset(), + ins[i].Yoffset(), + w, h); + } + + // perform the actual merge operations + VImage out = PVImage::mergehdr(ins); + out.write (argv[1]); + } + catch (VError err) + { + err.perror (argv[0]); + } + + return (0); +} Added: hugin/trunk/src/vips/im_mergehdr.cpp =================================================================== --- hugin/trunk/src/vips/im_mergehdr.cpp (rev 0) +++ hugin/trunk/src/vips/im_mergehdr.cpp 2007-07-23 17:30:27 UTC (rev 2318) @@ -0,0 +1,268 @@ +/* @(#) Merge a stack of images. The images should c + * @(#) + * @(#) + * @(#) + * @(#) int + * @(#) im_mergehdr( in, out ) + * @(#) IMAGE **in, *out; + * @(#) + * @(#) Returns 0 on success and -1 on error + * @(#) + * + * Copyright: 2007, Pablo d'Angelo + * Author: Pablo d'Angelo + * Written on: 04/30/2007 + * Modified on: + */ + +/* + + This file is part of VIPS. + + VIPS is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + */ + +/* + + These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk + + */ + +#include <config.h> +//#include <vips/intl.h> + +#include <stdio.h> +#include <stdlib.h> +#include <math.h> +#include <assert.h> + +#include <vips/vips.h> +//#include <vips/internal.h> + +#include <vigra_ext/lut.h> +#include <vigra_ext/HDRUtils.h> + +static void +mergehdr_fn_vigra( float **in, + float *out, int n, void * params, void * nimg ) +{ + int i; + int nB; + int nImg; + float ** tptr; + int sz; + nB = ((int*)params)[0]; + nImg = ((int*)params)[1]; + + sz = n*nB; + +// fprintf(stderr, "*** %d images, %d bands, %d pixels\n", +// nImg, nB, n); + // for all pixels + + vigra_ext::ReduceToHDRFunctor<vigra::RGBValue<float> > reduce; + vigra::RGBValue<float> val; + for( i = 0; i < n; i++ ) { + int im; + int b; + + reduce.reset(); + // for all images + for( im = 0; im < nImg; im++) { + float *v = in[im]+i*nB; + val[0] = v[0]; + val[1] = v[1]; + val[2] = v[2]; + reduce(val, v[nB-1]); + } + val = reduce(); + for (b = 0; b < 3; b++) { + out[i*nB+b] = val[b]; + } + // set alpha/mask to one + out[i*nB+nB-1] = 1; + } +} + + +extern "C" { + +static float +max_component(float *f, int n) +{ + float max; + int i; + max = f[0]; + for (i=1; i < n; i++) + if (f[i] > max) { + max = f[i]; + } +} + +static void +mergehdr_fn( float **in, + float *out, int n, void * params, void * nimg ) +{ + int i; + int nB; + int nImg; + float ** tptr; + int sz; + nB = ((int*)params)[0]; + nImg = ((int*)params)[1]; + + sz = n*nB; + +// fprintf(stderr, "*** %d images, %d bands, %d pixels\n", +// nImg, nB, n); + // for all pixels + for( i = 0; i < n; i++ ) { + float result[3]; + float weight; + float maxComp,minComp; + float maxW, minW; + float maxValue[3]; + float minValue[3]; + int im; + int b; + result[0] = 0; result[1] = 0; result[2] = 0; + weight = 0; + + maxComp = DBL_MIN; + minComp = DBL_MAX; + maxW= 0; + minW= 1; + + // for all images + for( im = 0; im < nImg; im++) { + float w; + float nm; + float *v = in[im]+i*nB; + // normalized original gray value (0..1) + nm = v[nB-1]; + // a simple triangular weight function should also work ok + w = 0.5-fabs(nm - 0.5); + // update weight and pixel + weight += w; + for (b = 0; b < nB-1; b++) { + result[b] += v[b]; + } + // store minimum and maximum weight and pixel values + if (nm > maxW) { + maxW = w; + } + if ( w < minW) { + minW = w; + } + + float cmax = max_component(v, nB-1); + + if (cmax > maxComp) + { + maxComp = cmax; + for (b = 0; b < nB-1; b++) + maxValue[b] = v[b]; + } + if (cmax < minComp) + { + minComp = cmax; + for (b = 0; b < nB-1; b++) + minValue[b] = v[b]; + } + } + +// fprintf(stderr, "*** weight: %f, minW: %f, maxW: %f, res: %f %f %f\n", +// weight, minW, maxW, result[0], result[1], result[2]); + + double eps = 1e-7; + // heuristics to deal with over and underexposed images. + if (minW > (1.0-eps) && maxW > (1.0-eps)) { + // all pixels overexposed, just use smallest value + for (b = 0; b < nB-1; b++) + out[i*nB+b] = minValue[b]; + // set alpha/mask to one + out[i*nB+nB-1] = 1; + } else if (minW < eps && maxW < eps) { + // all pixels underexposed. use brightest value + for (b = 0; b < nB-1; b++) + out[i*nB+b] = maxValue[b]; +// return maxValue; + // set alpha/mask to one + out[i*nB+nB-1] = 1; + } else if (weight > 0) { + for (b = 0; b < nB-1; b++) { + out[i*nB+b] = result[b]/weight; + } + // set alpha/mask to one + out[i*nB+nB-1] = 1; + } else + for (b = 0; b < nB; b++) + out[i*nB+b] = 0; + +// fprintf(stderr, "output: %f %f %f %f\n", out[i*nB], +// out[i*nB+1], out[i*nB+2], out[i*nB+3]); + + } +} + + +int +im_mergehdr( IMAGE **in, IMAGE *out ) +{ + int nImg; + int nBands; + IMAGE ** tptr; + /* Check parameters. + */ + if (in[0] == NULL) { + im_error( "im_hdrmerge", "need at least one input image" ); + return( -1 ); + } + if( in[0]->BandFmt != IM_BANDFMT_FLOAT || + in[0]->Bands != 4 || + in[0]->Coding != IM_CODING_NONE ) { + im_error( "im_hdrmerge", "bad input images" ); + return( -1 ); + } + + nBands = in[0]->Bands; + nImg = 0; + for(tptr=in; *tptr; tptr++) + nImg++; + + /* Set fields in output image. + */ + if( im_cp_desc( out, in[0] ) ) + return( -1 ); + + // memory leak! + int *params = new int[2]; + params[0] = nBands; + params[1] = nImg; + + /* Process! We don't use either of the + * user parameters in this function, + * so leave them as NULL. + */ + if( im_wrapmany( in, out, + (im_wrapmany_fn) mergehdr_fn_vigra, + params, NULL ) ) + return( -1 ); + + return( 0 ); +} + +} // extern "C" Added: hugin/trunk/src/vips/img2vips.cpp =================================================================== --- hugin/trunk/src/vips/img2vips.cpp (rev 0) +++ hugin/trunk/src/vips/img2vips.cpp 2007-07-23 17:30:27 UTC (rev 2318) @@ -0,0 +1,66 @@ +/* compile with + + g++ -g -Wall blend.cc `pkg-config vipsCC-7.11 --cflags --libs` + + */ + +#include <vips/vips> +#include <vips/vips.h> + +#include <vigra/impex.hxx> + +#include <string> +#include <common/utils.h> +#include <unistd.h> + +using namespace vips; +using namespace std; +using namespace utils; +using namespace vigra; + +void +convert_file (const char *filename) +{ + ImageImportInfo inFile(filename); + int bands = inFile.numBands(); + if (inFile.getPixelType() == std::string("FLOAT") && bands == 4) + { + cout << "Reading " << filename << " ... " << std::flush; + BasicImage<TinyVector<float,4> > img(inFile.size()); + importImage(inFile, destImage(img)); + cout << " done. " << std::flush; + void *data = &(img(0,0)); + VImage viout (data, img.size().x, img.size().y, bands, VImage::FMTFLOAT); + // copy position field + viout.image()->Xoffset = inFile.getPosition().x; + viout.image()->Yoffset = inFile.getPosition().y; + std::string outfile(utils::stripExtension(filename)); + outfile += ".v"; + cout << " Writing " << outfile << std::endl; + viout.write (outfile.c_str()); + } else { + throw VError("Fatal error: unsupported input file format (only RGB float with alpha supported right now)"); + } +} + +int +main (int argc, char **argv) +{ + try + { + // 1 is the output image, the other args are input + if (argc < 1) + throw VError ("usage: in1 (in2) ...\n"); + + int nin = argc - 1; + for (int i = 0; i < nin; i++) { + convert_file (argv[i + 1]); + } + } + catch (VError err) + { + err.perror (argv[0]); + } + + return (0); +} Property changes on: hugin/trunk/src/vips/img2vips.cpp ___________________________________________________________________ Name: svn:executable + * Added: hugin/trunk/src/vips/vipsc++.cc =================================================================== --- hugin/trunk/src/vips/vipsc++.cc (rev 0) +++ hugin/trunk/src/vips/vipsc++.cc 2007-07-23 17:30:27 UTC (rev 2318) @@ -0,0 +1,129 @@ + +#include "vipsc++.h" + +// im_hdrmerge: merge photometrically aligned images into a HDR image + +using namespace vips; + + +// Copy constructor +//PVImage::PVImage( const VImage &a ) +// : VImage(a) +//{ +// +//} + +// this file automatically generated from +// VIPS library 7.12.1-Wed Jun 27 14:47:06 CEST 2007 +// hugin_mergehdr: merge multiple photometrically aligned images to a hdr image +VImage PVImage::mergehdr( std::vector<VImage> ins ) throw( VError ) +{ + VImage out; + + Vargv _vec( "hugin_mergehdr" ); + + ((im_imagevec_object*) _vec.data(0))->n = ins.size(); + ((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[ins.size()]; + for( unsigned int i = 0; i < ins.size(); i++ ) + ((im_imagevec_object*) _vec.data(0))->vec[i] = ins[i].image(); + _vec.data(1) = out.image(); + _vec.call(); + for( unsigned int i = 0; i < ins.size(); i++ ) + out._ref->addref( ins[i]._ref ); + + return( out ); +} + + +#if 0 +using namespace vips; + +class Vargv2 { + // Function we are args to + im_function *fn; + + // Base of object vector + im_object *base; + +public: + Vargv2( const char *name ); + ~Vargv2(); + + // Reference to element of base + im_object &data( int i = 0 ) { return( base[i] ); }; + + // Invoke function + void call(); +}; + +// Create a Vargv from a name +Vargv2::Vargv2( const char *name ) +{ + im_function *f = im_find_function( (char *) name ); + + if( !f ) + verror(); + + fn = f; + base = new im_object[fn->argc]; + if( im_allocate_vargv( fn, base ) ) { + delete[] base; + verror(); + } +} + + +// Destroy a Vargv +Vargv2::~Vargv2() +{ + // free any memory allocated for input vectors + // this is the stuff allocated in each function during _object* build, + // see vipsc++.cc + for( int i = 0; i < fn->argc; i++ ) { + im_type_desc *ty = fn->argv[i].desc; + + if( !(ty->flags & IM_TYPE_OUTPUT) ) { + if( strcmp( ty->type, IM_TYPE_IMAGEVEC ) == 0 || + strcmp( ty->type, IM_TYPE_DOUBLEVEC ) == 0 || + strcmp( ty->type, IM_TYPE_INTVEC ) == 0 ) { + // will work for doublevec and intvec too + im_imagevec_object *io = + (im_imagevec_object *) base[i]; + + if( io->vec ) { + delete[] io->vec; + io->vec = NULL; + } + } + } + } + + im_free_vargv( fn, base ); + delete[] base; +} + +// Call the function +void +Vargv2::call() +{ + if( fn->disp( base ) ) + verror(); +} + + +VImage vips_mergehdr( std::vector<VImage> ins ) throw( VError ) +{ + VImage out; + Vargv _vec( "im_mergehdr" ); + ((im_imagevec_object*) _vec.data(0))->n = ins.size(); + ((im_imagevec_object*) _vec.data(0))->vec = new IMAGE *[ins.size()]; + for( unsigned int i = 0; i < ins.size(); i++ ) + ((im_imagevec_object*) _vec.data(0))->vec[i] = ins[i].image(); + _vec.data(1) = out.image(); + _vec.call(); + for( unsigned int i = 0; i < ins.size(); i++ ) + out._ref->addref( ins[i]._ref ); + + return( out ); +} +#endif Added: hugin/trunk/src/vips/vipsc++.h =================================================================== --- hugin/trunk/src/vips/vipsc++.h (rev 0) +++ hugin/trunk/src/vips/vipsc++.h 2007-07-23 17:30:27 UTC (rev 2318) @@ -0,0 +1,20 @@ + +#ifndef __VIPS_PANO_CC +#define __VIPS_PANO_CC + +#include <vector> +#include <vips/vips> +#include <vips/vips.h> + +class PVImage : public vips::VImage +{ +public: +// PVImage() {}; + + // Copy constructor +// PVImage( const vips::VImage &a ); + + static VImage mergehdr( std::vector<vips::VImage> ) throw( vips::VError ); +}; + +#endif // __VIPS_PANO_CC This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-08-13 17:23:44
|
Revision: 2372 http://hugin.svn.sourceforge.net/hugin/?rev=2372&view=rev Author: dangelo Date: 2007-08-13 10:23:37 -0700 (Mon, 13 Aug 2007) Log Message: ----------- added scanline average mode. Warning: requires different input Modified Paths: -------------- hugin/trunk/src/deghosting/CMakeLists.txt hugin/trunk/src/deghosting/hugin_hdrmerge.cpp Added Paths: ----------- hugin/trunk/src/include/vigra_ext/ReduceOpenEXR.h Modified: hugin/trunk/src/deghosting/CMakeLists.txt =================================================================== --- hugin/trunk/src/deghosting/CMakeLists.txt 2007-08-12 23:46:48 UTC (rev 2371) +++ hugin/trunk/src/deghosting/CMakeLists.txt 2007-08-13 17:23:37 UTC (rev 2372) @@ -2,3 +2,5 @@ add_executable(hugin_hdrmerge hugin_hdrmerge.cpp khan.cpp jbu.cpp) target_link_libraries(hugin_hdrmerge ${common_libs} ${image_libs}) + +install(TARGETS hugin_hdrmerge DESTINATION bin) \ No newline at end of file Modified: hugin/trunk/src/deghosting/hugin_hdrmerge.cpp =================================================================== --- hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-08-12 23:46:48 UTC (rev 2371) +++ hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-08-13 17:23:37 UTC (rev 2372) @@ -40,6 +40,7 @@ #include <vigra_ext/impexalpha.hxx> #include <vigra_ext/HDRUtils.h> +#include <vigra_ext/ReduceOpenEXR.h> #include <PT/PTOptimise.h> @@ -89,7 +90,7 @@ // ensure all images have the same size (cropped images not supported yet) int width=images[0]->width(); int height=images[0]->height(); - for (uint i=1; i < images.size(); i++) { + for (unsigned i=1; i < images.size(); i++) { if (images[i]->width() != width || images[i]->height() != height) { std::cerr << "Error: Input images need to be of the same size" << std::endl; return false; @@ -108,7 +109,7 @@ for (int x=0; x < width; x++) { waverage.reset(); // loop over all exposures - for (uint imgNr=0; imgNr < images.size(); imgNr++) { + for (unsigned imgNr=0; imgNr < images.size(); imgNr++) { // add pixel to weighted average waverage( (*images[imgNr])(x,y), (*weightImages[imgNr])(x,y) ); } @@ -126,9 +127,10 @@ << "Usage: " << name << " [options] -o output.exr input-files" << std::endl << "Valid options are:" << std::endl << " -o prefix output file" << std::endl - << " -m mode merge mode, can be one of: avg, khan (default), if avg, no" << std::endl + << " -m mode merge mode, can be one of: avg, avg_slow, khan (default), if avg, no" << std::endl << " -i, -s, or -d options apply" << std::endl << " -i iter number of iterations to execute (default is 1)" << std::endl + << " -c Only consider pixels that are defined in all images (avg mode only)" << std::endl << " -s file debug files to save each iteration, can be one of:" << std::endl << " a - all debug files (can only be used alone)" << std::endl << " w - calculated weights from each iteration" << std::endl @@ -163,7 +165,7 @@ { // parse arguments - const char * optstring = "hvo:m:i:s:a:el"; + const char * optstring = "chvo:m:i:s:a:"; int c; opterr = 0; @@ -171,6 +173,7 @@ g_verbose = 0; std::string outputFile = "merged.hdr"; std::string mode = "khan"; + bool onlyCompleteOverlap = false; int num_iters = 1; char save = 0; char adv = 0; @@ -182,6 +185,9 @@ case 'm': mode = optarg; break; + case 'c': + onlyCompleteOverlap = true; + break; case 'i': num_iters = atoi(optarg); break; @@ -336,18 +342,27 @@ ImageType output; try { - if (mode == "avg") { + if (mode == "avg_slow") { // use a weighted average, with special consideration of pixels // that are completely over or underexposed in all exposures. if (g_verbose > 0) { cout << "Running simple weighted avg algorithm" << std::endl; } + mergeWeightedAverage(inputFiles, output); - // save output file + if (g_verbose > 0) { + std::cout << "Writing " << outputFile << std::endl; + } ImageExportInfo exinfo(outputFile.c_str()); BImage alpha(output.width(), output.height(), 255); exportImageAlpha(srcImageRange(output), srcImage(alpha), exinfo); + } else if (mode == "avg") { + // apply weighted average functor with + // heuristic to deal with pixels that are overexposed in all images + ReduceToHDRFunctor<ImageType::value_type> waverage; + // calc weighted average without loading the whole images into memory + reduceFilesToHDR(inputFiles, outputFile, onlyCompleteOverlap, waverage); } else if (mode == "khan") { if (g_verbose > 0) { @@ -356,15 +371,15 @@ BImage mask; khanMain(inputFiles, output, mask, num_iters, save, adv, ui); // save output file + if (g_verbose > 0) { + std::cout << "Writing " << outputFile << std::endl; + } ImageExportInfo exinfo(outputFile.c_str()); exportImageAlpha(srcImageRange(output), srcImage(mask), exinfo); } else { std::cerr << "Unknown merge mode, see help for a list of possible modes" << std::endl; return 1; } - if (g_verbose > 0) { - std::cout << "Writing " << outputFile << std::endl; - } } catch (std::exception & e) { cerr << "caught exception: " << e.what() << std::endl; return 1; Added: hugin/trunk/src/include/vigra_ext/ReduceOpenEXR.h =================================================================== --- hugin/trunk/src/include/vigra_ext/ReduceOpenEXR.h (rev 0) +++ hugin/trunk/src/include/vigra_ext/ReduceOpenEXR.h 2007-08-13 17:23:37 UTC (rev 2372) @@ -0,0 +1,223 @@ +// -*- c-basic-offset: 4 -*- +/** @file ReduceOpenEXR.h + * + * @author Pablo d'Angelo <pab...@we...> + * + * $Id$ + * + * This is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include <vigra/sized_int.hxx> +#include <vigra_ext/HDRUtils.h> +#include <vigra_impex/auto_file.hxx> + +#include <ImfRgbaFile.h> +#include <ImfArray.h> + + +// hack to read pgm header +inline bool readPGMHeader(FILE * file, int & w, int &h, int & maxval) +{ + char line[257]; + fgets(line, 256, file); + if (strncmp(line,"P5", 2)) { + printf("pgm read: not a pgm file\n"); + return false; + } + + fgets(line, 256, file); + while (line[0] == '#') + fgets(line, 256, file); + + sscanf(line,"%d %d", &w, &h); + fgets(line, 256, file); + sscanf(line, "%d", &maxval); + return true; +} + +template<class Functor> +void reduceFilesToHDR(std::vector<std::string> input, std::string output, + bool onlyCompleteOverlap, Functor & reduce) +{ + typedef float MaskType; + typedef vigra::RGBValue<float> PixelType; + typedef boost::shared_ptr<Imf::RgbaInputFile> InFilePtr; + typedef boost::shared_ptr<vigra::auto_file> AutoFilePtr; + + // open all input files. + std::vector<AutoFilePtr> inputGrayFiles; + std::vector<InFilePtr> inputFiles; + std::vector<vigra::Rect2D> inputROIs; + vigra::Rect2D outputROI; + vigra::Rect2D outputSize; + for (unsigned i=0; i < input.size(); i++) { + std::string grayFile = utils::stripExtension(input[i]) + "_gray.pgm"; + InFilePtr in(new Imf::RgbaInputFile(input[i].c_str())); + inputFiles.push_back(in); + Imath::Box2i dw = in->dataWindow(); + vigra::Rect2D roi(dw.min.x, dw.min.y, dw.max.x+1, dw.max.y+1); + DEBUG_DEBUG("image " << i << "ROI: " << roi); + dw = in->displayWindow(); + vigra::Rect2D imgSize(dw.min.x, dw.min.y, dw.max.x+1, dw.max.y+1); + + AutoFilePtr inGray(new vigra::auto_file(grayFile.c_str(), "rb")); + int w, h, maxval; + readPGMHeader(inGray->get(), w, h, maxval); + vigra_precondition(w == roi.width() && h == roi.height(), ".exr and _gray.pgm images not of the same size"); + inputGrayFiles.push_back(inGray); + if (i==0) { + outputROI = roi; + outputSize = imgSize; + } else { + outputROI |= roi; + outputSize |= imgSize; + } + inputROIs.push_back(roi); + } + DEBUG_DEBUG("output display: " << outputSize); + DEBUG_DEBUG("output data (ROI): " << outputROI); + + // create output file + Imath::Box2i displayWindow (Imath::V2i (outputSize.left(), outputSize.top()), + Imath::V2i (outputSize.right() - 1, outputSize.bottom() - 1)); + Imath::Box2i dataWindow (Imath::V2i (outputROI.left(), outputROI.top()), + Imath::V2i (outputROI.right() - 1, outputROI.bottom() - 1)); + Imf::RgbaOutputFile outputFile (output.c_str(), displayWindow, dataWindow, Imf::WRITE_RGBA); + + int roiWidth = outputROI.right() - outputROI.left(); + // process some 64k of scanlines at a time. + // ass + int nScanlines = 64*1024 /2/4/input.size()/roiWidth; + if (nScanlines < 10) nScanlines = 10; + DEBUG_DEBUG("processing " << nScanlines << " scanlines in one go"); + + typedef boost::shared_ptr<vigra::ArrayVector<vigra::UInt8> > Array8Ptr; + typedef boost::shared_ptr<Imf::Array2D<Imf::Rgba> > ArrayPtr; + std::vector<ArrayPtr> inputArrays; + std::vector<Array8Ptr> inputGrayArrays; + std::vector<Imf::Rgba *> inputPtr(input.size()); + std::vector<vigra::UInt8 *> inputGrayPtr(input.size()); + // create frame buffers for the input files + for (unsigned i=0; i < input.size(); i++) { + ArrayPtr p(new Imf::Array2D<Imf::Rgba>); + p->resizeErase(nScanlines, roiWidth); + inputArrays.push_back(p); + Array8Ptr pg(new vigra::ArrayVector<vigra::UInt8>(nScanlines*roiWidth, vigra::UInt8(0))); + inputGrayArrays.push_back(pg); + } + // create output framebuffer + Imf::Array2D<Imf::Rgba> outputArray(nScanlines, roiWidth); + + // main processing loop + int y = outputROI.top(); + while (y < outputROI.bottom()) + { + for (unsigned j=0; j < input.size(); j++) { + Imf::Rgba * pixels = &(*inputArrays[j])[0][0]; + // shift to our buffer origin and apply shift required by readPixels() + pixels = pixels - outputROI.left() - y * roiWidth; + inputFiles[j]->setFrameBuffer( pixels, 1, roiWidth); + // TODO: restrict reading to actual ROI of input image. + int ys = std::max(y, inputROIs[j].top()); + int ye = std::min(y + nScanlines-1, inputROIs[j].bottom()-1); + // read if inside roi + if (ys <=ye) + inputFiles[j]->readPixels (ys, ye); + inputPtr[j] = &(*inputArrays[j])[0][0]; + + // read data from raw gray level input + for(int k=0; k < nScanlines; k++) { + if (k+y >= inputROIs[j].top() && k+y < inputROIs[j].bottom()) { + // read scanline from raw image + vigra::UInt8 * grayp = inputGrayArrays[j]->data() + + (inputROIs[j].left()-outputROI.left()) + k*roiWidth; + int nElem = inputROIs[j].width(); + size_t n = fread(grayp, 1, nElem, inputGrayFiles[j]->get()); + assert (n == nElem); + } + } + inputGrayPtr[j] = inputGrayArrays[j]->data(); + } + // reduce content + Imf::Rgba * outputPtr = &outputArray[0][0]; + Imf::Rgba * outputPtrEnd = outputPtr + nScanlines*roiWidth; + for (; outputPtr != outputPtrEnd; ++outputPtr) + { + reduce.reset(); + bool valid = false; + bool complete = true; + for (unsigned int j=0; j< input.size(); j++) { + Imf::Rgba p = *inputPtr[j]; + bool isValid = p.a > 0; + valid |= isValid; + complete &= isValid; + if (isValid) { + reduce(PixelType(p.r, p.g, p.b), *inputGrayPtr[j]); + } + ++inputPtr[j]; + ++inputGrayPtr[j]; + } + // need to properly set the alpha... + PixelType val = reduce(); + outputPtr->r = val.red(); + outputPtr->g = val.green(); + outputPtr->b = val.blue(); + if (onlyCompleteOverlap) { + outputPtr->a = complete ? 1 : 0; + } else { + outputPtr->a = valid ? 1 : 0; + } + } + // save pixels. + Imf::Rgba * pixels = &outputArray[0][0]; + pixels = pixels - outputROI.left() - y * roiWidth; + + outputFile.setFrameBuffer (pixels, + 1, roiWidth); + int wh = std::min(outputROI.bottom()-y, nScanlines); + outputFile.writePixels( wh ); + y += nScanlines; + } +} + +#if 0 + // read in pixels + for (int j=0; j < input.size(); j++) { + int yend = y + nScanlines; + // check if there is something to read from this image + if (heightLeft[j] > 0) { + // calculate y-offset in terms of data window of image + int y_rel_start = inputROIs[j].top() - y; + if (y_rel_start > 0 && y_rel_start < nScanlines) { + // we have something to read, setup correct framebuffer address + // + inputFiles[j].setFrameBuffer( &(*(inputArrays[j]))[0][0] - outputROI().left() + - outputROI().top() * roiWidth, + 1, roiWidth); + + int y_read_start = y + int y_read_end = std::min(inputRoi + + if (!( inputROIs[j].bottom() <= y || inputROIs[j].top() >= yend )) { + // inside the ROI. Calculate the number of rows inside the buffer + + // calculate position in framebuffer. + if (y >= inputROIs[j].top() + int ystart = + } +#endif + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-08-13 18:45:34
|
Revision: 2375 http://hugin.svn.sourceforge.net/hugin/?rev=2375&view=rev Author: dangelo Date: 2007-08-13 11:45:30 -0700 (Mon, 13 Aug 2007) Log Message: ----------- Create makefiles for building the panorama Modified Paths: -------------- hugin/trunk/src/Panorama/utils.cpp hugin/trunk/src/include/PT/utils.h Modified: hugin/trunk/src/Panorama/utils.cpp =================================================================== --- hugin/trunk/src/Panorama/utils.cpp 2007-08-13 18:44:26 UTC (rev 2374) +++ hugin/trunk/src/Panorama/utils.cpp 2007-08-13 18:45:30 UTC (rev 2375) @@ -53,11 +53,79 @@ using namespace vigra; using namespace utils; + +// should be moved somewhere else (will be after GSOC anyway) +vector<UIntSet> getHDRStacks(const Panorama & pano, UIntSet allImgs) +{ + vector<UIntSet> result; + if(pano.getNrOfImages() == 0) return result; + UIntSet stack; + + do { + unsigned srcImg = *(allImgs.begin()); + stack.insert(srcImg); + allImgs.erase(srcImg); + + // find all images that have a suitable overlap. + SrcPanoImage simg = pano.getSrcImage(srcImg); + double maxShift = simg.getHFOV() / 10.0; + for (UIntSet::iterator it = allImgs.begin(); it != allImgs.end(); ) { + unsigned srcImg2 = *it; + it++; + SrcPanoImage simg2 = pano.getSrcImage(srcImg2); + if ( fabs(simg.getYaw() - simg2.getYaw()) < maxShift + && fabs(simg.getPitch() - simg2.getPitch()) < maxShift ) + { + stack.insert(srcImg2); + allImgs.erase(srcImg2); + } + } + result.push_back(stack); + stack.clear(); + } while (allImgs.size() > 0); + + return result; +} + +// should be moved somewhere else (will be after GSOC anyway) +vector<UIntSet> getExposureLayers(const Panorama & pano, UIntSet allImgs) +{ + vector<UIntSet> result; + if(pano.getNrOfImages() == 0) return result; + UIntSet stack; + + do { + unsigned srcImg = *(allImgs.begin()); + stack.insert(srcImg); + allImgs.erase(srcImg); + + // find all images that have a suitable overlap. + SrcPanoImage simg = pano.getSrcImage(srcImg); + double maxEVDiff = 0.2; + for (UIntSet::iterator it = allImgs.begin(); it != allImgs.end(); ) { + unsigned srcImg2 = *it; + it++; + SrcPanoImage simg2 = pano.getSrcImage(srcImg2); + if ( fabs(simg.getExposureValue() - simg2.getExposureValue()) < maxEVDiff ) + { + stack.insert(srcImg2); + allImgs.erase(srcImg2); + } + } + result.push_back(stack); + stack.clear(); + } while (allImgs.size() > 0); + + return result; +} + + void PT::createMakefile(const Panorama & pano, + const UIntSet & images, const std::string & ptofile, const std::string & outputPrefix, const PTPrograms & progs, - const std::string & includePath, + const std::string & customMakefile, std::ostream & o) { @@ -72,16 +140,48 @@ o << "# makefile for panorama stitching, created by hugin " << endl << endl; - // this function supports only multiple tiff output. - // for example using nona or PTmender (or whatever it will be called) + o << endl + << endl + << "# Tool configuration" << endl + << "NONA=" << quoteString(progs.nona) << endl + << "PTSTITCHER=" << quoteString(progs.PTStitcher) << endl + << "PTMENDER=" << quoteString(progs.PTmender) << endl + << "PTBLENDER=" << quoteString(progs.PTblender) << endl + << "PTMASKER=" << quoteString(progs.PTmasker) << endl + << "PTROLLER=" << quoteString(progs.PTroller) << endl + << "ENBLEND=" << quoteString(progs.enblend) << endl + << "SMARTBLEND=" << quoteString(progs.smartblend) << endl + << "HDRMERGE=" << "hugin_hdrmerge" << endl + << "RM=rm" << endl + << endl + << "# options for the programs" << endl << endl; - // set a suitable target file. (only tiff is supported so far) - std::string output = quoteString(outputPrefix); - std::string final_output = output + ".tif"; - bool externalBlender = false; - bool remapToMultiple = false; + o << "ENBLEND_OPTS=" << progs.enblend_opts; + if (opts.getHFOV() == 360.0) { + // blend over the border + o << " -w"; + } + if (opts.tiffCompression == "LZW") { + o << " -z"; + } + o << " -f" << opts.getWidth() << "x" << opts.getHeight() << endl; + o << endl; + string hdrExt(".exr"); + string ldrExt(".tif"); + string ldrRemappedExt(".tif"); + string ldrRemappedMode("TIFF_m"); + string hdrRemappedExt = ".exr"; + string hdrRemappedMode = "EXR_m"; + + // set a suitable target file. + std::string output = outputPrefix; + +// bool externalBlender = false; +// bool remapToMultiple = false; + + /* if (opts.blendMode == PT::PanoramaOptions::NO_BLEND) { // just remapping or simple blending if (opts.outputFormat == PT::PanoramaOptions::TIFF_m) { @@ -91,111 +191,331 @@ externalBlender = true; remapToMultiple = true; } - +*/ o << "# the output panorama" << endl - << "TARGET_PREFIX=" << output << endl - << "TARGET=" << final_output << endl - << "PROJECT_FILE=" << quoteString(ptofile) << endl - << endl + << "LDR_REMAPPED_PREFIX=" << quoteString(output) << endl + << "HDR_STACK_REMAPPED_PREFIX=" << quoteString(output + "_hdr_") << endl + << "LDR_EXPOSURE_REMAPPED_PREFIX=" << quoteString(output + "_exposure_layers_") << endl + << "PROJECT_FILE=" << quoteString(ptofile) << endl + << "LDR_BLENDED=" << quoteString(output + ldrExt) << endl + << "HDR_BLENDED=" << quoteString(output + "_hdr" + hdrExt) << endl + << endl << "# Input images" << endl << "INPUT_IMAGES="; + for (unsigned int i=0; i < pano.getNrOfImages(); i++) { - o << quoteString(pano.getImage(i).getFilename()) << " "; + o << quoteString(pano.getImage(i).getFilename()); + if (i+1 != pano.getNrOfImages()) o << "\\" << endl; } + + vector<string> remappedImages; o << endl << endl << "# remapped images" << endl - << "REMAPPED_IMAGES="; - for (unsigned int i=0; i < pano.getNrOfImages(); i++) { + << "LDR_LAYERS="; + for (UIntSet::iterator it = images.begin(); it != images.end();) { std::ostringstream fns; - fns << output << std::setfill('0') << std::setw(4) << i << ".tif"; - o << fns.str() << " "; + fns << output << std::setfill('0') << std::setw(4) << *it << ldrRemappedExt; + remappedImages.push_back(fns.str()); + o << quoteString(fns.str()); + ++it; + if (it != images.end()) o << "\\" << endl; } - o << endl + vector<string> remappedHDRImages; + o << endl << endl - << "# Tool configuration" << endl - << "NONA=" << quoteString(progs.nona) << endl - << "PTSTITCHER=" << quoteString(progs.PTStitcher) << endl - << "PTMENDER=" << quoteString(progs.PTmender) << endl - << "PTBLENDER=" << quoteString(progs.PTblender) << endl - << "PTMASKER=" << quoteString(progs.PTmasker) << endl - << "PTROLLER=" << quoteString(progs.PTroller) << endl - << "ENBLEND=" << quoteString(progs.enblend) << endl - << "SMARTBLEND=" << quoteString(progs.smartblend) << endl + << "# remapped images (hdr)" << endl + << "HDR_LAYERS="; + for (UIntSet::iterator it = images.begin(); it != images.end();) { + std::ostringstream fns; + fns << output << "_hdr_" << std::setfill('0') << std::setw(4) << *it << hdrRemappedExt; + remappedHDRImages.push_back(fns.str()); + o << quoteString(fns.str()); + ++it; + if (it != images.end()) o << "\\" << endl; + } + + o << endl << endl - << "# options for the programs" << endl; - - string remapper; - switch(opts.remapper) { - case PanoramaOptions::NONA: - remapper = "nona"; - break; - case PanoramaOptions::PTMENDER: - remapper = "ptmender"; - break; + << "# remapped maxval images" << endl + << "HDR_LAYERS_WEIGHTS="; + for (UIntSet::iterator it = images.begin(); it != images.end();) { + std::ostringstream fns; + fns << output << "_hdr_" << std::setfill('0') << std::setw(4) << *it << "_gray.pgm"; + o << quoteString(fns.str()) << " "; + ++it; + if (it != images.end()) o << "\\" << endl; } + o << endl; - string blender; - switch(opts.blendMode) { - case PanoramaOptions::NO_BLEND: - blender="multilayer"; - break; - case PanoramaOptions::PTBLENDER_BLEND: - blender="ptblender"; - // TODO: add options here! - o << "PTBLENDER_OPTS="; - switch (opts.colorCorrection) { - case PanoramaOptions::NONE: - blender = "ptroller"; - break; - case PanoramaOptions::BRIGHTNESS_COLOR: - o << " -k " << opts.colorReferenceImage; - break; - case PanoramaOptions::BRIGHTNESS: - o << " -k " << opts.colorReferenceImage; - break; - case PanoramaOptions::COLOR: - o << " -k " << opts.colorReferenceImage; - break; - } - o << endl; - break; - case PanoramaOptions::ENBLEND_BLEND: - blender = "enblend"; - o << "ENBLEND_OPTS=" << progs.enblend_opts; - if (opts.getHFOV() == 360.0) { - // blend over the border - o << " -w"; - } - if (opts.tiffCompression == "LZW") { - o << " -z"; - } - o << " -f" << opts.getWidth() << "x" << opts.getHeight() << endl; - o << endl; - break; - case PanoramaOptions::SMARTBLEND_BLEND: - blender = "smartblend"; - o << "SMARTBLEND_OPTS=" << progs.smartblend_opts; - if (opts.getHFOV() == 360.0) { - // blend over the border - o << " -w"; - } - o << endl; - // todo: build smartblend command line from given images. (requires additional program) - break; + + vector<string> stackedImages; + vector<UIntSet> stacks = getHDRStacks(pano, images); + DEBUG_DEBUG( stacks.size() << " stacks found"); + o << endl + << "# stacked images" << endl + << "HDR_STACKS_NUMBERS = "; + for (unsigned i=0; i < stacks.size(); i++) + o << i << " "; + o << endl; + for (unsigned i=0; i < stacks.size(); i++) { + std::ostringstream fns; + fns << output << "_stack_hdr_" << std::setfill('0') << std::setw(4) << i << hdrRemappedExt; + stackedImages.push_back(fns.str()); + std::ostringstream stackedImgVar; + stackedImgVar << "HDR_STACK_" << i; + o << stackedImgVar.str() << " = " << quoteString(fns.str()) << endl; + o << stackedImgVar.str() << "_INPUT = "; + for (UIntSet::iterator it = stacks[i].begin(); it != stacks[i].end();) { + std::ostringstream fns; + fns << output << "_hdr_" << std::setfill('0') << std::setw(4) << *it << hdrRemappedExt; + o << quoteString(fns.str()); + ++it; + if (it != stacks[i].end()) o << "\\" << endl; + } + o << endl << endl; } + o << endl; + o << "HDR_STACKS = "; + for (unsigned i=0; i < stacks.size(); i++) + o << "$(HDR_STACK_" << i << ") "; + o << endl; - std::string includefile = includePath + remapper + "_" + blender + ".mk"; + // add support for exposure blending stuff... + vector<string> similarExposureRemappedImages; + vector<string> similarExposureImages; + vector<UIntSet> similarExposures = getExposureLayers(pano, images); + DEBUG_DEBUG( similarExposures.size() << " similar exposures found"); o << endl - << "# including template " << includefile - << endl; + << endl + << "# number of image sets with similar exposure" << endl + << "LDR_EXPOSURE_EXPOSURE_LAYERS_NUMBERS = "; + for (unsigned i=0; i < similarExposures.size(); i++) + o << i << " "; + o << endl; + for (unsigned i=0; i < similarExposures.size(); i++) { + std::ostringstream fns; + fns << output << "_exposure_" << std::setfill('0') << std::setw(2) << i << ldrExt; + similarExposureImages.push_back(fns.str()); + string destImg = quoteString(fns.str()); + std::ostringstream expImgVar; + expImgVar << "LDR_EXPOSURE_LAYER_" << i; + o << expImgVar.str() << " = " << destImg << endl; + o << expImgVar.str() << "_INPUT = "; + double exposure=0; + for (UIntSet::iterator it = similarExposures[i].begin(); it != similarExposures[i].end();) { + exposure += pano.getSrcImage(*it).getExposureValue(); + std::ostringstream fns; + fns << output << "_exposure_layers_" << std::setfill('0') << std::setw(4) << *it << ldrExt; + similarExposureRemappedImages.push_back(fns.str()); + o << quoteString(fns.str()); + ++it; + if (it != similarExposures[i].end()) o << "\\" << endl; + } + o << endl << endl; + o << expImgVar.str() << " = " << destImg << endl; + o << expImgVar.str() << "_INPUT_PTMENDER = "; + for (UIntSet::iterator it = similarExposures[i].begin(); it != similarExposures[i].end();) { + std::ostringstream fns; + fns << output << std::setfill('0') << std::setw(4) << *it << ldrExt; + o << quoteString(fns.str()); + ++it; + if (it != similarExposures[i].end()) o << "\\" << endl; + } + // calculate output exposure value for this set. + o << endl + << "LDR_EXPOSURE_LAYER_" << i << "_EXPOSURE = " + << exposure / similarExposures[i].size() << endl; + } + o << endl; + o << "LDR_EXPOSURE_LAYERS = "; + for (unsigned i=0; i < similarExposures.size(); i++) + o << "$(LDR_EXPOSURE_LAYER_" << i << ") "; + o << endl; + o << "LDR_EXPOSURE_LAYERS_REMAPPED = "; + for (unsigned i=0; i < similarExposureRemappedImages.size(); i++) + { + o << quoteString(similarExposureRemappedImages[i]); + if (i+1 != similarExposureRemappedImages.size()) o << "\\" << endl; + } + o << endl << endl; - std::ifstream templ(includefile.c_str()); - while(templ.good() && (!templ.eof())) { - std::string line; - std::getline(templ, line); - o << line << endl; + // TODO: include custom makefile here + if (customMakefile.size() > 0) { + o << "include " << quoteString(customMakefile) << endl << endl; + } else { + // create rules for all possible targets. + + std::string targets; + std::string cleanTargets; + + // output all targets + if (opts.outputLDRBlended) + targets += "$(LDR_BLENDED) "; + else + cleanTargets += "$(LDR_BLENDED) "; + + if (opts.outputLDRLayers) + targets += "$(LDR_LAYERS) $(HDR_LAYERS_WEIGHTS)"; + else + cleanTargets += "$(LDR_LAYERS) $(HDR_LAYERS_WEIGHTS)"; + + if (opts.outputLDRExposureLayers) { + targets += "$(LDR_EXPOSURE_LAYERS) "; + cleanTargets += "$(LDR_EXPOSURE_LAYERS_REMAPPED) "; + } else + cleanTargets += "$(LDR_EXPOSURE_LAYERS) "; + + if (opts.outputHDRBlended) + targets += "$(HDR_BLENDED) "; + else + cleanTargets += "$(HDR_BLENDED) "; + + if (opts.outputHDRLayers) + targets += "$(HDR_LAYERS) "; + else + cleanTargets += "$(HDR_LAYERS) "; + + if (opts.outputHDRStacks) + targets += "$(HDR_STACKS) "; + else + cleanTargets += "$(HDR_STACKS) "; + + // targets and clean rule. + + o << "TEMP_FILES = " << cleanTargets << endl + << endl + << "all: " << targets << endl << endl + << "clean: " << endl + << "\t $(RM) $(TEMP_FILES)" << endl + << endl; + + // ============================== + // output rules for all targets. + // remapped LDR images for exposure stacks. + switch(opts.remapper) { + case PanoramaOptions::NONA: + // produce rules for remapping with nona: + { + o << "# Rules for ordinary TIFF_m output" << endl; + int i=0; + for (UIntSet::iterator it = images.begin(); + it != images.end(); ++it) + { + string destImg = quoteString(remappedImages[i]); + string srcImg = quoteString(pano.getImage(*it).getFilename()); + o << destImg << ": " << srcImg << " $(PROJECT_FILE)" << endl + << "\t$(NONA) -r ldr -m " << ldrRemappedMode << " -o $(LDR_REMAPPED_PREFIX) -i " << *it << " $(PROJECT_FILE)" << endl << endl; + i++; + } + + o << "# Rules for merge to hdr output" << endl; + i=0; + for (UIntSet::iterator it = images.begin(); + it != images.end(); ++it) + { + string destImg = quoteString(remappedHDRImages[i]); + string srcImg = quoteString(pano.getImage(*it).getFilename()); + o << destImg << ": " << srcImg << " $(PROJECT_FILE)" << endl + << "\t$(NONA) -r hdr -m " << hdrRemappedMode << " -o $(HDR_STACK_REMAPPED_PREFIX) -i " << *it << " $(PROJECT_FILE)" << endl << endl; + i++; + } + + // rules for exposure sets. + o << "# Rules for exposure layer output" << endl; + int j=0; + for (unsigned i=0; i < similarExposures.size(); i++) { + for (UIntSet::iterator it = similarExposures[i].begin(); + it != similarExposures[i].end(); ++it) + { + string destImg = quoteString(similarExposureRemappedImages[j]); + string srcImg = quoteString(pano.getImage(*it).getFilename()); + o << destImg << ": " << srcImg << " $(PROJECT_FILE)" << endl + << "\t$(NONA) -r ldr -e $(LDR_EXPOSURE_LAYER_" << i << "_EXPOSURE) -m " + << ldrRemappedMode << " -o $(LDR_EXPOSURE_REMAPPED_PREFIX) -i " << *it + << " $(PROJECT_FILE)" << endl << endl; + j++; + } + } + } + break; + case PanoramaOptions::PTMENDER: + o << "$(LDR_LAYERS) : $(INPUT_IMAGES) $(PROJECT_FILE)" << endl + << "\t$(PTMENDER) -o $(LDR_REMAPPED_PREFIX) $(PROJECT_FILE)" << endl << endl; + break; + } + + // ==================================== + // output rules for HDR merging + + // write rules for each HDR stack + // only output pixes that are defined in all input images + for (unsigned i=0; i < stacks.size(); i++) { + o << "$(HDR_STACK_" << i << ") : $(HDR_STACK_" << i << "_INPUT)" << endl + << "\t$(HDRMERGE) -m avg -c -o $(HDR_STACK_" << i << ") $(HDR_STACK_" << i << "_INPUT)" + << endl << endl; + } + + switch(opts.blendMode) { + case PanoramaOptions::ENBLEND_BLEND: + // write rules for blending with enblend + o << "$(LDR_BLENDED) : $(LDR_LAYERS)" << endl; + o << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(LDR_BLENDED) $(LDR_LAYERS) " << endl << endl; + + o << "$(HDR_BLENDED) : $(HDR_STACKS)" << endl; + o << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(HDR_BLENDED) $(HDR_STACKS) " << endl << endl; + + // for LDR exposure blend planes + if (opts.remapper == PanoramaOptions::NONA) { + for (unsigned i=0; i < similarExposures.size(); i++) { + o << "$(LDR_EXPOSURE_LAYER_" << i <<") : $(LDR_EXPOSURE_LAYER_" << i << "_INPUT)" << endl + << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $@ $^" << endl << endl; + } + } else { + for (unsigned i=0; i < similarExposures.size(); i++) { + o << "$(LDR_EXPOSURE_LAYER_" << i <<") : $(LDR_EXPOSURE_LAYER_" << i << "_INPUT_PTMENDER)" << endl + << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $@ $^" << endl << endl; + } + } + break; + case PanoramaOptions::NO_BLEND: + // rules for non-blended HDR panoramas + o << "$(HDR_BLENDED) : $(HDR_LAYERS)" << endl; + o << "\t$(HDRMERGE) -m avg -o $@ $^" << endl << endl; + // TODO: output suitable PTroller rules + break; + case PanoramaOptions::PTBLENDER_BLEND: + o << "PTBLENDER_OPTS="; + switch (opts.colorCorrection) { + case PanoramaOptions::NONE: + break; + case PanoramaOptions::BRIGHTNESS_COLOR: + o << " -k " << opts.colorReferenceImage; + break; + case PanoramaOptions::BRIGHTNESS: + o << " -k " << opts.colorReferenceImage; + break; + case PanoramaOptions::COLOR: + o << " -k " << opts.colorReferenceImage; + break; + } + o << endl; + // TODO: output PTBlender + PTmasker + PTroller rules + break; + case PanoramaOptions::SMARTBLEND_BLEND: + o << "SMARTBLEND_OPTS=" << progs.smartblend_opts; + if (opts.getHFOV() == 360.0) { + // blend over the border + o << " -w"; + } + o << endl; + // TODO: build smartblend command line from given images. (requires additional program) + break; + default: + // TODO: + break; + } } #ifdef __unix__ Modified: hugin/trunk/src/include/PT/utils.h =================================================================== --- hugin/trunk/src/include/PT/utils.h 2007-08-13 18:44:26 UTC (rev 2374) +++ hugin/trunk/src/include/PT/utils.h 2007-08-13 18:45:30 UTC (rev 2375) @@ -67,6 +67,7 @@ /** create a makefile and associated project file for rendering */ void createMakefile(const Panorama & pano, + const UIntSet & images, const std::string & ptofile, const std::string & outputPrefix, const PTPrograms & progs, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-08-13 18:53:48
|
Revision: 2376 http://hugin.svn.sourceforge.net/hugin/?rev=2376&view=rev Author: dangelo Date: 2007-08-13 11:53:46 -0700 (Mon, 13 Aug 2007) Log Message: ----------- added support for multiple output types at the same time Modified Paths: -------------- hugin/trunk/src/Panorama/CMakeLists.txt hugin/trunk/src/Panorama/Panorama.cpp hugin/trunk/src/Panorama/PanoramaMemento.cpp hugin/trunk/src/include/PT/PanoramaMemento.h hugin/trunk/src/include/PT/RemappedPanoImage.h hugin/trunk/src/include/PT/Stitcher.h Modified: hugin/trunk/src/Panorama/CMakeLists.txt =================================================================== --- hugin/trunk/src/Panorama/CMakeLists.txt 2007-08-13 18:45:30 UTC (rev 2375) +++ hugin/trunk/src/Panorama/CMakeLists.txt 2007-08-13 18:53:46 UTC (rev 2376) @@ -1,10 +1,18 @@ -add_library(huginpanorama SHARED Panorama.cpp PanoramaMemento.cpp PanoImage.cpp - PanoToolsInterface.cpp SpaceTransform.cpp - PTOptimise.cpp ImageGraph.cpp Stitcher.cpp - utils.cpp PhotometricOptimizer.cpp - Stitcher1.cpp Stitcher2.cpp Stitcher3.cpp - Stitcher4.cpp) +SET(panosrc Panorama.cpp PanoramaMemento.cpp PanoImage.cpp + PanoToolsInterface.cpp SpaceTransform.cpp + PTOptimise.cpp ImageGraph.cpp Stitcher.cpp + utils.cpp PhotometricOptimizer.cpp + Stitcher1.cpp Stitcher2.cpp Stitcher3.cpp + Stitcher4.cpp) -install(TARGETS huginpanorama - DESTINATION lib) \ No newline at end of file +if (SHARED_INTERNAL_LIBS) + add_library(huginpanorama SHARED ${panosrc}) + install(TARGETS huginpanorama + DESTINATION lib) +else (SHARED_INTERNAL_LIBS) + add_library(huginpanorama STATIC ${panosrc}) +endif (SHARED_INTERNAL_LIBS) + +target_link_libraries(huginpanorama huginjhead hugincommon) + Modified: hugin/trunk/src/Panorama/Panorama.cpp =================================================================== --- hugin/trunk/src/Panorama/Panorama.cpp 2007-08-13 18:45:30 UTC (rev 2375) +++ hugin/trunk/src/Panorama/Panorama.cpp 2007-08-13 18:53:46 UTC (rev 2376) @@ -232,7 +232,6 @@ m_ptoptimizerVarNames.insert("p"); m_ptoptimizerVarNames.insert("y"); - cerr << "Panorama obj created" << std::endl; /* settings.setPath("dangelo","PanoAssistant"); readSettings(); @@ -976,7 +975,7 @@ o << " autoCenterCrop=1"; } o << " cropFactor=" << lens.getCropFactor() << std::endl; - + o << "i w" << img.getWidth() << " h" << img.getHeight() <<" f" << lens.getProjection() << " "; @@ -1132,23 +1131,45 @@ o << std::endl; // special line with hugins options. - o << "#hugin_options r" << output.optimizeReferenceImage; + o << "#hugin_optimizeReferenceImage " << output.optimizeReferenceImage << std::endl; + o << "#hugin_blender "; switch (output.blendMode) { case PanoramaOptions::NO_BLEND: - o << " e0"; + o << "none" << endl; break; case PanoramaOptions::PTBLENDER_BLEND: - o << " e1"; + o << "PTblender" << endl; break; - case PanoramaOptions::ENBLEND_BLEND: - o << " e2"; - break; case PanoramaOptions::SMARTBLEND_BLEND: - o << " e3"; + o << "smartblend" << endl; break; + case PanoramaOptions::PTMASKER_BLEND: + o << "PTmasker" << endl; + break; + default: + case PanoramaOptions::ENBLEND_BLEND: + o << "enblend" << endl; + break; } - o << std::endl; + o << "#hugin_remapper "; + switch (output.remapper) { + case PanoramaOptions::PTMENDER: + o << "PTmender" << endl; + break; + default: + case PanoramaOptions::NONA: + o << "nona" << endl; + break; + } + + o << "#hugin_outputLDRBlended " << (output.outputLDRBlended ? "true" : "false") << endl; + o << "#hugin_outputLDRLayers " << (output.outputLDRLayers ? "true" : "false") << endl; + o << "#hugin_outputLDRExposureLayers " << (output.outputLDRExposureLayers ? "true" : "false") << endl; + o << "#hugin_outputHDRBlended " << (output.outputHDRBlended ? "true" : "false") << endl; + o << "#hugin_outputHDRLayers " << (output.outputHDRLayers ? "true" : "false") << endl; + o << "#hugin_outputHDRStacks " << (output.outputHDRStacks ? "true" : "false") << endl; + #ifdef __unix__ // reset locale setlocale(LC_NUMERIC,old_locale); Modified: hugin/trunk/src/Panorama/PanoramaMemento.cpp =================================================================== --- hugin/trunk/src/Panorama/PanoramaMemento.cpp 2007-08-13 18:45:30 UTC (rev 2375) +++ hugin/trunk/src/Panorama/PanoramaMemento.cpp 2007-08-13 18:53:46 UTC (rev 2376) @@ -866,7 +866,9 @@ "VRML", "QTVR", "HDR", - "HDR_m" + "HDR_m", + "EXR", + "EXR_m" }; @@ -889,7 +891,9 @@ "wrl", "mov", "hdr", - "hdr" + "hdr", + "exr", + "exr" }; struct ImgInfo @@ -1327,12 +1331,11 @@ double cropFactor=1; const char * s = line.c_str() + pos; sscanf(s,"cropFactor=%lf", & cropFactor); - std::cerr << "crop factor: " << s << " parsed: " << cropFactor << std::endl; info.cropFactor = cropFactor; } huginImgInfo.push_back(info); } - + // PTGui and PTAssember project files: // #-imgfile 960 1280 "D:\data\bruno\074-098\087.jpg" if (line.substr(0,10) == "#-imgfile ") { @@ -1360,33 +1363,46 @@ cImgInfo.push_back(info); } - - // parse our special options - if (line.substr(0,14) == "#hugin_options") { - DEBUG_DEBUG("parsing special line"); - getIntParam(options.optimizeReferenceImage, line, "r"); - int val; - if (getIntParam(val,line,"e")) { - switch(val) { - case 0: - options.blendMode = PanoramaOptions::NO_BLEND; - break; - case 1: - options.blendMode = PanoramaOptions::PTBLENDER_BLEND; - break; - case 2: - options.blendMode = PanoramaOptions::ENBLEND_BLEND; - break; - case 3: - options.blendMode = PanoramaOptions::SMARTBLEND_BLEND; - break; - default: - options.blendMode = PanoramaOptions::ENBLEND_BLEND; - break; - } - } else { - options.blendMode = PanoramaOptions::ENBLEND_BLEND; - } + // parse hugin properties + if (line.substr(0,7) == "#hugin_") { + istringstream is(line); + string var,value; + is >> var >> value; + if (!is.fail()) { + if (var == "#hugin_optimizeReference") { + options.optimizeReferenceImage = atoi(value.c_str()); + } else if (var == "#hugin_remapper") { + if (value == "nona") { + options.remapper = PanoramaOptions::NONA; + } else if (value == "PTmender") { + options.remapper = PanoramaOptions::PTMENDER; + } + } else if (var == "#hugin_blender") { + if (value == "none") { + options.blendMode = PanoramaOptions::NO_BLEND; + } else if (value == "PTblender") { + options.blendMode = PanoramaOptions::PTBLENDER_BLEND; + } else if (value == "enblend") { + options.blendMode = PanoramaOptions::ENBLEND_BLEND; + } else if (value == "PTmasker") { + options.blendMode = PanoramaOptions::PTMASKER_BLEND; + } else if (value == "smartblend") { + options.blendMode = PanoramaOptions::SMARTBLEND_BLEND; + } + } + } else if (var == "#hugin_outputLDRBlended") { + options.outputLDRBlended = (value == "true"); + } else if (var == "#hugin_outputLDRLayers") { + options.outputLDRLayers = (value == "true"); + } else if (var == "#hugin_outputLDRExposureLayers") { + options.outputLDRExposureLayers = (value == "true"); + } else if (var == "#hugin_outputHDRBlended") { + options.outputHDRBlended = (value == "true"); + } else if (var == "#hugin_outputHDRLayers") { + options.outputHDRLayers = (value == "true"); + } else if (var == "#hugin_outputHDRStacks") { + options.outputHDRStacks = (value == "true"); + } } break; } Modified: hugin/trunk/src/include/PT/PanoramaMemento.h =================================================================== --- hugin/trunk/src/include/PT/PanoramaMemento.h 2007-08-13 18:45:30 UTC (rev 2375) +++ hugin/trunk/src/include/PT/PanoramaMemento.h 2007-08-13 18:53:46 UTC (rev 2376) @@ -405,7 +405,9 @@ VRML, QTVR, HDR, - HDR_m + HDR_m, + EXR, + EXR_m }; /** output mode */ @@ -414,12 +416,18 @@ OUTPUT_HDR }; + enum HDRMergeType { + HDRMERGE_AVERAGE=0, + HDRMERGE_DEGHOST=1 + }; + /** blenders */ enum BlendingMechanism { NO_BLEND=0, PTBLENDER_BLEND=1, ENBLEND_BLEND=2, - SMARTBLEND_BLEND=3 + SMARTBLEND_BLEND=3, + PTMASKER_BLEND=4 }; enum Remapper { @@ -461,12 +469,20 @@ outputFormat = JPEG; remapAcceleration = MAX_SPEEDUP; blendMode = NO_BLEND; + hdrMergeMode = HDRMERGE_AVERAGE; remapper = NONA; saveCoordImgs = false; huberSigma = 2; photometricHuberSigma = 2/255.0; photometricSymmetricError = false; outputMode = OUTPUT_LDR; + outputLDRBlended = true; + outputLDRLayers = false; + outputLDRExposureLayers = false; + outputHDRBlended = false; + outputHDRLayers = false; + outputHDRStacks = false; + outputEMoRParams.resize(5,0.0); outputExposureValue = 0.0; outputPixelType = ""; @@ -583,6 +599,7 @@ PTStitcherAcceleration remapAcceleration; BlendingMechanism blendMode; + HDRMergeType hdrMergeMode; Remapper remapper; bool saveCoordImgs; @@ -594,6 +611,14 @@ // modes related to high dynamic range output OutputMode outputMode; + + bool outputLDRBlended; ///< save blended panorama (LDR) + bool outputLDRLayers; ///< save remapped layers (LDR) + bool outputLDRExposureLayers; ///< save blended exposure layers (actually LDR images) + bool outputHDRBlended; ///< save blended panorama (HDR) + bool outputHDRLayers; ///< save remapped layers (HDR) + bool outputHDRStacks; ///< save image stacks (HDR) + // select the exposure of the output images in LDR mode. double outputExposureValue; std::vector<float> outputEMoRParams; Modified: hugin/trunk/src/include/PT/RemappedPanoImage.h =================================================================== --- hugin/trunk/src/include/PT/RemappedPanoImage.h 2007-08-13 18:45:30 UTC (rev 2375) +++ hugin/trunk/src/include/PT/RemappedPanoImage.h 2007-08-13 18:53:46 UTC (rev 2376) @@ -838,7 +838,7 @@ double maxv = vigra_ext::getMaxValForPixelType(info.getPixelType()); if (maxv != vigra_ext::LUTTraits<PixelType>::max()) { double scale = ((double)vigra_ext::LUTTraits<PixelType>::max()) / maxv; - std::cout << "Scaling input image (pixel type: " << info.getPixelType() << " with: " << scale << std::endl; + //std::cout << "Scaling input image (pixel type: " << info.getPixelType() << " with: " << scale << std::endl; transformImage(vigra::srcImageRange(srcImg), destImage(srcImg), vigra::functor::Arg1()*vigra::functor::Param(scale)); } Modified: hugin/trunk/src/include/PT/Stitcher.h =================================================================== --- hugin/trunk/src/include/PT/Stitcher.h 2007-08-13 18:45:30 UTC (rev 2375) +++ hugin/trunk/src/include/PT/Stitcher.h 2007-08-13 18:53:46 UTC (rev 2376) @@ -180,7 +180,8 @@ { DEBUG_ASSERT(opts.outputFormat == PT::PanoramaOptions::TIFF_multilayer || opts.outputFormat == PT::PanoramaOptions::TIFF_m - || opts.outputFormat == PT::PanoramaOptions::HDR_m); + || opts.outputFormat == PT::PanoramaOptions::HDR_m + || opts.outputFormat == PT::PanoramaOptions::EXR_m); m_basename = utils::stripExtension(basename); DEBUG_DEBUG("created basename: " << basename << " -> " << m_basename); @@ -277,11 +278,42 @@ vigra::ImageExportInfo exinfo(filename.str().c_str()); exinfo.setXResolution(150); exinfo.setYResolution(150); + exinfo.setPosition(remapped.boundingBox().upperLeft()); exinfo.setICCProfile(remapped.m_ICCProfile); vigra::exportImageAlpha(srcImageRange(*final_img), srcImage(*alpha_img), exinfo); break; } + case PanoramaOptions::EXR_m: + { + std::ostringstream filename; + filename << m_basename << std::setfill('0') << std::setw(4) << imgNr << ".exr"; + + // save alpha image (weights) + std::ostringstream greyname; + greyname << m_basename << std::setfill('0') << std::setw(4) << imgNr << "_gray.pgm"; + vigra::ImageExportInfo exinfo1(greyname.str().c_str()); + exinfo1.setPosition(remapped.boundingBox().upperLeft()); + exinfo1.setCanvasSize(vigra::Size2D(opts.getWidth(), opts.getHeight())); + vigra::exportImage(srcImageRange(*alpha_img), exinfo1); + + // calculate real alpha for saving with the image + Base::m_progress.setMessage("Calculating mask"); + remapped.calcAlpha(); + + Base::m_progress.setMessage(std::string("saving ") + + utils::stripPath(filename.str())); + + vigra::ImageExportInfo exinfo(filename.str().c_str()); + exinfo.setXResolution(150); + exinfo.setYResolution(150); + exinfo.setPosition(remapped.boundingBox().upperLeft()); + exinfo.setCanvasSize(vigra::Size2D(opts.getWidth(), opts.getHeight())); + exinfo.setICCProfile(remapped.m_ICCProfile); + vigra::exportImageAlpha(srcImageRange(*final_img), srcImage(*alpha_img), + exinfo); + break; + } case PanoramaOptions::HDR_m: { std::ostringstream filename; @@ -342,6 +374,7 @@ exinfo.setXResolution(150); exinfo.setYResolution(150); exinfo.setPosition(remapped.boundingBox().upperLeft()); + exinfo.setCanvasSize(vigra::Size2D(opts.getWidth(), opts.getHeight())); exinfo.setPixelType(opts.outputPixelType.c_str()); exinfo.setCompression(opts.tiffCompression.c_str()); vigra::exportImageAlpha(srcImageRange(remapped.m_image), srcImage(remapped.m_mask), @@ -732,6 +765,9 @@ case PanoramaOptions::HDR: outputfile = basename + ".hdr"; break; + case PanoramaOptions::EXR: + outputfile = basename + ".exr"; + break; default: DEBUG_ERROR("unsupported output format: " << opts.outputFormat); } @@ -1137,6 +1173,7 @@ case PT::PanoramaOptions::PNG: case PT::PanoramaOptions::TIFF: case PT::PanoramaOptions::HDR: + case PT::PanoramaOptions::EXR: { if (opts.outputMode == PanoramaOptions::OUTPUT_HDR) { vigra_ext::ReduceToHDRFunctor<typename ImageType::value_type> hdrmerge; @@ -1151,6 +1188,7 @@ } case PT::PanoramaOptions::TIFF_m: case PT::PanoramaOptions::HDR_m: + case PT::PanoramaOptions::EXR_m: { MultiImageRemapper<ImageType, AlphaType> stitcher(pano, progress); stitcher.stitch(opts, imgs, basename, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-08-13 19:07:22
|
Revision: 2388 http://hugin.svn.sourceforge.net/hugin/?rev=2388&view=rev Author: dangelo Date: 2007-08-13 12:07:21 -0700 (Mon, 13 Aug 2007) Log Message: ----------- updated build system Modified Paths: -------------- hugin/trunk/src/common/CMakeLists.txt hugin/trunk/src/hugin/Makefile.am Modified: hugin/trunk/src/common/CMakeLists.txt =================================================================== --- hugin/trunk/src/common/CMakeLists.txt 2007-08-13 19:06:57 UTC (rev 2387) +++ hugin/trunk/src/common/CMakeLists.txt 2007-08-13 19:07:21 UTC (rev 2388) @@ -5,8 +5,13 @@ # set include path to include the generated parser.h file #include_directories( ${CMAKE_SOURCE_DIR}/src/include/common ) +SET(commonsrc eig_jacobi.cpp graph.cpp PTLensDB.c utils.cpp) -#build a shared library -add_library(hugincommon SHARED eig_jacobi.cpp graph.cpp PTLensDB.c utils.cpp) -install(TARGETS hugincommon DESTINATION lib) \ No newline at end of file +# build a shared library +if (SHARED_INTERNAL_LIBS) + add_library(hugincommon SHARED ${commonsrc}) + install(TARGETS hugincommon DESTINATION lib) +else (SHARED_INTERNAL_LIBS) + add_library(hugincommon STATIC ${commonsrc}) +endif (SHARED_INTERNAL_LIBS) Modified: hugin/trunk/src/hugin/Makefile.am =================================================================== --- hugin/trunk/src/hugin/Makefile.am 2007-08-13 19:06:57 UTC (rev 2387) +++ hugin/trunk/src/hugin/Makefile.am 2007-08-13 19:07:21 UTC (rev 2388) @@ -10,8 +10,12 @@ RCCOMPILE = $(RC) $(RCFLAGS) \ `echo $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) |\ + sed -e 's/-m.*//g'` + sed -e 's/-I/--include-dir /g;s/-D/--define /g;s/-m.*//g'` +#RCCOMPILE = $(RC) $(RCFLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) + STD_SRC = huginApp.cpp ImagesList.cpp AutoCtrlPointCreator.cpp MainFrame.cpp CPImageCtrl.cpp CPEditorPanel.cpp LensPanel.cpp \ ImagesPanel.cpp CommandHistory.cpp PanoPanel.cpp NonaStitcherPanel.cpp PTStitcherPanel.cpp PreviewFrame.cpp \ PreviewPanel.cpp CropPanel.cpp OptimizePhotometricPanel.cpp OptimizePanel.cpp \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2007-10-26 20:25:21
|
Revision: 2498 http://hugin.svn.sourceforge.net/hugin/?rev=2498&view=rev Author: brunopostle Date: 2007-10-26 13:25:13 -0700 (Fri, 26 Oct 2007) Log Message: ----------- Remove svn:executable property from source files Property Changed: ---------------- hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h hugin/trunk/src/hugin1/hugin/LocalizedFileTipProvider.cpp hugin/trunk/src/hugin1/hugin/PTStitcherPanel.h hugin/trunk/src/hugin1/hugin/VigCorrDialog.cpp hugin/trunk/src/hugin1/hugin/VigCorrDialog.h hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h hugin/trunk/src/hugin_base/nona/ImageRemapper.h hugin/trunk/src/hugin_base/nona/RemappedPanoImage.h hugin/trunk/src/hugin_base/nona/Stitcher1.cpp hugin/trunk/src/hugin_base/nona/Stitcher2.cpp hugin/trunk/src/hugin_base/nona/Stitcher3.cpp hugin/trunk/src/hugin_base/nona/Stitcher4.cpp hugin/trunk/src/hugin_base/vigra_ext/HDRUtils.h hugin/trunk/src/hugin_base/vigra_ext/ImageTransforms.h hugin/trunk/src/hugin_base/vigra_ext/MultiThreadOperations.cpp hugin/trunk/src/hugin_base/vigra_ext/MultiThreadOperations.h hugin/trunk/src/hugin_base/vigra_ext/ROIImage.h Property changes on: hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/hugin/LocalizedFileTipProvider.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/hugin/PTStitcherPanel.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/hugin/VigCorrDialog.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/hugin/VigCorrDialog.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/nona/ImageRemapper.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/nona/RemappedPanoImage.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/nona/Stitcher1.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/nona/Stitcher2.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/nona/Stitcher3.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/nona/Stitcher4.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/vigra_ext/HDRUtils.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/vigra_ext/ImageTransforms.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/vigra_ext/MultiThreadOperations.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/vigra_ext/MultiThreadOperations.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/vigra_ext/ROIImage.h ___________________________________________________________________ Name: svn:executable - * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bru...@us...> - 2007-10-26 20:29:22
|
Revision: 2499 http://hugin.svn.sourceforge.net/hugin/?rev=2499&view=rev Author: brunopostle Date: 2007-10-26 13:29:17 -0700 (Fri, 26 Oct 2007) Log Message: ----------- Remove svn:executable property from more source files Property Changed: ---------------- hugin/trunk/src/hugin1/PT/RemappedPanoImage.h hugin/trunk/src/hugin1/hugin/po/pt_BR.po hugin/trunk/src/hugin1/hugin/xrc/vig_corr_dlg.xrc hugin/trunk/src/hugin1/nona_gui/po/pt_BR.po hugin/trunk/src/hugin1/tools/color_correct_tiff.cpp hugin/trunk/src/hugin1/tools/img2vips.cpp hugin/trunk/src/hugin1/tools_vips/img2vips.cpp hugin/trunk/src/hugin_base/vigra_ext/MultiLayerImage.h hugin/trunk/src/hugin_base/vigra_ext/VignettingCorrection.h Property changes on: hugin/trunk/src/hugin1/PT/RemappedPanoImage.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/hugin/po/pt_BR.po ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/hugin/xrc/vig_corr_dlg.xrc ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/nona_gui/po/pt_BR.po ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/tools/color_correct_tiff.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/tools/img2vips.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin1/tools_vips/img2vips.cpp ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/vigra_ext/MultiLayerImage.h ___________________________________________________________________ Name: svn:executable - * Property changes on: hugin/trunk/src/hugin_base/vigra_ext/VignettingCorrection.h ___________________________________________________________________ Name: svn:executable - * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-10-26 22:47:44
|
Revision: 2500 http://hugin.svn.sourceforge.net/hugin/?rev=2500&view=rev Author: dangelo Date: 2007-10-26 15:47:38 -0700 (Fri, 26 Oct 2007) Log Message: ----------- Made code and CMake build system compatible to MSVC. Tested with MSVC 2003 Modified Paths: -------------- hugin/trunk/src/CMakeLists.txt hugin/trunk/src/deghosting/CMakeLists.txt hugin/trunk/src/deghosting/hugin_hdrmerge.cpp hugin/trunk/src/deghosting/khan.cpp hugin/trunk/src/deghosting/khanSupport.cpp hugin/trunk/src/foreign/CMakeLists.txt hugin/trunk/src/foreign/getopt/include/getopt.h hugin/trunk/src/foreign/vigra/vigra_impex/exr.cxx hugin/trunk/src/hugin1/PT/Panorama.h hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h hugin/trunk/src/hugin1/base_wx/huginConfig.cpp hugin/trunk/src/hugin1/hugin/CMakeLists.txt hugin/trunk/src/hugin1/hugin/CPImageCtrl.h hugin/trunk/src/hugin1/hugin/CPListFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp hugin/trunk/src/hugin1/hugin/PreviewFrame.cpp hugin/trunk/src/hugin1/hugin/RunStitcherFrame.cpp hugin/trunk/src/hugin1/hugin/VigCorrDialog.cpp hugin/trunk/src/hugin1/hugin/huginApp.cpp hugin/trunk/src/hugin1/hugin/xrc/data/CMakeLists.txt hugin/trunk/src/hugin1/hugin/xrc/data/tips.txt hugin/trunk/src/hugin1/nona_gui/CMakeLists.txt hugin/trunk/src/hugin1/stitch_project/CMakeLists.txt hugin/trunk/src/hugin_base/algorithm/PanoramaAlgorithm.h hugin/trunk/src/hugin_base/algorithms/nona/FitPanorama.cpp hugin/trunk/src/hugin_base/algorithms/optimizer/PTOptimizer.cpp hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.cpp hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h hugin/trunk/src/hugin_base/algorithms/point_sampler/PointSampler.h hugin/trunk/src/hugin_base/appbase/ProgressDisplayOld.cpp hugin/trunk/src/hugin_base/hugin_math/hugin_math.h hugin/trunk/src/hugin_base/nona/Stitcher.cpp hugin/trunk/src/hugin_base/nona/Stitcher.h hugin/trunk/src/hugin_base/nona/Stitcher4.cpp hugin/trunk/src/hugin_base/panodata/PanoramaData.h hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.h hugin/trunk/src/hugin_base/panotools/PanoToolsOptimizerWrapper.cpp hugin/trunk/src/hugin_base/vigra_ext/Interpolators.h hugin/trunk/src/hugin_base/vigra_ext/ResponseTransform.h hugin/trunk/src/tools/CMakeLists.txt hugin/trunk/src/tools/autooptimiser.cpp hugin/trunk/src/tools/vig_optimize.cpp Modified: hugin/trunk/src/CMakeLists.txt =================================================================== --- hugin/trunk/src/CMakeLists.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/CMakeLists.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -5,8 +5,18 @@ include_directories( ${CMAKE_SOURCE_DIR}/src/foreign/vigra ) # define common sets of libraries, used by different subdirectories -set(common_libs huginbase huginjhead - boost_thread ${PANO_LIBRARIES} huginlevmar) +IF (WIN32) + # boost_thread is linked automatically + # additionally link to our getopt + set(common_libs huginbase huginjhead hugingetopt + ${PANO_LIBRARIES} huginlevmar) + include_directories( ${CMAKE_SOURCE_DIR}/src/foreign/getopt/include ) +ELSE (WIN32) + # need to specify boost thread library + set(common_libs huginbase huginjhead + boost_thread ${PANO_LIBRARIES} huginlevmar) +ENDIF (WIN32) + set(image_libs huginvigraimpex ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${PNG_LIBRARIES} ${OPENEXR_LIBRARIES}) Modified: hugin/trunk/src/deghosting/CMakeLists.txt =================================================================== --- hugin/trunk/src/deghosting/CMakeLists.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/deghosting/CMakeLists.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -3,4 +3,5 @@ add_executable(hugin_hdrmerge hugin_hdrmerge.cpp khan.cpp jbu.cpp khanSupport.cpp) target_link_libraries(hugin_hdrmerge ${common_libs} ${image_libs}) -install(TARGETS hugin_hdrmerge DESTINATION bin) \ No newline at end of file +install(TARGETS hugin_hdrmerge DESTINATION ${BINDIR}) + Modified: hugin/trunk/src/deghosting/hugin_hdrmerge.cpp =================================================================== --- hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -405,7 +405,7 @@ return false; } - for(uint i = 0; i < prep.size(); i++) { + for(unsigned i = 0; i < prep.size(); i++) { string tmp(prep.at(i)); tmp.erase(tmp.rfind('.', tmp.length()-1)); tmp.append(app); @@ -426,7 +426,7 @@ return false; } - for(uint i = 0; i < prep.size(); i++) { + for(unsigned i = 0; i < prep.size(); i++) { string tmp(prep.at(i)); tmp.erase(tmp.rfind('.', tmp.length()-1)); tmp.append(app); Modified: hugin/trunk/src/deghosting/khan.cpp =================================================================== --- hugin/trunk/src/deghosting/khan.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/deghosting/khan.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -46,6 +46,10 @@ #include "khan.h" +#ifdef _MSC_VER +#define snprintf _snprintf +#endif + #define ENABLE_SAME 0 /*-a s option currently doesn't work */ #define ENABLE_SCALING 0 /*-a m and u options currently don't work */ @@ -78,7 +82,7 @@ string exr = "EXR"; //load images and prepare initial weights - for (uint i = 0; i < inputFiles.size(); i++) { + for (unsigned i = 0; i < inputFiles.size(); i++) { if (g_verbose > 0) { std::cout << "Loading and preparing " << inputFiles[i] << std::endl; } @@ -244,7 +248,7 @@ if(g_verbose > 3) { //check consistency cout << "checking image and weight vectors for consistent size" <<endl; assert(source_images.size() == weights.size()); - for(uint i = 0; i < source_images.size(); i++) + for(unsigned i = 0; i < source_images.size(); i++) assert(source_images.at(i).size() == weights.at(i).size()); } @@ -324,7 +328,7 @@ assert(smallWeights.size() == img_bounds.size()); - for(uint i = 0; i < smallWeights.size(); i++) { + for(unsigned i = 0; i < smallWeights.size(); i++) { int w = img_bounds.at(i).width(); int h = img_bounds.at(i).height(); @@ -402,7 +406,7 @@ Fvectors2Images(img_bounds, alpha_images, weights, width, &smallWeights); - for(uint i = 0; i < smallWeights.size(); i++) { + for(unsigned i = 0; i < smallWeights.size(); i++) { int w = img_bounds.at(i).width(); int h = img_bounds.at(i).height(); //resize weights @@ -451,7 +455,7 @@ Fvectors2Images(img_bounds, alpha_images, weights, width, &w); char tmpfn[100]; - for(uint i = 0; i < w.size(); i++) { + for(unsigned i = 0; i < w.size(); i++) { snprintf(tmpfn, 99, "iter%d_weight_layer%d.tiff", iter, i); ImageExportInfo exWeight(tmpfn); exportImage(srcImageRange(*(w.at(i))), exWeight.setPixelType("UINT8")); @@ -647,7 +651,7 @@ float min_weight = FLT_MAX; int num_layers = old_weights.at(total_offset).size(); - assert((uint)num_layers == source_images.at(total_offset).size()); + assert((unsigned)num_layers == source_images.at(total_offset).size()); //for each layer for(int layer = 0; layer < num_layers; layer++) { if(g_verbose > 3) { @@ -663,12 +667,12 @@ if(g_verbose >3) cout << "\tpixel = " << curr_px << endl; //for each neighbor location - for(uint n = 0; n < neighbor_offsets.size(); n++) { + for(unsigned n = 0; n < neighbor_offsets.size(); n++) { int n_offset = neighbor_offsets.at(n); vector<float> *px_neighbor_w = &(old_weights.at(n_offset)); const vector<float> *px_neighbor_v = &(source_images.at(n_offset)); - uint num_l = px_neighbor_w->size(); + unsigned num_l = px_neighbor_w->size(); assert(num_l == px_neighbor_v->size()); float tmp_weight = 0; float tmp_prev_weight = 0; @@ -679,7 +683,7 @@ } //number of layers at this neighbor location - for(uint l = 0; l < num_l; l++) { + for(unsigned l = 0; l < num_l; l++) { if(g_verbose > 3) { cout << "\t\t\tlayer " << l << endl Modified: hugin/trunk/src/deghosting/khanSupport.cpp =================================================================== --- hugin/trunk/src/deghosting/khanSupport.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/deghosting/khanSupport.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -91,7 +91,7 @@ output->resize(width, height); mask->resize(width, height); - for(uint i = 0; i < inputInfo.size(); i++) { + for(unsigned i = 0; i < inputInfo.size(); i++) { const ImageImportInfo curr_info = inputInfo.at(i); Rect2D bounds(Point2D(curr_info.getPosition()), curr_info.size()); FRGBImage img(inputInfo.at(i).size()); @@ -133,7 +133,7 @@ bool ignore_alpha = !(alpha_images.size()); //error checking - if((uint)total_layers != input_images.size()) + if((unsigned)total_layers != input_images.size()) return -1; for(int i = 0; i < total_layers; i++) { @@ -189,7 +189,7 @@ bool ignore_alpha = !(alpha_images.size()); //error checking - if((uint)total_layers != input_images.size()) + if((unsigned)total_layers != input_images.size()) return -1; for(int i = 0; i < total_layers; i++) { @@ -243,13 +243,13 @@ int total_layers = bounds.size(); bool ignore_alpha = !(alpha_images.size()); if(!ignore_alpha) - assert((uint)total_layers == alpha_images.size()); + assert((unsigned)total_layers == alpha_images.size()); output_images->resize(total_layers); //duplicate input_images vector<vector<float> > input; - for(uint i = 0; i < input_images.size(); i++) { + for(unsigned i = 0; i < input_images.size(); i++) { input.push_back(vector<float>(input_images.at(i))); } @@ -290,7 +290,7 @@ int height = input_images.size() / width; bool ignore_alpha = !(alpha_images.size()); if(!ignore_alpha) - assert((uint)total_layers == alpha_images.size()); + assert((unsigned)total_layers == alpha_images.size()); for(int i = 0; i < total_layers; i++) { output_images->push_back(BImagePtr(new BImage(bounds.at(i).size()))); @@ -299,7 +299,7 @@ for(int y = 0; y < height; y++) { for(int x = 0; x < width; x++) { Point2D pt(x, y); - uint ind = 0; + unsigned ind = 0; vector<char> pixel_layers = input_images.at(y * width + x); for(int i = 0; i < total_layers && ind < pixel_layers.size(); i++) { Modified: hugin/trunk/src/foreign/CMakeLists.txt =================================================================== --- hugin/trunk/src/foreign/CMakeLists.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/foreign/CMakeLists.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -4,3 +4,8 @@ add_subdirectory(levmar) add_subdirectory(jhead) add_subdirectory(lensdb) + +IF (WIN32) +add_subdirectory(getopt) +ENDIF (WIN32) + Modified: hugin/trunk/src/foreign/getopt/include/getopt.h =================================================================== --- hugin/trunk/src/foreign/getopt/include/getopt.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/foreign/getopt/include/getopt.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -18,14 +18,6 @@ #ifndef _GETOPT_H #define _GETOPT_H 1 -#if defined(_MSC_VER) && !defined(BUILD_GETOPT) -# ifdef _DEBUG -# pragma comment(lib,"getopt_debug.lib") -# else -# pragma comment(lib,"getopt.lib") -# endif -#endif - #ifdef __cplusplus extern "C" { #endif Modified: hugin/trunk/src/foreign/vigra/vigra_impex/exr.cxx =================================================================== --- hugin/trunk/src/foreign/vigra/vigra_impex/exr.cxx 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/foreign/vigra/vigra_impex/exr.cxx 2007-10-26 22:47:38 UTC (rev 2500) @@ -47,10 +47,10 @@ #include <stdexcept> #include <iostream> -#include <OpenEXR/ImfRgbaFile.h> -#include <OpenEXR/ImfStringAttribute.h> -#include <OpenEXR/ImfMatrixAttribute.h> -#include <OpenEXR/ImfArray.h> +#include <ImfRgbaFile.h> +#include <ImfStringAttribute.h> +#include <ImfMatrixAttribute.h> +#include <ImfArray.h> using namespace Imf; using namespace Imath; Modified: hugin/trunk/src/hugin1/PT/Panorama.h =================================================================== --- hugin/trunk/src/hugin1/PT/Panorama.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/PT/Panorama.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -67,10 +67,8 @@ hugin_utils::FDiff2D calcFOV() const { Panorama pano(*this); - return HuginBase::CalculateFOV(pano) - .run<HuginBase::CalculateFOV>() - .getResultFOV(); - } + return HuginBase::CalculateFOV::calcFOV(pano); + } /** calculate the HFOV and height so that the whole input * fits in into the output panorama */ @@ -91,9 +89,7 @@ unsigned calcOptimalWidth() const { Panorama pano(*this); - return HuginBase::CalculateOptimalScale(pano) - .run<HuginBase::CalculateOptimalScale>() - .getResultOptimalWidth(); + return HuginBase::CalculateOptimalScale::calcOptimalScale(pano) * pano.getOptions().getWidth(); } /** calculate control point error distance statistics */ @@ -206,9 +202,7 @@ inline double calcMeanExposure(Panorama& pano) { - return HuginBase::CalculateMeanExposure(pano) - .run<HuginBase::CalculateMeanExposure>() - .getResultExposure(); + return HuginBase::CalculateMeanExposure::calcMeanExposure(pano); } Modified: hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h =================================================================== --- hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -39,7 +39,7 @@ utils::ProgressReporter & progress, double & error) { - HuginBase::PhorometricOptimizer::optimizePhotometric(pano, vars, correspondences, progress, error); + HuginBase::PhotometricOptimizer::optimizePhotometric(pano, vars, correspondences, progress, error); } Modified: hugin/trunk/src/hugin1/base_wx/huginConfig.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/huginConfig.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/base_wx/huginConfig.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -41,7 +41,7 @@ enblendroot = root + "/enblend/"; ptroot = root + "/panotools/"; -#elsif defined __WXMAC__ +#elif defined __WXMAC__ // dangelo: on OSX, the tools are inside the application bundle, but I don't know // where. root = ""; Modified: hugin/trunk/src/hugin1/hugin/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin1/hugin/CMakeLists.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/CMakeLists.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -80,14 +80,16 @@ COMMAND ${CMAKE_COMMAND} ARGS -Dfile="${CMAKE_CURRENT_BINARY_DIR}/${PROGNAME}.app/Contents/Resources/xrc/cp_editor_panel.xrc" -P ${CMAKE_SOURCE_DIR}/CMakeModules/fix_osx_xrc.cmake ) -ELSE( APPLE ) +ELSEIF ( WIN32 ) + ADD_EXECUTABLE( ${PROGNAME} WIN32 ${hugin_SOURCES} hugin_rc.rc ) +ELSE (APPLE) ADD_EXECUTABLE( ${PROGNAME} ${hugin_SOURCES} ) ENDIF( APPLE ) target_link_libraries( ${PROGNAME} ${common_libs} ${image_libs} huginbasewx ${wxWidgets_LIBRARIES}) install(TARGETS ${PROGNAME} - DESTINATION bin) + DESTINATION ${BINDIR}) # install further stuff (icons etc.) Modified: hugin/trunk/src/hugin1/hugin/CPImageCtrl.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPImageCtrl.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/CPImageCtrl.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -416,7 +416,7 @@ /// check if p is over a known point, if it is, pointNr contains /// the point - EditorState isOccupied(wxPoint p, const hugin_utils::FDiff2D &p, unsigned int & pointNr) const; + EditorState isOccupied(wxPoint mousePos, const hugin_utils::FDiff2D & point, unsigned int & pointNr) const; CPEditorPanel * m_editPanel; Modified: hugin/trunk/src/hugin1/hugin/CPListFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPListFrame.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/CPListFrame.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -266,11 +266,11 @@ wxConfigBase * config = wxConfigBase::Get(); m_verbose = (config->Read(wxT("/CPListFrame/verbose"),0l) != 0); -#if __WXMSW__ +#ifdef __WXMSW__ // wxFrame does have a strange background color on Windows, copy color from a child widget this->SetBackgroundColour(XRCCTRL(*this, "cp_list_select", wxButton)->GetBackgroundColour()); #endif -#if __WXMSW__ +#ifdef __WXMSW__ wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.ico"),wxBITMAP_TYPE_ICO); #else wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.png"),wxBITMAP_TYPE_PNG); Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -297,7 +297,7 @@ pref_dlg = new PreferencesDialog(this); // set the minimize icon -#if __WXMSW__ +#ifdef __WXMSW__ wxIcon myIcon(GetXRCPath() + wxT("data/icon.ico"),wxBITMAP_TYPE_ICO); #else wxIcon myIcon(GetXRCPath() + wxT("data/icon.png"),wxBITMAP_TYPE_PNG); @@ -364,7 +364,7 @@ SetAutoLayout(false); -#if __WXMSW__ +#ifdef __WXMSW__ // wxFrame does have a strange background color on Windows, copy color from a child widget this->SetBackgroundColour(images_panel->GetBackgroundColour()); #endif Modified: hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -100,7 +100,7 @@ // initialization. this will be done later. wxXmlResource::Get()->LoadFrame(this, parent, wxT("pref_dialog")); -#if __WXMSW__ +#ifdef __WXMSW__ wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.ico"),wxBITMAP_TYPE_ICO); #else wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.png"),wxBITMAP_TYPE_PNG); @@ -178,7 +178,7 @@ // Load configuration values from wxConfig UpdateDisplayData(); -#if __WXMSW__ +#ifdef __WXMSW__ // wxFrame does have a strange background color on Windows, copy color from a child widget this->SetBackgroundColour(XRCCTRL(*this, "prefs_ft_RotationStartAngle", wxSpinCtrl)->GetBackgroundColour()); #endif Modified: hugin/trunk/src/hugin1/hugin/PreviewFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PreviewFrame.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/PreviewFrame.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -355,7 +355,7 @@ m_topsizer->SetSizeHints( this ); // set the minimize icon -#if __WXMSW__ +#ifdef __WXMSW__ wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.ico"),wxBITMAP_TYPE_ICO); #else wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.png"),wxBITMAP_TYPE_PNG); Modified: hugin/trunk/src/hugin1/hugin/RunStitcherFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/RunStitcherFrame.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/RunStitcherFrame.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -65,7 +65,7 @@ bool ok = wxXmlResource::Get()->LoadFrame(this, parent, wxT("run_stitcher_frame")); assert(ok); -#if __WXMSW__ +#if defined __WXMSW__ wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.ico"),wxBITMAP_TYPE_ICO); #else wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.png"),wxBITMAP_TYPE_PNG); Modified: hugin/trunk/src/hugin1/hugin/VigCorrDialog.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/VigCorrDialog.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/VigCorrDialog.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -89,7 +89,7 @@ // initialization. this will be done later. wxXmlResource::Get()->LoadFrame(this, parent, wxT("vig_corr_dlg")); -#if __WXMSW__ +#ifdef __WXMSW__ wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.ico"),wxBITMAP_TYPE_ICO); #else wxIcon myIcon(MainFrame::Get()->GetXRCPath() + wxT("data/icon.png"),wxBITMAP_TYPE_PNG); @@ -131,7 +131,7 @@ // update display with values from panorama UpdateDisplayData(); -#if __WXMSW__ +#ifdef __WXMSW__ // wxFrame does have a strange background color on Windows, copy color from a child widget this->SetBackgroundColour(XRCCTRL(*this, "vig_corr_mode_rbbox", wxRadioBox)->GetBackgroundColour()); #endif Modified: hugin/trunk/src/hugin1/hugin/huginApp.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/huginApp.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/huginApp.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -240,6 +240,7 @@ locale.AddCatalogLookupPathPrefix(m_huginPath + wxT("/locale")); #if defined __WXMSW__ locale.AddCatalogLookupPathPrefix(wxT("./locale")); + #elif defined __WXMAC__ // set path to include bundled executables wxSetEnv(wxT("PATH"), wxString(wxGetenv(wxT("PATH")))+wxT(":")+wxFileName(MacGetPathTOBundledExecutableFile(CFSTR("enblend"))).GetPath()); Modified: hugin/trunk/src/hugin1/hugin/xrc/data/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/data/CMakeLists.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/xrc/data/CMakeLists.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -2,5 +2,8 @@ FILE(GLOB DATAFILES *.htm *.html *.ico *.jpg *.png *.xpm *.txt *.mk) INSTALL(FILES ${DATAFILES} DESTINATION ${HUGINDATADIR}/xrc/data) -INSTALL(FILES hugin.png DESTINATION ${DATADIR}/pixmaps) +IF (UNIX) + INSTALL(FILES hugin.png DESTINATION ${DATADIR}/pixmaps) +ENDIF (UNIX) + ADD_SUBDIRECTORY(help_en_EN) Modified: hugin/trunk/src/hugin1/hugin/xrc/data/tips.txt =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/data/tips.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/hugin/xrc/data/tips.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -1,6 +1,6 @@ # Tips for hugin # These tips are translated via gettext. -_("Welcome to Hugin.\n To create a panorama, just follow the sequence shown in the assistant tab.") +_("Welcome to Hugin. To create a panorama, just follow the sequence shown in the assistant tab.") _("If the horizon of a panorama is wavy, use the straighten function in the preview window to straighten it") _("The Preview window can be used to center the panorama by clicking with the left mouse button. A right click will rotate the panorama") _("The Autopano and Autopano-SIFT programs can be used to create control points automatically. Please install one of them if you haven't already done so.") Modified: hugin/trunk/src/hugin1/nona_gui/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin1/nona_gui/CMakeLists.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/nona_gui/CMakeLists.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -1,8 +1,12 @@ -add_executable(nona_gui nona_gui.cpp) +IF (WIN32) + add_executable(nona_gui WIN32 nona_gui.cpp nona_gui_rc.rc) +ELSEIF (WIN32) + add_executable(nona_gui nona_gui.cpp) +ENDIF (WIN32) target_link_libraries(nona_gui ${common_libs} ${image_libs} huginbasewx ${wxWidgets_LIBRARIES}) -install(TARGETS nona_gui DESTINATION bin) +install(TARGETS nona_gui DESTINATION ${BINDIR}) add_subdirectory(po) Modified: hugin/trunk/src/hugin1/stitch_project/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin1/stitch_project/CMakeLists.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin1/stitch_project/CMakeLists.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -1,9 +1,15 @@ -add_executable(hugin_stitch_project hugin_stitch_project.cpp) +IF (WIN32) + add_executable(hugin_stitch_project WIN32 hugin_stitch_project.cpp hugin_stitch_project_rc.rc) +ELSE (WIN32) + add_executable(hugin_stitch_project hugin_stitch_project.cpp) +ENDIF (WIN32) + + target_link_libraries(hugin_stitch_project ${common_libs} ${image_libs} huginbasewx ${wxWidgets_LIBRARIES}) install(TARGETS hugin_stitch_project - DESTINATION bin) + DESTINATION ${BINDIR}) Modified: hugin/trunk/src/hugin_base/algorithm/PanoramaAlgorithm.h =================================================================== --- hugin/trunk/src/hugin_base/algorithm/PanoramaAlgorithm.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/algorithm/PanoramaAlgorithm.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -72,14 +72,16 @@ o_successful = runAlgorithm(); } +#if 1 /// runs the algorithm. template<class AlgorithmClass> - AlgorithmClass& run() + AlgorithmClass& runMe() { AlgorithmClass& THIS = static_cast<AlgorithmClass&>(*this); THIS.run(); return THIS; } +#endif /** implementation of the algorithm. * You should override with your algorithm's implementiation. Modified: hugin/trunk/src/hugin_base/algorithms/nona/FitPanorama.cpp =================================================================== --- hugin/trunk/src/hugin_base/algorithms/nona/FitPanorama.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/algorithms/nona/FitPanorama.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -38,7 +38,7 @@ { // FIXME: doesn't work properly for fisheye and mirror projections, // it will not calculate a vfov bigger than 180. - FDiff2D fov = CalculateFOV(panorama).run<CalculateFOV>().getResultFOV(); + FDiff2D fov = CalculateFOV::calcFOV(panorama); // use estimated fov to calculate a suitable panorama height. // calculate VFOV based on current panorama Modified: hugin/trunk/src/hugin_base/algorithms/optimizer/PTOptimizer.cpp =================================================================== --- hugin/trunk/src/hugin_base/algorithms/optimizer/PTOptimizer.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/algorithms/optimizer/PTOptimizer.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -175,7 +175,8 @@ // check if this is a 360 deg pano. CenterHorizontally(optPano).run(); - FDiff2D fov = CalculateFOV(optPano).run<CalculateFOV>().getResultFOV(); + //FDiff2D fov = CalculateFOV(optPano).run<CalculateFOV>().getResultFOV(); + FDiff2D fov = CalculateFOV::calcFOV(optPano); if (fov.x >= 359) { // optimize HFOV for 360 deg panos Modified: hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.cpp =================================================================== --- hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -48,7 +48,7 @@ -PhorometricOptimizer::OptimData::OptimData(const PanoramaData & pano, const OptimizeVector & optvars, +PhotometricOptimizer::OptimData::OptimData(const PanoramaData & pano, const OptimizeVector & optvars, const std::vector<vigra_ext::PointPairRGB> & data, double mEstimatorSigma, bool symmetric, int maxIter, AppBase::ProgressReporter & progress) @@ -105,7 +105,7 @@ } } -void PhorometricOptimizer::OptimData::ToX(double * x) +void PhotometricOptimizer::OptimData::ToX(double * x) { for (size_t i=0; i < m_vars.size(); i++) { @@ -119,7 +119,7 @@ } -void PhorometricOptimizer::OptimData::FromX(double * x) +void PhotometricOptimizer::OptimData::FromX(double * x) { for (size_t i=0; i < m_vars.size(); i++) { @@ -136,7 +136,7 @@ -void PhorometricOptimizer::photometricError(double *p, double *x, int m, int n, void * data) +void PhotometricOptimizer::photometricError(double *p, double *x, int m, int n, void * data) { #ifdef DEBUG_LOG_VIG static int iter = 0; @@ -244,7 +244,7 @@ DEBUG_DEBUG("squared error: " << sqerror); } -int PhorometricOptimizer::photometricVis(double *p, double *x, int m, int n, int iter, double sqerror, void * data) +int PhotometricOptimizer::photometricVis(double *p, double *x, int m, int n, int iter, double sqerror, void * data) { OptimData * dat = (OptimData *) data; char tmp[200]; @@ -254,7 +254,7 @@ return dat->m_progress.increaseProgress(0.0, tmp) ? 1 : 0 ; } -void PhorometricOptimizer::optimizePhotometric(PanoramaData & pano, const OptimizeVector & vars, +void PhotometricOptimizer::optimizePhotometric(PanoramaData & pano, const OptimizeVector & vars, const std::vector<vigra_ext::PointPairRGB> & correspondences, AppBase::ProgressReporter & progress, double & error) @@ -388,7 +388,7 @@ } -bool PhorometricOptimizer::runAlgorithm() +bool PhotometricOptimizer::runAlgorithm() { // is this correct? how much progress requierd? AppBase::ProgressReporter* progRep = Modified: hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h =================================================================== --- hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/algorithms/optimizer/PhotometricOptimizer.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -35,7 +35,7 @@ namespace HuginBase { - class PhorometricOptimizer : public TimeConsumingPanoramaAlgorithm + class PhotometricOptimizer : public TimeConsumingPanoramaAlgorithm { public: @@ -43,7 +43,7 @@ typedef std::vector<vigra_ext::PointPairRGB> PointPairs; /// - PhorometricOptimizer(PanoramaData& panorama, AppBase::ProgressDisplay* progressDisplay, + PhotometricOptimizer(PanoramaData& panorama, AppBase::ProgressDisplay* progressDisplay, const OptimizeVector& vars, const PointPairs& correspondences) : TimeConsumingPanoramaAlgorithm(panorama, progressDisplay), @@ -51,7 +51,7 @@ {}; /// - virtual ~PhorometricOptimizer() {}; + virtual ~PhotometricOptimizer() {}; public: @@ -130,7 +130,7 @@ - class SmartPhotometricOptimizer : public PhorometricOptimizer, protected SmartOptimizerStub + class SmartPhotometricOptimizer : public PhotometricOptimizer, protected SmartOptimizerStub { public: /// local optimize definition. @@ -145,7 +145,7 @@ SmartPhotometricOptimizer(PanoramaData& panorama, AppBase::ProgressDisplay* progressDisplay, const OptimizeVector& vars, const PointPairs& correspondences) - : PhorometricOptimizer(panorama, progressDisplay, vars, correspondences) + : PhotometricOptimizer(panorama, progressDisplay, vars, correspondences) {}; /// Modified: hugin/trunk/src/hugin_base/algorithms/point_sampler/PointSampler.h =================================================================== --- hugin/trunk/src/hugin_base/algorithms/point_sampler/PointSampler.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/algorithms/point_sampler/PointSampler.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -24,6 +24,8 @@ #ifndef _POINTSAMPLER_H #define _POINTSAMPLER_H +#include <ctime> + #include <algorithm/PanoramaAlgorithm.h> #include <boost/random.hpp> @@ -96,8 +98,13 @@ /// virtual bool runAlgorithm(); + + PointSampler & execute() + { + run(); + return *this; + } - public: /// typedef std::vector<vigra_ext::PointPairRGB> PointPairs; Modified: hugin/trunk/src/hugin_base/appbase/ProgressDisplayOld.cpp =================================================================== --- hugin/trunk/src/hugin_base/appbase/ProgressDisplayOld.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/appbase/ProgressDisplayOld.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -23,6 +23,10 @@ #include "ProgressDisplayOld.h" +#ifdef WIN32 +#define snprintf _snprintf +#endif + namespace AppBase { Modified: hugin/trunk/src/hugin_base/hugin_math/hugin_math.h =================================================================== --- hugin/trunk/src/hugin_base/hugin_math/hugin_math.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/hugin_math/hugin_math.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -27,9 +27,14 @@ #ifndef _HUGIN_MATH_HUGIN_MATH_H #define _HUGIN_MATH_HUGIN_MATH_H +#include <math.h> #include <iostream> #include <vigra/diff2d.hxx> +#ifndef M_PI + #define M_PI 3.14159265358979323846 +#endif + #ifndef PI #define PI 3.14159265358979323846 #endif Modified: hugin/trunk/src/hugin_base/nona/Stitcher.cpp =================================================================== --- hugin/trunk/src/hugin_base/nona/Stitcher.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/nona/Stitcher.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -24,12 +24,13 @@ */ + + + #include "Stitcher.h" -#include <vigra/windows.h> #include <vigra/stdimage.hxx> - namespace HuginBase { namespace Nona { Modified: hugin/trunk/src/hugin_base/nona/Stitcher.h =================================================================== --- hugin/trunk/src/hugin_base/nona/Stitcher.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/nona/Stitcher.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -26,6 +26,8 @@ #ifndef _NONA_STITCHER_H #define _NONA_STITCHER_H +// To avoid windows.h namespace pollution later on +#include <vigra/windows.h> #include <sstream> #include <iomanip> @@ -45,13 +47,19 @@ #include <vigra_ext/ImageTransforms.h> #include <panodata/PanoramaData.h> +#include <algorithms/nona/ComputeImageROI.h> #include <nona/RemappedPanoImage.h> #include <nona/ImageRemapper.h> -#include <algorithms/nona/ComputeImageROI.h> // calculate distance image for multi file output #define STITCHER_CALC_DIST_IMG 0 +// somehow these are still +#undef DIFFERENCE +#undef min +#undef max +#undef MIN +#undef MAX namespace HuginBase { namespace Nona { Modified: hugin/trunk/src/hugin_base/nona/Stitcher4.cpp =================================================================== --- hugin/trunk/src/hugin_base/nona/Stitcher4.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/nona/Stitcher4.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -24,7 +24,14 @@ */ #include "Stitcher.h" +// somehow these are still set after panorama.h has been included +#undef DIFFERENCE +#undef min +#undef max +#undef MIN +#undef MAX + using namespace std; using namespace vigra; Modified: hugin/trunk/src/hugin_base/panodata/PanoramaData.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/PanoramaData.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/panodata/PanoramaData.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -532,7 +532,7 @@ virtual PanoramaDataMemento* getNewMemento() const =0; /// set the internal state - virtual bool setMementoToCopyOf(const PanoramaDataMemento* memento) =0; + virtual bool setMementoToCopyOf(const PanoramaDataMemento* const memento) =0; // -- Optimization Status -- Modified: hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -34,9 +34,14 @@ //#include <math.h> #include <vigra/diff2d.hxx> + + +#if 1 #ifdef HasPANO13 - extern "C" { +#include <vigra/windows.h> +extern "C" { + #ifdef __INTEL__ #define __INTELMEMO__ #undef __INTEL__ @@ -51,27 +56,26 @@ // remove stupid #defines from the evil windows.h - #ifdef DIFFERENCE - #undef DIFFERENCE - #endif +#ifdef DIFFERENCE +#undef DIFFERENCE +#endif +#ifdef min +#undef min +#endif +#ifdef max +#undef max +#endif +#ifdef MIN +#undef MIN +#endif +#ifdef MAX +#undef MAX +#endif - #ifdef MIN - #undef MIN - #endif - - #ifdef MAX - #undef MAX - #endif - - #ifdef min - #undef min - #endif - - #ifdef max - #undef max - #endif } #endif + +#endif // //#include "PT/PanoImage.h" Modified: hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.h =================================================================== --- hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -26,7 +26,36 @@ #include <hugin_config.h> +#include <string> +#include <set> + +#include <hugin_math/hugin_math.h> +#include <panodata/PanoramaVariable.h> +#include <panodata/Lens.h> +#include <panodata/PanoramaOptions.h> +#include <panodata/SrcPanoImage.h> +#include <panodata/ControlPoint.h> + + // libpano includes ------------------------------------------------------------ + +#ifdef _WIN32 +// include windows.h with sensible defines, otherwise +// panotools might include with its stupid, commonly +// named macros all over the place. +#define _STLP_VERBOSE_AUTO_LINK +#define _USE_MATH_DEFINES +#define NOMINMAX +#define VC_EXTRALEAN +#include <windows.h> +#undef DIFFERENCE +#undef min +#undef max +#undef MIN +#undef MAX +#endif + + extern "C" { #ifdef __INTEL__ #define __INTELMEMO__ @@ -49,38 +78,19 @@ #else #include <pano12/filter.h> #endif -} -// remove stupid #defines from the evil windows.h -#ifdef __WXMSW__ -#include <wx/msw/winundef.h> +// somehow these are still set after panorama.h has been included #undef DIFFERENCE -#ifdef MIN +#undef min +#undef max #undef MIN -#endif -#ifdef MAX #undef MAX -#endif -#endif -#ifdef min -#undef min -#endif -#ifdef max -#undef max -#endif +} + //------------------------------------------------------------------------------ -#include <string> -#include <set> -#include <hugin_math/hugin_math.h> -#include <panodata/PanoramaVariable.h> -#include <panodata/Lens.h> -#include <panodata/PanoramaOptions.h> -#include <panodata/SrcPanoImage.h> -#include <panodata/ControlPoint.h> - namespace vigra { class Diff2D; } namespace HuginBase { class PanoramaData; } Modified: hugin/trunk/src/hugin_base/panotools/PanoToolsOptimizerWrapper.cpp =================================================================== --- hugin/trunk/src/hugin_base/panotools/PanoToolsOptimizerWrapper.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/panotools/PanoToolsOptimizerWrapper.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -28,53 +28,29 @@ #include <hugin_config.h> +#include <sstream> +#include <hugin_utils/utils.h> + // libpano includes ------------------------------------------------------------ #include <stdlib.h> -extern "C" { -#ifdef __INTEL__ -#define __INTELMEMO__ -#undef __INTEL__ -#endif - -#ifdef HasPANO13 -#include <pano13/panorama.h> -#else -#include <pano12/panorama.h> -#endif - -#ifdef __INTELMEMO__ -#define __INTEL__ -#undef __INTELMEMO__ -#endif - -#ifdef HasPANO13 -#include <pano13/filter.h> -#else -#include <pano12/filter.h> -#endif -} - -// remove stupid #defines from the evil windows.h -#ifdef __WXMSW__ -#include <wx/msw/winundef.h> +#ifdef _WIN32 +// include windows.h with sensible defines, otherwise +// panotools might include with its stupid, commonly +// named macros all over the place. +#define _STLP_VERBOSE_AUTO_LINK +#define _USE_MATH_DEFINES +#define NOMINMAX +#define VC_EXTRALEAN +#include <windows.h> #undef DIFFERENCE -#ifdef MIN -#undef MIN #endif -#ifdef MAX -#undef MAX -#endif -#endif -#ifdef min -#undef min -#endif -#ifdef max -#undef max -#endif +#include "PanoToolsInterface.h" +#include "PanoToolsOptimizerWrapper.h" + // missing prototype in filter.h extern "C" { int CheckParams( AlignInfo *g ); @@ -85,13 +61,8 @@ //------------------------------------------------------------------------------ -#include <sstream> -#include <hugin_utils/utils.h> -#include "PanoToolsInterface.h" -#include "PanoToolsOptimizerWrapper.h" - //#define DEBUG_WRITE_OPTIM_OUTPUT //#define DEBUG_WRITE_OPTIM_OUTPUT_FILE "hugin_debug_optim_results.txt" Modified: hugin/trunk/src/hugin_base/vigra_ext/Interpolators.h =================================================================== --- hugin/trunk/src/hugin_base/vigra_ext/Interpolators.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/vigra_ext/Interpolators.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -28,6 +28,7 @@ #define VIGRA_EXT_INTERPOLATORS_H #include <math.h> +#include <hugin_math/hugin_math.h> #include <algorithm> #include <vigra/accessor.hxx> Modified: hugin/trunk/src/hugin_base/vigra_ext/ResponseTransform.h =================================================================== --- hugin/trunk/src/hugin_base/vigra_ext/ResponseTransform.h 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/hugin_base/vigra_ext/ResponseTransform.h 2007-10-26 22:47:38 UTC (rev 2500) @@ -26,7 +26,8 @@ #include <photometric/ResponseTransform.h> -#warning "Deprecated!" +// does not work on MSVC +//#warning "Deprecated!" namespace vigra_ext { Modified: hugin/trunk/src/tools/CMakeLists.txt =================================================================== --- hugin/trunk/src/tools/CMakeLists.txt 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/tools/CMakeLists.txt 2007-10-26 22:47:38 UTC (rev 2500) @@ -15,5 +15,5 @@ target_link_libraries(vig_optimize ${common_libs} ${image_libs}) install(TARGETS nona vig_optimize autooptimiser fulla - DESTINATION bin) + DESTINATION ${BINDIR}) Modified: hugin/trunk/src/tools/autooptimiser.cpp =================================================================== --- hugin/trunk/src/tools/autooptimiser.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/tools/autooptimiser.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -222,6 +222,7 @@ opts.setHFOV(fitPano.getResultHorizontalFOV()); opts.setHeight(roundi(fitPano.getResultHeight())); vfov = opts.getVFOV(); + hfov = opts.getHFOV(); // avoid perspective projection if field of view > 100 deg double mf = 100; if (vfov < mf) { @@ -237,8 +238,8 @@ double sizeFactor = 0.7; pano.setOptions(opts); - int w = CalculateOptimalScale(pano).run<CalculateOptimalScale>().getResultOptimalWidth(); - opts.setWidth(roundi(w*sizeFactor), true); + int w = CalculateOptimalScale::calcOptimalScale(pano); + opts.setWidth(roundi(opts.getWidth()*w*sizeFactor), true); pano.setOptions(opts); } Modified: hugin/trunk/src/tools/vig_optimize.cpp =================================================================== --- hugin/trunk/src/tools/vig_optimize.cpp 2007-10-26 20:29:17 UTC (rev 2499) +++ hugin/trunk/src/tools/vig_optimize.cpp 2007-10-26 22:47:38 UTC (rev 2500) @@ -274,10 +274,9 @@ } - double error = - PhorometricOptimizer(pano, &progressDisplay, pano.getOptimizeVector(), points) - .run<PhorometricOptimizer>() - .getResultError(); + PhotometricOptimizer photoopt(pano, &progressDisplay, pano.getOptimizeVector(), points); + photoopt.run(); + double error = photoopt.getResultError(); progressDisplay.finishSubtask(); @@ -303,7 +302,7 @@ template<class ImageType> -std::vector<ImageType *> loadImagesPyr(std::vector<std::string> files, int pyrLevel, int verbose=0) +std::vector<ImageType *> loadImagesPyr(std::vector<std::string> files, int pyrLevel, int verbose) { typedef typename ImageType::value_type PixelType; std::vector<ImageType *> srcImgs; @@ -373,7 +372,7 @@ images = loadImagesPyr<vigra::FRGBImage>(files, pyrLevel, 1); if(randomPoints) - points = RandomPointSampler(pano, &progress, images, nPoints).run<PointSampler>().getResultPoints(); + points = RandomPointSampler(pano, &progress, images, nPoints).execute().getResultPoints(); else - points = AllPointSampler(pano, &progress, images, nPoints).run<PointSampler>().getResultPoints(); + points = AllPointSampler(pano, &progress, images, nPoints).execute().getResultPoints(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-10-28 22:24:18
|
Revision: 2510 http://hugin.svn.sourceforge.net/hugin/?rev=2510&view=rev Author: dangelo Date: 2007-10-28 15:24:11 -0700 (Sun, 28 Oct 2007) Log Message: ----------- Enabled $Id$ keyword on own source files Modified Paths: -------------- hugin/trunk/src/deghosting/hugin_hdrmerge.cpp hugin/trunk/src/deghosting/khan.h hugin/trunk/src/hugin1/PT/ImageGraph.h hugin/trunk/src/hugin1/PT/PTOptimise.h hugin/trunk/src/hugin1/PT/PanoCommand.h hugin/trunk/src/hugin1/PT/PanoImage.h hugin/trunk/src/hugin1/PT/PanoToolsInterface.h hugin/trunk/src/hugin1/PT/Panorama.h hugin/trunk/src/hugin1/PT/PanoramaMemento.h hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h hugin/trunk/src/hugin1/PT/RandomPointSampler.h hugin/trunk/src/hugin1/PT/RemappedPanoImage.h hugin/trunk/src/hugin1/PT/SpaceTransform.h hugin/trunk/src/hugin1/PT/Stitcher.h hugin/trunk/src/hugin1/PT/Transforms.h hugin/trunk/src/hugin1/PT/utils.h hugin/trunk/src/hugin1/base_wx/ImageCache.cpp hugin/trunk/src/hugin1/base_wx/ImageCache.h hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.h hugin/trunk/src/hugin1/base_wx/MyProgressDialog.cpp hugin/trunk/src/hugin1/base_wx/MyProgressDialog.h hugin/trunk/src/hugin1/base_wx/PTWXDlg.cpp hugin/trunk/src/hugin1/base_wx/PTWXDlg.h hugin/trunk/src/hugin1/base_wx/Plot2D.cpp hugin/trunk/src/hugin1/base_wx/Plot2D.h hugin/trunk/src/hugin1/base_wx/huginConfig.cpp hugin/trunk/src/hugin1/base_wx/huginConfig.h hugin/trunk/src/hugin1/common/Command.h hugin/trunk/src/hugin1/common/Matrix3.h hugin/trunk/src/hugin1/common/Vector3.h hugin/trunk/src/hugin1/common/eig_jacobi.h hugin/trunk/src/hugin1/common/graph.h hugin/trunk/src/hugin1/common/lu.h hugin/trunk/src/hugin1/common/math.h hugin/trunk/src/hugin1/common/platform.h hugin/trunk/src/hugin1/common/utils.h hugin/trunk/src/hugin1/common/wxPlatform.h hugin/trunk/src/hugin1/hugin/AnchorPositionCtrl.h hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp hugin/trunk/src/hugin1/hugin/AssistantPanel.h hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.h hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp hugin/trunk/src/hugin1/hugin/CPEditorPanel.h hugin/trunk/src/hugin1/hugin/CPEditorPanelHandler.h hugin/trunk/src/hugin1/hugin/CPEditorTest.h hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.cpp hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.h hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp hugin/trunk/src/hugin1/hugin/CPImageCtrl.h hugin/trunk/src/hugin1/hugin/CPListFrame.cpp hugin/trunk/src/hugin1/hugin/CPListFrame.h hugin/trunk/src/hugin1/hugin/CPZoomDisplayPanel.cpp hugin/trunk/src/hugin1/hugin/CPZoomDisplayPanel.h hugin/trunk/src/hugin1/hugin/CommandHistory.cpp hugin/trunk/src/hugin1/hugin/CommandHistory.h hugin/trunk/src/hugin1/hugin/CropPanel.cpp hugin/trunk/src/hugin1/hugin/CropPanel.h hugin/trunk/src/hugin1/hugin/HFOVDialog.cpp hugin/trunk/src/hugin1/hugin/HFOVDialog.h hugin/trunk/src/hugin1/hugin/ImageProcessing.h hugin/trunk/src/hugin1/hugin/ImagesList.cpp hugin/trunk/src/hugin1/hugin/ImagesList.h hugin/trunk/src/hugin1/hugin/ImagesPanel.cpp hugin/trunk/src/hugin1/hugin/ImagesPanel.h hugin/trunk/src/hugin1/hugin/LensPanel.cpp hugin/trunk/src/hugin1/hugin/LensPanel.h hugin/trunk/src/hugin1/hugin/LocalizedFileTipProvider.cpp hugin/trunk/src/hugin1/hugin/LocalizedFileTipProvider.h hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.h hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.cpp hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.h hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp hugin/trunk/src/hugin1/hugin/OptimizePanel.h hugin/trunk/src/hugin1/hugin/OptimizePhotometricPanel.cpp hugin/trunk/src/hugin1/hugin/OptimizePhotometricPanel.h hugin/trunk/src/hugin1/hugin/PTStitcherPanel.cpp hugin/trunk/src/hugin1/hugin/PTStitcherPanel.h hugin/trunk/src/hugin1/hugin/PanoDruid.cpp hugin/trunk/src/hugin1/hugin/PanoDruid.h hugin/trunk/src/hugin1/hugin/PanoPanel.cpp hugin/trunk/src/hugin1/hugin/PanoPanel.h hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp hugin/trunk/src/hugin1/hugin/PreferencesDialog.h hugin/trunk/src/hugin1/hugin/PreviewFrame.cpp hugin/trunk/src/hugin1/hugin/PreviewFrame.h hugin/trunk/src/hugin1/hugin/PreviewPanel.cpp hugin/trunk/src/hugin1/hugin/PreviewPanel.h hugin/trunk/src/hugin1/hugin/RunStitcherFrame.cpp hugin/trunk/src/hugin1/hugin/RunStitcherFrame.h hugin/trunk/src/hugin1/hugin/StitcherPanel.h hugin/trunk/src/hugin1/hugin/TextKillFocusHandler.cpp hugin/trunk/src/hugin1/hugin/TextKillFocusHandler.h hugin/trunk/src/hugin1/hugin/UniversalCursor.cpp hugin/trunk/src/hugin1/hugin/UniversalCursor.h hugin/trunk/src/hugin1/hugin/VigCorrDialog.cpp hugin/trunk/src/hugin1/hugin/VigCorrDialog.h hugin/trunk/src/hugin1/hugin/config_defaults.h hugin/trunk/src/hugin1/hugin/huginApp.cpp hugin/trunk/src/hugin1/hugin/huginApp.h hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp hugin/trunk/src/hugin1/hugin/wxPanoCommand.h hugin/trunk/src/hugin1/nona_gui/nona_gui.cpp hugin/trunk/src/hugin1/stitch_project/hugin_stitch_project.cpp hugin/trunk/src/hugin1/tools/align_image_stack.cpp hugin/trunk/src/hugin1/tools/automatch.cpp hugin/trunk/src/hugin1/tools/autooptimiser.cpp hugin/trunk/src/hugin1/tools/fulla.cpp hugin/trunk/src/hugin1/tools/nona.cpp hugin/trunk/src/hugin1/tools/vig_optimize.cpp hugin/trunk/src/hugin1/tools/zhang_undistort.cpp hugin/trunk/src/hugin_base/algorithm/PanoramaAlgorithm.h hugin/trunk/src/hugin_base/algorithm/StitcherAlgorithm.h hugin/trunk/src/hugin_base/algorithms/basic/CalculateCPStatistics.h hugin/trunk/src/hugin_base/algorithms/basic/CalculateMeanExposure.h hugin/trunk/src/hugin_base/algorithms/basic/CalculateOptimalScale.h hugin/trunk/src/hugin_base/algorithms/basic/RotatePanorama.h hugin/trunk/src/hugin_base/algorithms/basic/StraightenPanorama.h hugin/trunk/src/hugin_base/appbase/Command.h hugin/trunk/src/hugin_base/appbase/CommandHistory.h hugin/trunk/src/hugin_base/appbase/DocumentData.h hugin/trunk/src/hugin_base/appbase/ExternalProgram.cpp hugin/trunk/src/hugin_base/appbase/ExternalProgram.h hugin/trunk/src/hugin_base/appbase/ExternalProgramSetup.cpp hugin/trunk/src/hugin_base/appbase/ExternalProgramSetup.h hugin/trunk/src/hugin_base/appbase/ProgressDisplay.cpp hugin/trunk/src/hugin_base/appbase/ProgressDisplay.h hugin/trunk/src/hugin_base/appbase/ProgressDisplayOld.cpp hugin/trunk/src/hugin_base/appbase/ProgressDisplayOld.h hugin/trunk/src/hugin_base/appbase/ProgressReporterOld.cpp hugin/trunk/src/hugin_base/hugin_math/Matrix3.cpp hugin/trunk/src/hugin_base/hugin_math/Matrix3.h hugin/trunk/src/hugin_base/hugin_math/Transforms.h hugin/trunk/src/hugin_base/hugin_math/Vector3.cpp hugin/trunk/src/hugin_base/hugin_math/Vector3.h hugin/trunk/src/hugin_base/hugin_math/eig_jacobi.cpp hugin/trunk/src/hugin_base/hugin_math/eig_jacobi.h hugin/trunk/src/hugin_base/hugin_math/graph.cpp hugin/trunk/src/hugin_base/hugin_math/graph.h hugin/trunk/src/hugin_base/hugin_math/hugin_math.h hugin/trunk/src/hugin_base/hugin_math/lu.h hugin/trunk/src/hugin_base/hugin_utils/platform.h hugin/trunk/src/hugin_base/hugin_utils/utils.cpp hugin/trunk/src/hugin_base/hugin_utils/utils.h hugin/trunk/src/hugin_base/huginapp/CachedImageRemapper.cpp hugin/trunk/src/hugin_base/huginapp/CachedImageRemapper.h hugin/trunk/src/hugin_base/huginapp/ImageCache.cpp hugin/trunk/src/hugin_base/huginapp/ImageCache.h hugin/trunk/src/hugin_base/huginapp/PanoCommand.h hugin/trunk/src/hugin_base/nona/ImageRemapper.h hugin/trunk/src/hugin_base/nona/RemappedPanoImage.h hugin/trunk/src/hugin_base/nona/SpaceTransform.cpp hugin/trunk/src/hugin_base/nona/SpaceTransform.h hugin/trunk/src/hugin_base/nona/Stitcher.cpp hugin/trunk/src/hugin_base/nona/Stitcher.h hugin/trunk/src/hugin_base/nona/Stitcher1.cpp hugin/trunk/src/hugin_base/nona/Stitcher2.cpp hugin/trunk/src/hugin_base/nona/Stitcher3.cpp hugin/trunk/src/hugin_base/nona/Stitcher4.cpp hugin/trunk/src/hugin_base/panodata/ControlPoint.cpp hugin/trunk/src/hugin_base/panodata/ControlPoint.h hugin/trunk/src/hugin_base/panodata/DestPanoImage.h hugin/trunk/src/hugin_base/panodata/Lens.cpp hugin/trunk/src/hugin_base/panodata/Lens.h hugin/trunk/src/hugin_base/panodata/PTScriptParsing.cpp hugin/trunk/src/hugin_base/panodata/PTScriptParsing.h hugin/trunk/src/hugin_base/panodata/PanoImage.h hugin/trunk/src/hugin_base/panodata/Panorama.cpp hugin/trunk/src/hugin_base/panodata/Panorama.h hugin/trunk/src/hugin_base/panodata/PanoramaData.h hugin/trunk/src/hugin_base/panodata/PanoramaOptions.cpp hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h hugin/trunk/src/hugin_base/panodata/PanoramaVariable.cpp hugin/trunk/src/hugin_base/panodata/PanoramaVariable.h hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.h hugin/trunk/src/hugin_base/panotools/PanoToolsOptimizerWrapper.cpp hugin/trunk/src/hugin_base/panotools/PanoToolsOptimizerWrapper.h hugin/trunk/src/hugin_base/photometric/ResponseTransform.h hugin/trunk/src/hugin_base/vigra_ext/Correlation.h hugin/trunk/src/hugin_base/vigra_ext/FitPolynom.h hugin/trunk/src/hugin_base/vigra_ext/FunctorAccessor.h hugin/trunk/src/hugin_base/vigra_ext/HDRUtils.h hugin/trunk/src/hugin_base/vigra_ext/ImageTransforms.h hugin/trunk/src/hugin_base/vigra_ext/Interpolators.h hugin/trunk/src/hugin_base/vigra_ext/MultiLayerImage.h hugin/trunk/src/hugin_base/vigra_ext/MultiThreadOperations.cpp hugin/trunk/src/hugin_base/vigra_ext/MultiThreadOperations.h hugin/trunk/src/hugin_base/vigra_ext/Pyramid.h hugin/trunk/src/hugin_base/vigra_ext/ROIImage.h hugin/trunk/src/hugin_base/vigra_ext/ResponseTransform.h hugin/trunk/src/hugin_base/vigra_ext/VignettingCorrection.h hugin/trunk/src/hugin_base/vigra_ext/blend.h hugin/trunk/src/hugin_base/vigra_ext/emor.cpp hugin/trunk/src/hugin_base/vigra_ext/emor.h hugin/trunk/src/hugin_base/vigra_ext/lut.h hugin/trunk/src/hugin_base/vigra_ext/ransac.h hugin/trunk/src/hugin_base/vigra_ext/tiffUtils.h hugin/trunk/src/hugin_base/vigra_ext/utils.h hugin/trunk/src/tools/autooptimiser.cpp hugin/trunk/src/tools/fulla.cpp hugin/trunk/src/tools/nona.cpp hugin/trunk/src/tools/vig_optimize.cpp Property Changed: ---------------- hugin/trunk/src/deghosting/hugin_hdrmerge.cpp hugin/trunk/src/deghosting/jbu.cpp hugin/trunk/src/deghosting/jbu.h hugin/trunk/src/deghosting/khan.cpp hugin/trunk/src/deghosting/khan.h hugin/trunk/src/deghosting/khanSupport.cpp hugin/trunk/src/hugin1/PT/ImageGraph.h hugin/trunk/src/hugin1/PT/PTOptimise.h hugin/trunk/src/hugin1/PT/PanoCommand.h hugin/trunk/src/hugin1/PT/PanoImage.h hugin/trunk/src/hugin1/PT/PanoToolsInterface.h hugin/trunk/src/hugin1/PT/Panorama.h hugin/trunk/src/hugin1/PT/PanoramaMemento.h hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h hugin/trunk/src/hugin1/PT/RandomPointSampler.h hugin/trunk/src/hugin1/PT/RemappedPanoImage.h hugin/trunk/src/hugin1/PT/SpaceTransform.h hugin/trunk/src/hugin1/PT/Stitcher.h hugin/trunk/src/hugin1/PT/Transforms.h hugin/trunk/src/hugin1/PT/utils.h hugin/trunk/src/hugin1/base_wx/ImageCache.cpp hugin/trunk/src/hugin1/base_wx/ImageCache.h hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.h hugin/trunk/src/hugin1/base_wx/MyProgressDialog.cpp hugin/trunk/src/hugin1/base_wx/MyProgressDialog.h hugin/trunk/src/hugin1/base_wx/PTWXDlg.cpp hugin/trunk/src/hugin1/base_wx/PTWXDlg.h hugin/trunk/src/hugin1/base_wx/Plot2D.cpp hugin/trunk/src/hugin1/base_wx/Plot2D.h hugin/trunk/src/hugin1/base_wx/huginConfig.cpp hugin/trunk/src/hugin1/base_wx/huginConfig.h hugin/trunk/src/hugin1/common/Command.h hugin/trunk/src/hugin1/common/Matrix3.h hugin/trunk/src/hugin1/common/PTLensDB.h hugin/trunk/src/hugin1/common/Vector3.h hugin/trunk/src/hugin1/common/eig_jacobi.h hugin/trunk/src/hugin1/common/graph.h hugin/trunk/src/hugin1/common/lu.h hugin/trunk/src/hugin1/common/math.h hugin/trunk/src/hugin1/common/platform.h hugin/trunk/src/hugin1/common/stl_utils.h hugin/trunk/src/hugin1/common/utils.h hugin/trunk/src/hugin1/common/wxPlatform.h hugin/trunk/src/hugin1/config.h hugin/trunk/src/hugin1/hugin/AnchorPositionCtrl.h hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp hugin/trunk/src/hugin1/hugin/AssistantPanel.h hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.h hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp hugin/trunk/src/hugin1/hugin/CPEditorPanel.h hugin/trunk/src/hugin1/hugin/CPEditorPanelHandler.h hugin/trunk/src/hugin1/hugin/CPEditorTest.h hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.cpp hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.h hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp hugin/trunk/src/hugin1/hugin/CPImageCtrl.h hugin/trunk/src/hugin1/hugin/CPListFrame.cpp hugin/trunk/src/hugin1/hugin/CPListFrame.h hugin/trunk/src/hugin1/hugin/CPZoomDisplayPanel.cpp hugin/trunk/src/hugin1/hugin/CPZoomDisplayPanel.h hugin/trunk/src/hugin1/hugin/CommandHistory.cpp hugin/trunk/src/hugin1/hugin/CommandHistory.h hugin/trunk/src/hugin1/hugin/CropPanel.cpp hugin/trunk/src/hugin1/hugin/CropPanel.h hugin/trunk/src/hugin1/hugin/HFOVDialog.cpp hugin/trunk/src/hugin1/hugin/HFOVDialog.h hugin/trunk/src/hugin1/hugin/ImageProcessing.h hugin/trunk/src/hugin1/hugin/ImagesList.cpp hugin/trunk/src/hugin1/hugin/ImagesList.h hugin/trunk/src/hugin1/hugin/ImagesPanel.cpp hugin/trunk/src/hugin1/hugin/ImagesPanel.h hugin/trunk/src/hugin1/hugin/LensPanel.cpp hugin/trunk/src/hugin1/hugin/LensPanel.h hugin/trunk/src/hugin1/hugin/LocalizedFileTipProvider.cpp hugin/trunk/src/hugin1/hugin/LocalizedFileTipProvider.h hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin1/hugin/MainFrame.h hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.cpp hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.h hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp hugin/trunk/src/hugin1/hugin/OptimizePanel.h hugin/trunk/src/hugin1/hugin/OptimizePhotometricPanel.cpp hugin/trunk/src/hugin1/hugin/OptimizePhotometricPanel.h hugin/trunk/src/hugin1/hugin/PTStitcherPanel.cpp hugin/trunk/src/hugin1/hugin/PTStitcherPanel.h hugin/trunk/src/hugin1/hugin/PanoDruid.cpp hugin/trunk/src/hugin1/hugin/PanoDruid.h hugin/trunk/src/hugin1/hugin/PanoPanel.cpp hugin/trunk/src/hugin1/hugin/PanoPanel.h hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp hugin/trunk/src/hugin1/hugin/PreferencesDialog.h hugin/trunk/src/hugin1/hugin/PreviewFrame.cpp hugin/trunk/src/hugin1/hugin/PreviewFrame.h hugin/trunk/src/hugin1/hugin/PreviewPanel.cpp hugin/trunk/src/hugin1/hugin/PreviewPanel.h hugin/trunk/src/hugin1/hugin/RunStitcherFrame.cpp hugin/trunk/src/hugin1/hugin/RunStitcherFrame.h hugin/trunk/src/hugin1/hugin/StitcherPanel.h hugin/trunk/src/hugin1/hugin/TextKillFocusHandler.cpp hugin/trunk/src/hugin1/hugin/TextKillFocusHandler.h hugin/trunk/src/hugin1/hugin/UniversalCursor.cpp hugin/trunk/src/hugin1/hugin/UniversalCursor.h hugin/trunk/src/hugin1/hugin/VigCorrDialog.cpp hugin/trunk/src/hugin1/hugin/VigCorrDialog.h hugin/trunk/src/hugin1/hugin/config_defaults.h hugin/trunk/src/hugin1/hugin/huginApp.cpp hugin/trunk/src/hugin1/hugin/huginApp.h hugin/trunk/src/hugin1/hugin/win_prep.h hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp hugin/trunk/src/hugin1/hugin/wxPanoCommand.h hugin/trunk/src/hugin1/nona_gui/nona_gui.cpp hugin/trunk/src/hugin1/panoinc.h hugin/trunk/src/hugin1/panoinc_WX.h hugin/trunk/src/hugin1/stitch_project/hugin_stitch_project.cpp hugin/trunk/src/hugin1/tests/test_projections.cpp hugin/trunk/src/hugin1/tools/align_image_stack.cpp hugin/trunk/src/hugin1/tools/automatch.cpp hugin/trunk/src/hugin1/tools/autooptimiser.cpp hugin/trunk/src/hugin1/tools/color_correct_tiff.cpp hugin/trunk/src/hugin1/tools/fulla.cpp hugin/trunk/src/hugin1/tools/img2vips.cpp hugin/trunk/src/hugin1/tools/nona.cpp hugin/trunk/src/hugin1/tools/vig_optimize.cpp hugin/trunk/src/hugin1/tools/zhang_undistort.cpp hugin/trunk/src/hugin1/tools_vips/hdrmerge_vips.cpp hugin/trunk/src/hugin1/tools_vips/img2vips.cpp hugin/trunk/src/hugin_base/algorithm/ControlPointCreatorAlgorithm.h hugin/trunk/src/hugin_base/algorithm/PanoramaAlgorithm.h hugin/trunk/src/hugin_base/algorithm/StitcherAlgorithm.h hugin/trunk/src/hugin_base/algorithms/basic/CalculateCPStatistics.h hugin/trunk/src/hugin_base/algorithms/basic/CalculateMeanExposure.h hugin/trunk/src/hugin_base/algorithms/basic/CalculateOptimalScale.h hugin/trunk/src/hugin_base/algorithms/basic/RotatePanorama.h hugin/trunk/src/hugin_base/algorithms/basic/StraightenPanorama.h hugin/trunk/src/hugin_base/appbase/Command.h hugin/trunk/src/hugin_base/appbase/CommandHistory.h hugin/trunk/src/hugin_base/appbase/DocumentData.h hugin/trunk/src/hugin_base/appbase/ExternalProgram.cpp hugin/trunk/src/hugin_base/appbase/ExternalProgram.h hugin/trunk/src/hugin_base/appbase/ExternalProgramSetup.cpp hugin/trunk/src/hugin_base/appbase/ExternalProgramSetup.h hugin/trunk/src/hugin_base/appbase/ProgressDisplay.cpp hugin/trunk/src/hugin_base/appbase/ProgressDisplay.h hugin/trunk/src/hugin_base/appbase/ProgressDisplayOld.cpp hugin/trunk/src/hugin_base/appbase/ProgressDisplayOld.h hugin/trunk/src/hugin_base/appbase/ProgressReporterOld.cpp hugin/trunk/src/hugin_base/appbase/ProgressReporterOld.h hugin/trunk/src/hugin_base/hugin_basic.h hugin/trunk/src/hugin_base/hugin_math/Matrix3.cpp hugin/trunk/src/hugin_base/hugin_math/Matrix3.h hugin/trunk/src/hugin_base/hugin_math/Transforms.h hugin/trunk/src/hugin_base/hugin_math/Vector3.cpp hugin/trunk/src/hugin_base/hugin_math/Vector3.h hugin/trunk/src/hugin_base/hugin_math/eig_jacobi.cpp hugin/trunk/src/hugin_base/hugin_math/eig_jacobi.h hugin/trunk/src/hugin_base/hugin_math/graph.cpp hugin/trunk/src/hugin_base/hugin_math/graph.h hugin/trunk/src/hugin_base/hugin_math/hugin_math.h hugin/trunk/src/hugin_base/hugin_math/lu.h hugin/trunk/src/hugin_base/hugin_utils/platform.h hugin/trunk/src/hugin_base/hugin_utils/stl_utils.h hugin/trunk/src/hugin_base/hugin_utils/utils.cpp hugin/trunk/src/hugin_base/hugin_utils/utils.h hugin/trunk/src/hugin_base/huginapp/CachedImageRemapper.cpp hugin/trunk/src/hugin_base/huginapp/CachedImageRemapper.h hugin/trunk/src/hugin_base/huginapp/ImageCache.cpp hugin/trunk/src/hugin_base/huginapp/ImageCache.h hugin/trunk/src/hugin_base/huginapp/PanoCommand.h hugin/trunk/src/hugin_base/nona/ImageRemapper.h hugin/trunk/src/hugin_base/nona/RemappedPanoImage.h hugin/trunk/src/hugin_base/nona/SpaceTransform.cpp hugin/trunk/src/hugin_base/nona/SpaceTransform.h hugin/trunk/src/hugin_base/nona/Stitcher.cpp hugin/trunk/src/hugin_base/nona/Stitcher.h hugin/trunk/src/hugin_base/nona/Stitcher1.cpp hugin/trunk/src/hugin_base/nona/Stitcher2.cpp hugin/trunk/src/hugin_base/nona/Stitcher3.cpp hugin/trunk/src/hugin_base/nona/Stitcher4.cpp hugin/trunk/src/hugin_base/panodata/ControlPoint.cpp hugin/trunk/src/hugin_base/panodata/ControlPoint.h hugin/trunk/src/hugin_base/panodata/DestPanoImage.h hugin/trunk/src/hugin_base/panodata/Lens.cpp hugin/trunk/src/hugin_base/panodata/Lens.h hugin/trunk/src/hugin_base/panodata/PTScriptParsing.cpp hugin/trunk/src/hugin_base/panodata/PTScriptParsing.h hugin/trunk/src/hugin_base/panodata/PanoImage.cpp hugin/trunk/src/hugin_base/panodata/PanoImage.h hugin/trunk/src/hugin_base/panodata/Panorama.cpp hugin/trunk/src/hugin_base/panodata/Panorama.h hugin/trunk/src/hugin_base/panodata/PanoramaData.h hugin/trunk/src/hugin_base/panodata/PanoramaOptions.cpp hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h hugin/trunk/src/hugin_base/panodata/PanoramaVariable.cpp hugin/trunk/src/hugin_base/panodata/PanoramaVariable.h hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.cpp hugin/trunk/src/hugin_base/panotools/PanoToolsInterface.h hugin/trunk/src/hugin_base/panotools/PanoToolsOptimizerWrapper.cpp hugin/trunk/src/hugin_base/panotools/PanoToolsOptimizerWrapper.h hugin/trunk/src/hugin_base/photometric/ResponseTransform.h hugin/trunk/src/hugin_base/test/open_file.cpp hugin/trunk/src/hugin_base/vigra_ext/Correlation.h hugin/trunk/src/hugin_base/vigra_ext/FitPolynom.h hugin/trunk/src/hugin_base/vigra_ext/FunctorAccessor.h hugin/trunk/src/hugin_base/vigra_ext/HDRUtils.h hugin/trunk/src/hugin_base/vigra_ext/ImageTransforms.h hugin/trunk/src/hugin_base/vigra_ext/Interpolators.h hugin/trunk/src/hugin_base/vigra_ext/MultiLayerImage.h hugin/trunk/src/hugin_base/vigra_ext/MultiThreadOperations.cpp hugin/trunk/src/hugin_base/vigra_ext/MultiThreadOperations.h hugin/trunk/src/hugin_base/vigra_ext/NearestFeatureTransform.h hugin/trunk/src/hugin_base/vigra_ext/Pyramid.h hugin/trunk/src/hugin_base/vigra_ext/ROIImage.h hugin/trunk/src/hugin_base/vigra_ext/RansacParameterEstimator.h hugin/trunk/src/hugin_base/vigra_ext/ReduceOpenEXR.h hugin/trunk/src/hugin_base/vigra_ext/ResponseTransform.h hugin/trunk/src/hugin_base/vigra_ext/VigQuotientEstimator.h hugin/trunk/src/hugin_base/vigra_ext/VignettingCorrection.h hugin/trunk/src/hugin_base/vigra_ext/blend.h hugin/trunk/src/hugin_base/vigra_ext/emor.cpp hugin/trunk/src/hugin_base/vigra_ext/emor.h hugin/trunk/src/hugin_base/vigra_ext/lut.h hugin/trunk/src/hugin_base/vigra_ext/pyramid2.h hugin/trunk/src/hugin_base/vigra_ext/ransac.h hugin/trunk/src/hugin_base/vigra_ext/tiffUtils.h hugin/trunk/src/hugin_base/vigra_ext/utils.h hugin/trunk/src/tools/autooptimiser.cpp hugin/trunk/src/tools/fulla.cpp hugin/trunk/src/tools/nona.cpp hugin/trunk/src/tools/vig_optimize.cpp Modified: hugin/trunk/src/deghosting/hugin_hdrmerge.cpp =================================================================== --- hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: hugin_hdrmerge.cpp,v 1.3 2007/04/18 22:21:42 dangelo Exp $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/deghosting/hugin_hdrmerge.cpp ___________________________________________________________________ Name: svn:keywords + Id Property changes on: hugin/trunk/src/deghosting/jbu.cpp ___________________________________________________________________ Name: svn:keywords + Id Property changes on: hugin/trunk/src/deghosting/jbu.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: hugin/trunk/src/deghosting/khan.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/deghosting/khan.h =================================================================== --- hugin/trunk/src/deghosting/khan.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/deghosting/khan.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -4,7 +4,7 @@ * * @author Jing Jin * - * $Id: khan.h,v 1.3 2007/04/18 22:21:42 dangelo Exp $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/deghosting/khan.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: hugin/trunk/src/deghosting/khanSupport.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/ImageGraph.h =================================================================== --- hugin/trunk/src/hugin1/PT/ImageGraph.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/ImageGraph.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: ImageGraph.h 1763 2006-12-17 21:11:57Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/ImageGraph.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/PTOptimise.h =================================================================== --- hugin/trunk/src/hugin1/PT/PTOptimise.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/PTOptimise.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -5,7 +5,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: PTOptimise.h 1951 2007-04-15 20:54:49Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/PTOptimise.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/PanoCommand.h =================================================================== --- hugin/trunk/src/hugin1/PT/PanoCommand.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/PanoCommand.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: PanoCommand.h 1951 2007-04-15 20:54:49Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/PanoCommand.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/PanoImage.h =================================================================== --- hugin/trunk/src/hugin1/PT/PanoImage.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/PanoImage.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: PanoImage.h 1970 2007-04-18 22:26:56Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/PanoImage.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/PanoToolsInterface.h =================================================================== --- hugin/trunk/src/hugin1/PT/PanoToolsInterface.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/PanoToolsInterface.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: PanoToolsInterface.h 1883 2007-01-25 22:47:44Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/PanoToolsInterface.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/Panorama.h =================================================================== --- hugin/trunk/src/hugin1/PT/Panorama.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/Panorama.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: Panorama.h 1947 2007-04-15 20:46:00Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/Panorama.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/PanoramaMemento.h =================================================================== --- hugin/trunk/src/hugin1/PT/PanoramaMemento.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/PanoramaMemento.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: PanoramaMemento.h 1970 2007-04-18 22:26:56Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/PanoramaMemento.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h =================================================================== --- hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: PhotometricOptimizer.h 1931 2007-04-15 20:10:38Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/PhotometricOptimizer.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/RandomPointSampler.h =================================================================== --- hugin/trunk/src/hugin1/PT/RandomPointSampler.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/RandomPointSampler.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: RandomPointSampler.h 1998 2007-05-10 06:26:46Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/RandomPointSampler.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/RemappedPanoImage.h =================================================================== --- hugin/trunk/src/hugin1/PT/RemappedPanoImage.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/RemappedPanoImage.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: RemappedPanoImage.h 1987 2007-05-08 22:50:14Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/RemappedPanoImage.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/SpaceTransform.h =================================================================== --- hugin/trunk/src/hugin1/PT/SpaceTransform.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/SpaceTransform.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Alexandre Jenny <ale...@le...> * - * $Id: SpaceTransform.h 1805 2006-12-30 17:51:01Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/SpaceTransform.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/Stitcher.h =================================================================== --- hugin/trunk/src/hugin1/PT/Stitcher.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/Stitcher.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -5,7 +5,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: Stitcher.h 1949 2007-04-15 20:48:52Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/Stitcher.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/Transforms.h =================================================================== --- hugin/trunk/src/hugin1/PT/Transforms.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/Transforms.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -5,7 +5,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: Transforms.h 536 2004-02-17 21:01:55Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/Transforms.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/PT/utils.h =================================================================== --- hugin/trunk/src/hugin1/PT/utils.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/PT/utils.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: utils.h 1814 2006-12-31 14:37:05Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/PT/utils.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/ImageCache.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/ImageCache.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/ImageCache.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: ImageCache.cpp 1997 2007-05-09 21:14:15Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/ImageCache.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/ImageCache.h =================================================================== --- hugin/trunk/src/hugin1/base_wx/ImageCache.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/ImageCache.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: ImageCache.h 1988 2007-05-08 22:55:04Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/ImageCache.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Ippei UKAI <ipp...@ma...> * -* $Id: MyExternalCmdExecDialog.cpp 1878 2007-01-24 19:12:40Z dangelo $ +* $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.h =================================================================== --- hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Ippei UKAI <ipp...@ma...> * -* $Id: MyExternalCmdExecDialog.h 1878 2007-01-24 19:12:40Z dangelo $ +* $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/MyExternalCmdExecDialog.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/MyProgressDialog.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/MyProgressDialog.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/MyProgressDialog.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: MyProgressDialog.cpp 1950 2007-04-15 20:51:03Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/MyProgressDialog.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/MyProgressDialog.h =================================================================== --- hugin/trunk/src/hugin1/base_wx/MyProgressDialog.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/MyProgressDialog.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: MyProgressDialog.h 1950 2007-04-15 20:51:03Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/MyProgressDialog.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/PTWXDlg.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/PTWXDlg.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/PTWXDlg.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: PTWXDlg.cpp 1805 2006-12-30 17:51:01Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/PTWXDlg.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/PTWXDlg.h =================================================================== --- hugin/trunk/src/hugin1/base_wx/PTWXDlg.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/PTWXDlg.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: PTWXDlg.h 1578 2006-04-05 23:05:11Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/PTWXDlg.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/Plot2D.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/Plot2D.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/Plot2D.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: Plot2D.cpp 1550 2006-03-11 05:35:20Z dwilkins42 $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/Plot2D.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/Plot2D.h =================================================================== --- hugin/trunk/src/hugin1/base_wx/Plot2D.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/Plot2D.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: Plot2D.h 1463 2006-02-05 14:07:09Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/Plot2D.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/huginConfig.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/huginConfig.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/huginConfig.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: MainFrame.cpp 1994 2007-05-09 11:57:45Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/huginConfig.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/base_wx/huginConfig.h =================================================================== --- hugin/trunk/src/hugin1/base_wx/huginConfig.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/base_wx/huginConfig.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: MainFrame.cpp 1994 2007-05-09 11:57:45Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/base_wx/huginConfig.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/Command.h =================================================================== --- hugin/trunk/src/hugin1/common/Command.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/Command.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: Command.h 164 2003-06-13 11:08:13Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/Command.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/Matrix3.h =================================================================== --- hugin/trunk/src/hugin1/common/Matrix3.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/Matrix3.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Alexandre Jenny <ale...@le...> * - * $Id: Matrix3.h 1769 2006-12-20 00:42:16Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/Matrix3.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: hugin/trunk/src/hugin1/common/PTLensDB.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/Vector3.h =================================================================== --- hugin/trunk/src/hugin1/common/Vector3.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/Vector3.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Alexandre Jenny <ale...@le...> * - * $Id: Vector3.h 1769 2006-12-20 00:42:16Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/Vector3.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/eig_jacobi.h =================================================================== --- hugin/trunk/src/hugin1/common/eig_jacobi.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/eig_jacobi.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: eig_jacobi.h 1769 2006-12-20 00:42:16Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/eig_jacobi.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/graph.h =================================================================== --- hugin/trunk/src/hugin1/common/graph.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/graph.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: graph.h 490 2004-01-18 02:07:02Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/graph.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/lu.h =================================================================== --- hugin/trunk/src/hugin1/common/lu.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/lu.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -7,7 +7,7 @@ * @author Pablo d'Angelo <pab...@we...> * @author Antoine Lefebvre <ant...@po...> * - * $Id: lu.h 1612 2006-06-01 19:04:35Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public @@ -29,7 +29,7 @@ /* The LU decomposition function was taken from the rocketworkbench project: * * lu.c - PA = LU factorisation with pivoting - * $Id: lu.h 1612 2006-06-01 19:04:35Z dangelo $ + * $Id$ * Copyright (C) 2000 * Antoine Lefebvre <ant...@po...> * Property changes on: hugin/trunk/src/hugin1/common/lu.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/math.h =================================================================== --- hugin/trunk/src/hugin1/common/math.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/math.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: math.h 1952 2007-04-15 20:57:55Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/math.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/platform.h =================================================================== --- hugin/trunk/src/hugin1/common/platform.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/platform.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: platform.h 1080 2005-03-09 07:38:39Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/platform.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: hugin/trunk/src/hugin1/common/stl_utils.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/utils.h =================================================================== --- hugin/trunk/src/hugin1/common/utils.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/utils.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: utils.h 1952 2007-04-15 20:57:55Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/utils.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/common/wxPlatform.h =================================================================== --- hugin/trunk/src/hugin1/common/wxPlatform.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/common/wxPlatform.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: wxPlatform.h 1806 2006-12-30 17:56:25Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/common/wxPlatform.h ___________________________________________________________________ Name: svn:keywords + Id Property changes on: hugin/trunk/src/hugin1/config.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/AnchorPositionCtrl.h =================================================================== --- hugin/trunk/src/hugin1/hugin/AnchorPositionCtrl.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/AnchorPositionCtrl.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: AnchorPositionCtrl.h 380 2003-11-04 00:51:58Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/AnchorPositionCtrl.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: AssistantPanel.cpp 1988 2007-05-08 22:55:04Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/AssistantPanel.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/AssistantPanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/AssistantPanel.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/AssistantPanel.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: AssistantPanel.h 1783 2006-12-21 08:31:20Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/AssistantPanel.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: AutoCtrlPointCreator.cpp 1878 2007-01-24 19:12:40Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.h =================================================================== --- hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: AutoCtrlPointCreator.h 1762 2006-12-17 10:49:51Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/AutoCtrlPointCreator.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: CPEditorPanel.cpp 1996 2007-05-09 20:28:38Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/CPEditorPanel.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/CPEditorPanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorPanel.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/CPEditorPanel.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: CPEditorPanel.h 1950 2007-04-15 20:51:03Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/CPEditorPanel.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/CPEditorPanelHandler.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorPanelHandler.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/CPEditorPanelHandler.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: CPEditorPanelHandler.h 99 2003-05-22 23:47:10Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/CPEditorPanelHandler.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/CPEditorTest.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPEditorTest.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/CPEditorTest.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: CPEditorTest.h 99 2003-05-22 23:47:10Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/CPEditorTest.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: CPFineTuneFrame.cpp 896 2004-11-04 07:55:44Z dwilkins42 $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.h =================================================================== --- hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.h 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.h 2007-10-28 22:24:11 UTC (rev 2510) @@ -3,7 +3,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: CPFineTuneFrame.h 703 2004-09-08 22:03:02Z dangelo $ + * $Id$ * * This is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/CPFineTuneFrame.h ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp 2007-10-28 22:08:23 UTC (rev 2509) +++ hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp 2007-10-28 22:24:11 UTC (rev 2510) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: CPImageCtrl.cpp 2005 2007-05-18 21:13:30Z dangelo $ + * $Id$ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public Property changes on: hugin/trunk/src/hugin1/hugin/CPImageCtrl.cpp ___________________________________________________________________ Name: svn:keywords + Id Modified: hugin/trunk/src/hugin1/hugin/CPImageCtrl.h ===========... [truncated message content] |
From: <da...@us...> - 2007-11-25 00:10:46
|
Revision: 2541 http://hugin.svn.sourceforge.net/hugin/?rev=2541&view=rev Author: dangelo Date: 2007-11-24 16:10:39 -0800 (Sat, 24 Nov 2007) Log Message: ----------- Reorganized Panorama panel, clarify output modes, allow choosing output image type, support for new enfuse utility. Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/CMakeLists.txt hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.cpp hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.h hugin/trunk/src/hugin1/hugin/PanoPanel.cpp hugin/trunk/src/hugin1/hugin/PanoPanel.h hugin/trunk/src/hugin1/hugin/xrc/pano_panel.xrc hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.h hugin/trunk/src/hugin_base/nona/Stitcher.h hugin/trunk/src/hugin_base/panodata/Panorama.cpp hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h Modified: hugin/trunk/src/hugin1/hugin/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin1/hugin/CMakeLists.txt 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin1/hugin/CMakeLists.txt 2007-11-25 00:10:39 UTC (rev 2541) @@ -24,7 +24,7 @@ set(hugin_SOURCES huginApp.cpp ImagesList.cpp AutoCtrlPointCreator.cpp MainFrame.cpp CPImageCtrl.cpp CPEditorPanel.cpp LensPanel.cpp -ImagesPanel.cpp CommandHistory.cpp PanoPanel.cpp +ImagesPanel.cpp CommandHistory.cpp PanoPanel.cpp NonaOptionsDialog.cpp PreviewFrame.cpp PreviewPanel.cpp CropPanel.cpp OptimizePhotometricPanel.cpp OptimizePanel.cpp RunStitcherFrame.cpp CPListFrame.cpp TextKillFocusHandler.cpp PanoDruid.cpp PreferencesDialog.cpp Modified: hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.cpp 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.cpp 2007-11-25 00:10:39 UTC (rev 2541) @@ -52,50 +52,31 @@ //----------------------------------------------------------------------------- -BEGIN_EVENT_TABLE(NonaStitcherPanel, wxWindow) +BEGIN_EVENT_TABLE(NonaOptionsDialog, wxDialog) EVT_CHOICE ( XRCID("nona_choice_interpolator"),NonaStitcherPanel::InterpolatorChanged) - EVT_TEXT_ENTER ( XRCID("nona_text_gamma"),NonaStitcherPanel::GammaChanged ) - EVT_SPINCTRL(XRCID("nona_jpeg_quality"), NonaStitcherPanel::OnSetQuality) - EVT_CHECKBOX( XRCID("nona_check_enblend"), NonaStitcherPanel::OnEnblendChanged) - EVT_CHECKBOX( XRCID("nona_save_cropped"), NonaStitcherPanel::OnSaveCropped) - EVT_CHOICE ( XRCID("nona_choice_format_final"),NonaStitcherPanel::FileFormatChanged) - EVT_CHOICE ( XRCID("nona_comp_type"),NonaStitcherPanel::OnCompTypeChanged) + EVT_CHECKBOX( XRCID("nona_cb_cropped"), NonaStitcherPanel::OnSaveCropped) END_EVENT_TABLE() // Define a constructor for the Pano Panel NonaStitcherPanel::NonaStitcherPanel(wxWindow *parent, Panorama & pano) - : StitcherPanel(parent, -1, wxDefaultPosition, wxDefaultSize, wxEXPAND|wxGROW), + : wxDialog(parent, -1, wxDefaultPosition, wxDefaultSize, wxEXPAND|wxGROW), pano(pano), updatesDisabled(false) { // loading xrc resources in selfcreated this panel - wxXmlResource::Get()->LoadPanel ( this, wxT("nona_panel")); + wxXmlResource::Get()->LoadPanel ( this, wxT("nona_options_dialog")); // converts KILL_FOCUS events to usable TEXT_ENTER events // get gui controls m_InterpolatorChoice = XRCCTRL(*this, "nona_choice_interpolator", wxChoice); DEBUG_ASSERT(m_InterpolatorChoice); - m_gammaTxt = XRCCTRL(*this, "nona_text_gamma", wxTextCtrl); - DEBUG_ASSERT(m_gammaTxt); - m_gammaTxt->PushEventHandler(new TextKillFocusHandler(this)); - m_FormatChoice = XRCCTRL(*this, "nona_choice_format_final", wxChoice); - DEBUG_ASSERT(m_FormatChoice); - m_JPEGQualitySpin = XRCCTRL(*this, "nona_jpeg_quality", wxSpinCtrl); - DEBUG_ASSERT(m_JPEGQualitySpin); - m_JPEGQualitySpin->PushEventHandler(new TextKillFocusHandler(this)); - m_EnblendCheckBox = XRCCTRL(*this, "nona_check_enblend", wxCheckBox); - DEBUG_ASSERT(m_EnblendCheckBox); - - m_SaveCroppedCB = XRCCTRL(*this, "nona_save_cropped", wxCheckBox); + m_SaveCroppedCB = XRCCTRL(*this, "nona_cb_cropped", wxCheckBox); DEBUG_ASSERT(m_SaveCroppedCB); - m_CompTypeChoice = XRCCTRL(*this, "nona_comp_type", wxChoice); - DEBUG_ASSERT(m_CompTypeChoice); - UpdateDisplay(pano.getOptions()); // observe the panorama Modified: hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.h 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin1/hugin/NonaStitcherPanel.h 2007-11-25 00:10:39 UTC (rev 2541) @@ -1,5 +1,5 @@ // -*- c-basic-offset: 4 -*- -/** @file PanoPanel.h +/** @file NonaOptionsDialog.h * * @author Pablo d'Angelo <pab...@we...> * @@ -38,11 +38,11 @@ * * - This window will contain the stitcher specific options. */ -class NonaStitcherPanel: public StitcherPanel, public PT::PanoramaObserver +class NonaStitcherDialog: public wxDialog, public PT::PanoramaObserver { public: - NonaStitcherPanel(wxWindow *parent, PT::Panorama & pano); - virtual ~NonaStitcherPanel(void) ; + NonaStitcherDialog(wxWindow *parent, PT::Panorama & pano); + virtual ~NonaStitcherDialog(); /** this is called whenever the panorama has changed. * @@ -61,11 +61,7 @@ * @todo react on different update signals more special */ virtual void panoramaChanged(PT::Panorama &pano); -// void panoramaImageChanged(PT::Panorama &pano, const PT::UIntSet & imgNr); - /** set the image */ -// TODO remove -// void previewSingleChanged(wxCommandEvent & e); private: @@ -74,18 +70,8 @@ // apply changes to the model. (gui values -> Panorama) void InterpolatorChanged(wxCommandEvent & e); - void OnEnblendChanged( wxCommandEvent & e ); - void OnCompTypeChanged( wxCommandEvent & e ); - void OnSetQuality(wxSpinEvent & e); void OnSaveCropped(wxCommandEvent & e); - void GammaChanged ( wxCommandEvent & e ); - void FileFormatChanged(wxCommandEvent & e); - - // actions - virtual bool Stitch(const PT::Panorama & pano, - PT::PanoramaOptions opts); - // the model PT::Panorama &pano; @@ -94,17 +80,10 @@ // because the gui might report changes as well. bool updatesDisabled; PT::PanoramaOptions m_oldOpt; - double m_oldVFOV; wxChoice * m_InterpolatorChoice; -// wxTextCtrl * m_WidthTxt; - wxTextCtrl * m_gammaTxt; - wxChoice * m_FormatChoice; - wxSpinCtrl * m_JPEGQualitySpin; - wxCheckBox * m_EnblendCheckBox; wxCheckBox * m_SaveCroppedCB; - wxChoice * m_CompTypeChoice; DECLARE_EVENT_TABLE() }; Modified: hugin/trunk/src/hugin1/hugin/PanoPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PanoPanel.cpp 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin1/hugin/PanoPanel.cpp 2007-11-25 00:10:39 UTC (rev 2541) @@ -84,17 +84,21 @@ EVT_CHECKBOX ( XRCID("pano_cb_ldr_output_blended"), PanoPanel::OnOutputFilesChanged) EVT_CHECKBOX ( XRCID("pano_cb_ldr_output_layers"), PanoPanel::OnOutputFilesChanged) EVT_CHECKBOX ( XRCID("pano_cb_ldr_output_exposure_layers"), PanoPanel::OnOutputFilesChanged) + EVT_CHECKBOX ( XRCID("pano_cb_ldr_output_exposure_blended"), PanoPanel::OnOutputFilesChanged) + EVT_CHECKBOX ( XRCID("pano_cb_ldr_output_exposure_remapped"), PanoPanel::OnOutputFilesChanged) EVT_CHECKBOX ( XRCID("pano_cb_hdr_output_blended"), PanoPanel::OnOutputFilesChanged) EVT_CHECKBOX ( XRCID("pano_cb_hdr_output_stacks"), PanoPanel::OnOutputFilesChanged) EVT_CHECKBOX ( XRCID("pano_cb_hdr_output_layers"), PanoPanel::OnOutputFilesChanged) EVT_CHOICE ( XRCID("pano_choice_remapper"),PanoPanel::RemapperChanged ) + EVT_BUTTON ( XRCID("pano_button_remapper_opts"),PanoPanel::OnRemapperOptions ) EVT_CHOICE ( XRCID("pano_choice_blender"),PanoPanel::BlenderChanged ) - EVT_CHOICE ( XRCID("pano_choice_interpolator"),PanoPanel::InterpolatorChanged) - EVT_CHECKBOX( XRCID("pano_cb_remapper_cropped"), PanoPanel::OnRemapperCropped) + EVT_BUTTON ( XRCID("pano_button_blender_opts"),PanoPanel::OnBlenderOptions ) + EVT_CHOICE ( XRCID("pano_choice_file_format"),PanoPanel::FileFormatChanged ) + EVT_CHOICE ( XRCID("pano_choice_hdr_file_format"),PanoPanel::HDRFileFormatChanged ) + EVT_BUTTON ( XRCID("pano_button_file_format_opts"),PanoPanel::OnFileFormatOpts ) + EVT_BUTTON ( XRCID("pano_button_hdr_file_format_opts"),PanoPanel::OnHDRFileFormatOpts ) - - END_EVENT_TABLE() @@ -186,10 +190,11 @@ m_StitchButton = XRCCTRL(*this, "pano_button_stitch", wxButton); DEBUG_ASSERT(m_StitchButton); - m_InterpolatorChoice = XRCCTRL(*this, "pano_choice_interpolator", - wxChoice); - DEBUG_ASSERT(m_InterpolatorChoice); - + m_FileFormatChoice = XRCCTRL(*this, "pano_choice_file_format", wxChoice); + DEBUG_ASSERT(m_FileFormatChoice); + m_HDRFileFormatChoice = XRCCTRL(*this, "pano_choice_hdr_file_format", wxChoice); + DEBUG_ASSERT(m_HDRFileFormatChoice); + #ifdef USE_WX253 m_pano_ctrls = XRCCTRL(*this, "pano_controls_panel", wxScrolledWindow); DEBUG_ASSERT(m_pano_ctrls); @@ -299,12 +304,38 @@ // output types XRCCTRL(*this, "pano_cb_ldr_output_blended", wxCheckBox)->SetValue(opt.outputLDRBlended); XRCCTRL(*this, "pano_cb_ldr_output_layers", wxCheckBox)->SetValue(opt.outputLDRLayers); + XRCCTRL(*this, "pano_cb_ldr_output_exposure_blended", wxCheckBox)->SetValue(opt.outputLDRExposureBlended); XRCCTRL(*this, "pano_cb_ldr_output_exposure_layers", wxCheckBox)->SetValue(opt.outputLDRExposureLayers); + XRCCTRL(*this, "pano_cb_ldr_output_exposure_remapped", wxCheckBox)->SetValue(opt.outputLDRExposureRemapped); XRCCTRL(*this, "pano_cb_hdr_output_blended", wxCheckBox)->SetValue(opt.outputHDRBlended); XRCCTRL(*this, "pano_cb_hdr_output_stacks", wxCheckBox)->SetValue(opt.outputHDRStacks); XRCCTRL(*this, "pano_cb_hdr_output_layers", wxCheckBox)->SetValue(opt.outputHDRLayers); - XRCCTRL(*this, "pano_cb_remapper_cropped", wxCheckBox)->SetValue(opt.tiff_saveROI); + // output file mode + long i=0; + if (opt.outputImageType == "tif") + i = 0; + else if (opt.outputImageType == "jpg") + i = 1; + else if (opt.outputImageType == "png") + i = 2; + else if (opt.outputImageType == "exr") + i = 3; + else + wxLogError(wxT("INTERNAL error: unknown output image type")); + + m_FileFormatChoice->SetSelection(i); + + i=0; + if (opt.outputImageTypeHDR == "exr") + i = 0; + else if (opt.outputImageTypeHDR == "tif") + i = 1; + else + wxLogError(wxT("INTERNAL error: unknown hdr output image type")); + + m_HDRFileFormatChoice->SetSelection(i); + } void PanoPanel::ProjectionChanged ( wxCommandEvent & e ) @@ -485,7 +516,6 @@ { int remapper = m_RemapperChoice->GetSelection(); DEBUG_DEBUG("changing remapper to " << remapper); - // TODO: change panorama options.. PanoramaOptions opt = pano.getOptions(); if (remapper == 1) { @@ -499,6 +529,12 @@ ); } +void PanoPanel::OnRemapperOptions(wxCommandEvent & e) +{ + wxLogError(_("Not yet implemented")); +} + + void PanoPanel::BlenderChanged(wxCommandEvent & e) { int blender = m_BlenderChoice->GetSelection(); @@ -527,34 +563,12 @@ ); } -// Stitcher options -void PanoPanel::InterpolatorChanged(wxCommandEvent & e) +void PanoPanel::OnBlenderOptions(wxCommandEvent & e) { - // TODO: check panotools interpolators if PTmender is - // is used - PanoramaOptions opt = pano.getOptions(); - //Interpolator from PanoramaMemento.h - int lt = m_InterpolatorChoice->GetSelection(); - - opt.interpolator = (vigra_ext::Interpolator) lt; - GlobalCmdHist::getInstance().addCommand( - new PT::SetPanoOptionsCmd( pano, opt ) - ); - DEBUG_DEBUG ("Interpolator changed to: " << lt ) + wxLogError(_("Not yet implemented")); } -void PanoPanel::OnRemapperCropped(wxCommandEvent & e) -{ - PanoramaOptions opt = pano.getOptions(); - //Interpolator from PanoramaMemento.h - opt.tiff_saveROI = e.IsChecked(); - GlobalCmdHist::getInstance().addCommand( - new PT::SetPanoOptionsCmd( pano, opt ) - ); -} - - void PanoPanel::DoCalcFOV(wxCommandEvent & e) { DEBUG_TRACE(""); @@ -656,6 +670,68 @@ DoStitch(); } +void PanoPanel::FileFormatChanged(wxCommandEvent & e) +{ + + int fmt = m_FileFormatChoice->GetSelection(); + DEBUG_DEBUG("changing file format to " << fmt); + + PanoramaOptions opt = pano.getOptions(); + switch (fmt) { + case 1: + opt.outputImageType ="jpg"; + break; + case 2: + opt.outputImageType ="png"; + break; + case 3: + opt.outputImageType ="exr"; + break; + default: + case 0: + opt.outputImageType ="tif"; + break; + } + + GlobalCmdHist::getInstance().addCommand( + new PT::SetPanoOptionsCmd( pano, opt ) + ); +} + +void PanoPanel::OnFileFormatOpts(wxCommandEvent & e) +{ + wxMessageBox(_("Not yet implemented")); +} + +void PanoPanel::HDRFileFormatChanged(wxCommandEvent & e) +{ + + int fmt = m_HDRFileFormatChoice->GetSelection(); + DEBUG_DEBUG("changing file format to " << fmt); + + PanoramaOptions opt = pano.getOptions(); + switch (fmt) { + case 1: + opt.outputImageTypeHDR ="tif"; + break; + default: + case 0: + opt.outputImageTypeHDR ="exr"; + break; + } + + GlobalCmdHist::getInstance().addCommand( + new PT::SetPanoOptionsCmd( pano, opt ) + ); +} + + +void PanoPanel::OnHDRFileFormatOpts(wxCommandEvent & e) +{ + wxMessageBox(_("Not yet implemented")); +} + + void PanoPanel::OnOutputFilesChanged(wxCommandEvent & e) { int id = e.GetId(); @@ -667,6 +743,11 @@ opts.outputLDRLayers = e.IsChecked(); } else if (id == XRCID("pano_cb_ldr_output_exposure_layers") ) { opts.outputLDRExposureLayers = e.IsChecked(); + } else if (id == XRCID("pano_cb_ldr_output_exposure_blended") ) { + opts.outputLDRExposureBlended = e.IsChecked(); + } else if (id == XRCID("pano_cb_ldr_output_exposure_remapped") ) { + opts.outputLDRExposureRemapped = e.IsChecked(); + wxMessageBox(wxT("Setting exp remapped")); } else if (id == XRCID("pano_cb_hdr_output_blended") ) { opts.outputHDRBlended = e.IsChecked(); } else if (id == XRCID("pano_cb_hdr_output_stacks") ) { Modified: hugin/trunk/src/hugin1/hugin/PanoPanel.h =================================================================== --- hugin/trunk/src/hugin1/hugin/PanoPanel.h 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin1/hugin/PanoPanel.h 2007-11-25 00:10:39 UTC (rev 2541) @@ -103,12 +103,17 @@ void OnOutputFilesChanged(wxCommandEvent & e); void RemapperChanged(wxCommandEvent & e); + void OnRemapperOptions(wxCommandEvent & e); void BlenderChanged(wxCommandEvent & e); + void OnBlenderOptions(wxCommandEvent & e); - // Stitcher options - void InterpolatorChanged(wxCommandEvent & e); - void OnRemapperCropped(wxCommandEvent & e); + // File format options + void FileFormatChanged(wxCommandEvent & e); + void OnFileFormatOpts(wxCommandEvent & e); + void HDRFileFormatChanged(wxCommandEvent & e); + void OnHDRFileFormatOpts(wxCommandEvent & e); + void WidthChanged(wxCommandEvent & e); void HeightChanged(wxCommandEvent & e); void ROIChanged(wxCommandEvent & e); @@ -155,12 +160,13 @@ wxButton * m_CalcHFOVButton; wxButton * m_CalcOptWidthButton; + wxChoice * m_FileFormatChoice; + wxChoice * m_HDRFileFormatChoice; + #ifdef USE_WX253 wxScrolledWindow *m_pano_ctrls; #endif - wxChoice * m_InterpolatorChoice; - DECLARE_EVENT_TABLE() }; Modified: hugin/trunk/src/hugin1/hugin/xrc/pano_panel.xrc =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/pano_panel.xrc 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin1/hugin/xrc/pano_panel.xrc 2007-11-25 00:10:39 UTC (rev 2541) @@ -260,14 +260,15 @@ <size platform="mac">12</size> </font> </object> - <flag>wxTOP</flag> + <flag>wxTOP|wxBOTTOM</flag> <border>6</border> <cellpos>6,0</cellpos> <cellspan>0,4</cellspan> </object> <object class="sizeritem"> - <object class="wxStaticText" name="pano_rb_ldr_enabled"> - <label>LDR</label> + <object class="wxStaticText" name=""> + <label>Normal</label> + <tooltip>For panoramas consisting of images with similar exposure</tooltip> </object> <flag>wxLEFT</flag> <border>6</border> @@ -275,34 +276,67 @@ <cellspan>0,2</cellspan> </object> <object class="sizeritem"> - <object class="wxStaticText" name="pano_rb_hdr_enabled"> - <label>HDR</label> + <object class="wxStaticText" name=""> + <label>Exposure Blending</label> + <tooltip>For panoramas consisting of images with varying exposure</tooltip> </object> <cellpos>7,2</cellpos> <cellspan>0,2</cellspan> </object> <object class="sizeritem"> + <object class="wxStaticText" name=""> + <label>Merge to HDR</label> + <tooltip>For panoramas consisting of images with varying exposure</tooltip> + </object> + <cellpos>7,4</cellpos> + <cellspan>0,2</cellspan> + </object> + <object class="sizeritem"> <object class="wxBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem"> <object class="wxCheckBox" name="pano_cb_ldr_output_blended"> <label>Blended panorama</label> + <tooltip>Use blend the individual layers using the selected blender</tooltip> </object> </object> <object class="sizeritem"> <object class="wxCheckBox" name="pano_cb_ldr_output_layers"> - <label>Individual layers</label> + <label>Remapped images</label> + <tooltip>Output remapped images with exposure correction</tooltip> </object> </object> + </object> + <flag>wxLEFT</flag> + <border>12</border> + <cellpos>8,0</cellpos> + <cellspan>0,2</cellspan> + </object> + <object class="sizeritem"> + <object class="wxBoxSizer"> + <orient>wxVERTICAL</orient> <object class="sizeritem"> + <object class="wxCheckBox" name="pano_cb_ldr_output_exposure_blended"> + <label>Blended panorama (enfuse)</label> + <tooltip>Fully automatic exposure blending</tooltip> + </object> + </object> + <object class="sizeritem"> <object class="wxCheckBox" name="pano_cb_ldr_output_exposure_layers"> <label>Blended exposure layers</label> + <tooltip>Output a complete blended panorama of each exposure. Useful for manual exposure blending, for example in Photoshop or Gimp</tooltip> </object> </object> + <object class="sizeritem"> + <object class="wxCheckBox" name="pano_cb_ldr_output_exposure_remapped"> + <label>Remapped images</label> + <tooltip>Output remapped images with original exposure</tooltip> + </object> + </object> </object> <flag>wxLEFT</flag> <border>12</border> - <cellpos>8,0</cellpos> + <cellpos>8,2</cellpos> <cellspan>0,2</cellspan> </object> <object class="sizeritem"> @@ -310,24 +344,27 @@ <orient>wxVERTICAL</orient> <object class="sizeritem"> <object class="wxCheckBox" name="pano_cb_hdr_output_blended"> - <label>Blended panorama</label> + <label>Blended HDR panorama</label> + <tooltip>Output a blended high dynamic range panorama</tooltip> </object> </object> <object class="sizeritem"> <object class="wxCheckBox" name="pano_cb_hdr_output_stacks"> <label>Stacked HDR images</label> + <tooltip>Output the individual, remapped HDR stacks</tooltip> </object> </object> <object class="sizeritem"> <object class="wxCheckBox" name="pano_cb_hdr_output_layers"> - <label>Individual layers</label> + <label>Individual non merged images</label> + <tooltip>Output remapped images in a linear color space</tooltip> </object> </object> </object> <flag>wxLEFT</flag> <border>12</border> - <cellpos>8,2</cellpos> - <cellspan>0,3</cellspan> + <cellpos>8,4</cellpos> + <cellspan>0,2</cellspan> </object> </object> <flag>wxLEFT|wxEXPAND</flag> @@ -360,164 +397,199 @@ <option>0</option> </object> <object class="sizeritem"> - <object class="wxStaticText"> - <label>Processing</label> - <font> - <style platform="mac">normal</style> - <family platform="mac">swiss</family> - <weight>bold</weight> - <size platform="mac">12</size> - </font> - </object> - <flag>wxTOP</flag> - <border>6</border> - <cellpos>4,0</cellpos> - <cellspan>0,4</cellspan> - </object> - <object class="sizeritem"> <object class="wxBoxSizer"> - <orient>wxVERTICAL</orient> + <orient>wxHORIZONTAL</orient> <object class="sizeritem"> <object class="wxBoxSizer"> - <orient>wxHORIZONTAL</orient> + <orient>wxVERTICAL</orient> <object class="sizeritem"> - <object class="wxBoxSizer"> - <orient>wxVERTICAL</orient> + <object class="wxStaticText"> + <label>Processing</label> + <font> + <style platform="mac">normal</style> + <family platform="mac">swiss</family> + <weight>bold</weight> + <size platform="mac">12</size> + </font> + </object> + <flag>wxTOP</flag> + <border>6</border> + <cellpos>4,0</cellpos> + <cellspan>0,4</cellspan> + </object> + <object class="sizeritem"> + <object class="wxFlexGridSizer"> + <cols>3</cols> + <rows>2</rows> <object class="sizeritem"> - <object class="wxBoxSizer"> - <orient>wxHORIZONTAL</orient> - <object class="sizeritem"> - <object class="wxStaticText"> - <label>Remapper:</label> - </object> - <flag>wxALIGN_CENTRE_VERTICAL</flag> - </object> - <object class="sizeritem"> - <object class="wxChoice" name="pano_choice_remapper"> - <content> - <item>Nona</item> - <item>PTmender</item> - </content> - <selection>0</selection> - </object> - <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> - <border>6</border> - </object> + <object class="wxStaticText"> + <label>Remapper:</label> </object> + <flag>wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL</flag> </object> <object class="sizeritem"> - <object class="wxPanel" name="pano_stitcher_opts"> - <object class="wxBoxSizer"> - <orient>wxVERTICAL</orient> - <object class="sizeritem"> - <object class="wxPanel" name="pano_stitcher_nona"> - <object class="wxBoxSizer"> - <orient>wxVERTICAL</orient> - <object class="sizeritem"> - <object class="wxFlexGridSizer"> - <cols>2</cols> - <rows>1</rows> - <object class="sizeritem"> - <object class="wxStaticText"> - <label>interpolator (i):</label> - </object> - <flag>wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL</flag> - </object> - <object class="sizeritem"> - <object class="wxChoice" name="pano_choice_interpolator"> - <content> - <item>Poly3 (Bicubic)</item> - <item>Spline 16</item> - <item>Spline 36</item> - <item>Sinc 256</item> - <item>Spline 64</item> - <item>Bilinear</item> - <item>Nearest neighbour</item> - <item>Sinc 1024</item> - </content> - <selection>0</selection> - <tooltip>approximation of values beetwen source pixels</tooltip> - </object> - <flag>wxALIGN_CENTRE_VERTICAL</flag> - </object> - <vgap>6</vgap> - <hgap>6</hgap> - </object> - </object> - <object class="sizeritem"> - <object class="wxCheckBox" name="pano_cb_remapper_cropped"> - <label>save cropped layers</label> - </object> - <flag>wxALL</flag> - <border>6</border> - </object> - </object> - </object> - </object> - </object> + <object class="wxChoice" name="pano_choice_remapper"> + <content> + <item>Nona</item> + <item>PTmender</item> + </content> + <selection>0</selection> </object> - <flag>wxALL|wxEXPAND</flag> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> <border>6</border> </object> + <object class="sizeritem"> + <object class="wxButton" name="pano_button_remapper_opts"> + <label>Options</label> + </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> + </object> + <object class="sizeritem"> + <object class="wxStaticText"> + <label>Blender:</label> + </object> + <flag>wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL</flag> + <border>14</border> + </object> + <object class="sizeritem"> + <object class="wxChoice" name="pano_choice_blender"> + <content> + <item>enblend</item> + <item>none</item> + </content> + <selection>0</selection> + </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> + </object> + <object class="sizeritem"> + <object class="wxButton" name="pano_button_blender_opts"> + <label>Options</label> + <enabled>0</enabled> + </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> + </object> + <object class="sizeritem"> + <object class="wxStaticText"> + <label>HDR merger:</label> + </object> + <flag>wxLEFT|wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL</flag> + <border>14</border> + </object> + <object class="sizeritem"> + <object class="wxChoice" name="pano_choice_blender"> + <content> + <item>builtin</item> + </content> + <selection>0</selection> + </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> + </object> + <object class="sizeritem"> + <object class="wxButton" name="pano_button_hdrmerge_opts"> + <label>Options</label> + <enabled>0</enabled> + </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> + </object> </object> </object> + </object> + </object> + <object class="sizeritem"> + <object class="wxBoxSizer"> + <orient>wxVERTICAL</orient> <object class="sizeritem"> <object class="wxBoxSizer"> <orient>wxVERTICAL</orient> <object class="sizeritem"> + <object class="wxStaticText"> + <label>File formats</label> + <font> + <style platform="mac">normal</style> + <family platform="mac">swiss</family> + <weight>bold</weight> + <size platform="mac">12</size> + </font> + </object> + <flag>wxTOP</flag> + <border>6</border> + <cellpos>4,0</cellpos> + <cellspan>0,4</cellspan> + </object> + <object class="sizeritem"> <object class="wxBoxSizer"> <orient>wxHORIZONTAL</orient> <object class="sizeritem"> - <object class="wxStaticText"> - <label>Blender</label> - </object> - <flag>wxLEFT|wxALIGN_CENTRE_VERTICAL</flag> - <border>14</border> - </object> - <object class="sizeritem"> - <object class="wxChoice" name="pano_choice_blender"> - <content> - <item>enblend</item> - <item>none</item> - </content> - <selection>0</selection> - </object> - <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> - <border>6</border> - </object> - </object> - </object> - <object class="sizeritem"> - <object class="wxPanel" name="pano_blender_opts"> - <object class="wxBoxSizer"> - <orient>wxVERTICAL</orient> - <object class="sizeritem"> - <object class="wxPanel" name="pano_blender_enblend"> - <object class="wxBoxSizer"> - <orient>wxVERTICAL</orient> + <object class="wxFlexGridSizer"> + <cols>3</cols> + <rows>2</rows> + <object class="sizeritem"> + <object class="wxStaticText"> + <label>Normal Output:</label> </object> + <flag>wxLEFT|wxALIGN_CENTRE_VERTICAL</flag> + <border>14</border> </object> - </object> - <object class="sizeritem"> - <object class="wxPanel" name="pano_blender_PTmasker"> - <object class="wxBoxSizer"> - <orient>wxVERTICAL</orient> + <object class="sizeritem"> + <object class="wxChoice" name="pano_choice_file_format"> + <content> + <item>TIFF</item> + <item>JPEG</item> + <item>PNG</item> + <item>EXR</item> + </content> + <selection>0</selection> </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> </object> + <object class="sizeritem"> + <object class="wxButton" name="pano_button_file_format_opts"> + <label>Options</label> + </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> + </object> + <object class="sizeritem"> + <object class="wxStaticText"> + <label>HDR Output:</label> + </object> + <flag>wxLEFT|wxALIGN_CENTRE_VERTICAL</flag> + <border>14</border> + </object> + <object class="sizeritem"> + <object class="wxChoice" name="pano_choice_hdr_file_format"> + <content> + <item>EXR</item> + <item>TIFF</item> + </content> + <selection>0</selection> + </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> + </object> + <object class="sizeritem"> + <object class="wxButton" name="pano_button_hdr_file_format_opts"> + <label>Options</label> + </object> + <flag>wxALL|wxALIGN_CENTRE_VERTICAL</flag> + <border>6</border> + </object> </object> </object> </object> - <flag>wxEXPAND</flag> + <flag>wxLEFT|wxEXPAND|wxADJUST_MINSIZE</flag> + <border>6</border> </object> </object> </object> </object> - <flag>wxEXPAND|wxADJUST_MINSIZE</flag> - <border>6</border> </object> - <object class="spacer"> - <size>0,10</size> - </object> </object> </object> </object> @@ -528,4 +600,57 @@ </object> </object> </object> + <object class="wxDialog" name="nona_options_dialog"> + <title>Nona options</title> + <object class="wxBoxSizer"> + <orient>wxVERTICAL</orient> + <object class="sizeritem"> + <object class="wxFlexGridSizer"> + <cols>2</cols> + <rows>1</rows> + <object class="sizeritem"> + <object class="wxStaticText"> + <label>interpolator (i):</label> + </object> + <flag>wxALIGN_RIGHT|wxALIGN_CENTRE_VERTICAL</flag> + </object> + <object class="sizeritem"> + <object class="wxChoice" name="nona_choice_interpolator"> + <content> + <item>Poly3 (Bicubic)</item> + <item>Spline 16</item> + <item>Spline 36</item> + <item>Sinc 256</item> + <item>Spline 64</item> + <item>Bilinear</item> + <item>Nearest neighbour</item> + <item>Sinc 1024</item> + </content> + <selection>0</selection> + <tooltip>approximation of values beetwen source pixels</tooltip> + </object> + <flag>wxALIGN_CENTRE_VERTICAL</flag> + </object> + <vgap>6</vgap> + <hgap>6</hgap> + </object> + <flag>wxALL</flag> + <border>6</border> + </object> + <object class="sizeritem"> + <object class="wxCheckBox" name="nona_cb_cropped"> + <label>save cropped layers</label> + </object> + <flag>wxALL</flag> + <border>6</border> + </object> + <object class="sizeritem"> + <object class="wxButton" name="wxID_OK"> + <label></label> + </object> + <flag>wxALL|wxALIGN_RIGHT</flag> + <border>6</border> + </object> + </object> + </object> </resource> \ No newline at end of file Modified: hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp =================================================================== --- hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp 2007-11-25 00:10:39 UTC (rev 2541) @@ -143,6 +143,7 @@ << "PTMASKER=" << quoteString(progs.PTmasker) << endl << "PTROLLER=" << quoteString(progs.PTroller) << endl << "ENBLEND=" << quoteString(progs.enblend) << endl + << "ENFUSE=" << quoteString(progs.enfuse) << endl << "SMARTBLEND=" << quoteString(progs.smartblend) << endl << "HDRMERGE=" << "hugin_hdrmerge" << endl << "RM=rm" << endl @@ -167,8 +168,15 @@ o << endl; - string hdrExt(".exr"); - string ldrExt(".tif"); + o << "ENFUSE_OPTS=" << progs.enfuse_opts; + if (opts.getHFOV() == 360.0) { + // blend over the border + o << " -w"; + } + o << endl; + + string hdrExt = string(".") + opts.outputImageTypeHDR; + string ldrExt = string(".") + opts.outputImageType; string ldrRemappedExt(".tif"); string ldrRemappedMode("TIFF_m"); string hdrRemappedExt = ".exr"; @@ -197,6 +205,7 @@ << "LDR_EXPOSURE_REMAPPED_PREFIX=" << quoteString(output + "_exposure_layers_") << endl << "PROJECT_FILE=" << quoteString(ptofile) << endl << "LDR_BLENDED=" << quoteString(output + ldrExt) << endl + << "LDR_STACKED_BLENDED=" << quoteString(output + "_fused" + ldrExt) << endl << "HDR_BLENDED=" << quoteString(output + "_hdr" + hdrExt) << endl << endl << "# Input images" << endl @@ -209,9 +218,9 @@ vector<string> remappedImages; o << endl - << endl - << "# remapped images" << endl - << "LDR_LAYERS="; + << endl + << "# remapped images" << endl + << "LDR_LAYERS="; for (UIntSet::iterator it = images.begin(); it != images.end();) { std::ostringstream fns; fns << output << std::setfill('0') << std::setw(4) << *it << ldrRemappedExt; @@ -253,8 +262,8 @@ vector<UIntSet> stacks = getHDRStacks(pano, images); DEBUG_DEBUG( stacks.size() << " stacks found"); o << endl - << "# stacked images" << endl - << "HDR_STACKS_NUMBERS = "; + << "# stacked images" << endl + << "HDR_STACKS_NUMBERS = "; for (unsigned i=0; i < stacks.size(); i++) o << i << " "; o << endl; @@ -306,7 +315,7 @@ for (UIntSet::iterator it = similarExposures[i].begin(); it != similarExposures[i].end();) { exposure += pano.getSrcImage(*it).getExposureValue(); std::ostringstream fns; - fns << output << "_exposure_layers_" << std::setfill('0') << std::setw(4) << *it << ldrExt; + fns << output << "_exposure_layers_" << std::setfill('0') << std::setw(4) << *it << ldrRemappedExt; similarExposureRemappedImages.push_back(fns.str()); o << quoteString(fns.str()); ++it; @@ -317,15 +326,15 @@ o << expImgVar.str() << "_INPUT_PTMENDER = "; for (UIntSet::iterator it = similarExposures[i].begin(); it != similarExposures[i].end();) { std::ostringstream fns; - fns << output << std::setfill('0') << std::setw(4) << *it << ldrExt; + fns << output << std::setfill('0') << std::setw(4) << *it << ldrRemappedExt; o << quoteString(fns.str()); ++it; if (it != similarExposures[i].end()) o << "\\" << endl; } // calculate output exposure value for this set. o << endl - << "LDR_EXPOSURE_LAYER_" << i << "_EXPOSURE = " - << exposure / similarExposures[i].size() << endl; + << "LDR_EXPOSURE_LAYER_" << i << "_EXPOSURE = " + << exposure / similarExposures[i].size() << endl; } o << endl; o << "LDR_EXPOSURE_LAYERS = "; @@ -340,6 +349,38 @@ } o << endl << endl; + + vector<string> ldrStackedImages; + o << endl + << "# stacked images for enfuse or other automatic exposure blending tools" << endl + << "LDR_STACKS_NUMBERS = "; + for (unsigned i=0; i < stacks.size(); i++) + o << i << " "; + o << endl; + for (unsigned i=0; i < stacks.size(); i++) { + std::ostringstream fns; + fns << output << "_stack_ldr_" << std::setfill('0') << std::setw(4) << i << ldrRemappedExt; + ldrStackedImages.push_back(fns.str()); + std::ostringstream stackedImgVar; + stackedImgVar << "LDR_STACK_" << i; + o << stackedImgVar.str() << " = " << quoteString(fns.str()) << endl; + o << stackedImgVar.str() << "_INPUT = "; + for (UIntSet::iterator it = stacks[i].begin(); it != stacks[i].end();) { + std::ostringstream fns; + fns << output << "_exposure_layers_" << std::setfill('0') << std::setw(4) << *it << ldrRemappedExt; + o << quoteString(fns.str()); + ++it; + if (it != stacks[i].end()) o << "\\" << endl; + } + o << endl << endl; + } + o << endl; + o << "LDR_STACKS = "; + for (unsigned i=0; i < stacks.size(); i++) + o << "$(LDR_STACK_" << i << ") "; + o << endl; + + // TODO: include custom makefile here if (includePath.size() > 0) { o << "include " << quoteString(includePath) << endl << endl; @@ -366,6 +407,12 @@ } else cleanTargets += "$(LDR_EXPOSURE_LAYERS) "; + if (opts.outputLDRExposureBlended) { + targets += " $(LDR_STACKED_BLENDED) "; + cleanTargets += "$(LDR_EXPOSURE_LAYERS_REMAPPED) "; + } else + cleanTargets += "$(LDR_STACKED_BLENDED) "; + if (opts.outputHDRBlended) targets += "$(HDR_BLENDED) "; else @@ -430,10 +477,16 @@ { string destImg = quoteString(similarExposureRemappedImages[j]); string srcImg = quoteString(pano.getImage(*it).getFilename()); + /* o << destImg << ": " << srcImg << " $(PROJECT_FILE)" << endl - << "\t$(NONA) -r ldr -e $(LDR_EXPOSURE_LAYER_" << i << "_EXPOSURE) -m " - << ldrRemappedMode << " -o $(LDR_EXPOSURE_REMAPPED_PREFIX) -i " << *it - << " $(PROJECT_FILE)" << endl << endl; + << "\t$(NONA) -r ldr -e $(LDR_EXPOSURE_LAYER_" << i << "_EXPOSURE) -m " + << ldrRemappedMode << " -o $(LDR_EXPOSURE_REMAPPED_PREFIX) -i " << *it + << " $(PROJECT_FILE)" << endl << endl; + */ + o << destImg << ": " << srcImg << " $(PROJECT_FILE)" << endl + << "\t$(NONA) -r ldr -e " << pano.getSrcImage(*it).getExposureValue() + << " -m " << ldrRemappedMode << " -o $(LDR_EXPOSURE_REMAPPED_PREFIX) -i " << *it + << " $(PROJECT_FILE)" << endl << endl; j++; } } @@ -456,6 +509,15 @@ << endl << endl; } + // ==================================== + // output rules for LDR stack merging + + for (unsigned i=0; i < stacks.size(); i++) { + o << "$(LDR_STACK_" << i << ") : $(LDR_STACK_" << i << "_INPUT)" << endl + << "\t$(ENFUSE) -o $(LDR_STACK_" << i << ") $(LDR_STACK_" << i << "_INPUT)" + << endl << endl; + } + switch(opts.blendMode) { case PanoramaOptions::ENBLEND_BLEND: // write rules for blending with enblend @@ -468,12 +530,16 @@ << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $@ $^" << endl << endl; } + // rules for enfuse blending + o << "$(LDR_STACKED_BLENDED) : $(LDR_STACKS)" << endl; + o << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(LDR_STACKED_BLENDED) $(LDR_STACKS) " << endl << endl; + + // rules for hdr blending o << "$(HDR_BLENDED) : $(HDR_STACKS)" << endl; o << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(HDR_BLENDED) $(HDR_STACKS) " << endl << endl; break; case PanoramaOptions::NO_BLEND: - // write rules for blending with enblend o << "$(LDR_BLENDED) : $(LDR_LAYERS)" << endl << "\t-$(RM) $@" << endl << "\t$(PTROLLER) -o $@ $^ " << endl << endl; @@ -485,6 +551,10 @@ << "\t$(PTROLLER) -o $@ $^ " << endl << endl; } + o << "$(LDR_STACKED_BLENDED) : $(LDR_STACKS)" << endl + << "\t-$(RM) $@" << endl + << "\t$(PTROLLER) -o $@ $^ " << endl << endl; + // rules for non-blended HDR panoramas o << "$(HDR_BLENDED) : $(HDR_LAYERS)" << endl; o << "\t$(HDRMERGE) -m avg -o $@ $^" << endl << endl; @@ -530,5 +600,5 @@ #endif } - + } //namespace Modified: hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.h =================================================================== --- hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.h 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.h 2007-11-25 00:10:39 UTC (rev 2541) @@ -51,9 +51,11 @@ std::string PTroller; std::string enblend; std::string enblend_opts; + std::string enfuse; + std::string enfuse_opts; std::string smartblend; std::string smartblend_opts; - + PTPrograms() { // default programs @@ -64,6 +66,7 @@ PTmasker = "PTmasker"; PTroller = "PTroller"; enblend = "enblend"; + enfuse = "enfuse"; smartblend = "smartblend.exe"; } }; Modified: hugin/trunk/src/hugin_base/nona/Stitcher.h =================================================================== --- hugin/trunk/src/hugin_base/nona/Stitcher.h 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin_base/nona/Stitcher.h 2007-11-25 00:10:39 UTC (rev 2541) @@ -273,9 +273,20 @@ std::ostringstream greyname; greyname << m_basename << std::setfill('0') << std::setw(4) << imgNr << "_gray.pgm"; vigra::ImageExportInfo exinfo1(greyname.str().c_str()); - exinfo1.setPosition(remapped.boundingBox().upperLeft()); - exinfo1.setCanvasSize(vigra::Size2D(opts.getWidth(), opts.getHeight())); - vigra::exportImage(srcImageRange(remapped.m_mask), exinfo1); + if (! opts.tiff_saveROI) { + alpha.resize(opts.getROI().size()); + vigra::Rect2D newOutRect = remapped.boundingBox(); + newOutRect.moveBy(-opts.getROI().upperLeft()); + vigra::copyImage(vigra_ext::applyRect(remapped.boundingBox(), + vigra_ext::srcMaskRange(remapped)), + vigra_ext::applyRect(newOutRect, + destImage(alpha))); + vigra::exportImage(srcImageRange(alpha), exinfo1); + } else { + exinfo1.setPosition(remapped.boundingBox().upperLeft()); + exinfo1.setCanvasSize(vigra::Size2D(opts.getWidth(), opts.getHeight())); + vigra::exportImage(srcImageRange(remapped.m_mask), exinfo1); + } // calculate real alpha for saving with the image Base::m_progress.setMessage("Calculating mask"); Modified: hugin/trunk/src/hugin_base/panodata/Panorama.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/Panorama.cpp 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin_base/panodata/Panorama.cpp 2007-11-25 00:10:39 UTC (rev 2541) @@ -779,14 +779,21 @@ o << "nona" << endl; break; } - + o << "#hugin_outputLDRBlended " << (output.outputLDRBlended ? "true" : "false") << endl; o << "#hugin_outputLDRLayers " << (output.outputLDRLayers ? "true" : "false") << endl; + o << "#hugin_outputLDRExposureRemapped " << (output.outputLDRExposureRemapped ? "true" : "false") << endl; o << "#hugin_outputLDRExposureLayers " << (output.outputLDRExposureLayers ? "true" : "false") << endl; + o << "#hugin_outputLDRExposureBlended " << (output.outputLDRExposureBlended ? "true" : "false") << endl; o << "#hugin_outputHDRBlended " << (output.outputHDRBlended ? "true" : "false") << endl; o << "#hugin_outputHDRLayers " << (output.outputHDRLayers ? "true" : "false") << endl; o << "#hugin_outputHDRStacks " << (output.outputHDRStacks ? "true" : "false") << endl; + o << "#hugin_outputImageType" << output.outputImageType << endl; + o << "#hugin_outputImageTypeCompression" << output.outputImageTypeCompression << endl; + o << "#hugin_outputImageTypeHDR" << output.outputImageTypeHDR << endl; + o << "#hugin_outputImageTypeHDRCompression" << output.outputImageTypeHDRCompression << endl; + #ifdef __unix__ // reset locale setlocale(LC_NUMERIC,old_locale); @@ -2033,14 +2040,27 @@ options.outputLDRBlended = (value == "true"); } else if (var == "#hugin_outputLDRLayers") { options.outputLDRLayers = (value == "true"); + } else if (var == "#hugin_outputLDRExposureRemapped") { + options.outputLDRExposureRemapped = (value == "true"); } else if (var == "#hugin_outputLDRExposureLayers") { options.outputLDRExposureLayers = (value == "true"); + } else if (var == "#hugin_outputLDRExposureBlended") { + options.outputLDRExposureBlended = (value == "true"); } else if (var == "#hugin_outputHDRBlended") { options.outputHDRBlended = (value == "true"); } else if (var == "#hugin_outputHDRLayers") { options.outputHDRLayers = (value == "true"); } else if (var == "#hugin_outputHDRStacks") { options.outputHDRStacks = (value == "true"); + + } else if (var == "#hugin_outputImageType") { + options.outputImageType = value; + } else if (var == "#hugin_outputImageTypeCompression") { + options.outputImageTypeCompression = value; + } else if (var == "#hugin_outputImageTypeHDR") { + options.outputImageTypeHDR = value; + } else if (var == "#hugin_outputImageTypeHDRCompression") { + options.outputImageTypeHDRCompression = value; } } } Modified: hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h 2007-11-23 07:11:26 UTC (rev 2540) +++ hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h 2007-11-25 00:10:39 UTC (rev 2541) @@ -82,7 +82,6 @@ #include <vigra_ext/Interpolators.h> #include <panodata/DestPanoImage.h> - namespace HuginBase { /** Panorama image options @@ -148,12 +147,12 @@ OUTPUT_LDR=0, OUTPUT_HDR }; - + enum HDRMergeType { HDRMERGE_AVERAGE=0, HDRMERGE_DEGHOST=1 }; - + /** blenders */ enum BlendingMechanism { NO_BLEND=0, @@ -178,15 +177,14 @@ COLOR }; - public: PanoramaOptions() { reset(); }; - + virtual ~PanoramaOptions() {}; - + virtual void reset() { m_projectionFormat = EQUIRECTANGULAR; @@ -196,7 +194,7 @@ m_hfov = 360; m_size = vigra::Size2D(3000, 1500); m_roi = vigra::Rect2D(m_size); - outfile = "panorama.JPG"; + outfile = "panorama"; quality = 90; tiff_saveROI = false; tiffCompression = "NONE"; @@ -206,7 +204,7 @@ gamma = 1.0; interpolator = vigra_ext::INTERP_CUBIC; featherWidth = 10; - outputFormat = JPEG; + outputFormat = TIFF_m; remapAcceleration = MAX_SPEEDUP; blendMode = NO_BLEND; hdrMergeMode = HDRMERGE_AVERAGE; @@ -216,18 +214,26 @@ photometricHuberSigma = 2/255.0; photometricSymmetricError = false; outputMode = OUTPUT_LDR; + outputLDRBlended = true; outputLDRLayers = false; + outputLDRExposureRemapped = false; outputLDRExposureLayers = false; + outputLDRExposureBlended = false; outputHDRBlended = false; outputHDRLayers = false; outputHDRStacks = false; - + + outputImageType = "tif"; + outputImageTypeCompression = "LZW"; + outputImageTypeHDR= "exr"; + outputImageTypeHDRCompression = ""; + outputEMoRParams.resize(5,0.0); outputExposureValue = 0.0; outputPixelType = ""; } - + public: /// void printScriptLine(std::ostream & o,bool forPTOptimizer=false) const; @@ -313,25 +319,23 @@ /** get maximum possible hfov with current projection */ double getMaxHFOV() const; - + /** get maximum possible vfov with current projection */ double getMaxVFOV() const; /// DestPanoImage getDestImage() const; - - public: // they are public, because they need to be set through // get/setOptions in Panorama. std::string outfile; FileFormat outputFormat; - + // jpeg options int quality; - + // TIFF options std::string tiffCompression; b... [truncated message content] |
From: <da...@us...> - 2007-12-07 12:42:31
|
Revision: 2553 http://hugin.svn.sourceforge.net/hugin/?rev=2553&view=rev Author: dangelo Date: 2007-12-07 04:42:29 -0800 (Fri, 07 Dec 2007) Log Message: ----------- added align_image_stack, enabled processing of 16 bit images Modified Paths: -------------- hugin/trunk/src/hugin1/base_wx/platform.cpp hugin/trunk/src/hugin_base/vigra_ext/Correlation.h hugin/trunk/src/hugin_base/vigra_ext/FitPolynom.h hugin/trunk/src/tools/CMakeLists.txt Modified: hugin/trunk/src/hugin1/base_wx/platform.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/platform.cpp 2007-12-06 21:41:39 UTC (rev 2552) +++ hugin/trunk/src/hugin1/base_wx/platform.cpp 2007-12-07 12:42:29 UTC (rev 2553) @@ -26,10 +26,12 @@ #include "platform.h" -#include <CoreFoundation/CFBundle.h> #include <hugin_utils/utils.h> #ifdef __WXMAC__ + +#include <CoreFoundation/CFBundle.h> + wxString MacGetPathTOBundledResourceFile(CFStringRef filename) { wxString theResult = wxT(""); Modified: hugin/trunk/src/hugin_base/vigra_ext/Correlation.h =================================================================== --- hugin/trunk/src/hugin_base/vigra_ext/Correlation.h 2007-12-06 21:41:39 UTC (rev 2552) +++ hugin/trunk/src/hugin_base/vigra_ext/Correlation.h 2007-12-07 12:42:29 UTC (rev 2553) @@ -32,8 +32,8 @@ #include <vigra/impex.hxx> -#include "common/utils.h" -#include "common/math.h" +#include "hugin_utils/utils.h" +#include "hugin_math/hugin_math.h" #include "vigra_ext/Pyramid.h" #include "vigra_ext/FitPolynom.h" #include "vigra_ext/utils.h" @@ -331,8 +331,8 @@ vigra::Diff2D tmplLR(templPos.x + templWidth + 1, templPos.y + templWidth + 1); // clip corners to ensure the template is inside the image. vigra::Diff2D tmplImgSize(templImg.size()); - tmplUL = utils::simpleClipPoint(tmplUL, vigra::Diff2D(0,0), tmplImgSize); - tmplLR = utils::simpleClipPoint(tmplLR, vigra::Diff2D(0,0), tmplImgSize); + tmplUL = hugin_utils::simpleClipPoint(tmplUL, vigra::Diff2D(0,0), tmplImgSize); + tmplLR = hugin_utils::simpleClipPoint(tmplLR, vigra::Diff2D(0,0), tmplImgSize); vigra::Diff2D tmplSize = tmplLR - tmplUL; DEBUG_DEBUG("template position: " << templPos << " tmplUL: " << tmplUL << " templLR:" << tmplLR << " size:" << tmplSize); @@ -353,8 +353,8 @@ vigra::Diff2D searchLR(searchPos.x + swidth+1, searchPos.y + swidth+1); // clip search window vigra::Diff2D srcImgSize(searchImg.size()); - searchUL = utils::simpleClipPoint(searchUL, vigra::Diff2D(0,0), srcImgSize); - searchLR = utils::simpleClipPoint(searchLR, vigra::Diff2D(0,0), srcImgSize); + searchUL = hugin_utils::simpleClipPoint(searchUL, vigra::Diff2D(0,0), srcImgSize); + searchLR = hugin_utils::simpleClipPoint(searchLR, vigra::Diff2D(0,0), srcImgSize); // DEBUG_DEBUG("search borders: " << searchLR.x << "," << searchLR.y); vigra::Diff2D searchSize = searchLR - searchUL; @@ -536,7 +536,7 @@ bestRes.maxi = -1; double bestAngle = 0; - utils::MultiProgressDisplay dummy; + AppBase::MultiProgressDisplay dummy; // test the image at rotation angles with 30 deg. steps. double step = (stopAngle - startAngle)/(angleSteps-1); double phi=startAngle; Modified: hugin/trunk/src/hugin_base/vigra_ext/FitPolynom.h =================================================================== --- hugin/trunk/src/hugin_base/vigra_ext/FitPolynom.h 2007-12-06 21:41:39 UTC (rev 2552) +++ hugin/trunk/src/hugin_base/vigra_ext/FitPolynom.h 2007-12-07 12:42:29 UTC (rev 2553) @@ -24,7 +24,7 @@ #ifndef _FITPOLYNOM_H #define _FITPOLYNOM_H -#include "common/Matrix3.h" +#include "hugin_math/Matrix3.h" namespace vigra_ext { Modified: hugin/trunk/src/tools/CMakeLists.txt =================================================================== --- hugin/trunk/src/tools/CMakeLists.txt 2007-12-06 21:41:39 UTC (rev 2552) +++ hugin/trunk/src/tools/CMakeLists.txt 2007-12-07 12:42:29 UTC (rev 2553) @@ -14,6 +14,9 @@ add_executable(vig_optimize vig_optimize.cpp) target_link_libraries(vig_optimize ${common_libs} ${image_libs}) -install(TARGETS nona vig_optimize autooptimiser fulla +add_executable(align_image_stack align_image_stack.cpp) +target_link_libraries(align_image_stack ${common_libs} ${image_libs}) + +install(TARGETS nona vig_optimize autooptimiser fulla align_image_stack DESTINATION ${BINDIR}) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-12-09 20:44:09
|
Revision: 2559 http://hugin.svn.sourceforge.net/hugin/?rev=2559&view=rev Author: dangelo Date: 2007-12-09 12:44:06 -0800 (Sun, 09 Dec 2007) Log Message: ----------- updated to latest version of align_image_stack from pre_gsoc branch, and expanded functionality: support for 16 bit and float images, ability to optimize HFOV as well. Modified Paths: -------------- hugin/trunk/src/foreign/vigra/vigra_impex/hdr.cxx hugin/trunk/src/hugin_base/nona/Stitcher.h hugin/trunk/src/tools/align_image_stack.cpp Modified: hugin/trunk/src/foreign/vigra/vigra_impex/hdr.cxx =================================================================== --- hugin/trunk/src/foreign/vigra/vigra_impex/hdr.cxx 2007-12-09 06:21:42 UTC (rev 2558) +++ hugin/trunk/src/foreign/vigra/vigra_impex/hdr.cxx 2007-12-09 20:44:06 UTC (rev 2559) @@ -356,7 +356,7 @@ { VIGRA_IMPEX_FINALIZED(pimpl->finalized); if ( pixeltype != "FLOAT" ) - vigra_fail( "internal error: pixeltype not supported." ); + vigra_fail( "internal error: pixeltype " + pixeltype + " not supported." ); pimpl->pixeltype = "FLOAT"; } Modified: hugin/trunk/src/hugin_base/nona/Stitcher.h =================================================================== --- hugin/trunk/src/hugin_base/nona/Stitcher.h 2007-12-09 06:21:42 UTC (rev 2558) +++ hugin/trunk/src/hugin_base/nona/Stitcher.h 2007-12-09 20:44:06 UTC (rev 2559) @@ -725,12 +725,18 @@ case PanoramaOptions::HDR: outputfile = basename + ".hdr"; break; + case PanoramaOptions::EXR: + outputfile = basename + ".exr"; + break; default: DEBUG_ERROR("unsupported output format: " << opts.outputFormat); } // Base::m_progress.setMessage("saving result: " + hugin_utils::stripPath(outputfile)); DEBUG_DEBUG("Saving panorama: " << outputfile); vigra::ImageExportInfo exinfo(outputfile.c_str()); + if (opts.outputPixelType.size() > 0) { + exinfo.setPixelType(opts.outputPixelType.c_str()); + } exinfo.setXResolution(150); exinfo.setYResolution(150); // exinfo.setICCProfile(iccProfile); Modified: hugin/trunk/src/tools/align_image_stack.cpp =================================================================== --- hugin/trunk/src/tools/align_image_stack.cpp 2007-12-09 06:21:42 UTC (rev 2558) +++ hugin/trunk/src/tools/align_image_stack.cpp 2007-12-09 20:44:06 UTC (rev 2559) @@ -6,7 +6,7 @@ * * @author Pablo d'Angelo <pab...@we...> * - * $Id: align_image_stack.cpp 2510 2007-10-28 22:24:11Z dangelo $ + * $Id: align_image_stack.cpp 2493 2007-10-24 20:26:26Z dangelo $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public @@ -67,28 +67,39 @@ << std::endl << "Usage: " << name << " [options] input files" << std::endl << "Valid options are:" << std::endl - << " -o prefix save aligned images as prefix0000.tif and so on (default: aligned_)" << std::endl + << " Modes of operation:" << std::endl << " -p file Output .pto file (useful for debugging, or further refinement)" << std::endl + << " -a prefix align images, output as prefix_xxxx.tif" << std::endl + << " -o output merge images to HDR, generate output.hdr)," << std::endl + << " Modifiers" << std::endl << " -v Verbose, print progress messages" << std::endl - << " -t num Remove all control points with an error higher than num (default: 3)" << std::endl - << " -f HFOV approximate horizontal field of view of input images, uses if EXIF info not complete" << std::endl - << " -c num Harris corner threshold (default: 5)" << std::endl + << " -t num Remove all control points with an error higher than num pixels (default: 3)" << std::endl + << " -f HFOV approximate horizontal field of view of input images, use if EXIF info not complete" << std::endl + << " -m Optimize field of view for all images, execpt for first." << std::endl + << " Useful for aligning focus stacks with slightly different magnification." << std::endl + << " -c num number of control points to create between adjectant images (default: 200)" << std::endl << " -h Display help (this text)" << std::endl << std::endl; } template <class ImageType> -void createCtrlPoints(Panorama & pano, int img1, const ImageType & leftImg, int img2, const ImageType & rightImg, double scale, double cornerThreshold) +void createCtrlPoints(Panorama & pano, int img1, const ImageType & leftImg, int img2, const ImageType & rightImg, int pyrLevel, double scale, unsigned nPoints) { ////////////////////////////////////////////////// // find interesting corners using harris corner detector + double scaleFactor = 1<<pyrLevel; + BImage leftCorners(leftImg.size(), vigra::UInt8(0)); FImage leftCornerResponse(leftImg.size()); - DEBUG_DEBUG("running corner detector threshold: " << cornerThreshold << " scale: " << scale ); + DEBUG_DEBUG("running corner detector. nPoints: " << nPoints << ", scale: " << scale ); + if (g_verbose > 1) { + std::cout << "Trying to find " << nPoints << " corners... "; + } + // find corner response at scale scale vigra::cornerResponseFunction(srcImageRange(leftImg, GreenAccessor<typename ImageType::value_type>()), destImage(leftCornerResponse), @@ -102,6 +113,42 @@ if (g_verbose > 5) exportImage(srcImageRange(leftCorners), vigra::ImageExportInfo("corner_response_maxima.png")); + + DEBUG_DEBUG("selecting points"); + // select the nPoints with the highest response + // some distribution criteria might be useful, too + // to avoid clustering all points on a single object. + double minResponse = 0; + std::multimap<double, vigra::Diff2D> points; + // sample grid on img1 and try to add ctrl points + for (int x=0; x < leftImg.size().x; x++ ) { + for (int y=0; y < leftImg.size().y; y++ ) { + if (leftCorners(x,y) == 0) { + continue; + } + double resp = leftCornerResponse(x,y); + if (resp > minResponse) { + // add to point map + points.insert(make_pair(resp,Diff2D(x,y))); + // if we have reached the maximum + // number of points, increase the threshold, to avoid + // growing the points map too much. + // extract more than nPoints, because some might be bad + // and cannot be matched with the other image. + if (points.size() > 5*nPoints) { + // remove the point with the lowest corner response. + points.erase(points.begin()); + // use new threshold for next selection. + minResponse = points.begin()->first; + } + } + } + } + if (g_verbose > 1) { + std::cout << " found " << points.size() << " candidates" << std::endl; + } + +/* DEBUG_DEBUG("thresholding corner response"); // threshold corner response to keep only strong corners (above 400.0) transformImage(srcImageRange(leftCornerResponse), destImage(leftCornerResponse), @@ -113,50 +160,50 @@ if (g_verbose > 5) exportImage(srcImageRange(leftCorners), vigra::ImageExportInfo("corner_response_threshold.png")); +*/ + unsigned nGood = 0; + unsigned nBad = 0; + // loop over all points, starting with the highest corner score + for (multimap<double, Diff2D>::reverse_iterator it = points.rbegin(); + it != points.rend(); + ++it) + { + if (nGood >= nPoints) { + // we have enough points, stop + break; + } - int nGood = 0; - int nBad = 0; - // sample grid on img1 and try to add ctrl points - for (int x=0; x < leftImg.size().x; x++ ) { - for (int y=0; y < leftImg.size().y; y++ ) { - if (leftCorners(x,y) > 0) { - // we found a corner. correlate with second image + long templWidth = 20; + long sWidth = 100; + double corrThresh = 0.9; + //double curvThresh = 0.0; - // load parameters + vigra_ext::CorrelationResult res; - long templWidth = 20; - long sWidth = 100; - double corrThresh = 0.9; - double curvThresh = 0.0; - - vigra_ext::CorrelationResult res; - vigra::Diff2D roundP1(x, y); - vigra::Diff2D roundP2(x, y); - - res = vigra_ext::PointFineTune(leftImg, - roundP1, - templWidth, - rightImg, - roundP2, - sWidth - ); - - if (g_verbose > 1) { - cout << "corr coeff: " << res.maxi << " curv:" << res.curv.x << " " << res.curv.y << std::endl; - } - if (res.maxi < corrThresh ) - { - nBad++; - DEBUG_DEBUG("low correlation: " << res.maxi << " curv: " << res.curv); - } else { - nGood++; - // add control point - ControlPoint p(img1, roundP1.x, roundP1.y, img2, res.maxpos.x, res.maxpos.y); - pano.addCtrlPoint(p); - } - } + res = vigra_ext::PointFineTune(leftImg, + (*it).second, + templWidth, + rightImg, + (*it).second, + sWidth + ); + if (g_verbose > 2) { + cout << (*it).second.x << "," << (*it).second.y << " -> " << res.maxpos.x << "," << res.maxpos.x << ": corr coeff: " << res.maxi << " curv:" << res.curv.x << " " << res.curv.y << std::endl; } + if (res.maxi < corrThresh ) + { + nBad++; + DEBUG_DEBUG("low correlation: " << res.maxi << " curv: " << res.curv); + } else { + nGood++; + // add control point + ControlPoint p(img1, (*it).second.x * scaleFactor, + (*it).second.y * scaleFactor, + img2, res.maxpos.x * scaleFactor, + res.maxpos.y * scaleFactor); + pano.addCtrlPoint(p); + } } if (g_verbose > 0) { cout << "Number of good matches: " << nGood << ", bad matches: " << nBad << std::endl; @@ -164,78 +211,45 @@ }; -int main(int argc, char *argv[]) +struct Parameters { - // parse arguments - const char * optstring = "f:hp:vo:t:c:o:"; - int c; + Parameters() + { + cpErrorThreshold = 3; + nPoints = 200; + hfov = 0; + pyrLevel = 2; + optHFOV = false; + } - opterr = 0; - - g_verbose = 0; - int nPoints = 100; - double cpErrorThreshold = 3; - double cornerThreshold = 5; - double hfov = 0; - std::string outputPrefix = "aligned_"; + double cpErrorThreshold; + int nPoints; + double hfov; + bool optHFOV; + int pyrLevel; + std::string alignedPrefix; std::string ptoFile; + std::string hdrFile; string basename; - while ((c = getopt (argc, argv, optstring)) != -1) - switch (c) { - case 'c': - cornerThreshold = atof(optarg); - break; - case 'f': - hfov = atof(optarg); - break; - case 't': - cpErrorThreshold = atof(optarg); - break; - case 'p': - ptoFile = optarg; - break; - case 'o': - outputPrefix = optarg; - break; - case 'v': - g_verbose++; - break; - case 'h': - usage(argv[0]); - return 1; - default: - cerr << "Invalid parameter: " << optarg << std::endl; - usage(argv[0]); - return 1; - } +}; - unsigned nFiles = argc - optind; - if (nFiles < 2) { - std::cerr << std::endl << "Error: at least two files need to be specified" << std::endl <<std::endl; - usage(argv[0]); - return 1; - } - - // extract file names - std::vector<std::string> files; - for (size_t i=0; i < nFiles; i++) - files.push_back(argv[optind+i]); - - // suppress tiff warnings - //TIFFSetWarningHandler(0); - -// utils::StreamMultiProgressDisplay pdisp(cout); - //utils::MultiProgressDisplay pdisp; - - typedef vigra::UInt16RGBImage ImageType; +template <class PixelType> +int main2(std::vector<std::string> files, Parameters param) +{ + typedef vigra::BasicImage<PixelType> ImageType; try { // load first image vigra::ImageImportInfo firstImgInfo(files[0].c_str()); - ImageType * leftImg = new UInt16RGBImage(firstImgInfo.size()); - vigra::importImage(firstImgInfo, destImage(*leftImg)); + ImageType leftImgOrig(firstImgInfo.size()); - ImageType * rightImg = new UInt16RGBImage(firstImgInfo.size()); + // rescale image + ImageType * leftImg = new ImageType(); + { + vigra::importImage(firstImgInfo, destImage(leftImgOrig)); + reduceNTimes(leftImgOrig, *leftImg, param.pyrLevel); + } + Panorama pano; Lens l; pano.addLens(l); @@ -250,14 +264,16 @@ SrcPanoImage srcImg; srcImg.setFilename(files[0]); SrcPanoImage::initImageFromFile(srcImg, focalLength, cropFactor); + // disable autorotate + srcImg.setRoll(0); if (srcImg.getSize().x == 0 || srcImg.getSize().y == 0) { cerr << "Could not decode image: " << files[0] << "Unsupported image file format"; return 1; } // use hfov specified by user. - if (hfov > 0) { - srcImg.setHFOV(hfov); + if (param.hfov > 0) { + srcImg.setHFOV(param.hfov); } else if (cropFactor == 0) { // could not read HFOV, assuming default: 50 srcImg.setHFOV(50); @@ -269,14 +285,18 @@ // setup output to be exactly similar to input image PanoramaOptions opts; + opts.setProjection(PanoramaOptions::RECTILINEAR); opts.setHFOV(srcImg.getHFOV(), false); - opts.setWidth(srcImg.getSize().x, false); - opts.setHeight(srcImg.getSize().y); - opts.setProjection(PanoramaOptions::RECTILINEAR); + if (srcImg.getRoll() == 0.0 || srcImg.getRoll() == 180.0) { + opts.setWidth(srcImg.getSize().x, false); + opts.setHeight(srcImg.getSize().y); + } else { + opts.setWidth(srcImg.getSize().y, false); + opts.setHeight(srcImg.getSize().x); + } // output to tiff format opts.outputFormat = PanoramaOptions::TIFF_m; opts.tiff_saveROI = false; - opts.outfile = outputPrefix; // m estimator, to be more robust against points on moving objects opts.huberSigma = 2; pano.setOptions(opts); @@ -285,8 +305,10 @@ // optimize nothing in the first image OptimizeVector optvars(1); + ImageType * rightImg = new ImageType(leftImg->size()); + // loop to add images and control points between them. - for (int i = 1; i < (int) nFiles; i++) { + for (int i = 1; i < (int) files.size(); i++) { if (g_verbose > 0) { cout << "Creating control points between " << files[i-1] << " and " << files[i] << endl; } @@ -297,6 +319,13 @@ cerr << "Could not decode image: " << files[i] << "Unsupported image file format"; return 1; } + if (param.hfov > 0) { + srcImg.setHFOV(param.hfov); + } else if (cropFactor == 0) { + // could not read HFOV, assuming default: 50 + srcImg.setHFOV(50); + } + PanoImage panoImg(files[i], srcImg.getSize().x, srcImg.getSize().y, 0); int imgNr = pano.addImage(panoImg, defaultVars); pano.setSrcImage(imgNr, srcImg); @@ -304,12 +333,16 @@ // load the actual image data of the next image vigra::ImageImportInfo nextImgInfo(files[i].c_str()); assert(nextImgInfo.size() == firstImgInfo.size()); - vigra::importImage(nextImgInfo, destImage(*rightImg)); + { + ImageType rightImgOrig(nextImgInfo.size()); + vigra::importImage(nextImgInfo, destImage(rightImgOrig)); + reduceNTimes(rightImgOrig, *rightImg, param.pyrLevel); + } // add control points. - // TODO: work on smaller images, or use a fast descriptor, based on - // integral images. - createCtrlPoints(pano, i-1, *leftImg, i, *rightImg, 8, cornerThreshold); + // work on smaller images + // TODO: or use a fast interest point operator. + createCtrlPoints(pano, i-1, *leftImg, i, *rightImg, param.pyrLevel, 2, param.nPoints); // swap images; delete leftImg; @@ -321,6 +354,9 @@ vars.insert("y"); vars.insert("p"); vars.insert("r"); + if (param.optHFOV) { + vars.insert("v"); + } optvars.push_back(vars); } delete leftImg; @@ -332,36 +368,161 @@ // need to do some basic outlier pruning. // remove all points with error higher than a specified threshold - CPVector cps = pano.getCtrlPoints(); - CPVector newCPs; - for (int i=0; i < (int)cps.size(); i++) { - if (cps[i].error < cpErrorThreshold) { - newCPs.push_back(cps[i]); + if (param.cpErrorThreshold > 0) { + CPVector cps = pano.getCtrlPoints(); + CPVector newCPs; + for (int i=0; i < (int)cps.size(); i++) { + if (cps[i].error < param.cpErrorThreshold) { + newCPs.push_back(cps[i]); + } } + if (g_verbose > 0) { + cout << "Ctrl points before pruning: " << cps.size() << ", after: " << newCPs.size() << std::endl; + } + pano.setCtrlPoints(newCPs); + // reoptimize + PTools::optimize(pano); } - if (g_verbose > 0) { - cout << "Ctrl points before pruning: " << cps.size() << ", after: " << newCPs.size() << std::endl; - } - pano.setCtrlPoints(newCPs); - // reoptimize - PTools::optimize(pano); UIntSet imgs = pano.getActiveImages(); - if (ptoFile.size() > 0) { - std::ofstream script(ptoFile.c_str()); + if (param.ptoFile.size() > 0) { + std::ofstream script(param.ptoFile.c_str()); pano.printPanoramaScript(script, optvars, pano.getOptions(), imgs, false, ""); } - // remap all images - StreamMultiProgressDisplay progress(cout); + if (param.hdrFile.size()) { + // TODO: photometric alignment (HDR, fixed white balance) + //utils::StreamProgressReporter progress(2.0); + //loadImgsAndExtractPoints(pano, nPoints, pyrLevel, randomPoints, progress, points); + //smartOptimizePhotometric - stitchPanorama(pano, opts, + // switch to HDR output mode + PanoramaOptions opts = pano.getOptions(); + opts.outputFormat = PanoramaOptions::HDR; + opts.outputPixelType = "FLOAT"; + opts.outputMode = PanoramaOptions::OUTPUT_HDR; + opts.outfile = param.hdrFile; + pano.setOptions(opts); + + // remap all images + StreamMultiProgressDisplay progress(cout); + stitchPanorama(pano, pano.getOptions(), progress, opts.outfile, imgs); + } + if (param.alignedPrefix.size()) { + // disable all exposure compensation stuff. + PanoramaOptions opts = pano.getOptions(); + opts.outputExposureValue = 0; + opts.outputMode = PanoramaOptions::OUTPUT_LDR; + opts.outputFormat = PanoramaOptions::TIFF_m; + opts.outputPixelType = ""; + opts.outfile = param.alignedPrefix; + pano.setOptions(opts); + for (unsigned i=0; i < pano.getNrOfImages(); i++) { + SrcPanoImage img = pano.getSrcImage(i); + img.setExposureValue(0); +// img.setResponseType(SrcPanoImage::RESPONSE_LINEAR); + pano.setSrcImage(i, img); + } + // remap all images + StreamMultiProgressDisplay progress(cout); + stitchPanorama(pano, pano.getOptions(), + progress, opts.outfile, imgs); + } } catch (std::exception & e) { - cerr << "caught exception: " << e.what() << std::endl; + cerr << "ERROR: caught exception: " << e.what() << std::endl; return 1; } return 0; } + +int main(int argc, char *argv[]) +{ + // parse arguments + const char * optstring = "a:f:hmp:vo:t:c:o:"; + int c; + + opterr = 0; + + g_verbose = 0; + + Parameters param; +// // use to override exposure value on the command line? +// std::map<std::string, double> exposureValueMap; + while ((c = getopt (argc, argv, optstring)) != -1) + switch (c) { + case 'a': + param.alignedPrefix = optarg; + break; + case 'c': + param.nPoints = atoi(optarg); + break; + case 'f': + param.hfov = atof(optarg); + break; + case 'm': + param.optHFOV = true; + break; + case 't': + param.cpErrorThreshold = atof(optarg); + break; + case 'p': + param.ptoFile = optarg; + break; + case 'o': + param.hdrFile = optarg; + break; + case 'v': + g_verbose++; + break; + case 'h': + usage(argv[0]); + return 1; + default: + cerr << "Invalid parameter: " << optarg << std::endl; + usage(argv[0]); + return 1; + } + + unsigned nFiles = argc - optind; + if (nFiles < 2) { + std::cerr << std::endl << "Error: at least two files need to be specified" << std::endl <<std::endl; + usage(argv[0]); + return 1; + } + + if (param.hdrFile.size() == 0 && param.ptoFile.size() == 0 && param.alignedPrefix.size() == 0) { + std::cerr << std::endl + << "ERROR: Please specify at least one of the -p, -o or -a options." << std::endl + << std::endl; + usage(argv[0]); + return 1; + } + + // extract file names + std::vector<std::string> files; + for (size_t i=0; i < nFiles; i++) + files.push_back(argv[optind+i]); + + // TODO: sort images in pano by exposure + + vigra::ImageImportInfo firstImgInfo(files[0].c_str()); + + std::string pixelType = firstImgInfo.getPixelType(); + if (pixelType == "UINT8") { + return main2<RGBValue<UInt8> >(files, param); + } else if (pixelType == "INT16") { + return main2<RGBValue<Int16> >(files, param); + } else if (pixelType == "UINT16") { + return main2<RGBValue<UInt16> >(files, param); + } else if (pixelType == "FLOAT") { + return main2<RGBValue<float> >(files, param); + } else { + cerr << " ERROR: unsupported pixel type: " << pixelType << std::endl; + return 1; + } + + return 0; +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-12-14 14:22:43
|
Revision: 2565 http://hugin.svn.sourceforge.net/hugin/?rev=2565&view=rev Author: dangelo Date: 2007-12-14 06:22:41 -0800 (Fri, 14 Dec 2007) Log Message: ----------- fixed installation on unix Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/MainFrame.cpp hugin/trunk/src/hugin_config.h.in.cmake Modified: hugin/trunk/src/hugin1/hugin/MainFrame.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2007-12-14 13:40:41 UTC (rev 2564) +++ hugin/trunk/src/hugin1/hugin/MainFrame.cpp 2007-12-14 14:22:41 UTC (rev 2565) @@ -192,7 +192,7 @@ wxSIMPLE_BORDER); #endif } else { - wxLogFatalError(_("Fatal installation error\nThe xrc directory was not found.\nPlease ensure it is placed in the same directory as hugin.exe")); + wxLogFatalError(_("Fatal installation error\nThe data/splash.png was not found at:") + huginApp::Get()->GetXRCPath()); abort(); } splash->Refresh(); Modified: hugin/trunk/src/hugin_config.h.in.cmake =================================================================== --- hugin/trunk/src/hugin_config.h.in.cmake 2007-12-14 13:40:41 UTC (rev 2564) +++ hugin/trunk/src/hugin_config.h.in.cmake 2007-12-14 14:22:41 UTC (rev 2565) @@ -55,7 +55,7 @@ #define INSTALL_LOCALE_DIR "${INSTALL_LOCALE_DIR}" /* Location for XRC files and other data, as defined during configuration*/ -#define INSTALL_XRC_DIR "${INSTALL_XRC_DIR}" +#define INSTALL_XRC_DIR "${INSTALL_XRC_DIR}/" #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2007-12-17 08:22:31
|
Revision: 2566 http://hugin.svn.sourceforge.net/hugin/?rev=2566&view=rev Author: dangelo Date: 2007-12-17 00:22:27 -0800 (Mon, 17 Dec 2007) Log Message: ----------- Fixed compilation problems with MSVC Modified Paths: -------------- hugin/trunk/src/deghosting/hugin_hdrmerge.cpp hugin/trunk/src/hugin1/base_wx/huginConfig.cpp hugin/trunk/src/hugin1/hugin/NonaOptionsDialog.cpp hugin/trunk/src/hugin_base/hugin_math/hugin_math.h hugin/trunk/src/hugin_base/vigra_ext/Correlation.h Modified: hugin/trunk/src/deghosting/hugin_hdrmerge.cpp =================================================================== --- hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-12-14 14:22:41 UTC (rev 2565) +++ hugin/trunk/src/deghosting/hugin_hdrmerge.cpp 2007-12-17 08:22:27 UTC (rev 2566) @@ -178,7 +178,7 @@ std::string mode = "khan"; bool onlyCompleteOverlap = false; int num_iters = 1; - char save = 0; + unsigned char save = 0; char adv = 0; char ui = 0; Modified: hugin/trunk/src/hugin1/base_wx/huginConfig.cpp =================================================================== --- hugin/trunk/src/hugin1/base_wx/huginConfig.cpp 2007-12-14 14:22:41 UTC (rev 2565) +++ hugin/trunk/src/hugin1/base_wx/huginConfig.cpp 2007-12-17 08:22:27 UTC (rev 2566) @@ -57,7 +57,6 @@ // add trailing directory separator, if needed wxFileName bindirFN = wxFileName::DirName(bundledBinDir); bindir = bindirFN.GetPath(); - wxMessageBox(bindir, wxT("bindir")); #endif // on unix, custom tools don't make any sense, since on unix, hugin is never // bundled. Just just the executables in the path @@ -102,4 +101,4 @@ wxFileName::SplitPath( argv0, &huginPath, NULL, NULL ); #endif return huginPath; -} \ No newline at end of file +} Modified: hugin/trunk/src/hugin1/hugin/NonaOptionsDialog.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/NonaOptionsDialog.cpp 2007-12-14 14:22:41 UTC (rev 2565) +++ hugin/trunk/src/hugin1/hugin/NonaOptionsDialog.cpp 2007-12-17 08:22:27 UTC (rev 2566) @@ -52,7 +52,7 @@ // Define a constructor for the Pano Panel NonaOptionsDialog::NonaOptionsDialog(wxWindow *parent, Panorama & pano) - : wxDialog(parent, 1, _("Nona options")), + : wxDialog(parent, 1, wxString(_("Nona options"))), pano(pano), updatesDisabled(false) { Modified: hugin/trunk/src/hugin_base/hugin_math/hugin_math.h =================================================================== --- hugin/trunk/src/hugin_base/hugin_math/hugin_math.h 2007-12-14 14:22:41 UTC (rev 2565) +++ hugin/trunk/src/hugin_base/hugin_math/hugin_math.h 2007-12-17 08:22:27 UTC (rev 2566) @@ -27,6 +27,7 @@ #ifndef _HUGIN_MATH_HUGIN_MATH_H #define _HUGIN_MATH_HUGIN_MATH_H +#include <cmath> #include <math.h> #include <iostream> #include <vigra/diff2d.hxx> @@ -89,6 +90,15 @@ ((x > (float)INT_MAX) ? INT_MAX : static_cast<int>(x + 0.5))); } + inline isnan(double x) + { +#ifndef _MSC_VER + return std::isnan(x) +#else + return _isnan(x); +#endif + } + // a simple point class template <class T> struct TDiff2D Modified: hugin/trunk/src/hugin_base/vigra_ext/Correlation.h =================================================================== --- hugin/trunk/src/hugin_base/vigra_ext/Correlation.h 2007-12-14 14:22:41 UTC (rev 2565) +++ hugin/trunk/src/hugin_base/vigra_ext/Correlation.h 2007-12-17 08:22:27 UTC (rev 2566) @@ -251,7 +251,7 @@ double a,b,c; FitPolynom(x, x + 2*interpWidth+1, zx, a,b,c); - if (std::isnan(a) || std::isnan(b) || std::isnan(c)) { + if (hugin_utils::isnan(a) || hugin_utils::isnan(b) || hugin_utils::isnan(c)) { exportImage(img,vigra::ImageExportInfo("test.tif")); DEBUG_ERROR("Bad polynomial fit results"); res.maxpos.x=max.x; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bto...@us...> - 2007-12-19 06:26:59
|
Revision: 2572 http://hugin.svn.sourceforge.net/hugin/?rev=2572&view=rev Author: btownshend Date: 2007-12-18 22:26:56 -0800 (Tue, 18 Dec 2007) Log Message: ----------- Fixed some minor compiler warnings that occur on mac, mostly unsigned int/int comparisions and unused variables Modified Paths: -------------- hugin/trunk/src/deghosting/khan.cpp hugin/trunk/src/foreign/jhead/exif.cpp hugin/trunk/src/foreign/vigra/vigra_impex/tiff.cxx hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp hugin/trunk/src/hugin_base/vigra_ext/ReduceOpenEXR.h hugin/trunk/src/tools/autooptimiser.cpp hugin/trunk/src/tools/vig_optimize.cpp Modified: hugin/trunk/src/deghosting/khan.cpp =================================================================== --- hugin/trunk/src/deghosting/khan.cpp 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/deghosting/khan.cpp 2007-12-19 06:26:56 UTC (rev 2572) @@ -225,7 +225,7 @@ if(g_verbose > 1) cout << "Remappin input images" << endl; - + if((width = Fimages2Vectors(exrInfo, alpha_images, grayImages, &source_images, &img_bounds)) == -1) { @@ -240,8 +240,10 @@ } height = source_images.size()/width; + if(Fimages2Vectors(exrInfo, alpha_images, imgWeights, &weights) == -1) { cerr << "Error converting images to vectors" << endl; + cerr << "Perhaps *_gray.pgm files missing from command line?" << endl; abort(); } @@ -265,7 +267,9 @@ int bias = 5; //hat function coefficient to make "wrong" pixels less weighted //min value 1 int rad_neighbors = 1; +#if ENABLE_SCALING int jbu_neighbors = 2; +#endif vector<vector<float> > init_weights(weights); if(g_verbose > 0) Modified: hugin/trunk/src/foreign/jhead/exif.cpp =================================================================== --- hugin/trunk/src/foreign/jhead/exif.cpp 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/foreign/jhead/exif.cpp 2007-12-19 06:26:56 UTC (rev 2572) @@ -794,7 +794,7 @@ ProcessExifDir(ImageInfo, ExifSection+8+FirstOffset, ExifSection+8, length-6, 0); if (ImageInfo.ShowTags){ - printf("Non settings part of Exif header: %ld bytes\n",ExifSection+length-LastExifRefd); + printf("Non settings part of Exif header: %d bytes\n",(int)(ExifSection+length-LastExifRefd)); } } Modified: hugin/trunk/src/foreign/vigra/vigra_impex/tiff.cxx =================================================================== --- hugin/trunk/src/foreign/vigra/vigra_impex/tiff.cxx 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/foreign/vigra/vigra_impex/tiff.cxx 2007-12-19 06:26:56 UTC (rev 2572) @@ -501,7 +501,7 @@ canvasSize.y = u32value; } - if (canvasSize.x < position.x + width || canvasSize.y < position.y + height) + if ((uint32)canvasSize.x < position.x + width || (uint32)canvasSize.y < position.y + height) { //std::cerr << "Warning: invalid TIFFTAG_PIXAR_IMAGEFULLWIDTH/LENGTH tags" << std::endl; canvasSize.x = canvasSize.y = 0; @@ -859,8 +859,8 @@ TIFFSetField( tiff, TIFFTAG_YPOSITION, position.y / y_resolution); } - if (canvasSize.x >= position.x + width - && canvasSize.y >= position.y + height) + if ((uint32)canvasSize.x >= position.x + width + && (uint32)canvasSize.y >= position.y + height) { //std::cerr << "Setting canvas size: " << canvasSize << std::endl; TIFFSetField( tiff, TIFFTAG_PIXAR_IMAGEFULLWIDTH, canvasSize.x); Modified: hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/hugin1/hugin/OptimizePanel.cpp 2007-12-19 06:26:56 UTC (rev 2572) @@ -375,7 +375,7 @@ void OptimizePanel::setOptimizeVector(const OptimizeVector & optvec) { - DEBUG_ASSERT((int)optvec.size() == m_yaw_list->GetCount()); + DEBUG_ASSERT((int)optvec.size() == (int)m_yaw_list->GetCount()); for (int i=0; i < (int) m_pano->getNrOfLenses(); i++) { m_v_list->Check(i,false); Modified: hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/hugin1/hugin/PreferencesDialog.cpp 2007-12-19 06:26:56 UTC (rev 2572) @@ -395,7 +395,7 @@ #ifdef HAVE_PANO12_QUERYFEATURE_H #ifdef __WXMSW__ HINSTANCE hDll = NULL; -#else +#elif (!defined __WXMAC__) void *hDll = NULL; #endif PROC_QF pfQF = NULL; @@ -540,7 +540,10 @@ // use wxConvLocal to deal with the copyright symbols used by panotools m_PTDetails = wxString(str2, wxConvLocal); +#ifndef __WXMAC__ cleanup: +#endif + if (bSuccess) { #ifdef __WXMSW__ Modified: hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2007-12-19 06:26:56 UTC (rev 2572) @@ -117,8 +117,8 @@ double img2x, img2y; // need to scale the images. // sample grid on img1 and try to add ctrl points - for (unsigned int x=0; x < leftImg.width(); x++ ) { - for (unsigned int y=0; y < leftImg.height(); y++) { + for (unsigned int x=0; x < (unsigned int)leftImg.width(); x++ ) { + for (unsigned int y=0; y < (unsigned int)leftImg.height(); y++) { if (leftCorners(x,y) > 0) { img1ToSphere.transformImgCoord(sphx, sphy, scale*x, scale*y); sphereToImg2.transformImgCoord(img2x, img2y, sphx, sphy); @@ -423,13 +423,13 @@ PanoImage img(filename, inf.width(), inf.height(), 0); VariableMap vars; fillVariableMap(vars); - int imgNr = pano.addImage(img, vars); + (void)pano.addImage(img, vars); } } } - int nOldImg = pano.getNrOfImages(); + unsigned int nOldImg = pano.getNrOfImages(); PanoramaMemento newPanoMem; if (newPanoMem.loadPTScript(in, "")) { Modified: hugin/trunk/src/hugin_base/vigra_ext/ReduceOpenEXR.h =================================================================== --- hugin/trunk/src/hugin_base/vigra_ext/ReduceOpenEXR.h 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/hugin_base/vigra_ext/ReduceOpenEXR.h 2007-12-19 06:26:56 UTC (rev 2572) @@ -147,7 +147,7 @@ (inputROIs[j].left()-outputROI.left()) + k*roiWidth; int nElem = inputROIs[j].width(); size_t n = fread(grayp, 1, nElem, inputGrayFiles[j]->get()); - assert (n == nElem); + assert (n == (size_t)nElem); } } inputGrayPtr[j] = inputGrayArrays[j]->data(); Modified: hugin/trunk/src/tools/autooptimiser.cpp =================================================================== --- hugin/trunk/src/tools/autooptimiser.cpp 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/tools/autooptimiser.cpp 2007-12-19 06:26:56 UTC (rev 2572) @@ -217,7 +217,7 @@ if (chooseProj) { PanoramaOptions opts = pano.getOptions(); - double hfov, vfov, height; + double hfov, vfov; CalculateFitPanorama fitPano = CalculateFitPanorama(pano); fitPano.run(); opts.setHFOV(fitPano.getResultHorizontalFOV()); Modified: hugin/trunk/src/tools/vig_optimize.cpp =================================================================== --- hugin/trunk/src/tools/vig_optimize.cpp 2007-12-18 21:00:00 UTC (rev 2571) +++ hugin/trunk/src/tools/vig_optimize.cpp 2007-12-19 06:26:56 UTC (rev 2572) @@ -277,7 +277,7 @@ PhotometricOptimizer photoopt(pano, &progressDisplay, pano.getOptimizeVector(), points); photoopt.run(); - double error = photoopt.getResultError(); + // double error = photoopt.getResultError(); progressDisplay.finishSubtask(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-01-02 16:46:27
|
Revision: 2593 http://hugin.svn.sourceforge.net/hugin/?rev=2593&view=rev Author: dangelo Date: 2008-01-02 08:46:25 -0800 (Wed, 02 Jan 2008) Log Message: ----------- script to update .po files from sources, merged translations of all programs into a single .po file Modified Paths: -------------- hugin/trunk/src/CMakeLists.txt hugin/trunk/src/hugin1/hugin/CMakeLists.txt hugin/trunk/src/hugin1/nona_gui/CMakeLists.txt hugin/trunk/src/hugin1/nona_gui/nona_gui.cpp hugin/trunk/src/hugin_base/hugin_utils/platform.h Added Paths: ----------- hugin/trunk/src/translations/ hugin/trunk/src/translations/CMakeLists.txt hugin/trunk/src/translations/POTFILES.in hugin/trunk/src/translations/README.txt hugin/trunk/src/translations/ca_ES.po hugin/trunk/src/translations/cs_CZ.po hugin/trunk/src/translations/de.po hugin/trunk/src/translations/es.po hugin/trunk/src/translations/extract-messages.sh hugin/trunk/src/translations/fr.po hugin/trunk/src/translations/hu.po hugin/trunk/src/translations/hugin.pot hugin/trunk/src/translations/it.po hugin/trunk/src/translations/ja.po hugin/trunk/src/translations/nl.po hugin/trunk/src/translations/pl.po hugin/trunk/src/translations/pt_BR.po hugin/trunk/src/translations/ru.po hugin/trunk/src/translations/sk.po hugin/trunk/src/translations/sv.po hugin/trunk/src/translations/t hugin/trunk/src/translations/uk.po hugin/trunk/src/translations/zh_CN.po Removed Paths: ------------- hugin/trunk/src/hugin1/hugin/po/ hugin/trunk/src/hugin1/nona_gui/po/ Modified: hugin/trunk/src/CMakeLists.txt =================================================================== --- hugin/trunk/src/CMakeLists.txt 2008-01-02 16:43:57 UTC (rev 2592) +++ hugin/trunk/src/CMakeLists.txt 2008-01-02 16:46:25 UTC (rev 2593) @@ -37,3 +37,4 @@ add_subdirectory(hugin1) ENDIF(wxWidgets_FOUND) +add_subdirectory(translations) Modified: hugin/trunk/src/hugin1/hugin/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin1/hugin/CMakeLists.txt 2008-01-02 16:43:57 UTC (rev 2592) +++ hugin/trunk/src/hugin1/hugin/CMakeLists.txt 2008-01-02 16:46:25 UTC (rev 2593) @@ -104,6 +104,4 @@ INSTALL(FILES hugin.xml DESTINATION ${DATADIR}/mime/packages) ENDIF(APPLE) - -add_subdirectory(po) add_subdirectory(xrc) Modified: hugin/trunk/src/hugin1/nona_gui/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin1/nona_gui/CMakeLists.txt 2008-01-02 16:43:57 UTC (rev 2592) +++ hugin/trunk/src/hugin1/nona_gui/CMakeLists.txt 2008-01-02 16:46:25 UTC (rev 2593) @@ -10,4 +10,3 @@ install(TARGETS nona_gui DESTINATION ${BINDIR}) -add_subdirectory(po) Modified: hugin/trunk/src/hugin1/nona_gui/nona_gui.cpp =================================================================== --- hugin/trunk/src/hugin1/nona_gui/nona_gui.cpp 2008-01-02 16:43:57 UTC (rev 2592) +++ hugin/trunk/src/hugin1/nona_gui/nona_gui.cpp 2008-01-02 16:46:25 UTC (rev 2593) @@ -119,7 +119,7 @@ #endif // set the name of locale recource to look for - m_locale.AddCatalog(wxT("nona_gui")); + m_locale.AddCatalog(wxT("hugin")); #if 0 #ifdef wxUSE_UNIX Modified: hugin/trunk/src/hugin_base/hugin_utils/platform.h =================================================================== --- hugin/trunk/src/hugin_base/hugin_utils/platform.h 2008-01-02 16:43:57 UTC (rev 2592) +++ hugin/trunk/src/hugin_base/hugin_utils/platform.h 2008-01-02 16:46:25 UTC (rev 2593) @@ -114,7 +114,7 @@ return str("\"") + ret + str("\""); #else str ret; - ret = quoteStringInternal(arg, str("\\"), str("\"")); + ret = quoteStringInternal(arg, str("\\"), str("\"$'\\")); return str("\"") + ret + str("\""); #endif } Added: hugin/trunk/src/translations/CMakeLists.txt =================================================================== --- hugin/trunk/src/translations/CMakeLists.txt (rev 0) +++ hugin/trunk/src/translations/CMakeLists.txt 2008-01-02 16:46:25 UTC (rev 2593) @@ -0,0 +1,5 @@ + +# automatically include all po files in the directory +FILE(GLOB PO_FILES *.po) + +ADD_TRANSLATIONS(hugin ${PO_FILES}) Added: hugin/trunk/src/translations/POTFILES.in =================================================================== --- hugin/trunk/src/translations/POTFILES.in (rev 0) +++ hugin/trunk/src/translations/POTFILES.in 2008-01-02 16:46:25 UTC (rev 2593) @@ -0,0 +1,7 @@ +# List of translateable files. +# +# all C++ source files and the xrc files are used automatically +# and should not be included in this list + +hugin1/hugin/xrc/data/tips.txt + Added: hugin/trunk/src/translations/README.txt =================================================================== --- hugin/trunk/src/translations/README.txt (rev 0) +++ hugin/trunk/src/translations/README.txt 2008-01-02 16:46:25 UTC (rev 2593) @@ -0,0 +1,8 @@ +This directory contains the translations for all translated programs inside the +hugin package. Previously only hugin and nona_gui where translated and carried +their own .po files. This has been changed, and all translateable messages are +now in hugin.pot, located in this directory. + +To update the hugin.pot and the translation with new strings found in the +source code, run the extract-messages.sh script. + Added: hugin/trunk/src/translations/ca_ES.po =================================================================== --- hugin/trunk/src/translations/ca_ES.po (rev 0) +++ hugin/trunk/src/translations/ca_ES.po 2008-01-02 16:46:25 UTC (rev 2593) @@ -0,0 +1,4535 @@ +# French translations for hugin package. +# Copyright (C) 2004 Pablo dAngelo +# This file is distributed under the same license as the hugin package. +# Jean-Luc Coulon (f5ibh) <jea...@wa...>, 2004, 2005. +# +# +msgid "" +msgstr "" +"Project-Id-Version: Hugin 0.5\n" +"Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" +"group_id=77506&atid=550441\n" +"POT-Creation-Date: 2008-01-02 15:02+0100\n" +"PO-Revision-Date: 2005-11-10 18:48+0100\n" +"Last-Translator: Albert Capellades Badia <alb...@gm...>\n" +"Language-Team: Translation Project Catalan Team <alb...@gm...>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=iso-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Poedit-Language: Catalan\n" +"X-Poedit-Country: SPAIN\n" + +#: hugin1/base_wx/huginConfig.cpp:40 +#, c-format +msgid "External program %s not found, reverting to bundled version" +msgstr "" + +#: hugin1/base_wx/huginConfig.cpp:40 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:334 +#: hugin1/hugin/AssistantPanel.cpp:362 hugin1/hugin/AssistantPanel.cpp:522 +#: hugin1/hugin/OptimizePhotometricPanel.cpp:462 +#: hugin1/hugin/OptimizePhotometricPanel.cpp:482 +msgid "Error" +msgstr "" + +#: hugin1/base_wx/ImageCache.cpp:539 +#, c-format +msgid "Loading image %s" +msgstr "Carregant la imatge %s" + +#: hugin1/base_wx/ImageCache.cpp:683 +#, fuzzy, c-format +msgid "Error during image reading: %s" +msgstr "Error durant l'assemblatge" + +#: hugin1/base_wx/ImageCache.cpp:691 hugin_base/huginapp/ImageCache.cpp:661 +msgid "Cannot load image: " +msgstr "Impossible de carregar la imatge\xA0: " + +#: hugin1/base_wx/ImageCache.cpp:719 +#, c-format +msgid "Scaling image %s" +msgstr "Escalant la imatge %s" + +#: hugin1/base_wx/ImageCache.cpp:820 hugin_base/huginapp/ImageCache.cpp:790 +#, c-format +msgid "Creating grayscale %s" +msgstr "Creant en escala de grisos %s" + +#: hugin1/base_wx/ImageCache.cpp:838 hugin_base/huginapp/ImageCache.cpp:808 +#, c-format +msgid "Creating pyramid image for %s, level %d" +msgstr "Creaci\xF3 de la imatge pir\xE0mide %s, nivell %d" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:110 translations/xrc.cpp:86 +#: translations/xrc.cpp:546 xrc.cpp:86 xrc.cpp:546 +msgid "Cancel" +msgstr "Cancel\xB7lar" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:133 +#, c-format +msgid "Failed to kill process %ld with sigterm: %s" +msgstr "" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:334 +#, fuzzy +msgid "Error while executing process" +msgstr "Error durant l'execuci\xF3 de PTStitcher.exe" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:430 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:470 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:301 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:406 +#: hugin1/hugin/NonaStitcherPanel.cpp:427 hugin1/hugin/PanoPanel.cpp:658 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:299 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:402 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:172 +msgid "Could not execute command: " +msgstr "Impossible d'executar la comanda\xA0: " + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:430 +#: hugin1/hugin/PanoPanel.cpp:658 +msgid "ShellExecuteEx failed" +msgstr "Fallada de ShellExecuteEx" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:470 +msgid "CreateProcess Error" +msgstr "Error de CreateProcess" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:481 +msgid "program finished" +msgstr "" + +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:481 +#, fuzzy +msgid "ExecuteProcess" +msgstr "Error wxExecute" + +#: hugin1/base_wx/MyExternalCmdExecDialog.h:154 +msgid "Command Line Progress" +msgstr "" + +#: hugin1/base_wx/MyProgressDialog.cpp:36 +msgid "Elapsed time : " +msgstr "Temps utilitzat\xA0: " + +#: hugin1/base_wx/MyProgressDialog.h:98 +msgid "Optimizing Panorama" +msgstr "Optimitzaci\xF3 del Panorama" + +#: hugin1/base_wx/PTWXDlg.cpp:63 hugin1/base_wx/PTWXDlg.cpp:81 +#: hugin1/base_wx/PTWXDlg.cpp:133 translations/xrc.cpp:452 xrc.cpp:452 +msgid "Panorama Tools" +msgstr "Panorama Tools" + +#: hugin1/base_wx/PTWXDlg.cpp:82 hugin1/base_wx/PTWXDlg.cpp:134 +msgid "" +"\n" +"\n" +"\n" +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:229 +msgid "Please load images by pressing on the Load images button." +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:259 +#, c-format +msgid "%d images loaded." +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:293 +#, fuzzy, c-format +msgid "Images are connected by %d control points.\n" +msgstr "Segur que voleu suprimir %d punts de control\xA0?" + +#: hugin1/hugin/AssistantPanel.cpp:302 +#, c-format +msgid "%d unconnected image groups found: " +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:303 +#, fuzzy +msgid "" +"Please use the Control Points tab to connect all images with control " +"points.\n" +msgstr "" +"Podeu pr\xE9mer el bot\xF3 del mig del ratol\xED per despla\xE7ar-se per les imatges en " +"la pestanya de punts de control." + +#: hugin1/hugin/AssistantPanel.cpp:306 +msgid "Images or control points have changed, new alignment is needed." +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:317 +msgid "Very good fit." +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:319 +msgid "Good fit." +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:321 +msgid "" +"Bad fit, some control points might be bad, or there are parallax and " +"movement errors" +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:323 +msgid "" +"Very bad fit. Check for bad control points, lens parameters, or images with " +"parallax or movement. The optimizer might have failed. Manual intervention " +"required." +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:325 +#, c-format +msgid "Mean error after optimization: %.1f pixel, max: %.1f\n" +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:362 +msgid "" +"At least two images are required.\n" +"Please add more images." +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:382 +#, fuzzy +msgid "Aligning images" +msgstr "Escalant la imatge %s" + +#: hugin1/hugin/AssistantPanel.cpp:382 +#, fuzzy +msgid "Finding corresponding points" +msgstr "No hi ha correspond\xE8ncia amb el punt trobat" + +#: hugin1/hugin/AssistantPanel.cpp:407 +#, c-format +msgid "Warning %d unconnected image groups found:" +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:408 +msgid "" +"Please create control points between unconnected images using the Control " +"Points tab.\n" +"\n" +"After adding the points, press the \"Align\" button again" +msgstr "" + +#: hugin1/hugin/AssistantPanel.cpp:522 +#: hugin1/hugin/OptimizePhotometricPanel.cpp:462 +#, fuzzy +msgid "Error: could not load all images" +msgstr "Impossible d'obrir la dll" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:104 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:103 +msgid "Autopano (version 1.03 or greater), from http://autopano.kolor.com" +msgstr "" +"Autopano (versi\xF3 1.03 o superior), visiteu el lloc http://autopano.kolor.com" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:105 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:104 +msgid "Autopano-Sift, from http://user.cs.tu-berlin.de/~nowozin/autopano-sift/" +msgstr "" +"Autopano-Sift, visiteu el lloc http://user.cs.tu-berlin.de/~nowozin/autopano-" +"sift/" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:107 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:106 +msgid "Choose which autopano program should be used\n" +msgstr "Seleccioneu quin programa autopano utilitzareu\n" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:107 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:106 +msgid "Select autopano type" +msgstr "Seleccioneu el tipus d'Autopano" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:120 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:119 +msgid "Autopano from http://autopano.kolor.com is not available for OSX" +msgstr "Autopano de http://autopano.kolor.com no est\xE0 disponible per Mac OSX" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:121 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:120 +msgid "Would you like to use Autopano-Sift instead?" +msgstr "Voleu utilitzar Autopano-Sift en el seu lloc?" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:158 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:157 +msgid "Select autopano program / frontend script" +msgstr "Trieu el programa / seq\xFC\xE8ncia (script) final Autopano" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:160 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:347 +#: hugin1/hugin/PreferencesDialog.cpp:257 +#: hugin1/hugin/PreferencesDialog.cpp:275 +#: hugin1/hugin/PreferencesDialog.cpp:292 +#: hugin1/hugin/PreferencesDialog.cpp:308 hugin1/hugin/PTStitcherPanel.cpp:483 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:159 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:345 +msgid "Executables (*.exe)|*.exe" +msgstr "Executables (*.exe)|*.exe" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:166 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:202 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:353 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:165 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:201 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:351 +msgid "No autopano selected" +msgstr "Autopano no seleccionat" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:189 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:188 +msgid "Autopano-SIFT is not installed." +msgstr "" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:194 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:193 +msgid "Select autopano frontend script" +msgstr "Seleccioneu la seq\xFC\xE8ncia (script) final d'autopano" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:196 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:195 +msgid "Shell Scripts (*.sh)|*.sh" +msgstr "Fitxer de seq\xFC\xE8ncia (script) de l'int\xE8rpret de comandes (*.sh)|*.sh" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:241 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:239 +#, c-format +msgid "Please use either %namefile or %i in the autopano-sift command line." +msgstr "" +"Utilitzeu tant %namefile o %i per especificar els fitxers d'entrada " +"d'Autopano-sift" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:242 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:247 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:240 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:245 +msgid "Error in Autopano command" +msgstr "Error en la comanda Autopano" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:246 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:244 +#, c-format +msgid "" +"Please use %namefile or %i to specify the input files for autopano-sift" +msgstr "" +"Utilitzeu %namefile o %i per especificar els fitxers d'entrada d'Autopano-" +"sift" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:285 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:393 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:283 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:389 +msgid "" +"autopano command line too long.\n" +"This is a windows limitation\n" +"Please select less images, or place the images in a folder with\n" +"a shorter pathname" +msgstr "" +"La l\xEDnia de comanda d'Autopano \xE9s massa llarga.\n" +"\xC9s una limitaci\xF3 de Windows\n" +"Seleccioneu menys imatges o poseu les imatges\n" +"dins una carpeta amb una ruta m\xE9s curta." + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:286 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:394 +#: hugin1/hugin/NonaStitcherPanel.cpp:415 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:284 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:390 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:160 +msgid "Too many images selected" +msgstr "Masses imatges seleccionades" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:298 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:403 +#, fuzzy +msgid "finding control points" +msgstr "Mostra els punts de control" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:301 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:306 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:406 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:412 +#: hugin1/hugin/NonaStitcherPanel.cpp:427 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:299 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:304 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:402 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:408 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:172 +msgid "wxExecute Error" +msgstr "Error wxExecute" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:304 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:410 +#: hugin1/hugin/NonaStitcherPanel.cpp:430 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:302 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:406 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:175 +msgid "command: " +msgstr "comanda: " + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:305 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:411 +#: hugin1/hugin/NonaStitcherPanel.cpp:431 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:303 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:407 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:176 +msgid "" +"\n" +"failed with error code: " +msgstr "" +"\n" +"fallada amb el codi d'error\xA0: " + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:312 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:419 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:310 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:415 +msgid "Could not open " +msgstr "Impossible d'obrir" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:312 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:419 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:310 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:415 +msgid "" +" for reading\n" +"This is an indicator that the autopano call failed,\n" +"or wrong command line parameters have been used.\n" +"\n" +"Autopano command: " +msgstr "" +" en lectura\n" +"Indica que la crida a Autopano a fallat\n" +"o que hi ha un error en els par\xE0metres utilitzats en la l\xEDnia de comanda.\n" +"\n" +"Comanda Autopano: " + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:313 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:422 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:311 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:418 +msgid "autopano failure" +msgstr "Fallada d'Autopano" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:345 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:343 +#, fuzzy +msgid "Select autopano program" +msgstr "Seleccioneu el tipus d'Autopano" + +#: hugin1/hugin/AutoCtrlPointCreator.cpp:420 +#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:416 +msgid "" +"\n" +" current directory:" +msgstr "" +"\n" +" directori actual:" + +#: hugin1/hugin/CommandHistory.cpp:94 +msgid "no command in undo history" +msgstr "no hi ha comanda dins l'hist\xF2ric de \xAB\xA0desfer\xA0\xBB" + +#: hugin1/hugin/CommandHistory.cpp:106 +msgid "no command in redo history" +msgstr "no hi ha comanda dins l'hist\xF2ric de \xAB\xA0refer\xA0\xBB" + +#: hugin1/hugin/CPEditorPanel.cpp:169 hugin1/hugin/CPListFrame.cpp:282 +#: hugin1/hugin/CPListFrame.cpp:292 hugin1/hugin/ImagesList.cpp:58 +msgid "#" +msgstr "nombre" + +#: hugin1/hugin/CPEditorPanel.cpp:170 +msgid "left x" +msgstr "x esquerra" + +#: hugin1/hugin/CPEditorPanel.cpp:171 +msgid "left y" +msgstr "y esquerra" + +#: hugin1/hugin/CPEditorPanel.cpp:172 +msgid "right x" +msgstr "x dreta" + +#: hugin1/hugin/CPEditorPanel.cpp:173 +msgid "right y" +msgstr "y dreta" + +#: hugin1/hugin/CPEditorPanel.cpp:174 hugin1/hugin/CPListFrame.cpp:289 +#: hugin1/hugin/CPListFrame.cpp:295 +msgid "Alignment" +msgstr "Alineament" + +#: hugin1/hugin/CPEditorPanel.cpp:175 hugin1/hugin/CPListFrame.cpp:290 +#: hugin1/hugin/CPListFrame.cpp:296 +msgid "Distance" +msgstr "Dist\xE0ncia" + +#: hugin1/hugin/CPEditorPanel.cpp:562 +msgid "No corresponding point found" +msgstr "No hi ha correspond\xE8ncia amb el punt trobat" + +#: hugin1/hugin/CPEditorPanel.cpp:649 +msgid "new control point added" +msgstr "un nou punt de control \xE9s afegit" + +#: hugin1/hugin/CPEditorPanel.cpp:751 hugin1/hugin/CPEditorPanel.cpp:975 +msgid "searching similar point..." +msgstr "Cercant un punt de control similar..." + +#: hugin1/hugin/CPEditorPanel.cpp:770 hugin1/hugin/CPEditorPanel.cpp:893 +msgid "Error during Fine-tune" +msgstr "Error durant el c\xE0lcul de precisi\xF3" + +#: hugin1/hugin/CPEditorPanel.cpp:784 hugin1/hugin/CPEditorPanel.cpp:913 +#: hugin1/hugin/CPEditorPanel.cpp:1049 +#, c-format +msgid "" +"Point finetuned, angle: %.0f deg, correlation coefficient: %0.3f, curvature: " +"%0.3f %0.3f " +msgstr "" +"Punt calculat amb precisi\xF3 , angle\xA0: %.0f graus, coeficient de correlaci\xF3\xA0: %" +"0.3f, curvatura %0.3f %0.3f" + +#: hugin1/hugin/CPEditorPanel.cpp:787 hugin1/hugin/CPEditorPanel.cpp:916 +msgid "change points, or press right mouse button to add the pair" +msgstr "" +"modifiqueu els punts, o premeu el bot\xF3 dret del ratol\xED per afegir un parell " +"de punts" + +#: hugin1/hugin/CPEditorPanel.cpp:807 +msgid "Estimated point outside image" +msgstr "El punt calculat \xE9s fora de la imatge" + +#: hugin1/hugin/CPEditorPanel.cpp:1055 +#, c-format +msgid "" +"No similar point found.\n" +"correlation coefficient: %.3f (should be > %.3f)\n" +"peak curvature: (%.3f, %.3f) ( should be > %.3f)" +msgstr "" +"No \xE9s trobat cap punt similar.\n" +"coeficient de correlaci\xF3 \xA0: %.3f, (hauria de ser > % .3f)\n" +"curvatura de pic\xA0: (%.3f, %.3f), (hauria de ser > %.3f)" + +#: hugin1/hugin/CPEditorPanel.cpp:1057 +msgid "No similar point found" +msgstr "No \xE9s trobat cap punt similar" + +#: hugin1/hugin/CPEditorPanel.cpp:1209 hugin1/hugin/CPEditorPanel.cpp:1220 +#, fuzzy +msgid "Add new Line" +msgstr "afegir un nou punt" + +#: hugin1/hugin/CPEditorPanel.cpp:1215 hugin1/hugin/CPEditorPanel.cpp:1218 +#: hugin1/hugin/CPEditorPanel.cpp:1496 hugin1/hugin/CPListFrame.cpp:406 +#, c-format +msgid "Line %d" +msgstr "" + +#: hugin1/hugin/CPEditorPanel.cpp:1487 hugin1/hugin/CPListFrame.cpp:397 +#: hugin1/hugin/PreviewFrame.cpp:240 translations/xrc.cpp:50 xrc.cpp:50 +msgid "normal" +msgstr "normal" + +#: hugin1/hugin/CPEditorPanel.cpp:1490 hugin1/hugin/CPListFrame.cpp:400 +msgid "vert. Line" +msgstr "l\xEDnia vertical" + +#: hugin1/hugin/CPEditorPanel.cpp:1493 hugin1/hugin/CPListFrame.cpp:403 +msgid "horiz. Line" +msgstr "l\xEDnia horitzontal" + +#: hugin1/hugin/CPEditorPanel.cpp:1795 +msgid "Cannot estimate image position without control points" +msgstr "No es pot calcular la posici\xF3 de la imatge sense punts de control" + +#: hugin1/hugin/CPEditorPanel.cpp:1816 +msgid "" +"Create control points.\n" +"To create less points,\n" +"enter a higher number." +msgstr "" + +#: hugin1/hugin/CPEditorPanel.cpp:1816 +#, fuzzy +msgid "Corner Detection threshold" +msgstr "Llindar de correlaci\xF3\xA0:" + +#: hugin1/hugin/CPEditorPanel.cpp:1816 hugin1/hugin/CPEditorPanel.cpp:1820 +#: translations/xrc.cpp:111 xrc.cpp:111 +#, fuzzy +msgid "Create control points" +msgstr "Creu els punts de control" + +#: hugin1/hugin/CPEditorPanel.cpp:1820 +#, fuzzy +msgid "Corner Detection scale" +msgstr "Col\xB7lecci\xF3 d'imatges" + +#: hugin1/hugin/CPEditorPanel.cpp:1832 +#, fuzzy +msgid "Error during control point creation:\n" +msgstr "Error durant l'assemblatge" + +#: hugin1/hugin/CPEditorPanel.cpp:1963 +msgid "Select Point in right image" +msgstr "Seleccioneu un punt en la imatge de la dreta" + +#: hugin1/hugin/CPEditorPanel.cpp:1975 +msgid "Select Point in left image" +msgstr "Seleccioneu un punt en la imatge de la esquerra" + +#: hugin1/hugin/CPFineTuneFrame.cpp:38 +msgid "Control point finetune" +msgstr "Ajustament prec\xEDs dels punts de control" + +#: hugin1/hugin/CPImageCtrl.cpp:332 +#, fuzzy +msgid "new" +msgstr "Nou" + +#: hugin1/hugin/CPImageCtrl.cpp:1143 +msgid "Could not process event!" +msgstr "No es pot processar l'esdeveniment\xA0!" + +#: hugin1/hugin/CPListFrame.cpp:283 hugin1/hugin/CPListFrame.cpp:293 +msgid "left Img." +msgstr "imatge de la dreta" + +#: hugin1/hugin/CPListFrame.cpp:284 hugin1/hugin/CPListFrame.cpp:287 +#: translations/xrc.cpp:19 translations/xrc.cpp:42 xrc.cpp:19 xrc.cpp:42 +msgid "x" +msgstr "x" + +#: hugin1/hugin/CPListFrame.cpp:285 hugin1/hugin/CPListFrame.cpp:288 +msgid "y" +msgstr "y" + +#: hugin1/hugin/CPListFrame.cpp:286 hugin1/hugin/CPListFrame.cpp:294 +msgid "right Img." +msgstr "imatge de la dreta" + +#: hugin1/hugin/CPListFrame.cpp:607 hugin1/hugin/CPListFrame.cpp:616 +msgid "" +"Enter minimum control point error.\n" +"All point with a higher error will be selected" +msgstr "" +"Entreu l'error m\xEDnim pels punts de control.\n" +"Quedaran seleccionats tot els punts amb un error superior" + +#: hugin1/hugin/CPListFrame.cpp:607 hugin1/hugin/CPListFrame.cpp:616 +msgid "Select Control Points" +msgstr "Seleccioneu els punts de control" + +#: hugin1/hugin/CPListFrame.cpp:615 +msgid "Error: please enter a valid number." +msgstr "Error: introdu\xEFu un nombre v\xE0lid." + +#: hugin1/hugin/CPListFrame.cpp:615 +msgid "Could not read number" +msgstr "No es pot llegir el nombre" + +#: hugin1/hugin/CropPanel.cpp:253 hugin1/hugin/CropPanel.cpp:269 +#: hugin1/hugin/CropPanel.cpp:285 hugin1/hugin/CropPanel.cpp:301 +msgid "Please enter a valid number" +msgstr "Introdu\xEFu un nombre v\xE0lid" + +#: hugin1/hugin/HFOVDialog.cpp:74 +#, c-format +msgid "" +"No or only partial information about field of view was found in image file\n" +"%s\n" +"\n" +"Please enter the the horizontal field of view (HFOV) or the focal length and " +"crop factor." +msgstr "" + +#: hugin1/hugin/HFOVDialog.cpp:155 +#, fuzzy +msgid "The horizontal field of view must be positive." +msgstr "El camp de visi\xF3 horitzontal (HFOV) pot ser massa baix." + +#: hugin1/hugin/HFOVDialog.cpp:207 +#, fuzzy +msgid "The focal length must be positive." +msgstr "El valor ha de ser num\xE8ric." + +#: hugin1/hugin/HFOVDialog.cpp:246 +#, fuzzy +msgid "The crop factor must be positive." +msgstr "El valor ha de ser num\xE8ric." + +#: hugin1/hugin/huginApp.cpp:53 hugin1/hugin/ImagesPanel.cpp:315 +#: hugin1/hugin/ImagesPanel.cpp:336 hugin1/hugin/ImagesPanel.cpp:356 +#: hugin1/hugin/PanoPanel.cpp:372 hugin1/hugin/PanoPanel.cpp:403 +#: hugin1/hugin/PreviewFrame.cpp:748 hugin1/hugin/PreviewFrame.cpp:764 +msgid "Value must be numeric." +msgstr "El valor ha de ser num\xE8ric." + +#: hugin1/hugin/huginApp.cpp:124 +msgid "xrc directory not found in bundle" +msgstr "" + +#: hugin1/hugin/huginApp.cpp:124 hugin1/hugin/huginApp.cpp:133 +#: hugin1/hugin/huginApp.cpp:140 hugin1/hugin/huginApp.cpp:152 +msgid "Fatal Error" +msgstr "" + +#: hugin1/hugin/huginApp.cpp:133 +msgid "Translations not found in bundle" +msgstr "" + +#: hugin1/hugin/huginApp.cpp:140 +msgid "Command line helper tools not found in bundle" +msgstr "" + +#: hugin1/hugin/huginApp.cpp:152 +msgid "" +"xrc directory not found, hugin needs to be properly installed\n" +"Tried Path:" +msgstr "" + +#: hugin1/hugin/ImagesList.cpp:307 hugin1/hugin/ImagesList.cpp:366 +msgid "Filename" +msgstr "Nom de fitxer" + +#: hugin1/hugin/ImagesList.cpp:308 +msgid "width" +msgstr "amplada" + +#: hugin1/hugin/ImagesList.cpp:309 +msgid "height" +msgstr "al\xE7ada" + +#: hugin1/hugin/ImagesList.cpp:310 +msgid "yaw (y)" +msgstr "guinyada (y)" + +#: hugin1/hugin/ImagesList.cpp:311 +msgid "pitch (p)" +msgstr "caboteig (p)" + +#: hugin1/hugin/ImagesList.cpp:312 +msgid "roll (r)" +msgstr "balanceig (r)" + +#: hugin1/hugin/ImagesList.cpp:313 +msgid "Anchor" +msgstr "\xC0ncora" + +#: hugin1/hugin/ImagesList.cpp:314 +msgid "# Ctrl Pnts" +msgstr "# Pts Ctrl" + +#: hugin1/hugin/ImagesList.cpp:367 +msgid "Lens no." +msgstr "Lent no." + +#: hugin1/hugin/ImagesList.cpp:368 +msgid "Lens type (f)" +msgstr "Tipus de lent (f)" + +#: hugin1/hugin/ImagesList.cpp:369 +msgid "hfov (v)" +msgstr "angle de camp horitzontal hfov (v)" + +#: hugin1/hugin/ImagesList.cpp:370 +msgid "a" +msgstr "a" + +#: hugin1/hugin/ImagesList.cpp:371 +msgid "b" +msgstr "b" + +#: hugin1/hugin/ImagesList.cpp:372 +msgid "c" +msgstr "c" + +#: hugin1/hugin/ImagesList.cpp:373 +msgid "d" +msgstr "d" + +#: hugin1/hugin/ImagesList.cpp:374 +msgid "e" +msgstr "e" + +#: hugin1/hugin/ImagesList.cpp:375 +msgid "g" +msgstr "g" + +#: hugin1/hugin/ImagesList.cpp:376 +msgid "t" +msgstr "t" + +#: hugin1/hugin/ImagesList.cpp:399 translations/xrc.cpp:11 +#: translations/xrc.cpp:30 translations/xrc.cpp:137 xrc.cpp:11 xrc.cpp:30 +#: xrc.cpp:137 +msgid "Normal (rectilinear)" +msgstr "Normal (rectilini)" + +#: hugin1/hugin/ImagesList.cpp:400 translations/xrc.cpp:12 +#: translations/xrc.cpp:31 translations/xrc.cpp:138 xrc.cpp:12 xrc.cpp:31 +#: xrc.cpp:138 +msgid "Panoramic (cylindrical)" +msgstr "Panor\xE0mica (cil\xEDndric)" + +#: hugin1/hugin/ImagesList.cpp:401 translations/xrc.cpp:13 +#: translations/xrc.cpp:32 translations/xrc.cpp:139 xrc.cpp:13 xrc.cpp:32 +#: xrc.cpp:139 +msgid "Circular fisheye" +msgstr "Gran angular circular" + +#: hugin1/hugin/ImagesList.cpp:402 translations/xrc.cpp:14 +#: translations/xrc.cpp:33 translations/xrc.cpp:140 xrc.cpp:14 xrc.cpp:33 +#: xrc.cpp:140 +msgid "Full frame fisheye" +msgstr "Gran angular d'abast total" + +#: hugin1/hugin/ImagesList.cpp:403 hugin1/hugin/PreviewFrame.cpp:616 +#: translations/xrc.cpp:15 translations/xrc.cpp:34 translations/xrc.cpp:141 +#: xrc.cpp:15 xrc.cpp:34 xrc.cpp:141 +msgid "Equirectangular" +msgstr "Equirectangular" + +#: hugin1/hugin/ImagesList.cpp:421 translations/xrc.cpp:119 +#: translations/xrc.cpp:210 translations/xrc.cpp:385 xrc.cpp:119 xrc.cpp:210 +#: xrc.cpp:385 +msgid "Crop" +msgstr "Escap\xE7ar" + +#: hugin1/hugin/ImagesPanel.cpp:294 +#, c-format +msgid "Added %d control points" +msgstr "Afegits %d punts de control" + +#: hugin1/hugin/ImagesPanel.cpp:294 +msgid "Autopano result" +msgstr "Resultat d'Autopano" + +#: hugin1/hugin/ImagesPanel.cpp:684 +#, c-format +msgid "Really Delete %d control points?" +msgstr "Segur que voleu suprimir %d punts de control\xA0?" + +#: hugin1/hugin/ImagesPanel.cpp:686 +msgid "Delete Control Points" +msgstr "Suprimeix punts de control" + +#: hugin1/hugin/LensPanel.cpp:827 +msgid "Not a jpeg file:" +msgstr "No \xE9s un fitxer jpeg\xA0:" + +#: hugin1/hugin/LensPanel.cpp:831 hugin1/hugin/LensPanel.cpp:935 +#: hugin1/hugin/LensPanel.cpp:968 hugin1/hugin/LensPanel.cpp:1084 +#: hugin1/hugin/LensPanel.cpp:1102 +msgid "Please select an image and try again" +msgstr "Seleccioneu una imatge i proveu un altre cop" + +#: hugin1/hugin/LensPanel.cpp:849 +msgid "Save lens parameters file" +msgstr "Desa el fitxer dels par\xE0metres de la lent" + +#: hugin1/hugin/LensPanel.cpp:851 +msgid "Lens Project Files (*.ini)|*.ini|All files (*)|*" +msgstr "Fitxer Projecte de lents (*.ini)|*.ini|tots els fitxers (*)|*" + +#: hugin1/hugin/LensPanel.cpp:977 +msgid "Load lens parameters" +msgstr "Obrir el fitxer dels par\xE0metres de l'objectiu" + +#: hugin1/hugin/LensPanel.cpp:979 +msgid "Lens Project Files (*.ini)|*.ini|All files (*.*)|*.*" +msgstr "Fitxer Projecte de lents (*.ini)|*.ini|tots els fitxers (*.*)|*.*" + +#: hugin1/hugin/LensPanel.cpp:998 +msgid "" +"Incompatible lens parameter file, image sizes do not match\n" +"Apply settings anyway?" +msgstr "" + +#: hugin1/hugin/LensPanel.cpp:998 +#, fuzzy +msgid "Error loading lens parameters" +msgstr "Obrir el fitxer dels par\xE0metres de l'objectiu" + +#: hugin1/hugin/LensPanel.cpp:1092 +msgid "Enter new lens number" +msgstr "Introdu\xEFu el nou n\xFAmero de la lent" + +#: hugin1/hugin/LensPanel.cpp:1092 +msgid "Lens number" +msgstr "Lent n\xFAmero" + +#: hugin1/hugin/LensPanel.cpp:1093 +msgid "Change lens number" +msgstr "Canvieu el n\xFAmero de la lent" + +#: hugin1/hugin/LocalizedFileTipProvider.cpp:48 +msgid "Tips not available, sorry!" +msgstr "Els consells no estan disponibles\xA0!" + +#: hugin1/hugin/MainFrame.cpp:195 +msgid "" +"Fatal installation error\n" +"The data/splash.png was not found at:" +msgstr "" + +#: hugin1/hugin/MainFrame.cpp:215 translations/xrc.cpp:218 +#: translations/xrc.cpp:253 translations/xrc.cpp:256 xrc.cpp:218 xrc.cpp:253 +#: xrc.cpp:256 +msgid "&Help" +msgstr "&Ajuda" + +#: hugin1/hugin/MainFrame.cpp:317 +msgid "Started" +msgstr "Iniciat" + +#: hugin1/hugin/MainFrame.cpp:443 +msgid "" +"The panorama has been changed\n" +"Save changes?" +msgstr "" +"El panorama ha estat modificat\n" +"Voleu desar les modificacions ?" + +#: hugin1/hugin/MainFrame.cpp:443 +msgid "Save Panorama?" +msgstr "Desar el panorama\xA0?" + +#: hugin1/hugin/MainFrame.cpp:476 +msgid "forced close" +msgstr "Tancament obligat" + +#: hugin1/hugin/MainFrame.cpp:527 +#, c-format +msgid "saved project %s" +msgstr "projecte %s desat" + +#: hugin1/hugin/MainFrame.cpp:544 +msgid "Save project file" +msgstr "Desar el fitxer de projecte" + +#: hugin1/hugin/MainFrame.cpp:546 +msgid "Project files (*.pto)|*.pto|All files (*)|*" +msgstr "Fitxer de projecte (*.pto)|*.pto|Tots els fitxers (*)|*" + +#: hugin1/hugin/MainFrame.cpp:556 +#, c-format +msgid "File %s exists. Overwrite?" +msgstr "" + +#: hugin1/hugin/MainFrame.cpp:557 translations/xrc.cpp:270 xrc.cpp:270 +msgid "Save project" +msgstr "Guardar el projecte" + +#: hugin1/hugin/MainFrame.cpp:575 +msgid "Save PTStitcher script file" +msgstr "Desar el fitxer de seq\xFC\xE8ncia PTStitcher" + +#: hugin1/hugin/MainFrame.cpp:577 +msgid "PTStitcher files (*.txt)|*.txt" +msgstr "Fitxer PTStitcher (*.txt)|*.txt" + +#: hugin1/hugin/MainFrame.cpp:606 +msgid "Open project: " +msgstr "Obrir el projecte\xA0: " + +#: hugin1/hugin/MainFrame.cpp:618 +msgid "Project opened" +msgstr "Projecte obert" + +#: hugin1/hugin/MainFrame.cpp:628 +msgid "Error opening project: " +msgstr "Error durant la obertura del projecte: " + +#: hugin1/hugin/MainFrame.cpp:674 +msgid "Open project file" +msgstr "Obrir el fitxer de projecte" + +#: hugin1/hugin/MainFrame.cpp:676 hugin1/hugin/MainFrame.cpp:1121 +#: hugin1/stitch_project/hugin_stitch_project.cpp:181 +msgid "" +"Project files (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|All files " +"(*)|*" +msgstr "" +"Fitxer de projecte (*.pto,*.ptp,*.pts,*oto)|*.pto;*ptp;*.pts;*.oto;|Tots els " +"fitxers (*)|*" + +#: hugin1/hugin/MainFrame.cpp:690 +msgid "Open project: cancel" +msgstr "Obrir el projecte\xA0: cancel\xB7lar" + +#: hugin1/hugin/MainFrame.cpp:716 hugin1/hugin/VigCorrDialog.cpp:173 +#: hugin1/hugin/wxPanoCommand.cpp:312 +#, fuzzy +msgid "" +"All Image files|*.jpg;*.JPG;*.tif;*.TIF;*.tiff;*.TIFF;*.png;*.PNG;*.bmp;*." +"BMP;*.gif;*.GIF;*.pnm;*.PNM;*.sun;*.viff;*.hdr|JPEG files (*.jpg,*.jpeg)|*." +"jpg;*.JPG;*.jpeg;*.JPEG|All files (*)|*" +msgstr "" +"Tots els fitxers d'imatge|*.jpg;*.JPG;*.tif;*.TIF;*.tiff;*.TIFF;*.png;*.PNG;" +"*.bmp;*.BMP;*.gif;*.GIF;*.pnm;*.PNM;*.sun;*.viff|fitxers JPEG\xB7(*.jpg)|*.jpg;" +"*.JPG|Tots els fitxers (*)|*" + +#: hugin1/hugin/MainFrame.cpp:719 hugin1/hugin/wxPanoCommand.cpp:313 +#: hugin1/hugin/wxPanoCommand.cpp:383 +msgid "Add images" +msgstr "Afegir imatges" + +#: hugin1/hugin/MainFrame.cpp:772 +msgid "Add Image: cancel" +msgstr "Afegir imatges\xA0: cancel\xB7lar" + +#: hugin1/hugin/MainFrame.cpp:1119 +msgid "Choose template project" +msgstr "" + +#: hugin1/hugin/MainFrame.cpp:1171 +msgid "Fine-tuning all points" +msgstr "Ajustament prec\xEDs en tots els punts" + +#: hugin1/hugin/MainFrame.cpp:1173 +msgid "Finetuning" +msgstr "Ajustament prec\xEDs" + +#: hugin1/hugin/MainFrame.cpp:1261 +#, fuzzy, c-format +msgid "" +"%d points fine-tuned, %d points not updated due to low correlation\n" +"\n" +"Hint: The errors of the fine-tuned points have been set to the correlation " +"coefficient\n" +"Problematic point can be spotted (just after fine-tune, before optimizing)\n" +"by an error <= %.3f.\n" +"The error of points without a well defined peak (typically in regions with " +"uniform color)\n" +"will be set to 0\n" +"\n" +"Use the Control Point list (F3) to see all point of the current project\n" +msgstr "" +"%d punts de control ajustats amb precisi\xF3, %d punt no actualitzats degut a " +"una baixa correlaci\xF3.\n" +"\n" +"Informaci\xF3 : Els errors dels punts ajustats amb precisi\xF3 han estat afectats " +"al coeficient de correlaci\xF3.\n" +"Un punt problem\xE0tic es pot veure (just despr\xE9s d'un ajustament prec\xEDs, abans " +"de l'optimitzaci\xF3)\n" +"amb un error <= %.3f.\n" +"L'error dels punts sense un pic ben definit ( habitualment dins de zones amb " +"un color uniforme) ser\xE0 ajustat a 0.\n" +"\n" +"Utilitzeu la llista de punts de control (F3) per veure tots els punts del " +"projecte actual.\n" + +#: hugin1/hugin/MainFrame.cpp:1263 +msgid "Fine-tune result" +msgstr "Resultat de l'ajustament prec\xEDs" + +#: hugin1/hugin/NonaOptionsDialog.cpp:55 translations/xrc.cpp:438 xrc.cpp:438 +#, fuzzy +msgid "Nona options" +msgstr "Opcions de fitxer" + +#: hugin1/hugin/NonaStitcherPanel.cpp:288 hugin1/nona_gui/nona_gui.cpp:225 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:33 +msgid "Stitching Panorama" +msgstr "Assemblatge del Panorama" + +#: hugin1/hugin/NonaStitcherPanel.cpp:325 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:70 +msgid "" +"Out of memory.\n" +"Try again with a smaller panorama image size\n" +msgstr "" +"Mem\xF2ria insuficient.\n" +"Proveu un altre cop amb una imatge panor\xE0mica m\xE9s petita.\n" + +#: hugin1/hugin/NonaStitcherPanel.cpp:326 +#: hugin1/hugin/NonaStitcherPanel.cpp:331 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:71 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:76 +msgid "Error during stitching" +msgstr "Error durant l'assemblatge" + +#: hugin1/hugin/NonaStitcherPanel.cpp:346 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:91 +msgid "Select enblend.exe" +msgstr "Seleccioneu enblend.exe" + +#: hugin1/hugin/NonaStitcherPanel.cpp:354 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:99 +msgid "No enblend.exe selected" +msgstr "No heu seleccionat enblend.exe" + +#: hugin1/hugin/NonaStitcherPanel.cpp:365 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:110 +msgid "Select enblend commandline tool" +msgstr "Seleccioneu l'eina de l\xEDnia de comanda Enblend" + +#: hugin1/hugin/NonaStitcherPanel.cpp:373 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:118 +msgid "No enblend commandline tool selected" +msgstr "No heu seleccionat l'eina de l\xEDnia de comanda Enblend" + +#: hugin1/hugin/NonaStitcherPanel.cpp:414 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:159 +#, fuzzy +msgid "" +"Can not call enblend with a command line > 32766 characters.\n" +"This is a Windows limitation\n" +"Please use less images, or place the images in a folder with\n" +"a shorter pathname" +msgstr "" +"No \xE9s possible d'invocar Enblend amb una l\xEDnia de comanda\n" +"de m\xE9s de 2000 car\xE0cters\n" +"\xC9s una limitaci\xF3 de Windows.\n" +"Utilitzeu menys imatges o situeu les imatges dins una carpeta\n" +"amb una ruta m\xE9s curta." + +#: hugin1/hugin/NonaStitcherPanel.cpp:432 +#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:177 +msgid "enblend error" +msgstr "Error d'Enblend" + +#: hugin1/hugin/NonaStitcherPanel.cpp:506 hugin1/hugin/PTStitcherPanel.cpp:310 +msgid "gamma must be a number" +msgstr "la gamma ha de ser un nombre" + +#: hugin1/hugin/OptimizePanel.cpp:553 +#, fuzzy +msgid "" +"Optimizer run finished.\n" +"WARNING: a very small Field of View (v) has been estimated\n" +"\n" +"The results are probably invalid.\n" +"\n" +"Optimisation of the Field of View (v) of partial panoramas can lead to bad " +"results.\n" +"Try adding more images and control points.\n" +"\n" +"Apply the changes anyway?" +msgstr "" +"Execuci\xF3 de l'optimitzador finalitzada\n" +"ATENCIӠ: ha estat detectat un camp de visi\xF3 (v) molt petit\n" +"\n" +"Els resultats no s\xF3n probablement v\xE0lids.\n" +"Optimitzeu la Vista sols per a panorames de 360\xB0\n" +"o quan sapigueu que esteu fent.\n" +"\n" +"El Camp de Visi\xF3 (v) pot ser a vegades optimitzat per a panorames parcials\n" +"quan les imatges estan ben alienades." + +#: hugin1/hugin/OptimizePanel.cpp:556 +#, c-format +msgid "" +"Optimizer run finished.\n" +"Results:\n" +" average control point distance: %f\n" +" standard deviation: %f\n" +" maximum: %f\n" +"\n" +"*WARNING*: very high distortion coefficients (a,b,c) have been estimated.\n" +"The results are probably invalid.\n" +"Only optimize all distortion parameters when many, well spread control " +"points are used.\n" +"Please reset the a,b and c parameters to zero and add more control points\n" +"\n" +"Apply the changes anyway?" +msgstr "" + +#: hugin1/hugin/OptimizePanel.cpp:560 +#, c-format +msgid "" +"Optimizer run finished.\n" +"Results:\n" +" average control point distance: %f\n" +" standard deviation: %f\n" +" maximum: %f\n" +"\n" +"Apply the changes?" +msgstr "" +"Execuci\xF3 de l'optimitzador finalitzada.\n" +"Resultats\xA0:\n" +" dist\xE0ncia mitja dels punts dels control\xA0: %f\n" +" desviaci\xF3 est\xE0ndard\xA0: %f\n" +" m\xE0xim\xA0: %f\n" +"\n" +"Voleu aplicar les\xA0modificacions?" + +#: hugin1/hugin/OptimizePanel.cpp:565 +msgid "Optimisation result" +msgstr "" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:424 +msgid "" +"The same vignetting and response parameters should\n" +"be applied for all images of a lens.\n" +"Currently each image can have different parameters.\n" +"Link parameters?" +msgstr "" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:424 +#, fuzzy +msgid "Link parameters" +msgstr "Par\xE0metres de la lent" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:442 +msgid "" +"The vignetting and exposure correctione is determined by analysing color " +"values in the overlaping areas.\n" +"To speed up the computation, only a random subset of points is used." +msgstr "" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:443 +#, fuzzy +msgid "Number of points per image" +msgstr "nombre de punts creats en cada encavalcament" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:444 +msgid "Photometric optimisation" +msgstr "" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:451 +msgid "Photometric alignment" +msgstr "" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:482 +msgid "Error: no overlapping points found, Photometric optimisation aborted" +msgstr "" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:515 +msgid "Internal error during photometric optimisation:\n" +msgstr "" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:515 +#, fuzzy +msgid "Internal error" +msgstr "Error d'Enblend" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:521 +#, c-format +msgid "" +"Photometric optimisation results:\n" +" Root mean square error:%.2f in gray values (0..255)\n" +"Apply results?" +msgstr "" + +#: hugin1/hugin/OptimizePhotometricPanel.cpp:522 +msgid "Photometric optimisation finished" +msgstr "" + +#: hugin1/hugin/PanoDruid.cpp:43 +msgid "The druid has no advice." +msgstr "L'assistent no us pot ajudar." + +#: hugin1/hugin/PanoDruid.cpp:53 hugin1/hugin/PanoDruid.cpp:423 +msgid "The druid finds no problems with your panorama." +msgstr "L'assistent no ha trobat cap problema amb el vostre panorama." + +#: hugin1/hugin/PanoDruid.cpp:54 hugin1/hugin/PanoDruid.cpp:424 +msgid "" +"Stitch your final image now, and then use an image editor\n" +"such as the GNU Image Manipulation Program (the GIMP)\n" +"to add any finishing touches." +msgstr "" +"Assembleu la vostre imatge final ara, i tot seguit utilitzeu un editor " +"d'imatges \n" +"com el GNU Image Manipulation Program (the GIMP)\n" +"pels retocs finals." + +#: hugin1/hugin/PanoDruid.cpp:63 hugin1/hugin/PanoDruid.cpp:443 +msgid "Warning: you haven't saved the current project." +msgstr "Atenci\xF3\xA0: no heu desat el projecte actual." + +#: hugin1/hugin/PanoDruid.cpp:64 hugin1/hugin/PanoDruid.cpp:444 +msgid "" +"While everything else seems to be ready to stitch,\n" +"don't forget to save your project file so you can\n" +"experiment or adjust the settings later." +msgstr "" +"Sembla tot preparat per l'assemblatge.\n" +"No oblideu de desar el vostre fitxer de projecte\n" +"per aix\xED m\xE9s tard experimentar o modificar els \n" +"par\xE0metres." + +#: hugin1/hugin/PanoDruid.cpp:73 hugin1/hugin/PanoDruid.cpp:439 +msgid "Warning: current stitch has huge dimensions." +msgstr "Atenci\xF3\xA0: l'actual assemblatge \xE9s de dimensions enormes." + +#: hugin1/hugin/PanoDruid.cpp:74 +msgid "" +"Very large pixel dimensions are currently entered.\n" +"Some computers may take an excessively long time\n" +"to render such a large final image.\n" +"For best results, use the Calculate Optimal Size button on\n" +"the Panorama Options tab to determine the\n" +"pixel dimensions which will give the best quality." +msgstr "" +"S'han introdu\xEFt grans dimensions de p\xEDxels.\n" +"Alguns ordinadors poden trigar massa temps\n" +"per processar una imatge final tant gran.\n" +"Per obtenir millors resultats, utilitzeu el bot\xF3\n" +"\xAB\xA0Calcular la mida \xF2ptima\xA0\xBB en la pestanya \xAB\xA0Opcions de panorama\xA0\xBB\n" +"per determinar les dimensions de p\xEDxel per a una\n" +"millor qualitat." + +#: hugin1/hugin/PanoDruid.cpp:104 hugin1/hugin/PanoDruid.cpp:435 +msgid "The Horizontal Field of View (HFOV) may be too low." +msgstr "El camp de visi\xF3 horitzontal (HFOV) pot ser massa baix." + +#: hugin1/hugin/PanoDruid.cpp:105 hugin1/hugin/PanoDruid.cpp:436 +msgid "" +"Check that the focal lengths and/or hfov figures\n" +"for each image are correct for the camera settings.\n" +"Then calculate the visible field of view again.\n" +"HFOV is measured in degrees of arc, usually between\n" +"5 and 120 degrees per image unless using specialized\n" +"lenses." +msgstr "" +"Verificar que la dist\xE0ncia focal i/o els valors d'angle\n" +"del camp horitzontal (hfov) de cada una de les imatges \xE9s correcte\n" +"per els ajusts de la c\xE0mera.\n" +"Despr\xE9s calculeu de nou l'angle del camp de visi\xF3.\n" +"L'angle de camp horitzontal (HFOV) \xE9s mesurat en graus\n" +"d'arc, habitualment \xE9s entre 5 i 120 graus per\n" +"imatge a menys que utilitzeu lents especials." + +#: hugin1/hugin/PanoDruid.cpp:114 +msgid "Consider adding a vertical or horizontal guide." +msgstr "Considereu afegir una guia vertical o horitzontal." + +#: hugin1/hugin/PanoDruid.cpp:115 +msgid "" +"By adding vertical guides, the optimizer can ensure\n" +"that buildings or trees or other vertical features\n" +"appear vertical in the final result. A horizontal\n" +"guide can help ensure that a horizon does not bend." +msgstr "" +"Afegint guies verticals, l'optimitzador pot assegurar\n" +"que els edificis, els arbres o altres elements verticals\n" +"seran ben verticals en el resultat final. Una guia horitzontal\n" +"pot ajudar a assegurar que l'horitz\xF3 no \xE9s barrejar\xE0." + +#: hugin1/hugin/PanoDruid.cpp:137 +msgid "Run the Optimizer to estimate the image positions." +msgstr "Executar l'optimitzador per avaluar la posici\xF3 de les imatges." + +#: hugin1/hugin/PanoDruid.cpp:138 +msgid "" +"The Optimizer uses the control points to estimate the\n" +"positions of the individual images in the final panorama\n" +"\n" +"The optimizer can be invoked in the Optimizer tab.\n" +msgstr "" +"L'optimitzador utilitza els punts de control per avaluar la \n" +"posici\xF3 de les imatges individuals dins el panorama final\n" +"\n" +"L'optimitzador s'invoca des de la pestanya \xAB\xA0Optimitzador\xA0\xBB.\n" + +#: hugin1/hugin/PanoDruid.cpp:165 +msgid "Add more control points to improve the stitch quality." +msgstr "Afegiu m\xE9s punts de control per millorar la qualitat de l'assemblatge." + +#: hugin1/hugin/PanoDruid.cpp:166 +msgid "" +"For best results, there should be at least four pairs\n" +"of control points for each pair of overlapping images.\n" +"More points, accurately placed, will improve the match." +msgstr "" +"Per a uns bons resultats, hauria d'haver com a m\xEDnim quatre parelles\n" +"de punts de control per cada parella de imatges a encavalcar.\n" +"M\xE9s punts, acuradament situats, milloren l'encaix." + +#: hugin1/hugin/PanoDruid.cpp:184 +msgid "At least one image has no control points at all." +msgstr "Al menys una imatge no disposa de punts de control." + +#: hugin1/hugin/PanoDruid.cpp:185 +msgid "" +"For best results, there should be at least four pairs\n" +"of control points for each pair of overlapping images.\n" +"An image with no control points cannot be aligned." +msgstr "" +"Per a uns bons resultats, hauria d'haver com a m\xEDnim quatre parelles\n" +"de punts de control per cada parella de imatges a encavalcar.\n" +"Una imatge sense punts de control no pot ser alineada" + +#: hugin1/hugin/PanoDruid.cpp:203 +msgid "Add stitching control points to each pair of images." +msgstr "Afegiu punts de control d'assemblatge per cada parell d'imatges." + +#: hugin1/hugin/PanoDruid.cpp:204 +msgid "" +"The Optimizer relies on your control points to arrange\n" +"and blend the images properly. On the Control Points\n" +"tab, add pairs of points that correspond to identical\n" +"visual features in each pair of overlapping images." +msgstr "" +"L'optmitzador relaciona els punts de control per arreglar\n" +"i mesclar les imatges convenientment. En la pestanya\n" +"\xAB\xA0Punts de Control\xA0\xBB afegir parells de punts que corresponen\n" +"a elements visuals id\xE8ntics en els cantons que s'encavalquen en cada parella " +"de imatges." + +#: hugin1/hugin/PanoDruid.cpp:213 hugin1/hugin/PanoDruid.cpp:431 +msgid "Add at least one more image." +msgstr "Afegiu com a m\xEDnim una imatge m\xE9s." + +#: hugin1/hugin/PanoDruid.cpp:214 hugin1/hugin/PanoDruid.cpp:432 +msgid "You should have at least two files listed in the Images tab." +msgstr "" +"Haur\xEDeu de tenir com a m\xEDnim dos fitxers llistats en la pestanya \xAB\xA0Imatges\xA0\xBB." + +#: hugin1/hugin/PanoDruid.cpp:228 hugin1/hugin/PanoDruid.cpp:427 +msgid "To get started, add some image files." +msgstr "Per iniciar, afegiu alguns fitxers d'imatge." + +#: hugin1/hugin/PanoDruid.cpp:229 hugin1/hugin/PanoDruid.cpp:428 +msgid "You can add any number of images using the Images tab." +msgstr "" +"Podeu afegir tantes imatges com desitgeu utilitzant la pestanya \xAB\xA0Imatges\xA0\xBB." + +#: hugin1/hugin/PanoDruid.cpp:276 +msgid "the Panorama druid" +msgstr "L'assistent Panorama" + +#: hugin1/hugin/PanoDruid.cpp:420 +msgid "The druid has no advice at this time." +msgstr "L'assistent no us pot ajudar en aquest moment." + +#: hugin1/hugin/PanoDruid.cpp:440 +msgid "" +"Very large pixel dimensions are currently entered.\n" +"Some computers may take an excessively long time\n" +"to render such a large final image.\n" +"For best results, use the automatic Calc button on\n" +"the Panorama Options tab to determine the\n" +"pixel dimensions which will give the best quality." +msgstr "" +"S'han introdu\xEFt grans dimensions de p\xEDxels.\n" +"Alguns ordinadors poden trigar massa temps\n" +"per processar una imatge final tant gran.\n" +"Per obtenir millors resultats, utilitzeu el bot\xF3\n" +"\xAB\xA0c\xE0lcul autom\xE0tic\xA0\xBB en la pestanya \xAB\xA0Opcions de panorama\xA0\xBB\n" +"per determinar les dimensions de p\xEDxel per a una\n" +"millor qualitat." + +#: hugin1/hugin/PanoPanel.cpp:378 +#, c-format +msgid "Invalid HFOV value. Maximum HFOV for this projection is %lf." +msgstr "" + +#: hugin1/hugin/PanoPanel.cpp:409 +#, c-format +msgid "Invalid VFOV value. Maximum VFOV for this projection is %lf." +msgstr "" + +#: hugin1/hugin/PanoPanel.cpp:455 +msgid "width needs to be an integer bigger than 0" +msgstr "l'amplada ha de ser un enter m\xE9s gran que 0" + +#: hugin1/hugin/PanoPanel.cpp:472 +#, fuzzy +msgid "height needs to be an integer bigger than 0" +msgstr "l'amplada ha de ser un enter m\xE9s gran que 0" + +#: hugin1/hugin/PanoPanel.cpp:482 +#, fuzzy +msgid "Top needs to be an integer bigger than 0" +msgstr "l'amplada ha de ser un enter m\xE9s gran que 0" + +#: hugin1/hugin/PanoPanel.cpp:486 +#, fuzzy +msgid "left needs to be an integer bigger than 0" +msgstr "l'amplada ha de ser un enter m\xE9s gran que 0" + +#: hugin1/hugin/PanoPanel.cpp:490 +#, fuzzy +msgid "right needs to be an integer bigger than 0" +msgstr "l'amplada ha de ser un enter m\xE9s gran que 0" + +#: hugin1/hugin/PanoPanel.cpp:494 +#, fuzzy +msgid "bottom needs to be an integer bigger than 0" +msgstr "l'amplada ha de ser un enter m\xE9s gran que 0" + +#: hugin1/hugin/PanoPanel.cpp:534 hugin1/hugin/PanoPanel.cpp:568 +#: hugin1/hugin/PanoPanel.cpp:703 hugin1/hugin/PanoPanel.cpp:731 +msgid "Not yet implemented" +msgstr "" + +#: hugin1/hugin/PreferencesDialog.cpp:124 +msgid "System default" +msgstr "Llengua per defecte del sistema" + +#: hugin1/hugin/PreferencesDialog.cpp:127 +#, fuzzy +msgid "Catalan" +msgstr "Itali\xE0" + +#: hugin1/hugin/PreferencesDialog.cpp:130 +msgid "Chinese (Simplified)" +msgstr "Xin\xE8s Simplificat" + +#: hugin1/hugin/PreferencesDialog.cpp:133 +msgid "Czech" +msgstr "" + +#: hugin1/hugin/PreferencesDialog.cpp:136 +msgid "Dutch" +msgstr "Holand\xE8s" + +#: hugin1/hugin/PreferencesDialog.cpp:139 +msgid "English" +msgstr "Angl\xE8s" + +#: hugin1/hugin/PreferencesDialog.cpp:142 +msgid "French" +msgstr "Franc\xE8s" + +#: hugin1/hugin/PreferencesDialog.cpp:145 +msgid "German" +msgstr "Alemany" + +#: hugin1/hugin/PreferencesDialog.cpp:148 +msgid "Hungarian" +msgstr "" + +#: hugin1/hugin/PreferencesDialog.cpp:151 +msgid "Italian" +msgstr "Itali\xE0" + +#: hugin1/hugin/PreferencesDialog.cpp:154 +msgid "Japanese" +msgstr "Japon\xE8s" + +#: hugin1/hugin/PreferencesDialog.cpp:157 +msgid "Polish" +msgstr "Polon\xE8s" + +#: hugin1/hugin/PreferencesDialog.cpp:160 +msgid "Portuguese (Brazilian)" +msgstr "Portugu\xE8s (Brasiler)" + +#: hugin1/hugin/PreferencesDialog.cpp:163 +msgid "Russian" +msgstr "Rus" + +#: hugin1/hugin/PreferencesDialog.cpp:166 +msgid "Slovak" +msgstr "" + +#: hugin1/hugin/PreferencesDialog.cpp:169 +msgid "Spanish" +msgstr "" + +#: hugin1/hugin/PreferencesDialog.cpp:172 +msgid "Swedish" +msgstr "" + +#: hugin1/hugin/PreferencesDialog.cpp:175 +msgid "Ukrainian" +msgstr "" + +#: hugin1/hugin/PreferencesDialog.cpp:253 +#, fuzzy +msgid "Select PTmender" +msgstr "Seleccioneu PTOptimizer" + +#: hugin1/hugin/PreferencesDialog.cpp:272 +#, fuzzy +msgid "Select image editor" +msgstr "parella d'imatge seg\xFCent" + +#: hugin1/hugin/PreferencesDialog.cpp:289 +msgid "Select Enblend" +msgstr "Seleccioneu Enblend" + +#: hugin1/hugin/PreferencesDialog.cpp:305 translations/xrc.cpp:520 xrc.cpp:520 +msgid "Select Autopano" +msgstr "Seleccioneu Autopano" + +#: hugin1/hugin/PreferencesDialog.cpp:321 +#, fuzzy +msgid "Select Autopano-SIFT" +msgstr "Seleccioneu Autopano" + +#: hugin1/hugin/PreferencesDialog.cpp:324 +msgid "Executables (*.exe,*.vbs,*.cmd)|*.exe;*.vbs;*.cmd" +msgstr "Executables (*.exe,*.vbs,*.cmd)|*.exe;*.vbs;*.cmd" + +#: hugin1/hugin/PreferencesDialog.cpp:363 +msgid "Panotools details" +msgstr "Detalls de Panotools" + +#: hugin1/hugin/PreferencesDialog.cpp:739 +msgid "Unknown Version" +msgstr "Versi\xF3 desconeguda" + +#: hugin1/hugin/PreferencesDialog.cpp:749 +msgid "Really reset displayed preferences to default values?" +msgstr "" +"Voleu realment substituir les prefer\xE8ncies mostrades pels valors per " +"defecte\xA0?" + +#: hugin1/hugin/PreferencesDialog.cpp:749 translations/xrc.cpp:544 xrc.cpp:544 +msgid "Load Defaults" +msgstr "Carregant els valors per defecte" + +#: hugin1/hugin/PreviewFrame.cpp:110 +msgid "Panorama preview" +msgstr "Vista pr\xE8via del panorama" + +#: hugin1/hugin/PreviewFrame.cpp:125 +msgid "displayed images" +msgstr "imatges mostrades" + +#: hugin1/hugin/PreviewFrame.cpp:160 +msgid "VFOV" +msgstr "VFOV" + +#: hugin1/hugin/PreviewFrame.cpp:164 +msgid "drag to change the vertical field of view" +msgstr "arrossegar per canviar el camp de visi\xF3 vertical" + +#: hugin1/hugin/PreviewFrame.cpp:173 +msgid "HFOV" +msgstr "HFOV" + +#: hugin1/hugin/PreviewFrame.cpp:178 +msgid "drag to change the horizontal field of view" +msgstr "arrossegar per canviar el camp de visi\xF3 horitzontal" + +#: hugin1/hugin/PreviewFrame.cpp:189 +msgid "Preview Options" +msgstr "Opcions de la vista pr\xE8via" + +#: hugin1/hugin/PreviewFrame.cpp:192 translations/xrc.cpp:375 xrc.cpp:375 +msgid "projection (f):" +msgstr "projecci\xF3 (f)\xA0:" + +#: hugin1/hugin/PreviewFrame.cpp:235 +msgid "Blend mode:" +msgstr "Mode de barreja\xA0:" + +#: hugin1/hugin/PreviewFrame.cpp:241 +msgid "difference" +msgstr "difer\xE8ncia" + +#: hugin1/hugin/PreviewFrame.cpp:257 +msgid "Output:" +msgstr "" + +#: hugin1/hugin/PreviewFrame.cpp:262 +msgid "LDR" +msgstr "" + +#: hugin1/hugin/PreviewFrame.cpp:263 translations/xrc.cpp:316 xrc.cpp:316 +msgid "HDR" +msgstr "" + +#: hugin1/hugin/PreviewFrame.cpp:275 +msgid "EV:" +msgstr "" + +#: hugin1/hugin/PreviewFrame.cpp:288 hugin1/hugin/PreviewFrame.cpp:322 +msgid "0" +msgstr "0" + +#: hugin1/hugin/PreviewFrame.cpp:308 +#, fuzzy +msgid "Projection Parameters" +msgstr "Par\xE0metres de correcci\xF3 de la lent" + +#: hugin1/hugin/PreviewFrame.cpp:317 +msgid "param:" +msgstr "" + +#: hugin1/hugin/PreviewFrame.cpp:349 hugin1/hugin/PreviewPanel.cpp:750 +msgid "" +"Left click to define new center point, right click to move point to horizon." +msgstr "" + +#: hugin1/hugin/PreviewFrame.cpp:384 hugin1/hugin/PreviewFrame.cpp:499 +#, fuzzy +msgid "Center panorama with left mouse button, set horizon with right button" +msgstr "" +"Fixeu la Guinyada i el Caboteig amb el bot\xF3 esquerre del ratol\xED. Utilitzeu " +"el bot\xF3 dret del ratol\xED per fixar el Balanceig." + +#: hugin1/hugin/PreviewFrame.cpp:614 +msgid "Rectilinear" +msgstr "Rectilini" + +#: hugin1/hugin/PreviewFrame.cpp:615 +msgid "Cylindrical" +msgstr "Cil\xEDndric" + +#: hugin1/hugin/PreviewFrame.cpp:713 +#, fuzzy +msgid "Yaw value must be numeric." +msgstr "El valor ha de ser num\xE8ric." + +#: hugin1/hugin/PreviewFrame.cpp:719 +#, fuzzy +msgid "Pitch value must be numeric." +msgstr "El valor ha de ser num\xE8ric." + +#: hugin1/hugin/PreviewFrame.cpp:725 +#, fuzzy +msgid "Roll value must be numeric." +msgstr "El valor ha de ser num\xE8ric." + +#: hugin1/hugin/PreviewPanel.cpp:470 +msgid "Error during Stitching" +msgstr "Error durant l'assemblatge" + +#: hugin1/hugin/PTStitcherPanel.cpp:279 +msgid "Bicubic" +msgstr "Bic\xFAbic" + +#: hugi... [truncated message content] |
From: <da...@us...> - 2008-01-03 13:53:34
|
Revision: 2602 http://hugin.svn.sourceforge.net/hugin/?rev=2602&view=rev Author: dangelo Date: 2008-01-03 05:53:33 -0800 (Thu, 03 Jan 2008) Log Message: ----------- Automatically determine number of threads, based on the CPU cores. Modified Paths: -------------- hugin/trunk/src/hugin_base/CMakeLists.txt hugin/trunk/src/hugin_base/hugin_utils/platform.h hugin/trunk/src/tools/nona.cpp Added Paths: ----------- hugin/trunk/src/hugin_base/hugin_utils/platform.cpp Modified: hugin/trunk/src/hugin_base/CMakeLists.txt =================================================================== --- hugin/trunk/src/hugin_base/CMakeLists.txt 2008-01-03 13:28:57 UTC (rev 2601) +++ hugin/trunk/src/hugin_base/CMakeLists.txt 2008-01-03 13:53:33 UTC (rev 2602) @@ -34,6 +34,7 @@ hugin_math/Matrix3.cpp hugin_math/Vector3.cpp hugin_utils/utils.cpp +hugin_utils/platform.cpp nona/SpaceTransform.cpp nona/Stitcher1.cpp nona/Stitcher2.cpp Added: hugin/trunk/src/hugin_base/hugin_utils/platform.cpp =================================================================== --- hugin/trunk/src/hugin_base/hugin_utils/platform.cpp (rev 0) +++ hugin/trunk/src/hugin_base/hugin_utils/platform.cpp 2008-01-03 13:53:33 UTC (rev 2602) @@ -0,0 +1,73 @@ +// -*- c-basic-offset: 4 -*- + +/** @file platform.cpp + * + * @author Pablo d'Angelo <pab...@we...> + * + * $Id: utils.cpp 2570 2007-12-18 16:53:54Z dangelo $ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this software; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include "platform.h" + + +#ifdef _WIN32 +#include "vigra/windows.h" +#else +#include <unistd.h> +#include <sys/sysctl.h> +#endif + +namespace hugin_utils { + +#ifdef _WIN32 + +int getCPUCount() +{ + SYSTEM_INFO si; + GetSystemInfo(&si); + return si.dwNumberOfProcessors; +} + +#else + +int getCPUCount() +{ + #ifdef HW_NCPU + // BSD and OSX like system + int mib[2]; + int numCPUs = 1; + size_t len = sizeof(numCPUs); + + mib[0] = CTL_HW; + mib[1] = HW_NCPU; + sysctl(mib, 2, &numCPUs, &len, 0, 0); + return numCPUs; + + #elif defined(_SC_NPROCESSORS_ONLN) + // Linux and Solaris + long nProcessorsOnline = sysconf(_SC_NPROCESSORS_ONLN); + return nProcessorsOnline; + #else + #warning sysconf or sysctl does not support quering the number of processors/cores. + return -1; + #endif +} + +#endif + +} //namespace Modified: hugin/trunk/src/hugin_base/hugin_utils/platform.h =================================================================== --- hugin/trunk/src/hugin_base/hugin_utils/platform.h 2008-01-03 13:28:57 UTC (rev 2601) +++ hugin/trunk/src/hugin_base/hugin_utils/platform.h 2008-01-03 13:53:33 UTC (rev 2602) @@ -55,6 +55,9 @@ namespace hugin_utils { + + /// return the CPU count. On error returns a cpu count of 0 or -1 + int getCPUCount(); /// utility function; escapes characters in replacements with quotechar. template <class str> Modified: hugin/trunk/src/tools/nona.cpp =================================================================== --- hugin/trunk/src/tools/nona.cpp 2008-01-03 13:28:57 UTC (rev 2601) +++ hugin/trunk/src/tools/nona.cpp 2008-01-03 13:53:33 UTC (rev 2602) @@ -42,6 +42,7 @@ #endif #include <hugin_basic.h> +#include <hugin_utils/platform.h> #include <algorithms/nona/NonaFileStitcher.h> #include <vigra_ext/MultiThreadOperations.h> @@ -49,6 +50,7 @@ using namespace vigra; using namespace HuginBase; +using namespace hugin_utils; using namespace std; static void usage(const char * name) @@ -72,7 +74,7 @@ << " Options: " << std::endl << " -c create coordinate images (only TIFF_m output)" << std::endl << " -v verbose, output progress indicators" << std::endl - << " -t num number of thread to be used (default 1))" << std::endl + << " -t num number of threads to be used (default: nr of available cores)" << std::endl << std::endl << " The following options can be used to override settings in the project file:" << std::endl << " -i num remap only image with number num" << std::endl @@ -106,7 +108,8 @@ opterr = 0; - unsigned nThread = 1; + int nThread = getCPUCount(); + if (nThread < 0) nThread = 1; bool doCoord = false; UIntSet outputImages; string basename; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-01-03 13:56:35
|
Revision: 2603 http://hugin.svn.sourceforge.net/hugin/?rev=2603&view=rev Author: dangelo Date: 2008-01-03 05:56:33 -0800 (Thu, 03 Jan 2008) Log Message: ----------- Fixed problems with filenames containing dots (bug #1848419) Modified Paths: -------------- hugin/trunk/src/hugin1/common/wxPlatform.h hugin/trunk/src/hugin1/hugin/PanoPanel.cpp hugin/trunk/src/hugin1/stitch_project/hugin_stitch_project.cpp hugin/trunk/src/hugin_base/nona/Stitcher.h hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h Modified: hugin/trunk/src/hugin1/common/wxPlatform.h =================================================================== --- hugin/trunk/src/hugin1/common/wxPlatform.h 2008-01-03 13:53:33 UTC (rev 2602) +++ hugin/trunk/src/hugin1/common/wxPlatform.h 2008-01-03 13:56:33 UTC (rev 2603) @@ -100,7 +100,6 @@ return wxString(t.c_str(), *wxConvCurrent); } - } // namespace #endif // HUGIN_WXPLATFORM_H Modified: hugin/trunk/src/hugin1/hugin/PanoPanel.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/PanoPanel.cpp 2008-01-03 13:53:33 UTC (rev 2602) +++ hugin/trunk/src/hugin1/hugin/PanoPanel.cpp 2008-01-03 13:56:33 UTC (rev 2603) @@ -623,7 +623,15 @@ #else wxString hugin_stitch_project = wxT("hugin_stitch_project"); #endif - wxString command = hugin_stitch_project + wxT(" ") + wxQuoteFilename(ptofile); + wxFileName prefixFN(ptofile); + wxString outputPrefix; + if (prefixFN.GetExt() == wxT("pto")) { + outputPrefix = prefixFN.GetPath(wxPATH_GET_VOLUME | wxPATH_GET_SEPARATOR, wxPATH_NATIVE) + prefixFN.GetName(); + } else { + outputPrefix = ptofile; + } + + wxString command = hugin_stitch_project + wxT(" -o ") + wxQuoteFilename(outputPrefix) + wxT(" ") + wxQuoteFilename(ptofile); wxProcess *my_process = new wxProcess(this); my_process->Redirect(); Modified: hugin/trunk/src/hugin1/stitch_project/hugin_stitch_project.cpp =================================================================== --- hugin/trunk/src/hugin1/stitch_project/hugin_stitch_project.cpp 2008-01-03 13:53:33 UTC (rev 2602) +++ hugin/trunk/src/hugin1/stitch_project/hugin_stitch_project.cpp 2008-01-03 13:56:33 UTC (rev 2603) @@ -278,7 +278,9 @@ wxString basename; wxString outpath; - wxFileName::SplitPath(outname, &outpath, &basename, NULL); + wxFileName outputPrefix(outname); + outpath = outputPrefix.GetPath(); + basename = outputPrefix.GetFullName(); cout << "output path: " << outpath.mb_str() << " file:" << basename.mb_str() << endl; long nThreads = wxThread::GetCPUCount(); @@ -293,6 +295,7 @@ // stitch only active images UIntSet activeImgs = pano.getActiveImages(); + bool keepWindow = true; if (imgsFromCmdline) { if (parser.GetParamCount() -1 != activeImgs.size()) { wxLogError(_("Wrong number of images specified on command line")); @@ -340,8 +343,7 @@ std::string ptoFn = (const char *) tmpPTOfn.mb_str(); - std::string resultFn(outname.mb_str()); - resultFn = utils::stripPath(utils::stripExtension(resultFn)); + std::string resultFn(basename.mb_str()); std::string tmpPTOfnC = (const char *) tmpPTOfn.mb_str(); @@ -366,8 +368,9 @@ #if 1 int ret = MyExecuteCommandOnDialog(wxT("make"), args, NULL, caption); if (ret != 0) { + keepWindow = true; wxMessageBox(wxString::Format(_("Error while stitching project\n%s"), scriptFile.c_str()), - wxT("Error during stitching"), wxICON_ERROR | wxOK ); + _("Error during stitching"), wxICON_ERROR | wxOK ); } #else // This crashes.. Don't know why.. @@ -375,8 +378,9 @@ int ret = execDlg.ShowModal(cmd); cout << " exit code: " << ret << std::endl; if (ret != 0) { + keepWindow = true; wxMessageBox(wxString::Format(_("Error while stitching project\n%s"), scriptFile.c_str()), - wxT("Error during stitching"), wxICON_ERROR | wxOK ); + _("Error during stitching"), wxICON_ERROR | wxOK ); } #endif @@ -387,10 +391,13 @@ #endif } catch (std::exception & e) { cerr << "caught exception: " << e.what() << std::endl; - return false; + wxMessageBox(wxString(e.what(), wxConvLocal), + _("Error during stitching"), wxICON_ERROR | wxOK ); + + return true; } - return false; + return keepWindow; } Modified: hugin/trunk/src/hugin_base/nona/Stitcher.h =================================================================== --- hugin/trunk/src/hugin_base/nona/Stitcher.h 2008-01-03 13:53:33 UTC (rev 2602) +++ hugin/trunk/src/hugin_base/nona/Stitcher.h 2008-01-03 13:56:33 UTC (rev 2603) @@ -33,6 +33,8 @@ #include <iomanip> #include <vector> #include <utility> +#include <cctype> +#include <algorithm> #include <vigra/stdimage.hxx> #include <vigra/rgbvalue.hxx> @@ -216,8 +218,7 @@ || opts.outputFormat == PanoramaOptions::HDR_m || opts.outputFormat == PanoramaOptions::EXR_m); - m_basename = hugin_utils::stripExtension(basename); - DEBUG_DEBUG("created basename: " << basename << " -> " << m_basename); + m_basename = basename; // setup the output. prepareOutputFile(opts); @@ -319,6 +320,13 @@ std::string ext = opts.getOutputExtension(); + std::string cext = hugin_utils::getExtension(m_basename); + std::transform(cext.begin(),cext.end(), cext.begin(), (int(*)(int))std::tolower); + // remove extension only if it specifies the same file type, otherwise + // its probably part of the filename. + if (cext == ext) { + m_basename = hugin_utils::stripExtension(m_basename); + } std::ostringstream filename; filename << m_basename << std::setfill('0') << std::setw(4) << imgNr << "." + ext; @@ -557,7 +565,7 @@ { Base::stitch(opts, imgSet, filename, remapper); - std::string basename = hugin_utils::stripExtension(filename); + std::string basename = filename; // create panorama canvas ImageType pano(opts.getWidth(), opts.getHeight()); @@ -565,28 +573,17 @@ stitch(opts, imgSet, vigra::destImageRange(pano), vigra::destImage(panoMask), remapper); - std::string outputfile; - // save the remapped image - switch (opts.outputFormat) { - case PanoramaOptions::JPEG: - outputfile = basename + ".jpg"; - break; - case PanoramaOptions::PNG: - outputfile = basename + ".png"; - break; - case PanoramaOptions::TIFF: - outputfile = basename + ".tif"; - break; - case PanoramaOptions::HDR: - outputfile = basename + ".hdr"; - break; - case PanoramaOptions::EXR: - outputfile = basename + ".exr"; - break; - break; - default: - DEBUG_ERROR("unsupported output format: " << opts.outputFormat); + std::string ext = opts.getOutputExtension(); + std::string cext = hugin_utils::getExtension(basename); + std::transform(cext.begin(),cext.end(), cext.begin(), (int(*)(int))std::tolower); + // remove extension only if it specifies the same file type, otherwise + // its probably part of the filename. + if (cext == ext) { + basename = hugin_utils::stripExtension(basename); } + std::string outputfile = basename + "." + ext; + + // save the remapped image Base::m_progress.setMessage("saving result: " + hugin_utils::stripPath(outputfile)); DEBUG_DEBUG("Saving panorama: " << outputfile); vigra::ImageExportInfo exinfo(outputfile.c_str()); @@ -701,7 +698,7 @@ { Base::stitch(opts, imgSet, filename, remapper); - std::string basename = hugin_utils::stripExtension(filename); + std::string basename = filename; // create panorama canvas ImageType pano(opts.getWidth(), opts.getHeight()); @@ -710,27 +707,16 @@ stitch(opts, imgSet, vigra::destImageRange(pano), vigra::destImage(panoMask), remapper, reduce); - std::string outputfile; - // save the remapped image - switch (opts.outputFormat) { - case PanoramaOptions::JPEG: - outputfile = basename + ".jpg"; - break; - case PanoramaOptions::PNG: - outputfile = basename + ".png"; - break; - case PanoramaOptions::TIFF: - outputfile = basename + ".tif"; - break; - case PanoramaOptions::HDR: - outputfile = basename + ".hdr"; - break; - case PanoramaOptions::EXR: - outputfile = basename + ".exr"; - break; - default: - DEBUG_ERROR("unsupported output format: " << opts.outputFormat); + std::string ext = opts.getOutputExtension(); + std::string cext = hugin_utils::getExtension(basename); + std::transform(cext.begin(),cext.end(), cext.begin(), (int(*)(int))std::tolower); + // remove extension only if it specifies the same file type, otherwise + // its probably part of the filename. + if (cext == ext) { + basename = hugin_utils::stripExtension(basename); } + std::string outputfile = basename + "." + ext; + // Base::m_progress.setMessage("saving result: " + hugin_utils::stripPath(outputfile)); DEBUG_DEBUG("Saving panorama: " << outputfile); vigra::ImageExportInfo exinfo(outputfile.c_str()); @@ -905,7 +891,7 @@ SingleImageRemapper<ImageType, AlphaType> & remapper, BlendFunctor & blend) { - std::string basename = hugin_utils::stripExtension(filename); + std::string basename = filename; // create panorama canvas ImageType pano(opts.getWidth(), opts.getHeight()); @@ -913,22 +899,17 @@ stitch(opts, imgSet, vigra::destImageRange(pano), vigra::destImage(panoMask), remapper, blend); - std::string outputfile; - // save the remapped image - switch (opts.outputFormat) { - case PanoramaOptions::JPEG: - outputfile = basename + ".jpg"; - break; - case PanoramaOptions::PNG: - outputfile = basename + ".png"; - break; - case PanoramaOptions::TIFF: - outputfile = basename + ".tif"; - break; - default: - DEBUG_ERROR("unsupported output format: " << opts.outputFormat); + std::string ext = opts.getOutputExtension(); + std::string cext = hugin_utils::getExtension(basename); + std::transform(cext.begin(),cext.end(), cext.begin(), (int(*)(int))std::tolower); + // remove extension only if it specifies the same file type, otherwise + // its probably part of the filename. + if (cext == ext) { + basename = hugin_utils::stripExtension(basename); } - Base::m_progress.setMessage("saving result: " + hugin_utils::stripPath(outputfile)); + std::string outputfile = basename + "." + ext; + + Base::m_progress.setMessage("saving result: " + hugin_utils::stripPath(outputfile)); DEBUG_DEBUG("Saving panorama: " << outputfile); vigra::ImageExportInfo exinfo(outputfile.c_str()); exinfo.setXResolution(150); Modified: hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h 2008-01-03 13:53:33 UTC (rev 2602) +++ hugin/trunk/src/hugin_base/panodata/PanoramaOptions.h 2008-01-03 13:56:33 UTC (rev 2603) @@ -224,8 +224,10 @@ outputHDRLayers = false; outputHDRStacks = false; + intermediateImageType = "tif"; + intermediateImageTypeCompression = "DEFLATE"; outputImageType = "tif"; - outputImageTypeCompression = "LZW"; + outputImageTypeCompression = "DEFLATE"; outputImageTypeHDR= "exr"; outputImageTypeHDRCompression = ""; @@ -374,6 +376,8 @@ bool outputHDRLayers; ///< save remapped layers (HDR) bool outputHDRStacks; ///< save image stacks (HDR) + std::string intermediateImageType; + std::string intermediateImageTypeCompression; std::string outputImageType; std::string outputImageTypeCompression; std::string outputImageTypeHDR; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-01-03 14:03:55
|
Revision: 2604 http://hugin.svn.sourceforge.net/hugin/?rev=2604&view=rev Author: dangelo Date: 2008-01-03 06:03:53 -0800 (Thu, 03 Jan 2008) Log Message: ----------- Updated dutch translation (by Simon Oosthoek) Modified Paths: -------------- hugin/trunk/src/hugin1/hugin/xrc/data/about.htm.in hugin/trunk/src/translations/nl.po Modified: hugin/trunk/src/hugin1/hugin/xrc/data/about.htm.in =================================================================== --- hugin/trunk/src/hugin1/hugin/xrc/data/about.htm.in 2008-01-03 13:56:33 UTC (rev 2603) +++ hugin/trunk/src/hugin1/hugin/xrc/data/about.htm.in 2008-01-03 14:03:53 UTC (rev 2604) @@ -21,16 +21,17 @@ Lorenz Trischberger, Luca Vascon, Alexandre Prokoudine, - Ademar de Souza Reis - Harry van der Wolf - Lu Fang - György Balló - Albert Capellades Badia - Jiri Slaby - Serhij Dubyk - Ulf Wilhelmson - Jozef Riha - Jorge González González + Ademar de Souza Reis, + Harry van der Wolf, + Simon Oosthoek, + Lu Fang, + György Balló, + Albert Capellades Badia, + Jiri Slaby, + Serhij Dubyk, + Ulf Wilhelmson, + Jozef Riha, + Jorge González González, Milo Casagrande <p> Hugin uses the EMoR response model from the Computer Vision Lab at Columbia University. Modified: hugin/trunk/src/translations/nl.po =================================================================== --- hugin/trunk/src/translations/nl.po 2008-01-03 13:56:33 UTC (rev 2603) +++ hugin/trunk/src/translations/nl.po 2008-01-03 14:03:53 UTC (rev 2604) @@ -7,9 +7,9 @@ "Project-Id-Version: nl\n" "Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" "group_id=77506&atid=550441\n" -"POT-Creation-Date: 2008-01-02 15:02+0100\n" -"PO-Revision-Date: 2007-05-29 17:47+0100\n" -"Last-Translator: Harry <har...@xs...>\n" +"POT-Creation-Date: 2008-01-03 14:45+0100\n" +"PO-Revision-Date: 2008-01-03 14:44+0100\n" +"Last-Translator: Simon Oosthoek <si...@ma...>\n" "Language-Team: Dutch <LL...@li...>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" @@ -17,23 +17,30 @@ "X-Poedit-Language: Dutch\n" "X-Poedit-Country: NETHERLANDS\n" -#: hugin1/base_wx/huginConfig.cpp:40 +#: hugin1/base_wx/huginConfig.cpp:45 hugin1/base_wx/huginConfig.cpp:70 #, c-format msgid "External program %s not found, reverting to bundled version" -msgstr "" +msgstr "Extern programma %s niet gevonden, terugvallen naar ingebouwde versie" -#: hugin1/base_wx/huginConfig.cpp:40 -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:334 +#: hugin1/base_wx/huginConfig.cpp:45 hugin1/base_wx/huginConfig.cpp:57 +#: hugin1/base_wx/huginConfig.cpp:70 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:362 #: hugin1/hugin/AssistantPanel.cpp:362 hugin1/hugin/AssistantPanel.cpp:522 #: hugin1/hugin/OptimizePhotometricPanel.cpp:462 #: hugin1/hugin/OptimizePhotometricPanel.cpp:482 msgid "Error" msgstr "Fout" +#: hugin1/base_wx/huginConfig.cpp:57 +#, c-format +msgid "External program %s not found in the bundle, reverting to system path" +msgstr "" +"Gespecificeerd extern programma %s niet gevonden, terugvallen naar systeempad" + #: hugin1/base_wx/ImageCache.cpp:539 #, c-format msgid "Loading image %s" -msgstr "Laden van afbeelding %s" +msgstr "Inlezen van afbeelding %s" #: hugin1/base_wx/ImageCache.cpp:683 #, c-format @@ -42,7 +49,7 @@ #: hugin1/base_wx/ImageCache.cpp:691 hugin_base/huginapp/ImageCache.cpp:661 msgid "Cannot load image: " -msgstr "Kan afbeelding niet laden:" +msgstr "Kan afbeelding niet inlezen:" #: hugin1/base_wx/ImageCache.cpp:719 #, c-format @@ -59,53 +66,52 @@ msgid "Creating pyramid image for %s, level %d" msgstr "Maken van piramidale afbeelding voor %s, niveau %d" -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:110 translations/xrc.cpp:86 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:119 translations/xrc.cpp:86 #: translations/xrc.cpp:546 xrc.cpp:86 xrc.cpp:546 msgid "Cancel" msgstr "Annuleer" -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:133 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:142 #, c-format msgid "Failed to kill process %ld with sigterm: %s" -msgstr "" +msgstr "Het is niet gelukt om taak %Id te sluiten met sigTERM: %s" -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:334 -#, fuzzy +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:362 msgid "Error while executing process" -msgstr "Fout bij uitvoeren %s" +msgstr "Fout bij uitvoeren" -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:430 -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:470 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:458 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:498 #: hugin1/hugin/AutoCtrlPointCreator.cpp:301 #: hugin1/hugin/AutoCtrlPointCreator.cpp:406 -#: hugin1/hugin/NonaStitcherPanel.cpp:427 hugin1/hugin/PanoPanel.cpp:658 +#: hugin1/hugin/NonaStitcherPanel.cpp:427 hugin1/hugin/PanoPanel.cpp:668 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:299 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:402 #: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:172 msgid "Could not execute command: " msgstr "Kan volgend commando niet uitvoeren:" -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:430 -#: hugin1/hugin/PanoPanel.cpp:658 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:458 +#: hugin1/hugin/PanoPanel.cpp:668 msgid "ShellExecuteEx failed" msgstr "ShellExecuteEx mislukt" -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:470 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:498 msgid "CreateProcess Error" msgstr "CreateProcess Fout" -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:481 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:509 msgid "program finished" -msgstr "" +msgstr "programma klaar" -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:481 +#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:509 #, fuzzy msgid "ExecuteProcess" msgstr "wxExecute fout" #: hugin1/base_wx/MyExternalCmdExecDialog.h:154 msgid "Command Line Progress" -msgstr "" +msgstr "Commandoregel voortgang" #: hugin1/base_wx/MyProgressDialog.cpp:36 msgid "Elapsed time : " @@ -121,7 +127,6 @@ msgstr "Panorama Tools" #: hugin1/base_wx/PTWXDlg.cpp:82 hugin1/base_wx/PTWXDlg.cpp:134 -#, fuzzy msgid "" "\n" "\n" @@ -130,7 +135,6 @@ "\n" "\n" "\n" -"\n" #: hugin1/hugin/AssistantPanel.cpp:229 msgid "Please load images by pressing on the Load images button." @@ -205,14 +209,12 @@ "Voeg meer afbeeldingen toe." #: hugin1/hugin/AssistantPanel.cpp:382 -#, fuzzy msgid "Aligning images" -msgstr "schalen van afbeelding %s" +msgstr "Uitlijnen van afbeeldingen" #: hugin1/hugin/AssistantPanel.cpp:382 -#, fuzzy msgid "Finding corresponding points" -msgstr "Geen overeenkomend punt gevonden" +msgstr "Overeenkomende punten zoeken" #: hugin1/hugin/AssistantPanel.cpp:407 #, c-format @@ -233,9 +235,8 @@ #: hugin1/hugin/AssistantPanel.cpp:522 #: hugin1/hugin/OptimizePhotometricPanel.cpp:462 -#, fuzzy msgid "Error: could not load all images" -msgstr "Fout: afbeelding tekst bestand niet gevonden." +msgstr "Fout: kon niet alle afbeeldingen inlezen." #: hugin1/hugin/AutoCtrlPointCreator.cpp:104 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:103 @@ -269,9 +270,8 @@ #: hugin1/hugin/AutoCtrlPointCreator.cpp:158 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:157 -#, fuzzy msgid "Select autopano program / frontend script" -msgstr "Selecteer autopano frontend script" +msgstr "Selecteer autopano software / frontend script" #: hugin1/hugin/AutoCtrlPointCreator.cpp:160 #: hugin1/hugin/AutoCtrlPointCreator.cpp:347 @@ -396,14 +396,14 @@ "mislukt met fout code: " #: hugin1/hugin/AutoCtrlPointCreator.cpp:312 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:419 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:420 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:310 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:415 msgid "Could not open " msgstr "bestand openen mislukt " #: hugin1/hugin/AutoCtrlPointCreator.cpp:312 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:419 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:420 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:310 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:415 msgid "" @@ -420,7 +420,7 @@ "Autopano commando:" #: hugin1/hugin/AutoCtrlPointCreator.cpp:313 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:422 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:423 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:311 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:418 msgid "autopano failure" @@ -428,11 +428,10 @@ #: hugin1/hugin/AutoCtrlPointCreator.cpp:345 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:343 -#, fuzzy msgid "Select autopano program" -msgstr "Selecteer het autopano type" +msgstr "Selecteer het autopano programma" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:420 +#: hugin1/hugin/AutoCtrlPointCreator.cpp:421 #: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:416 msgid "" "\n" @@ -656,155 +655,154 @@ "Please enter the the horizontal field of view (HFOV) or the focal length and " "crop factor." msgstr "" +"Geen (volledige) beeldhoek informatie gevonden in afbeelding\n" +"%s\n" +"\n" +"Voer de horizontale beeldhoek of de brandpuntsafstand en crop factor in." #: hugin1/hugin/HFOVDialog.cpp:155 -#, fuzzy msgid "The horizontal field of view must be positive." -msgstr "Het horizontale blikveld (HFOV) kan te smal zijn." +msgstr "Het horizontale beeldhoek kan te smal zijn." #: hugin1/hugin/HFOVDialog.cpp:207 -#, fuzzy msgid "The focal length must be positive." -msgstr "focale lengte vermenigvuldigings factor:" +msgstr "de brandpuntsafstand mag niet negatief zijn." #: hugin1/hugin/HFOVDialog.cpp:246 msgid "The crop factor must be positive." -msgstr "" +msgstr "De crop factor mag niet negatief zijn" #: hugin1/hugin/huginApp.cpp:53 hugin1/hugin/ImagesPanel.cpp:315 #: hugin1/hugin/ImagesPanel.cpp:336 hugin1/hugin/ImagesPanel.cpp:356 -#: hugin1/hugin/PanoPanel.cpp:372 hugin1/hugin/PanoPanel.cpp:403 +#: hugin1/hugin/PanoPanel.cpp:367 hugin1/hugin/PanoPanel.cpp:398 #: hugin1/hugin/PreviewFrame.cpp:748 hugin1/hugin/PreviewFrame.cpp:764 msgid "Value must be numeric." msgstr "Waarde moet numeriek zijn." #: hugin1/hugin/huginApp.cpp:124 msgid "xrc directory not found in bundle" -msgstr "" +msgstr "xrc map niet gevonden in bundle" #: hugin1/hugin/huginApp.cpp:124 hugin1/hugin/huginApp.cpp:133 -#: hugin1/hugin/huginApp.cpp:140 hugin1/hugin/huginApp.cpp:152 -#, fuzzy +#: hugin1/hugin/huginApp.cpp:147 msgid "Fatal Error" -msgstr "Fout" +msgstr "Definitieve Fout" #: hugin1/hugin/huginApp.cpp:133 msgid "Translations not found in bundle" -msgstr "" +msgstr "Vertalingen niet gevonden in bundle" -#: hugin1/hugin/huginApp.cpp:140 -msgid "Command line helper tools not found in bundle" -msgstr "" - -#: hugin1/hugin/huginApp.cpp:152 +#: hugin1/hugin/huginApp.cpp:147 msgid "" "xrc directory not found, hugin needs to be properly installed\n" "Tried Path:" msgstr "" +"xrc map niet gevonden, hugin moet opnieuw/goed geinstalleerd worden\n" +"Geprobeerd pad:" -#: hugin1/hugin/ImagesList.cpp:307 hugin1/hugin/ImagesList.cpp:366 +#: hugin1/hugin/ImagesList.cpp:288 hugin1/hugin/ImagesList.cpp:347 msgid "Filename" msgstr "Bestandsnaam" -#: hugin1/hugin/ImagesList.cpp:308 +#: hugin1/hugin/ImagesList.cpp:289 msgid "width" msgstr "breedte" -#: hugin1/hugin/ImagesList.cpp:309 +#: hugin1/hugin/ImagesList.cpp:290 msgid "height" msgstr "hoogte" -#: hugin1/hugin/ImagesList.cpp:310 +#: hugin1/hugin/ImagesList.cpp:291 msgid "yaw (y)" msgstr "yaw (y)" -#: hugin1/hugin/ImagesList.cpp:311 +#: hugin1/hugin/ImagesList.cpp:292 msgid "pitch (p)" msgstr "pitch (p)" -#: hugin1/hugin/ImagesList.cpp:312 +#: hugin1/hugin/ImagesList.cpp:293 msgid "roll (r)" msgstr "rotatie (r)" -#: hugin1/hugin/ImagesList.cpp:313 +#: hugin1/hugin/ImagesList.cpp:294 msgid "Anchor" msgstr "Anker" -#: hugin1/hugin/ImagesList.cpp:314 +#: hugin1/hugin/ImagesList.cpp:295 msgid "# Ctrl Pnts" msgstr "# Ctrl Pntn" -#: hugin1/hugin/ImagesList.cpp:367 +#: hugin1/hugin/ImagesList.cpp:348 msgid "Lens no." msgstr "Lens nr." -#: hugin1/hugin/ImagesList.cpp:368 +#: hugin1/hugin/ImagesList.cpp:349 msgid "Lens type (f)" msgstr "Lens type (f)" -#: hugin1/hugin/ImagesList.cpp:369 +#: hugin1/hugin/ImagesList.cpp:350 msgid "hfov (v)" msgstr "Hfov(v)" -#: hugin1/hugin/ImagesList.cpp:370 +#: hugin1/hugin/ImagesList.cpp:351 msgid "a" msgstr "a" -#: hugin1/hugin/ImagesList.cpp:371 +#: hugin1/hugin/ImagesList.cpp:352 msgid "b" msgstr "b" -#: hugin1/hugin/ImagesList.cpp:372 +#: hugin1/hugin/ImagesList.cpp:353 msgid "c" msgstr "c" -#: hugin1/hugin/ImagesList.cpp:373 +#: hugin1/hugin/ImagesList.cpp:354 msgid "d" msgstr "d" -#: hugin1/hugin/ImagesList.cpp:374 +#: hugin1/hugin/ImagesList.cpp:355 msgid "e" msgstr "e" -#: hugin1/hugin/ImagesList.cpp:375 +#: hugin1/hugin/ImagesList.cpp:356 msgid "g" msgstr "g" -#: hugin1/hugin/ImagesList.cpp:376 +#: hugin1/hugin/ImagesList.cpp:357 msgid "t" msgstr "t" -#: hugin1/hugin/ImagesList.cpp:399 translations/xrc.cpp:11 +#: hugin1/hugin/ImagesList.cpp:380 translations/xrc.cpp:11 #: translations/xrc.cpp:30 translations/xrc.cpp:137 xrc.cpp:11 xrc.cpp:30 #: xrc.cpp:137 msgid "Normal (rectilinear)" msgstr "Normaal (rectilinear)" -#: hugin1/hugin/ImagesList.cpp:400 translations/xrc.cpp:12 +#: hugin1/hugin/ImagesList.cpp:381 translations/xrc.cpp:12 #: translations/xrc.cpp:31 translations/xrc.cpp:138 xrc.cpp:12 xrc.cpp:31 #: xrc.cpp:138 msgid "Panoramic (cylindrical)" msgstr "Panoramisch (cylindrisch)" -#: hugin1/hugin/ImagesList.cpp:401 translations/xrc.cpp:13 +#: hugin1/hugin/ImagesList.cpp:382 translations/xrc.cpp:13 #: translations/xrc.cpp:32 translations/xrc.cpp:139 xrc.cpp:13 xrc.cpp:32 #: xrc.cpp:139 msgid "Circular fisheye" msgstr "Cirkelvormig fisheye" -#: hugin1/hugin/ImagesList.cpp:402 translations/xrc.cpp:14 +#: hugin1/hugin/ImagesList.cpp:383 translations/xrc.cpp:14 #: translations/xrc.cpp:33 translations/xrc.cpp:140 xrc.cpp:14 xrc.cpp:33 #: xrc.cpp:140 msgid "Full frame fisheye" msgstr "Volledig frame fisheye" -#: hugin1/hugin/ImagesList.cpp:403 hugin1/hugin/PreviewFrame.cpp:616 +#: hugin1/hugin/ImagesList.cpp:384 hugin1/hugin/PreviewFrame.cpp:616 #: translations/xrc.cpp:15 translations/xrc.cpp:34 translations/xrc.cpp:141 #: xrc.cpp:15 xrc.cpp:34 xrc.cpp:141 msgid "Equirectangular" msgstr "Equirectangulair" -#: hugin1/hugin/ImagesList.cpp:421 translations/xrc.cpp:119 +#: hugin1/hugin/ImagesList.cpp:402 translations/xrc.cpp:119 #: translations/xrc.cpp:210 translations/xrc.cpp:385 xrc.cpp:119 xrc.cpp:210 #: xrc.cpp:385 msgid "Crop" @@ -883,23 +881,36 @@ msgid "Tips not available, sorry!" msgstr "Tips niet beschikbaar, sorry!" -#: hugin1/hugin/MainFrame.cpp:195 +#: hugin1/hugin/MainFrame.cpp:197 +#, c-format +msgid "Prerelease %s" +msgstr "Ontwikkelversie %s" + +#: hugin1/hugin/MainFrame.cpp:199 +#, c-format +msgid "Version %s" +msgstr "Versie %s" + +#: hugin1/hugin/MainFrame.cpp:220 +#, fuzzy msgid "" "Fatal installation error\n" -"The data/splash.png was not found at:" +"The file data/splash.png was not found at:" msgstr "" +"Permanente installatiefout\n" +"De data/splash.png file niet gevonden in:" -#: hugin1/hugin/MainFrame.cpp:215 translations/xrc.cpp:218 +#: hugin1/hugin/MainFrame.cpp:240 translations/xrc.cpp:218 #: translations/xrc.cpp:253 translations/xrc.cpp:256 xrc.cpp:218 xrc.cpp:253 #: xrc.cpp:256 msgid "&Help" msgstr "&Help" -#: hugin1/hugin/MainFrame.cpp:317 +#: hugin1/hugin/MainFrame.cpp:342 msgid "Started" msgstr "Gestart" -#: hugin1/hugin/MainFrame.cpp:443 +#: hugin1/hugin/MainFrame.cpp:468 msgid "" "The panorama has been changed\n" "Save changes?" @@ -907,28 +918,28 @@ "Het panorama is gewijzigd\n" "Wijzigingen opslaan ?" -#: hugin1/hugin/MainFrame.cpp:443 +#: hugin1/hugin/MainFrame.cpp:468 msgid "Save Panorama?" msgstr "Panorama opslaan?" -#: hugin1/hugin/MainFrame.cpp:476 +#: hugin1/hugin/MainFrame.cpp:501 msgid "forced close" msgstr "Geforceerd afsluiten" -#: hugin1/hugin/MainFrame.cpp:527 +#: hugin1/hugin/MainFrame.cpp:555 #, c-format msgid "saved project %s" msgstr "project opgeslagen als %s" -#: hugin1/hugin/MainFrame.cpp:544 +#: hugin1/hugin/MainFrame.cpp:572 msgid "Save project file" msgstr "Opslaan project bestand" -#: hugin1/hugin/MainFrame.cpp:546 +#: hugin1/hugin/MainFrame.cpp:574 msgid "Project files (*.pto)|*.pto|All files (*)|*" msgstr "Project bestanden (*.pto)|*.pto|Alle bestanden (*)|*" -#: hugin1/hugin/MainFrame.cpp:556 +#: hugin1/hugin/MainFrame.cpp:584 #, fuzzy, c-format msgid "File %s exists. Overwrite?" msgstr "" @@ -936,36 +947,36 @@ "\n" "Overschrijven?" -#: hugin1/hugin/MainFrame.cpp:557 translations/xrc.cpp:270 xrc.cpp:270 +#: hugin1/hugin/MainFrame.cpp:585 translations/xrc.cpp:270 xrc.cpp:270 msgid "Save project" msgstr "Opslaan project" -#: hugin1/hugin/MainFrame.cpp:575 +#: hugin1/hugin/MainFrame.cpp:603 msgid "Save PTStitcher script file" msgstr "Opslaan PTSticher project bestand" -#: hugin1/hugin/MainFrame.cpp:577 +#: hugin1/hugin/MainFrame.cpp:605 msgid "PTStitcher files (*.txt)|*.txt" msgstr "PTStitcher bestanden (*.txt)|*.txt" -#: hugin1/hugin/MainFrame.cpp:606 +#: hugin1/hugin/MainFrame.cpp:634 msgid "Open project: " msgstr "Open project:" -#: hugin1/hugin/MainFrame.cpp:618 +#: hugin1/hugin/MainFrame.cpp:646 msgid "Project opened" msgstr "Project geopend" -#: hugin1/hugin/MainFrame.cpp:628 +#: hugin1/hugin/MainFrame.cpp:656 msgid "Error opening project: " msgstr "Fout bij openen project:" -#: hugin1/hugin/MainFrame.cpp:674 +#: hugin1/hugin/MainFrame.cpp:702 msgid "Open project file" msgstr "Open project bestand" -#: hugin1/hugin/MainFrame.cpp:676 hugin1/hugin/MainFrame.cpp:1121 -#: hugin1/stitch_project/hugin_stitch_project.cpp:181 +#: hugin1/hugin/MainFrame.cpp:704 hugin1/hugin/MainFrame.cpp:1149 +#: hugin1/stitch_project/hugin_stitch_project.cpp:203 msgid "" "Project files (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|All files " "(*)|*" @@ -973,11 +984,11 @@ "Project bestanden (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|Alle " "bestanden (*)|*" -#: hugin1/hugin/MainFrame.cpp:690 +#: hugin1/hugin/MainFrame.cpp:718 msgid "Open project: cancel" msgstr "Open project: annuleren" -#: hugin1/hugin/MainFrame.cpp:716 hugin1/hugin/VigCorrDialog.cpp:173 +#: hugin1/hugin/MainFrame.cpp:744 hugin1/hugin/VigCorrDialog.cpp:173 #: hugin1/hugin/wxPanoCommand.cpp:312 msgid "" "All Image files|*.jpg;*.JPG;*.tif;*.TIF;*.tiff;*.TIFF;*.png;*.PNG;*.bmp;*." @@ -988,28 +999,28 @@ "BMP;*.gif;*.GIF;*.pnm;*.PNM;*.sun;*.viff|JPEG files (*.jpg)|*.jpg;*.JPG|Alle " "bestanden (*)|*" -#: hugin1/hugin/MainFrame.cpp:719 hugin1/hugin/wxPanoCommand.cpp:313 +#: hugin1/hugin/MainFrame.cpp:747 hugin1/hugin/wxPanoCommand.cpp:313 #: hugin1/hugin/wxPanoCommand.cpp:383 msgid "Add images" msgstr "Voeg afbeeldingen toe" -#: hugin1/hugin/MainFrame.cpp:772 +#: hugin1/hugin/MainFrame.cpp:800 msgid "Add Image: cancel" msgstr "Voeg afbeelding toe: annuleer" -#: hugin1/hugin/MainFrame.cpp:1119 +#: hugin1/hugin/MainFrame.cpp:1147 msgid "Choose template project" msgstr "Kies template project" -#: hugin1/hugin/MainFrame.cpp:1171 +#: hugin1/hugin/MainFrame.cpp:1199 msgid "Fine-tuning all points" msgstr "fijn afstemmen van alle punten" -#: hugin1/hugin/MainFrame.cpp:1173 +#: hugin1/hugin/MainFrame.cpp:1201 msgid "Finetuning" msgstr "Fijn afstemmen" -#: hugin1/hugin/MainFrame.cpp:1261 +#: hugin1/hugin/MainFrame.cpp:1289 #, c-format msgid "" "%d points fine-tuned, %d points not updated due to low correlation\n" @@ -1038,16 +1049,15 @@ "Gebruik de Controle Punt list (F3) om alle punten van het huidige project te " "tonen\n" -#: hugin1/hugin/MainFrame.cpp:1263 +#: hugin1/hugin/MainFrame.cpp:1291 msgid "Fine-tune result" msgstr "Fijn afstemming resultaat" #: hugin1/hugin/NonaOptionsDialog.cpp:55 translations/xrc.cpp:438 xrc.cpp:438 -#, fuzzy msgid "Nona options" -msgstr "Bestand opties" +msgstr "Nona opties" -#: hugin1/hugin/NonaStitcherPanel.cpp:288 hugin1/nona_gui/nona_gui.cpp:225 +#: hugin1/hugin/NonaStitcherPanel.cpp:288 hugin1/nona_gui/nona_gui.cpp:226 #: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:33 msgid "Stitching Panorama" msgstr "Samenvoegen panorama" @@ -1070,27 +1080,23 @@ #: hugin1/hugin/NonaStitcherPanel.cpp:346 #: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:91 -#, fuzzy msgid "Select enblend.exe" -msgstr "Selecteer Enblend" +msgstr "Selecteer enblend.exe" #: hugin1/hugin/NonaStitcherPanel.cpp:354 #: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:99 -#, fuzzy msgid "No enblend.exe selected" -msgstr "PTStitcher.exe is niet geselecteerd" +msgstr "Geen enblend.exe geselecteerd" #: hugin1/hugin/NonaStitcherPanel.cpp:365 #: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:110 -#, fuzzy msgid "Select enblend commandline tool" -msgstr "Selecteer PTStitcher commando regel gereedschap" +msgstr "Selecteer enblend commandoregel software" #: hugin1/hugin/NonaStitcherPanel.cpp:373 #: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:118 -#, fuzzy msgid "No enblend commandline tool selected" -msgstr "Geen PTStitcher commando regel gereedschap geselecteerd" +msgstr "Geen enblend commandoregel software geselecteerd" #: hugin1/hugin/NonaStitcherPanel.cpp:414 #: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:159 @@ -1200,6 +1206,10 @@ "Currently each image can have different parameters.\n" "Link parameters?" msgstr "" +"Dezelfde vignetterings en response parameters moeten worden toegepast voor " +"alle afbeeldingen van een lens.\n" +"Op dit moment kan elke afbeelding verschillende parameters hebben.\n" +"Koppel parameters?" #: hugin1/hugin/OptimizePhotometricPanel.cpp:424 #, fuzzy @@ -1207,14 +1217,13 @@ msgstr "Lens Parameters" #: hugin1/hugin/OptimizePhotometricPanel.cpp:442 -#, fuzzy msgid "" "The vignetting and exposure correctione is determined by analysing color " "values in the overlaping areas.\n" "To speed up the computation, only a random subset of points is used." msgstr "" -"De vignetterings curve wordt bepaald door grijs waardes te gebruiken in de " -"overlappende gedeeltes.\n" +"De vignettering en belichtings curve wordt bepaald door grijs/kleur waardes " +"te gebruiken in de overlappende gedeeltes.\n" "Om de berekening te verkorten wordt alleen een willekeurige deelverzameling " "van punten gebruikt." @@ -1225,24 +1234,25 @@ #: hugin1/hugin/OptimizePhotometricPanel.cpp:444 msgid "Photometric optimisation" -msgstr "" +msgstr "Fotometrische optimalisatie" #: hugin1/hugin/OptimizePhotometricPanel.cpp:451 msgid "Photometric alignment" -msgstr "" +msgstr "Fotometrische uitlijning" #: hugin1/hugin/OptimizePhotometricPanel.cpp:482 msgid "Error: no overlapping points found, Photometric optimisation aborted" msgstr "" +"Fout: geen overlappende punten gevonden, fotometrische optimalisatie " +"afgebroken" #: hugin1/hugin/OptimizePhotometricPanel.cpp:515 msgid "Internal error during photometric optimisation:\n" -msgstr "" +msgstr "Interne fout bij het fotometrisch optimaliseren:\n" #: hugin1/hugin/OptimizePhotometricPanel.cpp:515 -#, fuzzy msgid "Internal error" -msgstr "enblend fout" +msgstr "interne fout" #: hugin1/hugin/OptimizePhotometricPanel.cpp:521 #, c-format @@ -1251,10 +1261,13 @@ " Root mean square error:%.2f in gray values (0..255)\n" "Apply results?" msgstr "" +"Fotometrische optimalisatie resultaten:\n" +" Standaarddeviatie: %.2f in grijswaarden (0..255)\n" +"Resultaat toepassen?" #: hugin1/hugin/OptimizePhotometricPanel.cpp:522 msgid "Photometric optimisation finished" -msgstr "" +msgstr "Fotometrische optimalisatie klaar" #: hugin1/hugin/PanoDruid.cpp:43 msgid "The druid has no advice." @@ -1448,48 +1461,44 @@ "Op het Panorama tab blad Opties om de pixel \n" "dimensies te bepalen die de beste kwaliteit geven." -#: hugin1/hugin/PanoPanel.cpp:378 +#: hugin1/hugin/PanoPanel.cpp:373 #, c-format msgid "Invalid HFOV value. Maximum HFOV for this projection is %lf." msgstr "Incorrecte HFOV waarde. De maximale HFOV is %lf bij deze projectie." -#: hugin1/hugin/PanoPanel.cpp:409 +#: hugin1/hugin/PanoPanel.cpp:404 #, c-format msgid "Invalid VFOV value. Maximum VFOV for this projection is %lf." msgstr "Incorrecte VFOV waarde. De maximale VFOV is %lf bij deze projectie." -#: hugin1/hugin/PanoPanel.cpp:455 +#: hugin1/hugin/PanoPanel.cpp:450 msgid "width needs to be an integer bigger than 0" msgstr "breedte moet een geheel getal groter dan 0 zijn" -#: hugin1/hugin/PanoPanel.cpp:472 +#: hugin1/hugin/PanoPanel.cpp:467 msgid "height needs to be an integer bigger than 0" msgstr "hoogte moet een geheel getal groter dan 0 zijn" -#: hugin1/hugin/PanoPanel.cpp:482 -#, fuzzy +#: hugin1/hugin/PanoPanel.cpp:477 msgid "Top needs to be an integer bigger than 0" -msgstr "breedte moet een geheel getal groter dan 0 zijn" +msgstr "bovenkant moet een geheel getal groter dan 0 zijn" -#: hugin1/hugin/PanoPanel.cpp:486 -#, fuzzy +#: hugin1/hugin/PanoPanel.cpp:481 msgid "left needs to be an integer bigger than 0" -msgstr "hoogte moet een geheel getal groter dan 0 zijn" +msgstr "linkerkant moet een geheel getal groter dan 0 zijn" -#: hugin1/hugin/PanoPanel.cpp:490 -#, fuzzy +#: hugin1/hugin/PanoPanel.cpp:485 msgid "right needs to be an integer bigger than 0" -msgstr "hoogte moet een geheel getal groter dan 0 zijn" +msgstr "rechterkant moet een geheel getal groter dan 0 zijn" -#: hugin1/hugin/PanoPanel.cpp:494 -#, fuzzy +#: hugin1/hugin/PanoPanel.cpp:489 msgid "bottom needs to be an integer bigger than 0" -msgstr "breedte moet een geheel getal groter dan 0 zijn" +msgstr "onderkant moet een geheel getal groter dan 0 zijn" -#: hugin1/hugin/PanoPanel.cpp:534 hugin1/hugin/PanoPanel.cpp:568 -#: hugin1/hugin/PanoPanel.cpp:703 hugin1/hugin/PanoPanel.cpp:731 +#: hugin1/hugin/PanoPanel.cpp:529 hugin1/hugin/PanoPanel.cpp:563 +#: hugin1/hugin/PanoPanel.cpp:713 hugin1/hugin/PanoPanel.cpp:741 msgid "Not yet implemented" -msgstr "" +msgstr "Nog niet geimplementeerd" #: hugin1/hugin/PreferencesDialog.cpp:124 msgid "System default" @@ -1564,9 +1573,8 @@ msgstr "OekraC/ns" #: hugin1/hugin/PreferencesDialog.cpp:253 -#, fuzzy msgid "Select PTmender" -msgstr "Selecteer Enblend" +msgstr "Selecteer PTmender" #: hugin1/hugin/PreferencesDialog.cpp:272 msgid "Select image editor" @@ -1581,9 +1589,8 @@ msgstr "Selecteer Autopano" #: hugin1/hugin/PreferencesDialog.cpp:321 -#, fuzzy msgid "Select Autopano-SIFT" -msgstr "Selecteer Autopano" +msgstr "Selecteer Autopano-SIFT" #: hugin1/hugin/PreferencesDialog.cpp:324 msgid "Executables (*.exe,*.vbs,*.cmd)|*.exe;*.vbs;*.cmd" @@ -1853,16 +1860,18 @@ msgstr "Bestand niet gevonden" #: hugin1/hugin/wxPanoCommand.cpp:188 -#, fuzzy, c-format +#, c-format msgid "" "Could not decode image:\n" "%s\n" "Abort" -msgstr "Kan afbeelding grootte niet bepalen" +msgstr "" +"Kan afbeelding %s niet decoderen\n" +"Afgebroken" #: hugin1/hugin/wxPanoCommand.cpp:188 msgid "Unsupported image file format" -msgstr "" +msgstr "Dit afbeeldings type wordt niet ondersteund" #: hugin1/hugin/wxPanoCommand.cpp:224 msgid "Could not read image size" @@ -1910,78 +1919,77 @@ msgid "Error loading project file" msgstr "Fout bij laden project:" -#: hugin1/nona_gui/nona_gui.cpp:152 -#: hugin1/stitch_project/hugin_stitch_project.cpp:162 +#: hugin1/nona_gui/nona_gui.cpp:153 +#: hugin1/stitch_project/hugin_stitch_project.cpp:173 msgid "Syntax error in parameters detected, aborting." msgstr "Syntax fout ontdekt in de parameters, programma wordt afgebroken." -#: hugin1/nona_gui/nona_gui.cpp:167 -#: hugin1/stitch_project/hugin_stitch_project.cpp:179 +#: hugin1/nona_gui/nona_gui.cpp:168 +#: hugin1/stitch_project/hugin_stitch_project.cpp:201 msgid "Specify project source project file" msgstr "Geef project bron bestand aan." -#: hugin1/nona_gui/nona_gui.cpp:191 +#: hugin1/nona_gui/nona_gui.cpp:192 msgid "Could not find project file:" msgstr "Kan project bestand niet vinden:" -#: hugin1/nona_gui/nona_gui.cpp:200 +#: hugin1/nona_gui/nona_gui.cpp:201 msgid "Specify output image filename" msgstr "Geef uitvoer bestandnaam" -#: hugin1/nona_gui/nona_gui.cpp:209 -#: hugin1/stitch_project/hugin_stitch_project.cpp:246 +#: hugin1/nona_gui/nona_gui.cpp:210 +#: hugin1/stitch_project/hugin_stitch_project.cpp:268 msgid "No project files specified" msgstr "Geen project bestanden opgegeven" -#: hugin1/nona_gui/nona_gui.cpp:231 -#: hugin1/stitch_project/hugin_stitch_project.cpp:218 +#: hugin1/nona_gui/nona_gui.cpp:232 +#: hugin1/stitch_project/hugin_stitch_project.cpp:240 #, c-format msgid "could not open script : %s" msgstr "Kan script: %s niet openen" -#: hugin1/nona_gui/nona_gui.cpp:237 -#: hugin1/stitch_project/hugin_stitch_project.cpp:229 +#: hugin1/nona_gui/nona_gui.cpp:238 +#: hugin1/stitch_project/hugin_stitch_project.cpp:251 #, c-format msgid "error while parsing panos tool script: %s" msgstr "fout tijdens verwerking panos tool script: %s" -#: hugin1/nona_gui/nona_gui.cpp:243 -#: hugin1/stitch_project/hugin_stitch_project.cpp:276 +#: hugin1/nona_gui/nona_gui.cpp:244 +#: hugin1/stitch_project/hugin_stitch_project.cpp:298 msgid "Wrong number of images specified on command line" msgstr "Verkeerde aantal afbeeldingen gespecificeerd op de commando regel" -#: hugin1/nona_gui/nona_gui.cpp:258 +#: hugin1/nona_gui/nona_gui.cpp:259 msgid "output image size: " msgstr "grootte uitvoer bestand:" -#: hugin1/stitch_project/hugin_stitch_project.cpp:208 -#, fuzzy +#: hugin1/stitch_project/hugin_stitch_project.cpp:230 msgid "Could not open project file:" -msgstr "Kan project bestand niet vinden:" +msgstr "Kan project bestand niet inlezen:" -#: hugin1/stitch_project/hugin_stitch_project.cpp:237 -#, fuzzy +#: hugin1/stitch_project/hugin_stitch_project.cpp:259 msgid "Specify output prefix" -msgstr "Geef uitvoer bestandnaam" +msgstr "Geef uitvoerbestandsnaam prefix" -#: hugin1/stitch_project/hugin_stitch_project.cpp:293 -#: hugin1/stitch_project/hugin_stitch_project.cpp:310 -#, fuzzy +#: hugin1/stitch_project/hugin_stitch_project.cpp:315 +#: hugin1/stitch_project/hugin_stitch_project.cpp:334 msgid "Could not create temporary file" -msgstr "Kan afbeelding grootte niet bepalen" +msgstr "Kan tijdelijke file niet aanmaken" -#: hugin1/stitch_project/hugin_stitch_project.cpp:337 -#, fuzzy, c-format +#: hugin1/stitch_project/hugin_stitch_project.cpp:362 +#, c-format msgid "Stitching %s" -msgstr "Samenvoegen" +msgstr "Samenvoegen %s" -#: hugin1/stitch_project/hugin_stitch_project.cpp:344 -#: hugin1/stitch_project/hugin_stitch_project.cpp:353 -#, fuzzy, c-format +#: hugin1/stitch_project/hugin_stitch_project.cpp:369 +#: hugin1/stitch_project/hugin_stitch_project.cpp:378 +#, c-format msgid "" "Error while stitching project\n" "%s" -msgstr "Fout bij openen project:" +msgstr "" +"Fout bij uitvoeren project\n" +": %s" #: translations/xrc.cpp:1 translations/xrc.cpp:294 xrc.cpp:1 xrc.cpp:294 msgid "About Hugin" @@ -2099,7 +2107,8 @@ #: translations/xrc.cpp:36 xrc.cpp:36 msgid "Enter horizontal field of view (HFOV) or focal length and crop factor:" -msgstr "Geeft horizontale beeldhoek (HFOV) of focale lengte en crop factor:" +msgstr "" +"Geeft horizontale beeldhoek (HFOV) of brandpuntsafstand en crop factor:" #: translations/xrc.cpp:37 xrc.cpp:37 msgid "HFOV (v):" @@ -2458,7 +2467,7 @@ #: translations/xrc.cpp:134 xrc.cpp:134 msgid "Geometric" -msgstr "" +msgstr "Geometrisch" #: translations/xrc.cpp:135 xrc.cpp:135 #, fuzzy @@ -2466,9 +2475,8 @@ msgstr "Lens nr." #: translations/xrc.cpp:136 translations/xrc.cpp:184 xrc.cpp:136 xrc.cpp:184 -#, fuzzy msgid "Type:" -msgstr "Bovenkant:" +msgstr "" #: translations/xrc.cpp:142 xrc.cpp:142 msgid "degrees of view (v):" @@ -2546,7 +2554,7 @@ #: translations/xrc.cpp:166 xrc.cpp:166 msgid "Photometric" -msgstr "" +msgstr "Fotometrisch" #: translations/xrc.cpp:167 xrc.cpp:167 msgid "Exposure and Color" @@ -2554,17 +2562,15 @@ #: translations/xrc.cpp:168 xrc.cpp:168 msgid "Exposure (EV)" -msgstr "" +msgstr "Belichting (EV)" #: translations/xrc.cpp:170 xrc.cpp:170 -#, fuzzy msgid "Red multiplier:" -msgstr "focale lengte vermenigvuldigings factor:" +msgstr "Schaalfactor voor Rood:" #: translations/xrc.cpp:172 xrc.cpp:172 -#, fuzzy msgid "Blue multiplier:" -msgstr "focale lengte vermenigvuldigings factor:" +msgstr "Schaalfactor voor Blauw:" #: translations/xrc.cpp:174 xrc.cpp:174 msgid "Vignetting" @@ -2586,14 +2592,12 @@ msgstr "*r^6" #: translations/xrc.cpp:179 xrc.cpp:179 -#, fuzzy msgid "Vignetting Center Shift" -msgstr "verschuiving middelpunt afbeelding" +msgstr "Verschuiving vignetterings middelpunt" #: translations/xrc.cpp:183 xrc.cpp:183 -#, fuzzy msgid "Camera Response" -msgstr "Camera en Lens" +msgstr "Camera Karakteristieken" #: translations/xrc.cpp:185 xrc.cpp:185 msgid "custom (EMoR)" @@ -2690,9 +2694,8 @@ msgstr "Optimizer" #: translations/xrc.cpp:213 xrc.cpp:213 -#, fuzzy msgid "Exposure" -msgstr "Belichting en kleur" +msgstr "Belichting" #: translations/xrc.cpp:214 xrc.cpp:214 msgid "Stitcher" @@ -3160,28 +3163,27 @@ #: translations/xrc.cpp:357 xrc.cpp:357 msgid "Photometric Optimisation" -msgstr "" +msgstr "Fotometrische Optimalisatie" #: translations/xrc.cpp:358 xrc.cpp:358 -#, fuzzy msgid "Optimize preset" -msgstr "Optimizer" +msgstr "Optimalisatie voorinstelling" #: translations/xrc.cpp:359 xrc.cpp:359 msgid "Low dynamic range" -msgstr "" +msgstr "Laag dynamisch bereik" #: translations/xrc.cpp:360 xrc.cpp:360 msgid "Low dynamic range, variable white balance" -msgstr "" +msgstr "Laag dynamisch bereik, verschillende witbalans" #: translations/xrc.cpp:361 xrc.cpp:361 msgid "High dynamic range, fixed exposure" -msgstr "" +msgstr "Hoog dynamisch bereik, vaste belichting" #: translations/xrc.cpp:362 xrc.cpp:362 msgid "High dynamic range, variable white balance, fixed exposure" -msgstr "" +msgstr "Hoog dynamisch bereik, verschillende witbalans, vaste belichting" #: translations/xrc.cpp:363 xrc.cpp:363 #, fuzzy @@ -3189,38 +3191,32 @@ msgstr "De aangepaste parameters hieronder" #: translations/xrc.cpp:367 xrc.cpp:367 -#, fuzzy msgid "Image variables:" -msgstr "Afbeeldings bestand:" +msgstr "Afbeelding variabelen:" #: translations/xrc.cpp:368 xrc.cpp:368 -#, fuzzy msgid "Exposure:" -msgstr "Belichting en kleur" +msgstr "Belichting:" #: translations/xrc.cpp:369 xrc.cpp:369 msgid "White balance:" -msgstr "" +msgstr "Witbalans:" #: translations/xrc.cpp:370 xrc.cpp:370 -#, fuzzy msgid "Camera and Lens variables:" -msgstr "Camera en Lens data" +msgstr "Camera en Lens data:" #: translations/xrc.cpp:371 xrc.cpp:371 -#, fuzzy msgid "Vignetting:" -msgstr "Vignettering" +msgstr "Vignettering:" #: translations/xrc.cpp:372 xrc.cpp:372 -#, fuzzy msgid "Vignetting Centre:" -msgstr "verschuiving middelpunt afbeelding" +msgstr "Vignettering middelpunt:" #: translations/xrc.cpp:373 xrc.cpp:373 -#, fuzzy msgid "Camera Response:" -msgstr "Camera en Lens" +msgstr "Camera Karakteristieken:" #: translations/xrc.cpp:374 xrc.cpp:374 msgid "Panorama" @@ -3243,9 +3239,8 @@ msgstr "Bereken beeldhoek" #: translations/xrc.cpp:380 xrc.cpp:380 -#, fuzzy msgid "Panorama Canvas Size" -msgstr "Panorama grootte" +msgstr "Panorama doekgrootte" #: translations/xrc.cpp:381 xrc.cpp:381 msgid "width:" @@ -3264,9 +3259,8 @@ msgstr "Bereken de hoogst zinvolle breedte. (gebruik elke afbeeldings pixel)" #: translations/xrc.cpp:386 xrc.cpp:386 -#, fuzzy msgid "left:" -msgstr "Links:" +msgstr "Linkerkant:" #: translations/xrc.cpp:387 xrc.cpp:387 #, fuzzy @@ -3274,14 +3268,12 @@ msgstr "Bovenkant:" #: translations/xrc.cpp:388 xrc.cpp:388 -#, fuzzy msgid "right:" -msgstr "Rechts:" +msgstr "Rechterkant:" #: translations/xrc.cpp:389 xrc.cpp:389 -#, fuzzy msgid "bottom:" -msgstr "Onder:" +msgstr "Onderkant:" #: translations/xrc.cpp:390 xrc.cpp:390 msgid "Output" @@ -3294,74 +3286,71 @@ #: translations/xrc.cpp:392 xrc.cpp:392 msgid "For panoramas consisting of images with similar exposure" -msgstr "" +msgstr "Voor panorama's van afbeeldingen met vergelijkbare belichting" #: translations/xrc.cpp:393 xrc.cpp:393 -#, fuzzy msgid "Exposure Blending" -msgstr "Belichting en kleur" +msgstr "Vermenging van belichting" #: translations/xrc.cpp:394 translations/xrc.cpp:396 xrc.cpp:394 xrc.cpp:396 msgid "For panoramas consisting of images with varying exposure" -msgstr "" +msgstr "Voor panorama's van afbeeldingen met verschillende belichting" #: translations/xrc.cpp:395 xrc.cpp:395 msgid "Merge to HDR" -msgstr "" +msgstr "Combineer tot HDR" #: translations/xrc.cpp:397 xrc.cpp:397 -#, fuzzy msgid "Blended panorama" -msgstr "Voorbeeld van panorama" +msgstr "vermengd panorama" #: translations/xrc.cpp:398 xrc.cpp:398 msgid "Use blend the individual layers using the selected blender" -msgstr "" +msgstr "Gebruik blend the individual layers van de geselecteerde Vermenger." #: translations/xrc.cpp:399 translations/xrc.cpp:405 xrc.cpp:399 xrc.cpp:405 -#, fuzzy msgid "Remapped images" -msgstr "getoonde afbeeldingen" +msgstr "gecorrigeerde afbeeldingen" #: translations/xrc.cpp:400 xrc.cpp:400 msgid "Output remapped images with exposure correction" -msgstr "" +msgstr "Maak gecorrigeerde afbeeldingen met belichtingscorrectie" #: translations/xrc.cpp:401 xrc.cpp:401 msgid "Blended panorama (enfuse)" -msgstr "" +msgstr "Vermengd panorama (enfuse)" #: translations/xrc.cpp:402 xrc.cpp:402 msgid "Fully automatic exposure blending" -msgstr "" +msgstr "Volautomatische belichting vermenging" #: translations/xrc.cpp:403 xrc.cpp:403 msgid "Blended exposure layers" -msgstr "" +msgstr "Vermengde belichting lagen" #: translations/xrc.cpp:404 xrc.cpp:404 msgid "" "Output a complete blended panorama of each exposure. Useful for manual " "exposure blending, for example in Photoshop or Gimp" msgstr "" +"Maak een volledige vermengde panorama van elke belichting.Handig voor " +"handmatige belichting vermenging, bijvoorbeeld in Photoshop of The Gimp" #: translations/xrc.cpp:406 xrc.cpp:406 msgid "Output remapped images with original exposure" -msgstr "" +msgstr "Maak gecorrigeerde afbeeldingen met oorspronkelijke belichting" #: translations/xrc.cpp:407 xrc.cpp:407 -#, fuzzy msgid "Blended HDR panorama" -msgstr "Voorbeeld van panorama" +msgstr "Voorbeeld van HDR panorama" #: translations/xrc.cpp:408 xrc.cpp:408 msgid "Output a blended high dynamic range panorama" -msgstr "" +msgstr "Maak een vermengde hoog dynamisch bereik (HDR) panorama" #: translations/xrc.cpp:409 xrc.cpp:409 -#, fuzzy msgid "Stacked HDR images" -msgstr "Voeg de afbeeldingen samen" +msgstr "Gestapelde HDR afbeeldingen" #: translations/xrc.cpp:410 xrc.cpp:410 msgid "Output the individual, remapped HDR stacks" @@ -3374,34 +3363,31 @@ #: translations/xrc.cpp:412 xrc.cpp:412 msgid "Output remapped images in a linear color space" -msgstr "" +msgstr "Maak gecorrigeerde afbeeldingen in een lineaire kleurruimte" #: translations/xrc.cpp:413 xrc.cpp:413 -#, fuzzy msgid "Save project and stitch" -msgstr "Sla project op als" +msgstr "Sla project op en voer uit" #: translations/xrc.cpp:414 xrc.cpp:414 -#, fuzzy msgid "Save project and send to batch" -msgstr "Sla project op als" +msgstr "Sla project op en stuur naar batch" #: translations/xrc.cpp:415 xrc.cpp:415 msgid "Processing" -msgstr "" +msgstr "Bezig" #: translations/xrc.cpp:416 xrc.cpp:416 msgid "Remapper:" -msgstr "" +msgstr "Corrector" #: translations/xrc.cpp:417 xrc.cpp:417 -#, fuzzy msgid "Nona" -msgstr "Geen" +msgstr "Nona" #: translations/xrc.cpp:418 xrc.cpp:418 msgid "PTmender" -msgstr "" +msgstr "PTmender" #: translations/xrc.cpp:419 translations/xrc.cpp:423 translations/xrc.cpp:426 #: translations/xrc.cpp:433 translations/xrc.cpp:437 xrc.cpp:419 xrc.cpp:423 @@ -3411,9 +3397,8 @@ msgstr "Enblend Opties" #: translations/xrc.cpp:420 xrc.cpp:420 -#, fuzzy msgid "Blender:" -msgstr "Meng mode:" +msgstr "Vermeng mode:" #: translations/xrc.cpp:421 xrc.cpp:421 #, fuzzy @@ -3427,25 +3412,23 @@ #: translations/xrc.cpp:424 xrc.cpp:424 msgid "HDR merger:" -msgstr "" +msgstr "HDR combinator" #: translations/xrc.cpp:425 xrc.cpp:425 msgid "builtin" -msgstr "" +msgstr "ingebouwde" #: translations/xrc.cpp:427 xrc.cpp:427 -#, fuzzy msgid "File formats" -msgstr "afbeelding formaat:" +msgstr "afbeeldingsformaten:" #: translations/xrc.cpp:428 xrc.cpp:428 msgid "Normal Output:" -msgstr "" +msgstr "Normaal" #: translations/xrc.cpp:430 xrc.cpp:430 -#, fuzzy msgid "JPEG" -msgstr "JPG" +msgstr "" #: translations/xrc.cpp:432 translations/xrc.cpp:435 xrc.cpp:432 xrc.cpp:435 msgid "EXR" @@ -3457,7 +3440,7 @@ #: translations/xrc.cpp:449 xrc.cpp:449 msgid "save cropped layers" -msgstr "" +msgstr "bewaar uitgesneden lagen" #: translations/xrc.cpp:450 xrc.cpp:450 msgid "Preferences - hugin" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-01-09 16:38:09
|
Revision: 2617 http://hugin.svn.sourceforge.net/hugin/?rev=2617&view=rev Author: dangelo Date: 2008-01-09 08:38:07 -0800 (Wed, 09 Jan 2008) Log Message: ----------- added code to call exiftool to copy EXIF data to the output files Modified Paths: -------------- hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp hugin/trunk/src/translations/pl.po Modified: hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp =================================================================== --- hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp 2008-01-08 21:18:34 UTC (rev 2616) +++ hugin/trunk/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp 2008-01-09 16:38:07 UTC (rev 2617) @@ -147,6 +147,7 @@ << "SMARTBLEND=" << quoteString(progs.smartblend) << endl << "HDRMERGE=" << quoteString(progs.hdrmerge) << endl << "RM=rm" << endl + << "EXIFTOOL=-exiftool" << endl << endl << "# options for the programs" << endl << endl; @@ -175,6 +176,9 @@ } o << endl; + o << "EXIFTOOL_COPY_ARGS=-TagsFromFile" << endl; + o << endl; + string hdrExt = string(".") + opts.outputImageTypeHDR; string ldrExt = string(".") + opts.outputImageType; string ldrRemappedExt(".tif"); @@ -208,7 +212,9 @@ << "LDR_STACKED_BLENDED=" << quoteString(output + "_fused" + ldrExt) << endl << "HDR_BLENDED=" << quoteString(output + "_hdr" + hdrExt) << endl << endl - << "# Input images" << endl + << "# first input image" << endl + << "INPUT_IMAGE_1=" << quoteString(pano.getImage(0).getFilename()) << endl + << "# all input images" << endl << "INPUT_IMAGES="; for (unsigned int i=0; i < pano.getNrOfImages(); i++) { @@ -515,6 +521,7 @@ for (unsigned i=0; i < stacks.size(); i++) { o << "$(LDR_STACK_" << i << ") : $(LDR_STACK_" << i << "_INPUT)" << endl << "\t$(ENFUSE) -o $(LDR_STACK_" << i << ") $(LDR_STACK_" << i << "_INPUT)" + << "\t$(EXIFTOOL) $(EXIFTOOL_COPY_ARGS) $(INPUT_IMAGE_1) $@" << endl << endl; } @@ -522,19 +529,22 @@ case PanoramaOptions::ENBLEND_BLEND: // write rules for blending with enblend o << "$(LDR_BLENDED) : $(LDR_LAYERS)" << endl; - o << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(LDR_BLENDED) $(LDR_LAYERS) " << endl << endl; + o << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(LDR_BLENDED) $(LDR_LAYERS) " << endl; + o << "\t$(EXIFTOOL) $(EXIFTOOL_COPY_ARGS) $(INPUT_IMAGE_1) $@" << endl << endl; // for LDR exposure blend planes - for (unsigned i=0; i < similarExposures.size(); i++) { - o << "$(LDR_EXPOSURE_LAYER_" << i <<") : $(LDR_EXPOSURE_LAYER_" << i << "_INPUT)" << endl - << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $@ $^" << endl << endl; - } + for (unsigned i=0; i < similarExposures.size(); i++) { + o << "$(LDR_EXPOSURE_LAYER_" << i <<") : $(LDR_EXPOSURE_LAYER_" << i << "_INPUT)" << endl + << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $@ $^" << endl + << "\t$(EXIFTOOL) $(EXIFTOOL_COPY_ARGS) $(INPUT_IMAGE_1) $@" << endl << endl; + } - // rules for enfuse blending - o << "$(LDR_STACKED_BLENDED) : $(LDR_STACKS)" << endl; - o << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(LDR_STACKED_BLENDED) $(LDR_STACKS) " << endl << endl; + // rules for enfuse blending + o << "$(LDR_STACKED_BLENDED) : $(LDR_STACKS)" << endl + << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(LDR_STACKED_BLENDED) $(LDR_STACKS) " << endl + << "\t$(EXIFTOOL) $(EXIFTOOL_COPY_ARGS) $(INPUT_IMAGE_1) $@" << endl << endl; - // rules for hdr blending + // rules for hdr blending o << "$(HDR_BLENDED) : $(HDR_STACKS)" << endl; o << "\t$(ENBLEND) $(ENBLEND_OPTS) -o $(HDR_BLENDED) $(HDR_STACKS) " << endl << endl; @@ -542,18 +552,21 @@ case PanoramaOptions::NO_BLEND: o << "$(LDR_BLENDED) : $(LDR_LAYERS)" << endl << "\t-$(RM) $@" << endl - << "\t$(PTROLLER) -o $@ $^ " << endl << endl; + << "\t$(PTROLLER) -o $@ $^ " << endl + << "\t$(EXIFTOOL) $(EXIFTOOL_COPY_ARGS) $(INPUT_IMAGE_1) $@" << endl << endl; // for LDR exposure blend planes - for (unsigned i=0; i < similarExposures.size(); i++) { - o << "$(LDR_EXPOSURE_LAYER_" << i <<") : $(LDR_EXPOSURE_LAYER_" << i << "_INPUT)" << endl - << "\t-$(RM) $@" << endl - << "\t$(PTROLLER) -o $@ $^ " << endl << endl; - } + for (unsigned i=0; i < similarExposures.size(); i++) { + o << "$(LDR_EXPOSURE_LAYER_" << i <<") : $(LDR_EXPOSURE_LAYER_" << i << "_INPUT)" << endl + << "\t-$(RM) $@" << endl + << "\t$(PTROLLER) -o $@ $^ " << endl + << "\t$(EXIFTOOL) $(EXIFTOOL_COPY_ARGS) $(INPUT_IMAGE_1) $@" << endl << endl; + } o << "$(LDR_STACKED_BLENDED) : $(LDR_STACKS)" << endl << "\t-$(RM) $@" << endl - << "\t$(PTROLLER) -o $@ $^ " << endl << endl; + << "\t$(PTROLLER) -o $@ $^ " << endl + << "\t$(EXIFTOOL) $(EXIFTOOL_COPY_ARGS) $(INPUT_IMAGE_1) $@" << endl << endl; // rules for non-blended HDR panoramas o << "$(HDR_BLENDED) : $(HDR_LAYERS)" << endl; Modified: hugin/trunk/src/translations/pl.po =================================================================== --- hugin/trunk/src/translations/pl.po 2008-01-08 21:18:34 UTC (rev 2616) +++ hugin/trunk/src/translations/pl.po 2008-01-09 16:38:07 UTC (rev 2617) @@ -1,339 +1,182 @@ +# translation of pl.po to Polish # Polish translations for hugin package. -# Copyright (C) 2004 Pablo dAngelo +# Copyright (C) 2004 Pablo dAngelo # This file is distributed under the same license as the hugin package. +# # Marek Januszewski <sp...@we...>, 2004. # Pablo d'Angelo <pab...@ma...>, 2005. -# Jakub Bogusz <qb...@pl...>, 2005-2007. -# +# Jakub Bogusz <qb...@pl...>, 2005-2006. +# Michał Smoczyk <msm...@wp...>, 2007. msgid "" msgstr "" -"Project-Id-Version: hugin 0.7_beta4\n" -"Report-Msgid-Bugs-To: http://sourceforge.net/tracker/?" -"group_id=77506&atid=550441\n" -"POT-Creation-Date: 2008-01-02 15:02+0100\n" -"PO-Revision-Date: 2007-04-04 15:10+0200\n" -"Last-Translator: Jakub Bogusz <qb...@pl...>\n" -"Language-Team: Polish <tra...@li...>\n" +"Project-Id-Version: pl\n" +"Report-Msgid-Bugs-To: pab...@we...\n" +"POT-Creation-Date: 2007-02-02 23:00+0100\n" +"PO-Revision-Date: 2007-12-24 10:58+0100\n" +"Last-Translator: Michał Smoczyk <msm...@wp...>\n" +"Language-Team: Polish <pl...@li...>\n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.2\n" -#: hugin1/base_wx/huginConfig.cpp:40 -#, c-format -msgid "External program %s not found, reverting to bundled version" -msgstr "" - -#: hugin1/base_wx/huginConfig.cpp:40 -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:334 -#: hugin1/hugin/AssistantPanel.cpp:362 hugin1/hugin/AssistantPanel.cpp:522 -#: hugin1/hugin/OptimizePhotometricPanel.cpp:462 -#: hugin1/hugin/OptimizePhotometricPanel.cpp:482 -msgid "Error" -msgstr "Błąd" - -#: hugin1/base_wx/ImageCache.cpp:539 -#, c-format -msgid "Loading image %s" -msgstr "Ładuję zdjęcie %s" - -#: hugin1/base_wx/ImageCache.cpp:683 -#, c-format -msgid "Error during image reading: %s" -msgstr "Błąd podczas odczytu zdjęcia: %s" - -#: hugin1/base_wx/ImageCache.cpp:691 hugin_base/huginapp/ImageCache.cpp:661 -msgid "Cannot load image: " -msgstr "Błąd ładowania zdjęcia:" - -#: hugin1/base_wx/ImageCache.cpp:719 -#, c-format -msgid "Scaling image %s" -msgstr "Skaluję zdjęcie %s" - -#: hugin1/base_wx/ImageCache.cpp:820 hugin_base/huginapp/ImageCache.cpp:790 -#, c-format -msgid "Creating grayscale %s" -msgstr "Tworzę odcienie szarości %s" - -#: hugin1/base_wx/ImageCache.cpp:838 hugin_base/huginapp/ImageCache.cpp:808 -#, c-format -msgid "Creating pyramid image for %s, level %d" -msgstr "Tworzę zdjęcie piramidalne dla %s, poziom %d" - -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:110 translations/xrc.cpp:86 -#: translations/xrc.cpp:546 xrc.cpp:86 xrc.cpp:546 -msgid "Cancel" -msgstr "Anuluj" - -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:133 -#, c-format -msgid "Failed to kill process %ld with sigterm: %s" -msgstr "" - -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:334 -#, fuzzy -msgid "Error while executing process" -msgstr "Błąd uruchamiania %s" - -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:430 -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:470 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:301 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:406 -#: hugin1/hugin/NonaStitcherPanel.cpp:427 hugin1/hugin/PanoPanel.cpp:658 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:299 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:402 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:172 -msgid "Could not execute command: " -msgstr "Nie mogłem wykonać polecenia:" - -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:430 -#: hugin1/hugin/PanoPanel.cpp:658 -msgid "ShellExecuteEx failed" -msgstr "błąd ShellExecuteEx" - -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:470 -msgid "CreateProcess Error" -msgstr "Błąd CreateProcess" - -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:481 -msgid "program finished" -msgstr "" - -#: hugin1/base_wx/MyExternalCmdExecDialog.cpp:481 -#, fuzzy -msgid "ExecuteProcess" -msgstr "Błąd wxExecute" - -#: hugin1/base_wx/MyExternalCmdExecDialog.h:154 -msgid "Command Line Progress" -msgstr "" - -#: hugin1/base_wx/MyProgressDialog.cpp:36 -msgid "Elapsed time : " -msgstr "Upłynęło już : " - -#: hugin1/base_wx/MyProgressDialog.h:98 -msgid "Optimizing Panorama" -msgstr "Optymalizuję panoramę" - -#: hugin1/base_wx/PTWXDlg.cpp:63 hugin1/base_wx/PTWXDlg.cpp:81 -#: hugin1/base_wx/PTWXDlg.cpp:133 translations/xrc.cpp:452 xrc.cpp:452 -msgid "Panorama Tools" -msgstr "Panarama Tools" - -#: hugin1/base_wx/PTWXDlg.cpp:82 hugin1/base_wx/PTWXDlg.cpp:134 -#, fuzzy -msgid "" -"\n" -"\n" -"\n" -msgstr "" -"\n" -"\n" -"\n" -"\n" - -#: hugin1/hugin/AssistantPanel.cpp:229 +#: src/hugin/AssistantPanel.cpp:225 msgid "Please load images by pressing on the Load images button." -msgstr "Proszę wczytać zdjęcia naciskając przycisk \"Wczytaj zdjęcia\"." +msgstr "Proszę wczytaj fotografie - naciśnij przycisk \"Wczytaj obrazy\"." -#: hugin1/hugin/AssistantPanel.cpp:259 +#: src/hugin/AssistantPanel.cpp:255 #, c-format msgid "%d images loaded." -msgstr "Wczytano %d zdjęć." +msgstr "Załadowano %d obrazów." -#: hugin1/hugin/AssistantPanel.cpp:293 +#: src/hugin/AssistantPanel.cpp:289 #, c-format msgid "Images are connected by %d control points.\n" -msgstr "Zdjęcia są połączone %d punktami kontrolnymi.\n" +msgstr "Obrazy są połączone %d punktami kontrolnymi.\n" -#: hugin1/hugin/AssistantPanel.cpp:302 +#: src/hugin/AssistantPanel.cpp:298 #, c-format +#, fuzzy msgid "%d unconnected image groups found: " -msgstr "Znaleziono %d nie połączonych grup zdjęć: " +msgstr "Znaleziono %d niepołączonych grup obrazów: " -#: hugin1/hugin/AssistantPanel.cpp:303 +#: src/hugin/AssistantPanel.cpp:299 msgid "" "Please use the Control Points tab to connect all images with control " "points.\n" msgstr "" -"Proszę użyć zakładki \"Punkty kontrolne\" aby połączyć wszystkie zdjęcia " -"punktami kontrolnymi.\n" +"Użyj zakładki Punkty kontrolne aby połączyć wszystkie obrazy punktami kontrolnymi.\n" +"Można nacisnąć środkowy klawisz myszy, aby przewinąć obrazy w zakładce " +"punktów kontrolnych.\n" -#: hugin1/hugin/AssistantPanel.cpp:306 +#: src/hugin/AssistantPanel.cpp:302 msgid "Images or control points have changed, new alignment is needed." -msgstr "" -"Zdjęcia lub punkty kontrolne uległy zmianie, potrzebne jest nowe wyrównanie." +msgstr "Obrazy lub punkty kontrolne zostały zmienione. Należy ponownie wykonać wyrównanie." -#: hugin1/hugin/AssistantPanel.cpp:317 +#: src/hugin/AssistantPanel.cpp:313 msgid "Very good fit." msgstr "Bardzo dobre dopasowanie." -#: hugin1/hugin/AssistantPanel.cpp:319 +#: src/hugin/AssistantPanel.cpp:315 msgid "Good fit." msgstr "Dobre dopasowanie." -#: hugin1/hugin/AssistantPanel.cpp:321 +#: src/hugin/AssistantPanel.cpp:317 msgid "" "Bad fit, some control points might be bad, or there are parallax and " "movement errors" -msgstr "" -"Złe dopasowanie, niektóre punkty kontrolne mogą być błędne albo mogą " -"występować błędy paralaksy czy przesunięcia" +msgstr "Złe dopasowanie, niektóre punkty kontrolne mogą być złe lub też występują błędy paralaksy lub poruszenia" -#: hugin1/hugin/AssistantPanel.cpp:323 +#: src/hugin/AssistantPanel.cpp:319 msgid "" "Very bad fit. Check for bad control points, lens parameters, or images with " "parallax or movement. The optimizer might have failed. Manual intervention " "required." -msgstr "" -"Bardzo złe dopasowanie. Proszę sprawdzić błędne punkty kontrolne, parametry " -"obiektywu oraz zdjęcia z paralaksą lub przesunięciem. Optymalizator mógł " -"zadziałać niewłaściwie. Wymagana jest ręczna interwencja." +msgstr "Bardzo złe dopasowanie. Sprawdź złe punkty kontrolne, parametry obiektywu, lub błędy paralaksy i poruszenia. Wymagana jest ręczna interwencja i zmiana ustawień." -#: hugin1/hugin/AssistantPanel.cpp:325 +#: src/hugin/AssistantPanel.cpp:321 #, c-format +#, fuzzy msgid "Mean error after optimization: %.1f pixel, max: %.1f\n" -msgstr "Średni błąd po optymalizacji: %.1f pikseli, maksymalny: %.1f\n" +msgstr "Błąd uśredniania po optymalizacji: %.1f piksel, maks.: %.1f\n" -#: hugin1/hugin/AssistantPanel.cpp:362 -#, fuzzy -msgid "" -"At least two images are required.\n" -"Please add more images." -msgstr "Wymagane są przynajmniej dwa zdjęcia." +#: src/hugin/AssistantPanel.cpp:358 +msgid "At least two images are required." +msgstr "Wymagane są co najmniej dwa obrazy." -#: hugin1/hugin/AssistantPanel.cpp:382 -#, fuzzy -msgid "Aligning images" -msgstr "Skaluję zdjęcie %s" +#: src/hugin/AssistantPanel.cpp:358 +msgid "Error" +msgstr "Błąd" -#: hugin1/hugin/AssistantPanel.cpp:382 -#, fuzzy -msgid "Finding corresponding points" -msgstr "Nie znaleziono odpowiadającego punktu" - -#: hugin1/hugin/AssistantPanel.cpp:407 +#: src/hugin/AssistantPanel.cpp:400 #, c-format +#, fuzzy msgid "Warning %d unconnected image groups found:" -msgstr "Uwaga, znaleziono %d nie połączone grupy zdjęć:" +msgstr "Ostrzeżenie. Znaleziono %d niepołączonych grup obrazów:" -#: hugin1/hugin/AssistantPanel.cpp:408 +#: src/hugin/AssistantPanel.cpp:401 msgid "" "Please create control points between unconnected images using the Control " "Points tab.\n" "\n" "After adding the points, press the \"Align\" button again" msgstr "" -"Proszę utworzyć punkty kontrolne pomiędzy nie połączonymi zdjęciami " -"korzystając z zakładki \"Punkty kontrolne\".\n" +"Utwórz punkty kontrolne między niepołączonymi obrazami używając zakładki Punkty kontrolne.\n" "\n" -"Po dodaniu punktów proszę nacisnąć przycisk \"Wyrównaj...\" ponownie" +"Po dodaniu punktów, naciśnij przycisk \"Wyrównaj\" ponownie." -#: hugin1/hugin/AssistantPanel.cpp:522 -#: hugin1/hugin/OptimizePhotometricPanel.cpp:462 -#, fuzzy -msgid "Error: could not load all images" -msgstr "Błąd: nie znaleziono pliku zdjęcia flatfile." - -#: hugin1/hugin/AutoCtrlPointCreator.cpp:104 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:103 +#: src/hugin/AutoCtrlPointCreator.cpp:103 msgid "Autopano (version 1.03 or greater), from http://autopano.kolor.com" -msgstr "" -"Autopano (wersja 1.03 lub późniejsza), ze strony http://autopano.kolor.com" +msgstr "Autopano (wersja 1.03 lub późniejsza), ze strony http://autopano.kolor.com" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:105 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:104 +#: src/hugin/AutoCtrlPointCreator.cpp:104 msgid "Autopano-Sift, from http://user.cs.tu-berlin.de/~nowozin/autopano-sift/" -msgstr "" -"Autopano-Sift, ze strony http://user.cs.tu-berlin.de/~nowozin/autopano-sift/" +msgstr "Autopano-Sift, ze strony http://user.cs.tu-berlin.de/~nowozin/autopano-sift/" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:107 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:106 +#: src/hugin/AutoCtrlPointCreator.cpp:106 msgid "Choose which autopano program should be used\n" msgstr "Wybierz który program autopano ma być używany\n" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:107 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:106 +#: src/hugin/AutoCtrlPointCreator.cpp:106 msgid "Select autopano type" msgstr "Wybierz typ autopano" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:120 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:119 +#: src/hugin/AutoCtrlPointCreator.cpp:119 msgid "Autopano from http://autopano.kolor.com is not available for OSX" msgstr "Autopano ze strony http://autopano.kolor.com jest niedostępne dla OSX" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:121 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:120 +#: src/hugin/AutoCtrlPointCreator.cpp:120 msgid "Would you like to use Autopano-Sift instead?" msgstr "Czy zamiast tego chciałbyś użyć Autopano-Sift?" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:158 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:157 +#: src/hugin/AutoCtrlPointCreator.cpp:157 msgid "Select autopano program / frontend script" msgstr "Wybierz program autopano / skrypt interfejsu" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:160 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:347 -#: hugin1/hugin/PreferencesDialog.cpp:257 -#: hugin1/hugin/PreferencesDialog.cpp:275 -#: hugin1/hugin/PreferencesDialog.cpp:292 -#: hugin1/hugin/PreferencesDialog.cpp:308 hugin1/hugin/PTStitcherPanel.cpp:483 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:159 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:345 +#: src/hugin/AutoCtrlPointCreator.cpp:159 +#: src/hugin/AutoCtrlPointCreator.cpp:345 src/hugin/PreferencesDialog.cpp:251 +#: src/hugin/PreferencesDialog.cpp:269 src/hugin/PreferencesDialog.cpp:286 +#: src/hugin/PreferencesDialog.cpp:302 src/hugin/PTStitcherPanel.cpp:483 msgid "Executables (*.exe)|*.exe" msgstr "Pliki wykonywalne (*.exe)|*.exe" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:166 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:202 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:353 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:165 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:201 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:351 +#: src/hugin/AutoCtrlPointCreator.cpp:165 +#: src/hugin/AutoCtrlPointCreator.cpp:201 +#: src/hugin/AutoCtrlPointCreator.cpp:351 msgid "No autopano selected" msgstr "Nie wybrano autopano" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:189 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:188 +#: src/hugin/AutoCtrlPointCreator.cpp:188 msgid "Autopano-SIFT is not installed." msgstr "Autopano-SIFT nie jest zainstalowane." -#: hugin1/hugin/AutoCtrlPointCreator.cpp:194 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:193 +#: src/hugin/AutoCtrlPointCreator.cpp:193 msgid "Select autopano frontend script" msgstr "Wybierz skrypt interfejsu autopano" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:196 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:195 +#: src/hugin/AutoCtrlPointCreator.cpp:195 msgid "Shell Scripts (*.sh)|*.sh" msgstr "Skrypty powłoki (*.sh)|*.sh" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:241 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:239 +#: src/hugin/AutoCtrlPointCreator.cpp:239 #, c-format msgid "Please use either %namefile or %i in the autopano-sift command line." msgstr "Proszę użyć albo %namefile albo %i linii poleceń autopano-sift." -#: hugin1/hugin/AutoCtrlPointCreator.cpp:242 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:247 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:240 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:245 +#: src/hugin/AutoCtrlPointCreator.cpp:240 +#: src/hugin/AutoCtrlPointCreator.cpp:245 msgid "Error in Autopano command" msgstr "Błąd w poleceniu autopano" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:246 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:244 +#: src/hugin/AutoCtrlPointCreator.cpp:244 #, c-format -msgid "" -"Please use %namefile or %i to specify the input files for autopano-sift" +msgid "Please use %namefile or %i to specify the input files for autopano-sift" msgstr "" "Proszę użyć %namefile lub %i by podać nazwę plików wejściowych dla autopano-" "sift" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:285 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:393 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:283 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:389 +#: src/hugin/AutoCtrlPointCreator.cpp:283 +#: src/hugin/AutoCtrlPointCreator.cpp:389 msgid "" "autopano command line too long.\n" "This is a windows limitation\n" @@ -345,67 +188,47 @@ "Proszę wybrać mniej zdjęć lub umieścić zdjęcia w folderze z\n" "krótszą ścieżką" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:286 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:394 -#: hugin1/hugin/NonaStitcherPanel.cpp:415 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:284 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:390 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:160 +#: src/hugin/AutoCtrlPointCreator.cpp:284 +#: src/hugin/AutoCtrlPointCreator.cpp:390 src/hugin/NonaStitcherPanel.cpp:428 msgid "Too many images selected" msgstr "Wybrano zbyt wiele zdjęć" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:298 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:403 -#, fuzzy -msgid "finding control points" -msgstr "Pokaż punkty kontrolne" +#: src/hugin/AutoCtrlPointCreator.cpp:299 +#: src/hugin/AutoCtrlPointCreator.cpp:402 +#: src/hugin/MyExternalCmdExecDialog.cpp:62 +#: src/hugin/MyExternalCmdExecDialog.cpp:100 +#: src/hugin/NonaStitcherPanel.cpp:440 src/hugin/PanoPanel.cpp:723 +msgid "Could not execute command: " +msgstr "Nie można wykonać polecenia: " -#: hugin1/hugin/AutoCtrlPointCreator.cpp:301 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:306 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:406 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:412 -#: hugin1/hugin/NonaStitcherPanel.cpp:427 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:299 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:304 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:402 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:408 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:172 +#: src/hugin/AutoCtrlPointCreator.cpp:299 +#: src/hugin/AutoCtrlPointCreator.cpp:304 +#: src/hugin/AutoCtrlPointCreator.cpp:402 +#: src/hugin/AutoCtrlPointCreator.cpp:408 src/hugin/NonaStitcherPanel.cpp:440 msgid "wxExecute Error" msgstr "Błąd wxExecute" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:304 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:410 -#: hugin1/hugin/NonaStitcherPanel.cpp:430 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:302 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:406 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:175 +#: src/hugin/AutoCtrlPointCreator.cpp:302 +#: src/hugin/AutoCtrlPointCreator.cpp:406 src/hugin/NonaStitcherPanel.cpp:443 msgid "command: " -msgstr "polecenie:" +msgstr "polecenie: " -#: hugin1/hugin/AutoCtrlPointCreator.cpp:305 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:411 -#: hugin1/hugin/NonaStitcherPanel.cpp:431 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:303 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:407 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:176 +#: src/hugin/AutoCtrlPointCreator.cpp:303 +#: src/hugin/AutoCtrlPointCreator.cpp:407 src/hugin/NonaStitcherPanel.cpp:444 msgid "" "\n" "failed with error code: " msgstr "" "\n" -"niepowodzenie z kodem błędu:" +"niepowodzenie z kodem błędu: " -#: hugin1/hugin/AutoCtrlPointCreator.cpp:312 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:419 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:310 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:415 +#: src/hugin/AutoCtrlPointCreator.cpp:310 +#: src/hugin/AutoCtrlPointCreator.cpp:415 msgid "Could not open " msgstr "Nie można otworzyć" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:312 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:419 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:310 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:415 +#: src/hugin/AutoCtrlPointCreator.cpp:310 +#: src/hugin/AutoCtrlPointCreator.cpp:415 msgid "" " for reading\n" "This is an indicator that the autopano call failed,\n" @@ -419,20 +242,16 @@ "\n" "Polecenie autopano: " -#: hugin1/hugin/AutoCtrlPointCreator.cpp:313 -#: hugin1/hugin/AutoCtrlPointCreator.cpp:422 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:311 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:418 +#: src/hugin/AutoCtrlPointCreator.cpp:311 +#: src/hugin/AutoCtrlPointCreator.cpp:418 msgid "autopano failure" msgstr "autopano nie powiodło się" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:345 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:343 +#: src/hugin/AutoCtrlPointCreator.cpp:343 msgid "Select autopano program" msgstr "Wybierz program autopano" -#: hugin1/hugin/AutoCtrlPointCreator.cpp:420 -#: hugin_base/algorithms/external/to-be-added/AutoCtrlPointCreator.cpp:416 +#: src/hugin/AutoCtrlPointCreator.cpp:416 msgid "" "\n" " current directory:" @@ -440,63 +259,63 @@ "\n" " obecny katalog:" -#: hugin1/hugin/CommandHistory.cpp:94 +#: src/hugin/CommandHistory.cpp:94 msgid "no command in undo history" msgstr "brak komendy w historii \"cofnij\"" -#: hugin1/hugin/CommandHistory.cpp:106 +#: src/hugin/CommandHistory.cpp:106 msgid "no command in redo history" msgstr "brak komendy w historii \"ponów\"" -#: hugin1/hugin/CPEditorPanel.cpp:169 hugin1/hugin/CPListFrame.cpp:282 -#: hugin1/hugin/CPListFrame.cpp:292 hugin1/hugin/ImagesList.cpp:58 +#: src/hugin/CPEditorPanel.cpp:169 src/hugin/CPListFrame.cpp:282 +#: src/hugin/CPListFrame.cpp:292 src/hugin/ImagesList.cpp:58 msgid "#" msgstr "#" -#: hugin1/hugin/CPEditorPanel.cpp:170 +#: src/hugin/CPEditorPanel.cpp:170 msgid "left x" msgstr "lewy x" -#: hugin1/hugin/CPEditorPanel.cpp:171 +#: src/hugin/CPEditorPanel.cpp:171 msgid "left y" msgstr "lewy y" -#: hugin1/hugin/CPEditorPanel.cpp:172 +#: src/hugin/CPEditorPanel.cpp:172 msgid "right x" msgstr "prawy x" -#: hugin1/hugin/CPEditorPanel.cpp:173 +#: src/hugin/CPEditorPanel.cpp:173 msgid "right y" msgstr "prawy y" -#: hugin1/hugin/CPEditorPanel.cpp:174 hugin1/hugin/CPListFrame.cpp:289 -#: hugin1/hugin/CPListFrame.cpp:295 +#: src/hugin/CPEditorPanel.cpp:174 src/hugin/CPListFrame.cpp:289 +#: src/hugin/CPListFrame.cpp:295 msgid "Alignment" msgstr "Wyrównanie" -#: hugin1/hugin/CPEditorPanel.cpp:175 hugin1/hugin/CPListFrame.cpp:290 -#: hugin1/hugin/CPListFrame.cpp:296 +#: src/hugin/CPEditorPanel.cpp:175 src/hugin/CPListFrame.cpp:290 +#: src/hugin/CPListFrame.cpp:296 msgid "Distance" msgstr "Odległość" -#: hugin1/hugin/CPEditorPanel.cpp:562 +#: src/hugin/CPEditorPanel.cpp:562 msgid "No corresponding point found" msgstr "Nie znaleziono odpowiadającego punktu" -#: hugin1/hugin/CPEditorPanel.cpp:649 +#: src/hugin/CPEditorPanel.cpp:649 msgid "new control point added" msgstr "Dodano nowy punkt kontrolny" -#: hugin1/hugin/CPEditorPanel.cpp:751 hugin1/hugin/CPEditorPanel.cpp:975 +#: src/hugin/CPEditorPanel.cpp:749 src/hugin/CPEditorPanel.cpp:973 msgid "searching similar point..." msgstr "szukam podobnego punktu..." -#: hugin1/hugin/CPEditorPanel.cpp:770 hugin1/hugin/CPEditorPanel.cpp:893 +#: src/hugin/CPEditorPanel.cpp:768 src/hugin/CPEditorPanel.cpp:891 msgid "Error during Fine-tune" -msgstr "Błąd podcza dostrajania" +msgstr "Błąd podczas dostrajania" -#: hugin1/hugin/CPEditorPanel.cpp:784 hugin1/hugin/CPEditorPanel.cpp:913 -#: hugin1/hugin/CPEditorPanel.cpp:1049 +#: src/hugin/CPEditorPanel.cpp:782 src/hugin/CPEditorPanel.cpp:911 +#: src/hugin/CPEditorPanel.cpp:1026 #, c-format msgid "" "Point finetuned, angle: %.0f deg, correlation coefficient: %0.3f, curvature: " @@ -505,15 +324,15 @@ "Punkt dostrojony, kąt: %.0f stopni, współczynnik korelacji: %0.3f, " "zakrzywienie: %0.3f %0.3f " -#: hugin1/hugin/CPEditorPanel.cpp:787 hugin1/hugin/CPEditorPanel.cpp:916 +#: src/hugin/CPEditorPanel.cpp:785 src/hugin/CPEditorPanel.cpp:914 msgid "change points, or press right mouse button to add the pair" -msgstr "zmień punkty lub naciśniej prawy przycisk myszy by dodać parę" +msgstr "zmień punkty lub naciśnij prawy przycisk myszy by dodać parę" -#: hugin1/hugin/CPEditorPanel.cpp:807 +#: src/hugin/CPEditorPanel.cpp:805 msgid "Estimated point outside image" msgstr "Estymowany punkt jest poza obszarem zdjęcia" -#: hugin1/hugin/CPEditorPanel.cpp:1055 +#: src/hugin/CPEditorPanel.cpp:1032 #, c-format msgid "" "No similar point found.\n" @@ -521,106 +340,102 @@ "peak curvature: (%.3f, %.3f) ( should be > %.3f)" msgstr "" "Nie znaleziono podobnego punktu.\n" -"współczynnik korelacji: %.3f (powininen być < %.3f)\n" +"współczynnik korelacji: %.3f (powinien być < %.3f)\n" "szczyt zakrzywienia: (%.3f, %.3f), ( powinien być > %.3f)" -#: hugin1/hugin/CPEditorPanel.cpp:1057 +#: src/hugin/CPEditorPanel.cpp:1034 msgid "No similar point found" msgstr "Nie znaleziono podobnego punktu" -#: hugin1/hugin/CPEditorPanel.cpp:1209 hugin1/hugin/CPEditorPanel.cpp:1220 +#: src/hugin/CPEditorPanel.cpp:1186 src/hugin/CPEditorPanel.cpp:1197 msgid "Add new Line" msgstr "Dodaj nową linię" -#: hugin1/hugin/CPEditorPanel.cpp:1215 hugin1/hugin/CPEditorPanel.cpp:1218 -#: hugin1/hugin/CPEditorPanel.cpp:1496 hugin1/hugin/CPListFrame.cpp:406 +#: src/hugin/CPEditorPanel.cpp:1192 src/hugin/CPEditorPanel.cpp:1195 +#: src/hugin/CPEditorPanel.cpp:1472 src/hugin/CPListFrame.cpp:406 #, c-format msgid "Line %d" msgstr "Linia %d" -#: hugin1/hugin/CPEditorPanel.cpp:1487 hugin1/hugin/CPListFrame.cpp:397 -#: hugin1/hugin/PreviewFrame.cpp:240 translations/xrc.cpp:50 xrc.cpp:50 +#: src/hugin/CPEditorPanel.cpp:1463 src/hugin/CPListFrame.cpp:397 +#: src/hugin/PreviewFrame.cpp:230 src/hugin/xrc/cp_editor_panel.xrs:8 +#: src/hugin/xrc/cp_editor_panel-2.5.xrs:8 msgid "normal" msgstr "normalny" -#: hugin1/hugin/CPEditorPanel.cpp:1490 hugin1/hugin/CPListFrame.cpp:400 +#: src/hugin/CPEditorPanel.cpp:1466 src/hugin/CPListFrame.cpp:400 msgid "vert. Line" msgstr "pion. linia" -#: hugin1/hugin/CPEditorPanel.cpp:1493 hugin1/hugin/CPListFrame.cpp:403 +#: src/hugin/CPEditorPanel.cpp:1469 src/hugin/CPListFrame.cpp:403 msgid "horiz. Line" msgstr "poz. linia" -#: hugin1/hugin/CPEditorPanel.cpp:1795 +#: src/hugin/CPEditorPanel.cpp:1767 msgid "Cannot estimate image position without control points" msgstr "Nie mogę estymować pozycji zdjęcia bez punktów kontrolnych" -#: hugin1/hugin/CPEditorPanel.cpp:1816 +#: src/hugin/CPEditorPanel.cpp:1788 msgid "" "Create control points.\n" "To create less points,\n" "enter a higher number." msgstr "" "Utwórz punkty kontrolne.\n" -"Aby utworzyć mniej punktów,\n" -"wpisz większą liczbę." +"Aby utworzyć mniej punktów\n" +"wprowadź większą liczbę." -#: hugin1/hugin/CPEditorPanel.cpp:1816 +#: src/hugin/CPEditorPanel.cpp:1788 msgid "Corner Detection threshold" msgstr "Próg wykrywania rogów:" -#: hugin1/hugin/CPEditorPanel.cpp:1816 hugin1/hugin/CPEditorPanel.cpp:1820 -#: translations/xrc.cpp:111 xrc.cpp:111 +#: src/hugin/CPEditorPanel.cpp:1788 src/hugin/CPEditorPanel.cpp:1792 +#: src/hugin/xrc/images_panel-2.5.xrs:23 msgid "Create control points" msgstr "Utwórz punkty kontrolne" -#: hugin1/hugin/CPEditorPanel.cpp:1820 +#: src/hugin/CPEditorPanel.cpp:1792 msgid "Corner Detection scale" msgstr "Skala wykrywania rogów" -#: hugin1/hugin/CPEditorPanel.cpp:1832 +#: src/hugin/CPEditorPanel.cpp:1804 msgid "Error during control point creation:\n" msgstr "Błąd podczas tworzenia punktów kontrolnych:\n" -#: hugin1/hugin/CPEditorPanel.cpp:1963 +#: src/hugin/CPEditorPanel.cpp:1935 msgid "Select Point in right image" msgstr "Zaznacz punkt na prawym zdjęciu" -#: hugin1/hugin/CPEditorPanel.cpp:1975 +#: src/hugin/CPEditorPanel.cpp:1947 msgid "Select Point in left image" msgstr "Zaznacz punkt na lewym zdjęciu" -#: hugin1/hugin/CPFineTuneFrame.cpp:38 +#: src/hugin/CPFineTuneFrame.cpp:38 msgid "Control point finetune" msgstr "Dostrajanie punktów kontrolnych" -#: hugin1/hugin/CPImageCtrl.cpp:332 -#, fuzzy -msgid "new" -msgstr "Nowy" - -#: hugin1/hugin/CPImageCtrl.cpp:1143 +#: src/hugin/CPImageCtrl.cpp:833 msgid "Could not process event!" msgstr "Nie można obsłużyć wydarzenia!" -#: hugin1/hugin/CPListFrame.cpp:283 hugin1/hugin/CPListFrame.cpp:293 +#: src/hugin/CPListFrame.cpp:283 src/hugin/CPListFrame.cpp:293 msgid "left Img." msgstr "lewe zdjęcie" -#: hugin1/hugin/CPListFrame.cpp:284 hugin1/hugin/CPListFrame.cpp:287 -#: translations/xrc.cpp:19 translations/xrc.cpp:42 xrc.cpp:19 xrc.cpp:42 +#: src/hugin/CPListFrame.cpp:284 src/hugin/CPListFrame.cpp:287 +#: src/hugin/xrc/assistant_panel.xrs:14 src/hugin/xrc/assistant_panel.xrs:37 msgid "x" msgstr "x" -#: hugin1/hugin/CPListFrame.cpp:285 hugin1/hugin/CPListFrame.cpp:288 +#: src/hugin/CPListFrame.cpp:285 src/hugin/CPListFrame.cpp:288 msgid "y" msgstr "y" -#: hugin1/hugin/CPListFrame.cpp:286 hugin1/hugin/CPListFrame.cpp:294 +#: src/hugin/CPListFrame.cpp:286 src/hugin/CPListFrame.cpp:294 msgid "right Img." msgstr "prawe zdjęcie" -#: hugin1/hugin/CPListFrame.cpp:607 hugin1/hugin/CPListFrame.cpp:616 +#: src/hugin/CPListFrame.cpp:604 src/hugin/CPListFrame.cpp:613 msgid "" "Enter minimum control point error.\n" "All point with a higher error will be selected" @@ -628,275 +443,238 @@ "Wpisz minimalny błąd punktów kontrolnych\n" "Zostaną zaznaczone wszystkie punkty z większym błędem" -#: hugin1/hugin/CPListFrame.cpp:607 hugin1/hugin/CPListFrame.cpp:616 +#: src/hugin/CPListFrame.cpp:604 src/hugin/CPListFrame.cpp:613 msgid "Select Control Points" msgstr "Zaznacz punkty kontrolne" -#: hugin1/hugin/CPListFrame.cpp:615 +#: src/hugin/CPListFrame.cpp:612 msgid "Error: please enter a valid number." -msgstr "Błąd: proszę wpisać poprawny numer" +msgstr "Błąd: proszę wpisać poprawny numer." -#: hugin1/hugin/CPListFrame.cpp:615 +#: src/hugin/CPListFrame.cpp:612 msgid "Could not read number" msgstr "Błąd odczytu numeru" -#: hugin1/hugin/CropPanel.cpp:253 hugin1/hugin/CropPanel.cpp:269 -#: hugin1/hugin/CropPanel.cpp:285 hugin1/hugin/CropPanel.cpp:301 -#, fuzzy -msgid "Please enter a valid number" -msgstr "Błąd: proszę wpisać poprawny numer" - -#: hugin1/hugin/HFOVDialog.cpp:74 -#, c-format -msgid "" -"No or only partial information about field of view was found in image file\n" -"%s\n" -"\n" -"Please enter the the horizontal field of view (HFOV) or the focal length and " -"crop factor." -msgstr "" - -#: hugin1/hugin/HFOVDialog.cpp:155 -#, fuzzy -msgid "The horizontal field of view must be positive." -msgstr "Poziome Pole Widzenia (HFOV) może być zbyt małe." - -#: hugin1/hugin/HFOVDialog.cpp:207 -#, fuzzy -msgid "The focal length must be positive." -msgstr "Mnożnik ogniskowej:" - -#: hugin1/hugin/HFOVDialog.cpp:246 -msgid "The crop factor must be positive." -msgstr "" - -#: hugin1/hugin/huginApp.cpp:53 hugin1/hugin/ImagesPanel.cpp:315 -#: hugin1/hugin/ImagesPanel.cpp:336 hugin1/hugin/ImagesPanel.cpp:356 -#: hugin1/hugin/PanoPanel.cpp:372 hugin1/hugin/PanoPanel.cpp:403 -#: hugin1/hugin/PreviewFrame.cpp:748 hugin1/hugin/PreviewFrame.cpp:764 +#: src/hugin/huginApp.cpp:50 src/hugin/ImagesPanel.cpp:315 +#: src/hugin/ImagesPanel.cpp:336 src/hugin/ImagesPanel.cpp:356 +#: src/hugin/PanoPanel.cpp:301 src/hugin/PanoPanel.cpp:332 +#: src/hugin/PreviewFrame.cpp:672 msgid "Value must be numeric." msgstr "Wartość musi być numeryczna." -#: hugin1/hugin/huginApp.cpp:124 -msgid "xrc directory not found in bundle" -msgstr "" +#: src/hugin/ImageCache.cpp:618 +#, c-format +msgid "Loading image %s" +msgstr "Ładuję zdjęcie %s" -#: hugin1/hugin/huginApp.cpp:124 hugin1/hugin/huginApp.cpp:133 -#: hugin1/hugin/huginApp.cpp:140 hugin1/hugin/huginApp.cpp:152 -#, fuzzy -msgid "Fatal Error" -msgstr "Błąd" +#: src/hugin/ImageCache.cpp:737 +#, c-format +msgid "Error during image reading: %s" +msgstr "Błąd podczas odczytu zdjęcia: %s" -#: hugin1/hugin/huginApp.cpp:133 -msgid "Translations not found in bundle" -msgstr "" +#: src/hugin/ImageCache.cpp:745 +msgid "Cannot load image: " +msgstr "Nie można wczytać zdjęcia: " -#: hugin1/hugin/huginApp.cpp:140 -msgid "Command line helper tools not found in bundle" -msgstr "" +#: src/hugin/ImageCache.cpp:775 +#, c-format +msgid "Scaling image %s" +msgstr "Skaluję zdjęcie %s" -#: hugin1/hugin/huginApp.cpp:152 -msgid "" -"xrc directory not found, hugin needs to be properly installed\n" -"Tried Path:" -msgstr "" +#: src/hugin/ImageCache.cpp:833 +#, c-format +msgid "Creating grayscale %s" +msgstr "Tworzę odcienie szarości %s" -#: hugin1/hugin/ImagesList.cpp:307 hugin1/hugin/ImagesList.cpp:366 +#: src/hugin/ImageCache.cpp:851 +#, c-format +msgid "Creating pyramid image for %s, level %d" +msgstr "Tworzę zdjęcie piramidalne dla %s, poziom %d" + +#: src/hugin/ImagesList.cpp:306 src/hugin/ImagesList.cpp:365 msgid "Filename" msgstr "Nazwa pliku" -#: hugin1/hugin/ImagesList.cpp:308 +#: src/hugin/ImagesList.cpp:307 msgid "width" msgstr "szerokość" -#: hugin1/hugin/ImagesList.cpp:309 +#: src/hugin/ImagesList.cpp:308 msgid "height" msgstr "wysokość" -#: hugin1/hugin/ImagesList.cpp:310 +#: src/hugin/ImagesList.cpp:309 msgid "yaw (y)" msgstr "yaw (y)" -#: hugin1/hugin/ImagesList.cpp:311 +#: src/hugin/ImagesList.cpp:310 msgid "pitch (p)" msgstr "pitch (p)" -#: hugin1/hugin/ImagesList.cpp:312 +#: src/hugin/ImagesList.cpp:311 msgid "roll (r)" msgstr "roll (r)" -#: hugin1/hugin/ImagesList.cpp:313 +#: src/hugin/ImagesList.cpp:312 msgid "Anchor" msgstr "Odniesienie" -#: hugin1/hugin/ImagesList.cpp:314 +#: src/hugin/ImagesList.cpp:313 msgid "# Ctrl Pnts" msgstr "# Punktów kontr." -#: hugin1/hugin/ImagesList.cpp:367 +#: src/hugin/ImagesList.cpp:366 msgid "Lens no." -msgstr "Obiektyw numer" +msgstr "Numer obiektywu" -#: hugin1/hugin/ImagesList.cpp:368 +#: src/hugin/ImagesList.cpp:367 msgid "Lens type (f)" msgstr "Typ obiektywu (f)" -#: hugin1/hugin/ImagesList.cpp:369 +#: src/hugin/ImagesList.cpp:368 msgid "hfov (v)" msgstr "hfov (v)" -#: hugin1/hugin/ImagesList.cpp:370 +#: src/hugin/ImagesList.cpp:369 msgid "a" msgstr "a" -#: hugin1/hugin/ImagesList.cpp:371 +#: src/hugin/ImagesList.cpp:370 msgid "b" msgstr "b" -#: hugin1/hugin/ImagesList.cpp:372 +#: src/hugin/ImagesList.cpp:371 msgid "c" msgstr "c" -#: hugin1/hugin/ImagesList.cpp:373 +#: src/hugin/ImagesList.cpp:372 msgid "d" msgstr "d" -#: hugin1/hugin/ImagesList.cpp:374 +#: src/hugin/ImagesList.cpp:373 msgid "e" msgstr "e" -#: hugin1/hugin/ImagesList.cpp:375 +#: src/hugin/ImagesList.cpp:374 msgid "g" msgstr "g" -#: hugin1/hugin/ImagesList.cpp:376 +#: src/hugin/ImagesList.cpp:375 msgid "t" msgstr "t" -#: hugin1/hugin/ImagesList.cpp:399 translations/xrc.cpp:11 -#: translations/xrc.cpp:30 translations/xrc.cpp:137 xrc.cpp:11 xrc.cpp:30 -#: xrc.cpp:137 +#: src/hugin/ImagesList.cpp:398 src/hugin/xrc/assistant_panel.xrs:6 +#: src/hugin/xrc/assistant_panel.xrs:25 src/hugin/xrc/lens_panel.xrs:2 +#: src/hugin/xrc/lens_panel-2.5.xrs:13 msgid "Normal (rectilinear)" msgstr "Normalny (prostoliniowy)" -#: hugin1/hugin/ImagesList.cpp:400 translations/xrc.cpp:12 -#: translations/xrc.cpp:31 translations/xrc.cpp:138 xrc.cpp:12 xrc.cpp:31 -#: xrc.cpp:138 +#: src/hugin/ImagesList.cpp:399 src/hugin/xrc/assistant_panel.xrs:7 +#: src/hugin/xrc/assistant_panel.xrs:26 src/hugin/xrc/lens_panel.xrs:3 +#: src/hugin/xrc/lens_panel-2.5.xrs:14 msgid "Panoramic (cylindrical)" msgstr "Panoramiczny (cylindryczny)" -#: hugin1/hugin/ImagesList.cpp:401 translations/xrc.cpp:13 -#: translations/xrc.cpp:32 translations/xrc.cpp:139 xrc.cpp:13 xrc.cpp:32 -#: xrc.cpp:139 +#: src/hugin/ImagesList.cpp:400 src/hugin/xrc/assistant_panel.xrs:8 +#: src/hugin/xrc/assistant_panel.xrs:27 src/hugin/xrc/lens_panel.xrs:4 +#: src/hugin/xrc/lens_panel-2.5.xrs:15 msgid "Circular fisheye" msgstr "Okrągłe rybie oko" -#: hugin1/hugin/ImagesList.cpp:402 translations/xrc.cpp:14 -#: translations/xrc.cpp:33 translations/xrc.cpp:140 xrc.cpp:14 xrc.cpp:33 -#: xrc.cpp:140 +#: src/hugin/ImagesList.cpp:401 src/hugin/xrc/assistant_panel.xrs:9 +#: src/hugin/xrc/assistant_panel.xrs:28 src/hugin/xrc/lens_panel.xrs:5 +#: src/hugin/xrc/lens_panel-2.5.xrs:16 src/hugin/xrc/pano_panel.xrs:6 msgid "Full frame fisheye" msgstr "Pełnoramowe rybie oko" -#: hugin1/hugin/ImagesList.cpp:403 hugin1/hugin/PreviewFrame.cpp:616 -#: translations/xrc.cpp:15 translations/xrc.cpp:34 translations/xrc.cpp:141 -#: xrc.cpp:15 xrc.cpp:34 xrc.cpp:141 +#: src/hugin/ImagesList.cpp:402 src/hugin/PreviewFrame.cpp:537 +#: src/hugin/xrc/assistant_panel.xrs:10 src/hugin/xrc/assistant_panel.xrs:29 +#: src/hugin/xrc/lens_panel.xrs:6 src/hugin/xrc/lens_panel-2.5.xrs:17 +#: src/hugin/xrc/pano_panel.xrs:5 msgid "Equirectangular" msgstr "Sferyczny" -#: hugin1/hugin/ImagesList.cpp:421 translations/xrc.cpp:119 -#: translations/xrc.cpp:210 translations/xrc.cpp:385 xrc.cpp:119 xrc.cpp:210 -#: xrc.cpp:385 +#: src/hugin/ImagesList.cpp:420 src/hugin/xrc/images_panel.xrs:10 +#: src/hugin/xrc/images_panel-2.5.xrs:31 src/hugin/xrc/lens_panel.xrs:34 msgid "Crop" msgstr "Ucięcie" -#: hugin1/hugin/ImagesPanel.cpp:294 +#: src/hugin/ImagesPanel.cpp:294 #, c-format msgid "Added %d control points" msgstr "Dodano %d punktów kontrolnych" -#: hugin1/hugin/ImagesPanel.cpp:294 +#: src/hugin/ImagesPanel.cpp:294 msgid "Autopano result" msgstr "Wynik autopano" -#: hugin1/hugin/ImagesPanel.cpp:684 +#: src/hugin/ImagesPanel.cpp:687 #, c-format msgid "Really Delete %d control points?" msgstr "Na pewno usunąć %d punktów kontrolnych?" -#: hugin1/hugin/ImagesPanel.cpp:686 +#: src/hugin/ImagesPanel.cpp:689 msgid "Delete Control Points" msgstr "Usuń punkty kontrolne" -#: hugin1/hugin/LensPanel.cpp:827 +#: src/hugin/LensPanel.cpp:717 msgid "Not a jpeg file:" msgstr "To nie jest plik jpeg:" -#: hugin1/hugin/LensPanel.cpp:831 hugin1/hugin/LensPanel.cpp:935 -#: hugin1/hugin/LensPanel.cpp:968 hugin1/hugin/LensPanel.cpp:1084 -#: hugin1/hugin/LensPanel.cpp:1102 +#: src/hugin/LensPanel.cpp:721 src/hugin/LensPanel.cpp:822 +#: src/hugin/LensPanel.cpp:855 src/hugin/LensPanel.cpp:950 +#: src/hugin/LensPanel.cpp:968 msgid "Please select an image and try again" msgstr "Proszę wybrać zdjęcie i spróbować ponownie" -#: hugin1/hugin/LensPanel.cpp:849 +#: src/hugin/LensPanel.cpp:739 msgid "Save lens parameters file" msgstr "Zapisz plik parametrów obiektywów" -#: hugin1/hugin/LensPanel.cpp:851 +#: src/hugin/LensPanel.cpp:741 msgid "Lens Project Files (*.ini)|*.ini|All files (*)|*" msgstr "Pliki parametrów obiektywów (*.ini)|*.ini|Wszystkie pliki (*)|*" -#: hugin1/hugin/LensPanel.cpp:977 +#: src/hugin/LensPanel.cpp:864 msgid "Load lens parameters" msgstr "Otwórz parametry obiektywów" -#: hugin1/hugin/LensPanel.cpp:979 +#: src/hugin/LensPanel.cpp:866 msgid "Lens Project Files (*.ini)|*.ini|All files (*.*)|*.*" msgstr "Pliki parametrów obiektywów (*.ini)|*.ini|Wszystkie pliki (*.*)|*.*" -#: hugin1/hugin/LensPanel.cpp:998 -msgid "" -"Incompatible lens parameter file, image sizes do not match\n" -"Apply settings anyway?" -msgstr "" - -#: hugin1/hugin/LensPanel.cpp:998 -#, fuzzy -msgid "Error loading lens parameters" -msgstr "Otwórz parametry obiektywów" - -#: hugin1/hugin/LensPanel.cpp:1092 +#: src/hugin/LensPanel.cpp:958 msgid "Enter new lens number" msgstr "Wpisz numer nowego obiektywu" -#: hugin1/hugin/LensPanel.cpp:1092 +#: src/hugin/LensPanel.cpp:958 msgid "Lens number" msgstr "Numer obiektywu" -#: hugin1/hugin/LensPanel.cpp:1093 +#: src/hugin/LensPanel.cpp:959 msgid "Change lens number" msgstr "Zmień numer obiektywu" -#: hugin1/hugin/LocalizedFileTipProvider.cpp:48 -msgid "Tips not available, sorry!" -msgstr "Podpowiedzi niestety nie są dostępne!" - -#: hugin1/hugin/MainFrame.cpp:195 +#: src/hugin/MainFrame.cpp:220 msgid "" "Fatal installation error\n" -"The data/splash.png was not found at:" +"The xrc directory was not found.\n" +"Please ensure it is placed in the same directory as hugin.exe" msgstr "" +"Błąd instalacji\n" +"Nie znaleziono katalogu xrc.\n" +"Proszę się upewnić, że jest on w tym samym katalogu co hugin.exe" -#: hugin1/hugin/MainFrame.cpp:215 translations/xrc.cpp:218 -#: translations/xrc.cpp:253 translations/xrc.cpp:256 xrc.cpp:218 xrc.cpp:253 -#: xrc.cpp:256 +#: src/hugin/MainFrame.cpp:240 src/hugin/xrc/main_menubar.xrs:4 +#: src/hugin/xrc/main_menu.xrs:31 src/hugin/xrc/main_menu.xrs:34 msgid "&Help" msgstr "Po&moc" -#: hugin1/hugin/MainFrame.cpp:317 +#: src/hugin/MainFrame.cpp:336 msgid "Started" msgstr "Rozpoczęto" -#: hugin1/hugin/MainFrame.cpp:443 +#: src/hugin/MainFrame.cpp:462 msgid "" "The panorama has been changed\n" "Save changes?" @@ -904,65 +682,52 @@ "Panorama została zmodyfikowana\n" "Zapisać zmiany?" -#: hugin1/hugin/MainFrame.cpp:443 +#: src/hugin/MainFrame.cpp:462 msgid "Save Panorama?" msgstr "Zapisać panoramę?" -#: hugin1/hugin/MainFrame.cpp:476 +#: src/hugin/MainFrame.cpp:495 msgid "forced close" msgstr "wymuszone zamknięcie" -#: hugin1/hugin/MainFrame.cpp:527 +#: src/hugin/MainFrame.cpp:548 #, c-format msgid "saved project %s" msgstr "zapisano projekt %s" -#: hugin1/hugin/MainFrame.cpp:544 +#: src/hugin/MainFrame.cpp:561 msgid "Save project file" msgstr "Zapisz projekt" -#: hugin1/hugin/MainFrame.cpp:546 +#: src/hugin/MainFrame.cpp:563 msgid "Project files (*.pto)|*.pto|All files (*)|*" msgstr "Pliki projektów (*.pto)|*.pto|Wszystkie pliki (*)|*" -#: hugin1/hugin/MainFrame.cpp:556 -#, fuzzy, c-format -msgid "File %s exists. Overwrite?" -msgstr "" -"Plik %s już istnieje\n" -"\n" -"Nadpisać go?" - -#: hugin1/hugin/MainFrame.cpp:557 translations/xrc.cpp:270 xrc.cpp:270 -msgid "Save project" -msgstr "Zapisz projekt" - -#: hugin1/hugin/MainFrame.cpp:575 +#: src/hugin/MainFrame.cpp:583 msgid "Save PTStitcher script file" msgstr "Zapisz plik skryptu PTStitcher" -#: hugin1/hugin/MainFrame.cpp:577 +#: src/hugin/MainFrame.cpp:585 msgid "PTStitcher files (*.txt)|*.txt" msgstr "Pliki PTStitchera (*.txt)|*.txt" -#: hugin1/hugin/MainFrame.cpp:606 +#: src/hugin/MainFrame.cpp:613 msgid "Open project: " msgstr "Otwórz projekt" -#: hugin1/hugin/MainFrame.cpp:618 +#: src/hugin/MainFrame.cpp:625 msgid "Project opened" msgstr "Otwarto projekt" -#: hugin1/hugin/MainFrame.cpp:628 +#: src/hugin/MainFrame.cpp:635 msgid "Error opening project: " -msgstr "Błąd podczas otwierania projektu:" +msgstr "Błąd podczas otwierania projektu: " -#: hugin1/hugin/MainFrame.cpp:674 +#: src/hugin/MainFrame.cpp:666 msgid "Open project file" msgstr "Otwórz projekt" -#: hugin1/hugin/MainFrame.cpp:676 hugin1/hugin/MainFrame.cpp:1121 -#: hugin1/stitch_project/hugin_stitch_project.cpp:181 +#: src/hugin/MainFrame.cpp:668 msgid "" "Project files (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|All files " "(*)|*" @@ -970,43 +735,37 @@ "Pliki projektów (*.pto,*.ptp,*.pts,*.oto)|*.pto;*.ptp;*.pts;*.oto;|Wszystkie " "zdjęcia (*)|*" -#: hugin1/hugin/MainFrame.cpp:690 +#: src/hugin/MainFrame.cpp:681 msgid "Open project: cancel" msgstr "Otwórz projekt: anuluj" -#: hugin1/hugin/MainFrame.cpp:716 hugin1/hugin/VigCorrDialog.cpp:173 -#: hugin1/hugin/wxPanoCommand.cpp:312 +#: src/hugin/MainFrame.cpp:707 src/hugin/wxPanoCommand.cpp:278 msgid "" "All Image files|*.jpg;*.JPG;*.tif;*.TIF;*.tiff;*.TIFF;*.png;*.PNG;*.bmp;*." "BMP;*.gif;*.GIF;*.pnm;*.PNM;*.sun;*.viff;*.hdr|JPEG files (*.jpg,*.jpeg)|*." "jpg;*.JPG;*.jpeg;*.JPEG|All files (*)|*" msgstr "" "Wszystkie pliki zdjęć|*.jpg;*.JPG;*.tif;*.TIF;*.tiff;*.TIFF;*.png;*.PNG;*." -"bmp;*.BMP;*.gif;*.GIF;*.pnm;*.PNM;*.sun;*.viff|*.hdr|Pliki JPEG (*.jpg,*." -"jpeg)|*.jpg;*.JPG;*.jpeg;*.JPEG|Wszystkie pliki (*)|*" +"bmp;*.BMP;*.gif;*.GIF;*.pnm;*.PNM;*.sun;*.viff|*.hdr|Pliki JPEG (*.jpg)|*." +"jpg;*.JPG|Wszystkie pliki (*)|*" -#: hugin1/hugin/MainFrame.cpp:719 hugin1/hugin/wxPanoCommand.cpp:313 -#: hugin1/hugin/wxPanoCommand.cpp:383 +#: src/hugin/MainFrame.cpp:710 src/hugin/wxPanoCommand.cpp:279 msgid "Add images" msgstr "Dodaj zdjęcia" -#: hugin1/hugin/MainFrame.cpp:772 +#: src/hugin/MainFrame.cpp:762 msgid "Add Image: cancel" msgstr "Dodaj zdjęcia: anuluj" -#: hugin1/hugin/MainFrame.cpp:1119 -msgid "Choose template project" -msgstr "" - -#: hugin1/hugin/MainFrame.cpp:1171 +#: src/hugin/MainFrame.cpp:1138 msgid "Fine-tuning all points" msgstr "Dostrajanie wszystkich punktów" -#: hugin1/hugin/MainFrame.cpp:1173 +#: src/hugin/MainFrame.cpp:1140 msgid "Finetuning" msgstr "Dostrajam" -#: hugin1/hugin/MainFrame.cpp:1261 +#: src/hugin/MainFrame.cpp:1231 #, c-format msgid "" "%d points fine-tuned, %d points not updated due to low correlation\n" @@ -1036,22 +795,50 @@ "Użyj listy Punktów Kontrolnych (F3) aby zobaczyć wszystkie punkty obecnego " "projektu\n" -#: hugin1/hugin/MainFrame.cpp:1263 +#: src/hugin/MainFrame.cpp:1233 msgid "Fine-tune result" msgstr "Rezultat dostrajania" -#: hugin1/hugin/NonaOptionsDialog.cpp:55 translations/xrc.cpp:438 xrc.cpp:438 -#, fuzzy -msgid "Nona options" -msgstr "Opcje pliku" +#: src/hugin/MyExternalCmdExecDialog.cpp:62 src/hugin/PanoPanel.cpp:723 +msgid "ShellExecuteEx failed" +msgstr "błąd ShellExecuteEx" -#: hugin1/hugin/NonaStitcherPanel.cpp:288 hugin1/nona_gui/nona_gui.cpp:225 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:33 +#: src/hugin/MyExternalCmdExecDialog.cpp:100 +msgid "CreateProcess Error" +msgstr "Błąd CreateProcess" + +#: src/hugin/MyExternalCmdExecDialog.cpp:115 +#, c-format +msgid "Running %s" +msgstr "Uruchomiono %s" + +#: src/hugin/MyExternalCmdExecDialog.cpp:115 +msgid "You can watch the enblend progress in the command window" +msgstr "" +"Praca programu enblend zajmie chwilę...\n" +"Możesz podglądać postęp programu enblend w oknie poleceń" + +#: src/hugin/MyExternalCmdExecDialog.cpp:119 +msgid "" +"Could not execute enblend, system() failed: \n" +"Command was :" +msgstr "" +"Nie można było uruchomić enblenda, system() zwrócił błąd: \n" +"Polecenie było :" + +#: src/hugin/MyExternalCmdExecDialog.cpp:120 +msgid "Error returned was :" +msgstr "Zwrócono błąd :" + +#: src/hugin/MyProgressDialog.cpp:36 +msgid "Elapsed time : " +msgstr "Upłynęło już : " + +#: src/hugin/NonaStitcherPanel.cpp:301 msgid "Stitching Panorama" msgstr "Składam panoramę" -#: hugin1/hugin/NonaStitcherPanel.cpp:325 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:70 +#: src/hugin/NonaStitcherPanel.cpp:338 msgid "" "Out of memory.\n" "Try again with a smaller panorama image size\n" @@ -1059,35 +846,27 @@ "Brak pamięci.\n" "Spróbuj ponownie z mniejszym rozmiarem obrazu panoramy.\n" -#: hugin1/hugin/NonaStitcherPanel.cpp:326 -#: hugin1/hugin/NonaStitcherPanel.cpp:331 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:71 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:76 +#: src/hugin/NonaStitcherPanel.cpp:339 src/hugin/NonaStitcherPanel.cpp:344 msgid "Error during stitching" msgstr "Błąd podczas składania" -#: hugin1/hugin/NonaStitcherPanel.cpp:346 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:91 +#: src/hugin/NonaStitcherPanel.cpp:359 msgid "Select enblend.exe" msgstr "Wybierz enblend.exe" -#: hugin1/hugin/NonaStitcherPanel.cpp:354 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:99 +#: src/hugin/NonaStitcherPanel.cpp:367 msgid "No enblend.exe selected" msgstr "Nie wybrano enblend.exe" -#: hugin1/hugin/NonaStitcherPanel.cpp:365 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:110 +#: src/hugin/NonaStitcherPanel.cpp:378 msgid "Select enblend commandline tool" msgstr "Wybierz narzędzie enblend" -#: hugin1/hugin/NonaStitcherPanel.cpp:373 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:118 +#: src/hugin/NonaStitcherPanel.cpp:386 msgid "No enblend commandline tool selected" msgstr "Nie wybrano narzędzia enblend" -#: hugin1/hugin/NonaStitcherPanel.cpp:414 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:159 +#: src/hugin/NonaStitcherPanel.cpp:427 msgid "" "Can not call enblend with a command line > 32766 characters.\n" "This is a Windows limitation\n" @@ -1095,21 +874,36 @@ "a shorter pathname" msgstr "" "Nie można uruchomić enblenda z linią poleceń > 32766 znaków.\n" -"To jest ograniczenie Windows\n" +"To jest ograniczenie systemu Windows\n" "Proszę użyć mniejszej liczby zdjęć lub skopiować je do folderu\n" "o krótszej nazwie ścieżki" -#: hugin1/hugin/NonaStitcherPanel.cpp:432 -#: hugin_base/algorithms/external/to-be-added/NonaStitcherPanel.cpp:177 +#: src/hugin/NonaStitcherPanel.cpp:445 msgid "enblend error" msgstr "błąd enblend" -#: hugin1/hugin/NonaStitcherPanel.cpp:506 hugin1/hugin/PTStitcherPanel.cpp:310 +#: src/hugin/NonaStitcherPanel.cpp:519 src/hugin/PTStitcherPanel.cpp:310 msgid "gamma must be a number" msgstr "gamma musi być numeryczna" -#: hugin1/hugin/OptimizePanel.cpp:553 +#: src/hugin/OptimizePanel.cpp:445 msgid "" +"Cannot optimize this projection.\n" +"Only rectilinear, cylindrical and equirectangular panoramas can be " +"optimized\n" +"\n" +"Please optimize using one of these projections and selected the desired " +"output projection afterwards." +msgstr "" +"Nie można zoptymalizować tego rzutu.\n" +"Optymalizować można tylko panoramy prostoliniowe, cylindryczne i " +"równoprostokątne.\n" +"\n" +"Proszę zoptymalizować przy użyciu jednego z tych rzutów i wybrać potem " +"żądany rzut wyjściowy." + +#: src/hugin/OptimizePanel.cpp:551 +msgid "" "Optimizer run finished.\n" "WARNING: a very small Field of View (v) has been estimated\n" "\n" @@ -1130,9 +924,11 @@ "\n" "Pole widzenia (v) może czasem być optymalizowane także dla częściowych " "panoram,\n" -"gdy zdjęcia są już dobrze wyrównane." +"gdy zdjęcia są już dobrze wyrównane. " +"\n" +"Czy zastosować zmiany mimo to?" -#: hugin1/hugin/OptimizePanel.cpp:556 +#: src/hugin/OptimizePanel.cpp:554 #, c-format msgid "" "Optimizer run finished.\n" @@ -1164,7 +960,7 @@ "\n" "Mimo to zastosować zmiany?" -#: hugin1/hugin/OptimizePanel.cpp:560 +#: src/hugin/OptimizePanel.cpp:558 #, c-format msgid "" "Optimizer run finished.\n" @@ -1183,109 +979,47 @@ "\n" "Zastosować zmiany?" -#: hugin1/hugin/OptimizePanel.cpp:565 +#: src/hugin/OptimizePanel.cpp:563 msgid "Optimisation result" msgstr "Wynik optymalizacji" -#: hugin1/hugin/OptimizePhotometricPanel.cpp:424 -msgid "" -"The same vignetting and response parameters should\n" -"be applied for all images of a lens.\n" -"Currently each image can have different parameters.\n" -"Link parameters?" -msgstr "" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:424 -#, fuzzy -msgid "Link parameters" -msgstr "Parametry obiektywu" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:442 -#, fuzzy -msgid "" -"The vignetting and exposure correctione is determined by analysing color " -"values in the overlaping areas.\n" -"To speed up the computation, only a random subset of points is used." -msgstr "" -"Krzywa winietująca jest określana przy użyciu wartości szarości w " -"nachodzących obszarach.\n" -"Aby przyspieszyć obliczenia, używany jest tylko losowy podzbiór punktów." - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:443 -#, fuzzy -msgid "Number of points per image" -msgstr "Liczba punktów dla każdego nachodzącego obszaru" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:444 -msgid "Photometric optimisation" -msgstr "" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:451 -msgid "Photometric alignment" -msgstr "" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:482 -msgid "Error: no overlapping points found, Photometric optimisation aborted" -msgstr "" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:515 -msgid "Internal error during photometric optimisation:\n" -msgstr "" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:515 -#, fuzzy -msgid "Internal error" -msgstr "błąd enblend" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:521 -#, c-format -msgid "" -"Photometric optimisation results:\n" -" Root mean square error:%.2f in gray values (0..255)\n" -"Apply results?" -msgstr "" - -#: hugin1/hugin/OptimizePhotometricPanel.cpp:522 -msgid "Photometric optimisation finished" -msgstr "" - -#: hugin1/hugin/PanoDruid.cpp:43 +#: src/hugin/PanoDruid.cpp:43 msgid "The druid has no advice." msgstr "Asystant nie ma wskazówek." -#: hugin1/hugin/PanoDruid.cpp:53 hugin1/hugin/PanoDruid.cpp:423 +#: src/hugin/PanoDruid.cpp:53 src/hugin/PanoDruid.cpp:423 msgid "The druid finds no problems with your panorama." msgstr "Asystant nie znalazł problemów z twoją panoramą." -#: hugin1/hugin/PanoDruid.cpp:54 hugin1/hugin/PanoDruid.cpp:424 +#: src/hugin/PanoDruid.cpp:54 src/hugin/PanoDruid.cpp:424 msgid "" "Stitch your final image now, and then use an image editor\n" "such as the GNU Image Manipulation Program (the GIMP)\n" "to add any finishing touches." msgstr "" -"Teraz złóż finalne zdjęcie, później użyj edytora zdjęć\n" -"jak GNU Image Manipulation Program (the GIMP)\n" -"dokonać wykończenia zdjęcia." +"Teraz złóż finalne zdjęcie, później użyj edytora zdjęć, np.\n" +"GNU Image Manipulation Program (the GIMP)\n" +"aby dokonać wykończenia zdjęcia." -#: hugin1/hugin/PanoDruid.cpp:63 hugin1/hugin/PanoDruid.cpp:443 +#: src/hugin/PanoDruid.cpp:63 src/hugin/PanoDruid.cpp:443 msgid "Warning: you haven't saved the current project." msgstr "Uwaga: nie zapisano obecnego projektu." -#: hugin1/hugin/PanoDruid.cpp:64 hugin1/hugin/PanoDruid.cpp:444 +#: src/hugin/PanoDruid.cpp:64 src/hugin/PanoDruid.cpp:444 msgid "" "While everything else seems to be ready to stitch,\n" "don't forget to save your project file so you can\n" "experiment or adjust the settings later." msgstr "" "Podczas gdy wszystko wygląda na gotowe do złożenia,\n" -"nie zapomnij zapisać swój projekt, aby móc\n" -"późnije eksperymentować lub poprawić ustawienia." +"nie zapomnij zapisać swojego projektu, aby móc\n" +"później eksperymentować lub poprawić ustawienia." -#: hugin1/hugin/PanoDruid.cpp:73 hugin1/hugin/PanoDruid.cpp:439 +#: src/hugin/PanoDruid.cpp:73 src/hugin/PanoDruid.cpp:439 msgid "Warning: current stitch has huge dimensions." msgstr "Uwaga: złożone zdjęcie ma ogromne rozmiary." -#: hugin1/hugin/PanoDruid.cpp:74 +#: src/hugin/PanoDruid.cpp:74 msgid "" "Very large pixel dimensions are currently entered.\n" "Some computers may take an excessively long time\n" @@ -1301,11 +1035,11 @@ "zakładce Opcje Panoramy, aby ustalić wielkość w pikselach,\n" "która da najlepszą jakość." -#: hugin1/hugin/PanoDruid.cpp:104 hugin1/hugin/PanoDruid.cpp:435 +#: src/hugin/PanoDruid.cpp:104 src/hugin/PanoDruid.cpp:435 msgid "The Horizontal Field of View (HFOV) may be too low." msgstr "Poziome Pole Widzenia (HFOV) może być zbyt małe." -#: hugin1/hugin/PanoDruid.cpp:105 hugin1/hugin/PanoDruid.cpp:436 +#: src/hugin/PanoDruid.cpp:105 src/hugin/PanoDruid.cpp:436 msgid "" "Check that the focal lengths and/or hfov figures\n" "for each image are correct for the camera settings.\n" @@ -1317,15 +1051,15 @@ "Sprawdź czy liczby ogniskowe i/lub hfov\n" "dla każdego zdjęcia są poprawne dla ustawień aparatu.\n" "Wtedy jeszcze raz oblicz widoczne pole widzenia.\n" -"HFOV jest liczona w stopnia kąta, zazwy... [truncated message content] |
From: <da...@us...> - 2008-01-11 18:53:42
|
Revision: 2623 http://hugin.svn.sourceforge.net/hugin/?rev=2623&view=rev Author: dangelo Date: 2008-01-11 10:53:41 -0800 (Fri, 11 Jan 2008) Log Message: ----------- use EXIV2, if found (patch by Kornel Benko) Modified Paths: -------------- hugin/trunk/src/hugin_base/panodata/PanoImage.h hugin/trunk/src/hugin_config.h.in.cmake Modified: hugin/trunk/src/hugin_base/panodata/PanoImage.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/PanoImage.h 2008-01-11 18:45:33 UTC (rev 2622) +++ hugin/trunk/src/hugin_base/panodata/PanoImage.h 2008-01-11 18:53:41 UTC (rev 2623) @@ -26,6 +26,8 @@ #ifndef _PANODATA_PANOIMAGE_H #define _PANODATA_PANOIMAGE_H +#include <hugin_config.h> + #include <iostream> #include <vector> #include <vigra/diff2d.hxx> Modified: hugin/trunk/src/hugin_config.h.in.cmake =================================================================== --- hugin/trunk/src/hugin_config.h.in.cmake 2008-01-11 18:45:33 UTC (rev 2622) +++ hugin/trunk/src/hugin_config.h.in.cmake 2008-01-11 18:53:41 UTC (rev 2623) @@ -50,6 +50,10 @@ /* Location for XRC files and other data, as defined during configuration*/ #define INSTALL_XRC_DIR "${INSTALL_XRC_DIR}/" -#cmakedefine HUGIN_USE_EXIV2 1 +/* Use exiv2, if found */ +#cmakedefine EXIV2_FOUND 1 +#ifdef EXIV2_FOUND +#define HUGIN_USE_EXIV2 1 +#endif #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <da...@us...> - 2008-01-13 22:24:17
|
Revision: 2633 http://hugin.svn.sourceforge.net/hugin/?rev=2633&view=rev Author: dangelo Date: 2008-01-13 14:24:12 -0800 (Sun, 13 Jan 2008) Log Message: ----------- Cleanup of some exif loading related code Modified Paths: -------------- hugin/trunk/src/hugin1/PT/PanoImage.h hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp hugin/trunk/src/hugin_base/algorithms/basic/StraightenPanorama.cpp hugin/trunk/src/hugin_base/panodata/Lens.cpp hugin/trunk/src/hugin_base/panodata/Lens.h hugin/trunk/src/hugin_base/panodata/Panorama.cpp hugin/trunk/src/hugin_base/panodata/Panorama.h hugin/trunk/src/hugin_base/panodata/PanoramaData.h hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h hugin/trunk/src/tools/align_image_stack.cpp hugin/trunk/src/tools/autooptimiser.cpp Modified: hugin/trunk/src/hugin1/PT/PanoImage.h =================================================================== --- hugin/trunk/src/hugin1/PT/PanoImage.h 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin1/PT/PanoImage.h 2008-01-13 22:24:12 UTC (rev 2633) @@ -40,7 +40,7 @@ inline bool initImageFromFile(SrcPanoImage & img, double & focalLength, double & cropFactor) { - return HuginBase::SrcPanoImage::initImageFromFile(img, focalLength, cropFactor); + return img.readEXIF(focalLength, cropFactor, true); } inline double calcHFOV(SrcPanoImage::Projection proj, double fl, double crop, vigra::Size2D imageSize) Modified: hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp =================================================================== --- hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin1/hugin/wxPanoCommand.cpp 2008-01-13 22:24:12 UTC (rev 2633) @@ -176,14 +176,15 @@ const std::string &filename = *it; wxString fname(filename.c_str(), *wxConvCurrent); - // try to read settings automatically. - srcImg.setFilename(filename); int assumeSimilar = wxConfigBase::Get()->Read(wxT("/LensDefaults/AssumeSimilar"), HUGIN_LENS_ASSUME_SIMILAR); if (!assumeSimilar) { focalLength = 0; cropFactor = 0; } - bool ok = initImageFromFile(srcImg, focalLength, cropFactor); + + // try to read settings automatically. + srcImg.setFilename(filename); + bool ok = srcImg.readEXIF(focalLength, cropFactor, true); if (srcImg.getSize().x == 0 || srcImg.getSize().y == 0) { wxMessageBox(wxString::Format(_("Could not decode image:\n%s\nAbort"), fname.c_str()), _("Unsupported image file format")); return; @@ -232,9 +233,8 @@ SrcPanoImage other = pano.getSrcImage(i); if (abs(other.getHFOV () - srcImg.getHFOV()) < 1 && other.getSize() == srcImg.getSize() - /* && other.getExifModel() == srcImg.getExifModel() - && other.getExifMake() == srcImg.getExifMake() */ + && other.getExifMake() == srcImg.getExifMake() ) { matchingLensNr = pano.getImage(i).getLensNr(); @@ -247,6 +247,7 @@ Lens lens; matchingLensNr = pano.addLens(lens); } + PanoImage img(filename, srcImg.getSize().x, srcImg.getSize().y, (unsigned int) matchingLensNr); int imgNr = pano.addImage(img, vars); pano.setSrcImage(imgNr, srcImg); @@ -335,7 +336,6 @@ if (srcImg.getSize() != imginfo.size()) { // adjust size properly. srcImg.resize(imginfo.size()); - pano.setSrcImage(i, srcImg); } // check if script contains invalid HFOV unsigned lNr = pano.getImage(i).getLensNr(); @@ -350,8 +350,11 @@ if (! ok) { getLensDataFromUser(MainFrame::Get(), srcImg, focalLength, cropFactor); } - pano.setSrcImage(i, srcImg); + } else { + // load exif data, but do not apply it + srcImg.readEXIF(focalLength, cropFactor); } + pano.setSrcImage(i, srcImg); } } else { DEBUG_ERROR("could not load panotools script"); Modified: hugin/trunk/src/hugin_base/algorithms/basic/StraightenPanorama.cpp =================================================================== --- hugin/trunk/src/hugin_base/algorithms/basic/StraightenPanorama.cpp 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin_base/algorithms/basic/StraightenPanorama.cpp 2008-01-13 22:24:12 UTC (rev 2633) @@ -29,7 +29,6 @@ namespace HuginBase { - Matrix3 StraightenPanorama::calcStraighteningRotation(const PanoramaData& panorama) { // landscape/non rotated portrait detection is not working correctly @@ -38,19 +37,17 @@ // 0: use z axis (image y axis), for non rotated portrait images // (usually rotation is just stored in EXIF tag) std::vector<int> coord_idx; - + for (unsigned int i = 0; i < panorama.getNrOfImages(); i++) { Lens l; - double roll = 0; - double crop = 0; - l.initFromFile(panorama.getImage(i).getFilename(), crop, roll); + double roll = panorama.getSrcImage(i).getExifOrientation(); if (roll == 90 || roll == 270 ) { coord_idx.push_back(2); } else { coord_idx.push_back(1); } } - + // build covariance matrix of X Matrix3 cov; Modified: hugin/trunk/src/hugin_base/panodata/Lens.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/Lens.cpp 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin_base/panodata/Lens.cpp 2008-01-13 22:24:12 UTC (rev 2633) @@ -27,7 +27,6 @@ #include "Lens.h" #include <vigra/impex.hxx> -#include <jhead/jhead.h> #include <hugin_utils/utils.h> #include <hugin_utils/stl_utils.h> @@ -155,145 +154,6 @@ } -bool Lens::initFromFile(const std::string & filename, double &cropFactor, double & roll) -{ - std::string ext = hugin_utils::getExtension(filename); - std::transform(ext.begin(), ext.end(), ext.begin(), (int(*)(int)) toupper); - - roll = 0; - int width; - int height; - try { - vigra::ImageImportInfo info(filename.c_str()); - width = info.width(); - height = info.height(); - } catch(vigra::PreconditionViolation & ) { - return false; - } - setImageSize(vigra::Size2D(width, height)); - - if (ext != "JPG" && ext != "JPEG") { - return false; - } - - ImageInfo_t exif; - ResetJpgfile(); - // Start with an empty image information structure. - - memset(&exif, 0, sizeof(exif)); - exif.FlashUsed = -1; - exif.MeteringMode = -1; - - if (!ReadJpegFile(exif,filename.c_str(), READ_EXIF)){ - DEBUG_DEBUG("Could not read jpg info"); - return false; - } - -#ifdef DEBUG - ShowImageInfo(exif); -#endif - - DEBUG_DEBUG("exif dimensions: " << exif.ExifImageWidth << "x" << exif.ExifImageWidth); - - switch (exif.Orientation) { - case 3: // rotate 180 - roll = 180; - break; - case 6: // rotate 90 - roll = 90; - break; - case 8: // rotate 270 - roll = 270; - break; - default: - break; - } - // image has been modified without adjusting exif tags - // assume user has rotated to upright pose - if (exif.ExifImageWidth && exif.ExifImageLength) { - double ratioExif = exif.ExifImageWidth / (double)exif.ExifImageLength; - double ratioImage = width/(double)height; - if (fabs( ratioExif - ratioImage) > 0.1) { - roll = 0; - } - } - - std::cout << "exp time: " << exif.ExposureTime << " f-stop: " << exif.ApertureFNumber << std::endl; - // calculate exposure from exif image - if (exif.ExposureTime > 0 && exif.ApertureFNumber > 0) { - setEV(log2(exif.ApertureFNumber*exif.ApertureFNumber/exif.ExposureTime)); - } - - // calc sensor dimensions if not set and 35mm focal length is available - FDiff2D sensorSize; - double focalLength = 0; - - - if (exif.FocalLength > 0 && exif.CCDHeight > 0 && exif.CCDWidth > 0) { - // read sensor size directly. - sensorSize.x = exif.CCDWidth; - sensorSize.y = exif.CCDHeight; - if (strcmp(exif.CameraModel, "Canon EOS 20D") == 0) { - // special case for buggy 20D camera - sensorSize.x = 22.5; - sensorSize.y = 15; - } - // - // check if sensor size ratio and image size fit together - double rsensor = (double)sensorSize.x / sensorSize.y; - double rimg = (double) width / height; - if ( (rsensor > 1 && rimg < 1) || (rsensor < 1 && rimg > 1) ) { - // image and sensor ratio do not match - // swap sensor sizes - float t; - t = sensorSize.y; - sensorSize.y = sensorSize.x; - sensorSize.x = t; - } - cropFactor = sqrt(36.0*36.0+24.0*24)/sqrt(sensorSize.x*sensorSize.x + sensorSize.y*sensorSize.y); - focalLength = exif.FocalLength; - } else if (exif.FocalLength35mm > 0 && exif.FocalLength > 0) { - cropFactor = exif.FocalLength35mm / exif.FocalLength; - focalLength = exif.FocalLength; - } else if (exif.FocalLength35mm > 0 && cropFactor <= 0) { - // do not ask for crop factor, even if we will store an invalid sensor size. - // currenty the sensor size (just the ratio) is not used anywhere. - cropFactor = 1; - focalLength = exif.FocalLength35mm; - } else if (exif.FocalLength > 0 || exif.FocalLength35mm > 0 ) { - // no complete specification found.. ask the user for sensor/chip size, or crop factor - if (cropFactor > 0) { - // crop factor was provided by user - } else { - // need to redo, this time with crop - cropFactor = -1; - return false; - } - if (exif.FocalLength > 0 ) { - focalLength = exif.FocalLength; - } else if (exif.FocalLength35mm) { - focalLength = exif.FocalLength35mm * cropFactor; - } - } - - if (sensorSize.x > 0) { - setSensorSize(sensorSize); - } else if (cropFactor > 0) { - setCropFactor(cropFactor); - } else { - return false; - } - - if (focalLength > 0) { - setFocalLength(focalLength); - } else { - return false; - } - - return true; -} - - void Lens::update(const Lens & l) { m_projectionFormat = l.m_projectionFormat; Modified: hugin/trunk/src/hugin_base/panodata/Lens.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/Lens.h 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin_base/panodata/Lens.h 2008-01-13 22:24:12 UTC (rev 2633) @@ -136,9 +136,6 @@ void setImageSize(const vigra::Size2D & sz) { m_imageSize = sz; } - /** try to read image information from file */ - bool initFromFile(const std::string & filename, double &cropFactor, double & roll); - // updates everything, including the lens variables. void update(const Lens & l); Modified: hugin/trunk/src/hugin_base/panodata/Panorama.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/Panorama.cpp 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin_base/panodata/Panorama.cpp 2008-01-13 22:24:12 UTC (rev 2633) @@ -1272,19 +1272,15 @@ state.options = opt; } +/* int Panorama::addImageAndLens(const std::string & filename, double HFOV) { // load image vigra::ImageImportInfo img(filename.c_str()); - Lens lens; - lens.setImageSize(vigra::Size2D(img.width(), img.height())); - map_get(lens.variables,"v").setValue(HFOV); + SrcPanoImage img(filename); - double cropFactor = 0; - double roll=0; - lens.initFromFile(filename, cropFactor, roll); - + double int matchingLensNr=-1; for (unsigned int lnr=0; lnr < getNrOfLenses(); lnr++) { const Lens & l = getLens(lnr); @@ -1312,8 +1308,8 @@ PanoImage pimg(filename, img.width(), img.height(), (unsigned int) matchingLensNr); return addImage(pimg, vars); } +*/ - void Panorama::addObserver(PanoramaObserver * o) { observers.insert(o); @@ -1388,7 +1384,9 @@ const ImageOptions & opts = img.getOptions(); const Lens & lens = state.lenses[img.getLensNr()]; const VariableMap & vars = getImageVariables(imgNr); - SrcPanoImage ret(img.getFilename(), vigra::Size2D(img.getWidth(), img.getHeight())); + SrcPanoImage ret; + ret.setFilename(img.getFilename()); + ret.setSize(vigra::Size2D(img.getWidth(), img.getHeight())); ret.setLensNr(img.getLensNr()); ret.setProjection((SrcPanoImage::Projection) lens.getProjection()); ret.setExifCropFactor(lens.getCropFactor()); Modified: hugin/trunk/src/hugin_base/panodata/Panorama.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/Panorama.h 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin_base/panodata/Panorama.h 2008-01-13 22:24:12 UTC (rev 2633) @@ -218,14 +218,14 @@ // unsigned int getImageNr(const PanoImage * image) const; /** add an Image to the panorama - * - * The Image must be initialized, the Lens must exist. - * - */ + * + * The Image must be initialized, the Lens must exist. + * + */ unsigned int addImage(const PanoImage &img, const VariableMap &vars); /** creates an image, from filename, and a Lens, if needed */ - int addImageAndLens(const std::string & filename, double HFOV); +// int addImageAndLens(const std::string & filename); /** add an Image to the panorama * @return image number Modified: hugin/trunk/src/hugin_base/panodata/PanoramaData.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/PanoramaData.h 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin_base/panodata/PanoramaData.h 2008-01-13 22:24:12 UTC (rev 2633) @@ -138,7 +138,7 @@ virtual unsigned int addImage(const PanoImage& img, const VariableMap& vars) =0; /** creates an image, from filename, and a Lens, if needed */ - virtual int addImageAndLens(const std::string & filename, double HFOV) =0; +// virtual int addImageAndLens(const std::string & filename) =0; /** add an Image to the panorama * @return image number Modified: hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp =================================================================== --- hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin_base/panodata/SrcPanoImage.cpp 2008-01-13 22:24:12 UTC (rev 2633) @@ -134,10 +134,14 @@ for (unsigned i=1; i < 4; i++) { m_radialVigCorrCoeff[i] = 0; } - + m_exifCropFactor = 0; m_exifFocalLength = 0; - + m_exifOrientation = 0; + m_exifAperture = 0; + m_exifDistance = 0; + m_exifISO = 0; + m_lensNr = 0; m_featherWidth = 10; m_morph = false; @@ -237,7 +241,11 @@ m_exifMake == other.m_exifMake && m_exifCropFactor == other.m_exifCropFactor && m_exifFocalLength == other.m_exifFocalLength && - + m_exifOrientation == other.m_exifOrientation && + m_exifAperture == other.m_exifAperture && + m_exifISO == other.m_exifISO && + m_exifDistance == other.m_exifDistance && + m_lensNr == other.m_lensNr && m_featherWidth == other.m_featherWidth && m_morph == other.m_morph); @@ -314,13 +322,19 @@ } -bool SrcPanoImage::initImageFromFile(SrcPanoImage & img, double & focalLength, double & cropFactor) +bool SrcPanoImage::readEXIF(double & focalLength, double & cropFactor, bool applyEXIFValues) { - std::string filename = img.getFilename(); + std::string filename = getFilename(); std::string ext = hugin_utils::getExtension(filename); std::transform(ext.begin(), ext.end(), ext.begin(), (int(*)(int)) toupper); - + double roll = 0; + double eV = 0; + float isoSpeed = 0; + float photoFNumber = 0; + float exposureTime = 0; + float subjectDistance = 0; + int width; int height; try { @@ -332,16 +346,17 @@ } // Setup image with default values - img.setSize(vigra::Size2D(width, height)); - img.setExifFocalLength(focalLength); - img.setExifCropFactor(cropFactor); - img.setRoll(roll); - if (focalLength > 0 && cropFactor > 0) { - img.setHFOV(calcHFOV(img.getProjection(), - focalLength, cropFactor, img.getSize())); - } + setSize(vigra::Size2D(width, height)); +// setExifFocalLength(focalLength); +// setExifCropFactor(cropFactor); +// setExifOrientation(roll); +// if (focalLength > 0 && cropFactor > 0) { +// setHFOV(calcHFOV(getProjection(), +// focalLength, cropFactor, getSize())); +// } -#ifdef HUGIN_USE_EXIV2 + #ifdef HUGIN_USE_EXIV2 + Exiv2::Image::AutoPtr image = Exiv2::ImageFactory::open(filename.c_str()); if (image.get() == 0) { std::cout << "Unable to open file to read EXIF data: " << filename << std::endl; @@ -355,41 +370,38 @@ return false; } - float exposureTime = 0; - img.getExiv2Value(exifData,"Exif.Photo.ExposureTime",exposureTime); + getExiv2Value(exifData,"Exif.Photo.ExposureTime",exposureTime); + // TODO: reconstruct real exposure value from "rounded" ones saved by the cameras? - float photoFNumber = 0; - img.getExiv2Value(exifData,"Exif.Photo.FNumber",photoFNumber); + getExiv2Value(exifData,"Exif.Photo.FNumber",photoFNumber); if (exposureTime > 0 && photoFNumber > 0) { double gain = 1; - float isoSpeed = 0; - if (img.getExiv2Value(exifData,"Exif.Photo.ISOSpeedRatings",isoSpeed)) { + if (getExiv2Value(exifData,"Exif.Photo.ISOSpeedRatings",isoSpeed)) { if (isoSpeed > 0) { gain = isoSpeed / 100.0; } } - float eV = log2(photoFNumber * photoFNumber / (gain * exposureTime)); + eV = log2(photoFNumber * photoFNumber / (gain * exposureTime)); DEBUG_DEBUG ("Ev: " << eV); - img.setExposureValue(eV); } - + Exiv2::ExifKey key("Exif.Image.Make"); Exiv2::ExifData::iterator itr = exifData.findKey(key); if (itr != exifData.end()) - img.setExifMake(itr->toString()); + setExifMake(itr->toString()); else - img.setExifMake("Unknown"); + setExifMake("Unknown"); Exiv2::ExifKey key2("Exif.Image.Model"); itr = exifData.findKey(key2); if (itr != exifData.end()) - img.setExifModel(itr->toString()); + setExifModel(itr->toString()); else - img.setExifModel("Unknown"); + setExifModel("Unknown"); long orientation = 0; - if (img.getExiv2Value(exifData,"Exif.Image.Orientation",orientation)) { + if (getExiv2Value(exifData,"Exif.Image.Orientation",orientation)) { switch (orientation) { case 3: // rotate 180 roll = 180; @@ -406,10 +418,10 @@ } long pixXdim = 0; - img.getExiv2Value(exifData,"Exif.Photo.PixelXDimension",pixXdim); + getExiv2Value(exifData,"Exif.Photo.PixelXDimension",pixXdim); long pixYdim = 0; - img.getExiv2Value(exifData,"Exif.Photo.PixelYDimension",pixYdim); + getExiv2Value(exifData,"Exif.Photo.PixelYDimension",pixYdim); if (pixXdim !=0 && pixYdim !=0 ) { double ratioExif = pixXdim/(double)pixYdim; @@ -424,10 +436,10 @@ //GWP - CCD info was previously computed by the jhead library. Migration // to exiv2 means we do it here long eWidth = 0; - img.getExiv2Value(exifData,"Exif.Image.ImageWidth",eWidth); + getExiv2Value(exifData,"Exif.Image.ImageWidth",eWidth); long eLength = 0; - img.getExiv2Value(exifData,"Exif.Image.ImageLength",eLength); + getExiv2Value(exifData,"Exif.Image.ImageLength",eLength); double sensorPixelWidth = 0; double sensorPixelHeight = 0; @@ -451,7 +463,7 @@ DEBUG_DEBUG("sensorPixelHeight: " << sensorPixelHeight); long exifResolutionUnits = 0; - img.getExiv2Value(exifData,"Exif.Photo.FocalPlaneResolutionUnit",exifResolutionUnits); + getExiv2Value(exifData,"Exif.Photo.FocalPlaneResolutionUnit",exifResolutionUnits); float resolutionUnits= 0; switch (exifResolutionUnits) { @@ -464,10 +476,10 @@ DEBUG_DEBUG("Resolution Units: " << resolutionUnits); float fplaneXresolution = 0; - img.getExiv2Value(exifData,"Exif.Photo.FocalPlaneXResolution",fplaneXresolution); + getExiv2Value(exifData,"Exif.Photo.FocalPlaneXResolution",fplaneXresolution); float fplaneYresolution = 0; - img.getExiv2Value(exifData,"Exif.Photo.FocalPlaneYResolution",fplaneYresolution); + getExiv2Value(exifData,"Exif.Photo.FocalPlaneYResolution",fplaneYresolution); float CCDWidth = 0; if (fplaneXresolution != 0) { @@ -491,7 +503,7 @@ // read sensor size directly. sensorSize.x = CCDWidth; sensorSize.y = CCDHeight; - if (img.getExifModel() == "Canon EOS 20D") { + if (getExifModel() == "Canon EOS 20D") { // special case for buggy 20D camera sensorSize.x = 22.5; sensorSize.y = 15; @@ -515,14 +527,13 @@ cropFactor = sqrt(36.0*36.0+24.0*24.0) / sqrt(sensorSize.x*sensorSize.x + sensorSize.y*sensorSize.y); } - DEBUG_DEBUG("cropFactor: " << cropFactor); float eFocalLength = 0; - img.getExiv2Value(exifData,"Exif.Photo.FocalLength",eFocalLength); + getExiv2Value(exifData,"Exif.Photo.FocalLength",eFocalLength); float eFocalLength35 = 0; - img.getExiv2Value(exifData,"Exif.Photo.FocalLengthIn35mmFilm",eFocalLength35); + getExiv2Value(exifData,"Exif.Photo.FocalLengthIn35mmFilm",eFocalLength35); //The various methods to detmine crop factor if (eFocalLength > 0 && cropFactor > 0) { @@ -541,6 +552,8 @@ focalLength = eFocalLength; cropFactor = 0; } + getExiv2Value(exifData,"Exif.Photo.SubjectDistance", subjectDistance); + #else if (ext == "JPG" || ext == "JPEG") { @@ -557,15 +570,18 @@ #endif std::cout << "exp time: " << exif.ExposureTime << " f-stop: " << exif.ApertureFNumber << std::endl; // calculate exposure from exif image + exposureTime = exif.ExposureTime; + photoFNumber = exif.ApertureFNumber; if (exif.ExposureTime > 0 && exif.ApertureFNumber > 0) { double gain = 1; + isoSpeed = exif.ISOequivalent; if (exif.ISOequivalent > 0) gain = exif.ISOequivalent/ 100.0; - img.setExposureValue(log2(exif.ApertureFNumber*exif.ApertureFNumber/(gain * exif.ExposureTime))); + eV = log2(exif.ApertureFNumber*exif.ApertureFNumber/(gain * exif.ExposureTime)); } - - img.setExifMake(exif.CameraMake); - img.setExifModel(exif.CameraModel); + + setExifMake(exif.CameraMake); + setExifModel(exif.CameraModel); DEBUG_DEBUG("exif dimensions: " << exif.ExifImageWidth << "x" << exif.ExifImageWidth); switch (exif.Orientation) { case 3: // rotate 180 @@ -637,24 +653,34 @@ } } } + subjectDistance = exif.Distance; #endif + // Update image with computed values from EXIF - img.setExifFocalLength(focalLength); - img.setExifCropFactor(cropFactor); - img.setRoll(roll); - + setExifFocalLength(focalLength); + setExifCropFactor(cropFactor); + setExifOrientation(roll); + setExifAperture(photoFNumber); + setExifISO(isoSpeed); + setExifDistance(subjectDistance); + DEBUG_DEBUG("Results for:" << filename); - DEBUG_DEBUG("Focal Length: " << img.getExifFocalLength()); - DEBUG_DEBUG("Crop Factor: " << img.getExifCropFactor()); - DEBUG_DEBUG("Roll: " << img.getRoll()); + DEBUG_DEBUG("Focal Length: " << getExifFocalLength()); + DEBUG_DEBUG("Crop Factor: " << getExifCropFactor()); + DEBUG_DEBUG("Roll: " << getExifOrientation()); - if (focalLength > 0 && cropFactor > 0) { - img.setHFOV(calcHFOV(img.getProjection(), focalLength, cropFactor, img.getSize())); - DEBUG_DEBUG("HFOV: " << img.getHFOV()); - return true; - } else { - return false; + if (applyEXIFValues) { + setRoll(roll); + setExposureValue(eV); + if (focalLength > 0 && cropFactor > 0) { + setHFOV(calcHFOV(getProjection(), focalLength, cropFactor, getSize())); + DEBUG_DEBUG("HFOV: " << getHFOV()); + return true; + } else { + return false; + } } + return true; } double SrcPanoImage::calcHFOV(SrcPanoImage::Projection proj, double fl, double crop, vigra::Size2D imageSize) Modified: hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h =================================================================== --- hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/hugin_base/panodata/SrcPanoImage.h 2008-01-13 22:24:12 UTC (rev 2633) @@ -98,13 +98,17 @@ virtual ~SrcPanoImage() {}; - /// - SrcPanoImage(const std::string &filename, vigra::Size2D size) + /** initialize a SrcPanoImage from a file. Will read image + * size and EXIF data to initialize as many fields as possible + * (most importatly HFOV and exposure value) + */ + SrcPanoImage(const std::string &filename) { setDefaults(); m_filename = filename; - m_size = size ; - m_cropRect = vigra::Rect2D(size); + double crop = 0; + double fl = 0; + readEXIF(fl, crop, true); }; /// @@ -329,6 +333,30 @@ void setExifFocalLength(const double & val) { m_exifFocalLength = val; } + const double & getExifOrientation() const + { return m_exifOrientation; } + + void setExifOrientation(const double & val) + { m_exifOrientation = val; } + + const double & getExifDistance() const + { return m_exifDistance; } + + void setExifDistance(const double & val) + { m_exifDistance = val; } + + const double & getExifISO() const + { return m_exifISO; } + + void setExifISO(const double & val) + { m_exifISO = val; } + + const double & getExifAperture() const + { return m_exifAperture; } + + void setExifAperture(const double & val) + { m_exifAperture = val; } + double getVar(const std::string & name) const; void setVar(const std::string & name, double val); @@ -340,7 +368,7 @@ * If no or not enought exif data was found and valid given focalLength and cropFactor * settings where provided, they will be used for computation of the HFOV. */ - static bool initImageFromFile(SrcPanoImage & img, double & focalLength, double & cropFactor); + bool readEXIF(double & focalLength, double & cropFactor, bool applyEXIF=false); /** calculate hfov of an image given focal length, image size and crop factor */ static double calcHFOV(SrcPanoImage::Projection proj, double fl, double crop, vigra::Size2D imageSize); @@ -399,6 +427,10 @@ std::string m_exifMake; double m_exifCropFactor; double m_exifFocalLength; + double m_exifOrientation; + double m_exifAperture; + double m_exifISO; + double m_exifDistance; unsigned m_lensNr; // Modified: hugin/trunk/src/tools/align_image_stack.cpp =================================================================== --- hugin/trunk/src/tools/align_image_stack.cpp 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/tools/align_image_stack.cpp 2008-01-13 22:24:12 UTC (rev 2633) @@ -272,7 +272,7 @@ if (param.fisheye) { srcImg.setProjection(SrcPanoImage::FULL_FRAME_FISHEYE); } - SrcPanoImage::initImageFromFile(srcImg, focalLength, cropFactor); + srcImg.readEXIF(focalLength, cropFactor, true); // disable autorotate srcImg.setRoll(0); if (srcImg.getSize().x == 0 || srcImg.getSize().y == 0) { @@ -336,7 +336,7 @@ } // add next image. srcImg.setFilename(files[i]); - SrcPanoImage::initImageFromFile(srcImg, focalLength, cropFactor); + srcImg.readEXIF(focalLength, cropFactor, true); if (srcImg.getSize().x == 0 || srcImg.getSize().y == 0) { cerr << "Could not decode image: " << files[i] << "Unsupported image file format"; return 1; Modified: hugin/trunk/src/tools/autooptimiser.cpp =================================================================== --- hugin/trunk/src/tools/autooptimiser.cpp 2008-01-13 22:22:38 UTC (rev 2632) +++ hugin/trunk/src/tools/autooptimiser.cpp 2008-01-13 22:24:12 UTC (rev 2633) @@ -176,7 +176,7 @@ double focalLength = 0; double cropFactor = 0; cerr << "HFOV of image " << img.getFilename() << " invalid, trying to read EXIF tags" << endl; - bool ok = SrcPanoImage::initImageFromFile(img, focalLength, cropFactor); + bool ok = img.readEXIF(focalLength, cropFactor, true); if (! ok) { if (hfov) { img.setHFOV(hfov); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |