From: <hug...@li...> - 2010-08-14 22:16:52
|
details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/f5f5d56e3000 changeset: 4222:f5f5d56e3000 user: Florian Achleitner <flo...@gm...> date: Sat Aug 14 23:51:41 2010 +0200 description: add a getter for Variable::values vector details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/751f02a2c323 changeset: 4223:751f02a2c323 user: Florian Achleitner <flo...@gm...> date: Sat Aug 14 23:53:40 2010 +0200 description: add outputFiles feature (and overlap->10) details: http://hugin.hg.sourceforge.net/hgweb/hugin/hugin/hgrepo/h/hu/hugin/hugin/rev/7f0ac9682168 changeset: 4224:7f0ac9682168 user: Florian Achleitner <flo...@gm...> date: Sun Aug 15 00:10:35 2010 +0200 description: - fix error in outputFiles - don't quote del on windows diffstat: src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp | 2 +- src/hugin_base/algorithms/panorama_makefile/PanoramaMakefilelibExport.cpp | 66 ++++++++- src/hugin_base/algorithms/panorama_makefile/PanoramaMakefilelibExport.h | 22 +++- src/hugin_base/makefilelib/AutoVariable.cpp | 4 + src/hugin_base/makefilelib/AutoVariable.h | 1 + src/hugin_base/makefilelib/Variable.h | 8 + 6 files changed, 92 insertions(+), 11 deletions(-) diffs (308 lines): diff -r 31d66bc80688 -r 7f0ac9682168 src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp --- a/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp Sat Aug 14 12:21:56 2010 +0200 +++ b/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefileExport.cpp Sun Aug 15 00:10:35 2010 +0200 @@ -56,7 +56,7 @@ UIntSet stack; HuginBase::CalculateImageOverlap overlap(&pano); - overlap.calculate(50); // we are testing 50*50=2500 points + overlap.calculate(10); // we are testing 50*50=2500 points do { unsigned srcImg = *(allImgs.begin()); stack.insert(srcImg); diff -r 31d66bc80688 -r 7f0ac9682168 src/hugin_base/algorithms/panorama_makefile/PanoramaMakefilelibExport.cpp --- a/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefilelibExport.cpp Sat Aug 14 12:21:56 2010 +0200 +++ b/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefilelibExport.cpp Sun Aug 15 00:10:35 2010 +0200 @@ -94,7 +94,7 @@ newVarDef(vsmartblend, "SMARTBLEND", progs.smartblend); newVarDef(vhdrmerge, "HDRMERGE", progs.hdrmerge); #ifdef _WINDOWS - newVarDef(vrm, "RM", "del"); + newVarDef(vrm, "RM", "del", Makefile::NONE); #else newVarDef(vrm, "RM", "rm"); #endif @@ -331,24 +331,26 @@ mgr.own_add(new Comment("stacked hdr images")); std::vector<UIntSet> stacks = getHDRStacks(pano, images); mf::Variable* vhdrstacks,* vhdrstacksshell; + std::vector<std::string> stackedhdrImgs; createstacks(stacks, "HDR_STACK", "_stack_hdr_", "_hdr_", hdrRemappedExt, - hdr_stacks, hdr_stacks_shell, hdr_stacks_input, hdr_stacks_input_shell, vhdrstacks, vhdrstacksshell); + hdr_stacks, hdr_stacks_shell, hdr_stacks_input, hdr_stacks_input_shell, vhdrstacks, vhdrstacksshell, stackedhdrImgs); std::vector<mf::Variable*> ldrexp_stacks, ldrexp_stacks_shell, ldrexp_stacks_input, ldrexp_stacks_input_shell, ldrexp_stacks_pt_input, ldrexp_stacks_input_pt_shell; mgr.own_add(new Comment("number of image sets with similar exposure")); mf::Variable* vldrexposurelayers,* vldrexposurelayersshell,* vldrexposurelayersremapped,* vldrexposurelayersremappedshell; std::vector<UIntSet> exposures = getExposureLayers(pano, images); - std::vector<std::string> exposureremappedimgs; + std::vector<std::string> exposureimgs; createexposure(exposures, "LDR_EXPOSURE_LAYER", "_exposure_", "_exposure_layers_", ldrRemappedExt, ldrexp_stacks, ldrexp_stacks_shell, ldrexp_stacks_input, ldrexp_stacks_input_shell, ldrexp_stacks_pt_input, ldrexp_stacks_input_pt_shell, vldrexposurelayers, vldrexposurelayersshell, vldrexposurelayersremapped, vldrexposurelayersremappedshell, - exposureremappedimgs); + exposureimgs); std::vector<mf::Variable*> ldr_stacks, ldr_stacks_shell, ldr_stacks_input, ldr_stacks_input_shell; mgr.own_add(new Comment("stacked ldr images")); mf::Variable* vldrstacks,* vldrstacksshell; + std::vector<std::string> stackedldrimgs; createstacks(stacks, "LDR_STACK", "_stack_ldr_", "_exposure_layers_", ldrRemappedExt, - ldr_stacks, ldr_stacks_shell, ldr_stacks_input, ldr_stacks_input_shell, vldrstacks, vldrstacksshell); + ldr_stacks, ldr_stacks_shell, ldr_stacks_input, ldr_stacks_input_shell, vldrstacks, vldrstacksshell, stackedldrimgs); //---------- @@ -366,68 +368,101 @@ if(opts.outputLDRBlended) { allprereqs.push_back(vldrblended); + append(outputFiles, vldrblended->getValues()); newVarDef(vdoldrblend, "DO_LDR_BLENDED", 1); if(!opts.outputLDRLayers) + { cleanprereqs.push_back(vldrlayersshell); + append(outputFiles, vldrlayers->getValues()); + } } if(opts.outputLDRLayers) + { allprereqs.push_back(vldrlayers); + append(outputFiles, vldrlayers->getValues()); + } if(opts.outputLDRExposureRemapped) + { allprereqs.push_back(vldrexposurelayersremapped); + append(outputFiles, vldrexposurelayersremapped->getValues()); + } if(opts.outputLDRExposureLayers) { allprereqs.push_back(vldrexposurelayers); + append(outputFiles, exposureimgs); if(!opts.outputLDRExposureRemapped) + { cleanprereqs.push_back(vldrexposurelayersremappedshell); + append(outputFiles, vldrexposurelayersremapped->getValues()); + } } if(opts.outputLDRExposureBlended) { allprereqs.push_back(vldrstackedblended); + append(outputFiles, vldrstackedblended->getValues()); newVarDef(vdoldrstackedblended, "DO_LDR_STACKED_BLENDED", 1); cleanprereqs.push_back(vldrstacksshell); + append(outputFiles, stackedldrimgs); if(!opts.outputLDRExposureRemapped && !opts.outputLDRExposureLayers) + { cleanprereqs.push_back(vldrexposurelayersremappedshell); + append(outputFiles, vldrexposurelayersremapped->getValues()); + } } if(opts.outputLDRExposureLayersFused) { allprereqs.push_back(vldrexposurelayersfused); + append(outputFiles, vldrexposurelayersfused->getValues()); newVarDef(vdoldrexposurelayersfused, "DO_LDR_EXPOSURE_LAYERS_FUSED", 1); + append(outputFiles, exposureimgs); if(!opts.outputLDRExposureRemapped && !opts.outputLDRExposureLayers) { cleanprereqs.push_back(vldrexposurelayersremappedshell); + append(outputFiles, vldrexposurelayersremapped->getValues()); cleanprereqs.push_back(vldrexposurelayersshell); } } if(opts.outputHDRLayers) + { allprereqs.push_back(vhdrlayers); + append(outputFiles, vhdrlayers->getValues()); + append(outputFiles, vhdrgraylayers->getValues()); + } if(opts.outputHDRStacks) { allprereqs.push_back(vhdrstacks); + append(outputFiles, stackedhdrImgs); if(!opts.outputHDRLayers) { cleanprereqs.push_back(vhdrlayersshell); cleanprereqs.push_back(vhdrgraylayersshell); + append(outputFiles, vhdrlayers->getValues()); + append(outputFiles, vhdrgraylayers->getValues()); } } if(opts.outputHDRBlended) { allprereqs.push_back(vhdrblended); + append(outputFiles, vhdrblended->getValues()); newVarDef(vdohdrblended, "DO_HDR_BLENDED", 1); if(!opts.outputHDRStacks) { cleanprereqs.push_back(vhdrstacksshell); + append(outputFiles, stackedhdrImgs); if(!opts.outputHDRLayers) { cleanprereqs.push_back(vhdrlayersshell); cleanprereqs.push_back(vhdrgraylayersshell); + append(outputFiles, vhdrlayers->getValues()); + append(outputFiles, vhdrgraylayers->getValues()); } } } @@ -532,7 +567,7 @@ expvalue.imbue(Makefile::locale); expvalue << pano.getSrcImage(*it).getExposureValue(); Rule* rule = mgr.own(new Rule()); rule->add(); - rule->addTarget(Makefile::quote(exposureremappedimgs[j], Makefile::MAKE)); + rule->addTarget(Makefile::quote(vldrexposurelayersremapped->getValues()[j], Makefile::MAKE)); rule->addPrereq(pano.getImage(*it).getFilename()); rule->addPrereq(vprojectfile); rule->addCommand( @@ -701,7 +736,8 @@ std::vector<mf::Variable*>& stacks_input, std::vector<makefile::Variable*>& stacks_input_shell, mf::Variable*& vstacks, - mf::Variable*& vstacksshell) + mf::Variable*& vstacksshell, + std::vector<std::string>& allfiles) { std::ostringstream stknrs; for (unsigned i=0; i < stackdata.size(); i++) @@ -710,6 +746,7 @@ std::ostringstream filename, stackname; filename << outputPrefix << filenamecenter << std::setfill('0') << std::setw(4) << i << filenameext; stackname << stkname << "_" << i; + allfiles.push_back(filename.str()); std::vector<std::string> inputs; for (UIntSet::const_iterator it = stackdata[i].begin(); it != stackdata[i].end(); it++) @@ -766,7 +803,7 @@ mf::Variable*& vstacksshell, mf::Variable*& vstacksrem, mf::Variable*& vstacksremshell, - std::vector<std::string>& allinputs) + std::vector<std::string>& alllayers) { std::vector<std::string> allimgs; std::ostringstream stknrs; @@ -776,6 +813,7 @@ std::ostringstream filename, stackname; filename << outputPrefix << filenamecenter << std::setfill('0') << std::setw(4) << i << filenameext; stackname << stkname << "_" << i; + alllayers.push_back(filename.str()); std::vector<std::string> inputs, inputspt; double exposure = 0; @@ -785,7 +823,6 @@ fns << outputPrefix << inputfilenamecenter << std::setfill('0') << std::setw(4) << *it << filenameext; fnpt << outputPrefix << std::setfill('0') << std::setw(4) << *it << filenameext; inputs.push_back(fns.str()); - allinputs.push_back(fns.str()); inputspt.push_back(fnpt.str()); exposure += pano.getSrcImage(*it).getExposureValue(); @@ -866,4 +903,15 @@ std::cout << "\n"; } } + +template<typename T> +void append(std::vector<T>& dst, const std::vector<T>& src) +{ + dst.insert(dst.end(), src.begin(), src.end()); } +template<typename T> +void append(std::vector<T>& vec, const T& element) +{ + vec.push_back(element); +} +} diff -r 31d66bc80688 -r 7f0ac9682168 src/hugin_base/algorithms/panorama_makefile/PanoramaMakefilelibExport.h --- a/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefilelibExport.h Sat Aug 14 12:21:56 2010 +0200 +++ b/src/hugin_base/algorithms/panorama_makefile/PanoramaMakefilelibExport.h Sun Aug 15 00:10:35 2010 +0200 @@ -85,7 +85,8 @@ std::vector<makefile::Variable*>& stacks_input, std::vector<makefile::Variable*>& stacks_input_shell, makefile::Variable*& vstacks, - makefile::Variable*& vstacksshell); + makefile::Variable*& vstacksshell, + std::vector<std::string>& allfiles); void createexposure(const std::vector<UIntSet> stackdata, const std::string stkname, const std::string filenamecenter, const std::string inputfilenamecenter, const std::string filenameext, @@ -160,7 +161,26 @@ }; +/** + * Simple helper to output stacks for debugging. + * @param stackdata + */ void printstacks(const std::vector<UIntSet>& stackdata); +/** + * Simply calls push_back, convinience function. + * @param vec + * @param element + */ +template<typename T> +void append(std::vector<T>& vec, const T& element); +/** + * Copys all of src to the end of test. Just calls insert. + * Convinience function. + * @param dst + * @param src + */ +template<typename T> +void append(std::vector<T>& dst, const std::vector<T>& src); } #endif /* PANORAMAMAKEFILELIBEXPORT_H_ */ diff -r 31d66bc80688 -r 7f0ac9682168 src/hugin_base/makefilelib/AutoVariable.cpp --- a/src/hugin_base/makefilelib/AutoVariable.cpp Sat Aug 14 12:21:56 2010 +0200 +++ b/src/hugin_base/makefilelib/AutoVariable.cpp Sun Aug 15 00:10:35 2010 +0200 @@ -23,6 +23,10 @@ { return getValue(); } +const std::vector<string>& AutoVariable::getValues() +{ + throw(std::runtime_error("AutoVariables have no predefined value.")); +} VariableDef& AutoVariable::getDef() { diff -r 31d66bc80688 -r 7f0ac9682168 src/hugin_base/makefilelib/AutoVariable.h --- a/src/hugin_base/makefilelib/AutoVariable.h Sat Aug 14 12:21:56 2010 +0200 +++ b/src/hugin_base/makefilelib/AutoVariable.h Sun Aug 15 00:10:35 2010 +0200 @@ -35,6 +35,7 @@ /// Has no value, exception. virtual const string getValue(); virtual const string getquotedValue(); + virtual const std::vector<string>& getValues(); /// Has no definition, exception. virtual VariableDef& getDef(); diff -r 31d66bc80688 -r 7f0ac9682168 src/hugin_base/makefilelib/Variable.h --- a/src/hugin_base/makefilelib/Variable.h Sat Aug 14 12:21:56 2010 +0200 +++ b/src/hugin_base/makefilelib/Variable.h Sun Aug 15 00:10:35 2010 +0200 @@ -82,6 +82,14 @@ */ virtual const string getquotedValue(); + /** + * @return The value vector. + */ + virtual const std::vector<string>& getValues() + { + return values; + } + virtual VariableDef& getDef() { return def; |