1 /**
2  * @file StitchingExecutor.h
3  * @brief interface of CommandQueue creating for stitching engine
4  *
5  * @author T. Modes
6  */
7 
8 /*  This is free software; you can redistribute it and/or
9  *  modify it under the terms of the GNU General Public
10  *  License as published by the Free Software Foundation; either
11  *  version 2 of the License, or (at your option) any later version.
12  *
13  *  This software is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  *  Lesser General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public
19  *  License along with this software. If not, see
20  *  <http://www.gnu.org/licenses/>.
21  *
22  */
23 
24 #ifndef STITCHINGEXECUTOR_H
25 #define STITCHINGEXECUTOR_H
26 
27 #include <hugin_shared.h>
28 #include <panodata/Panorama.h>
29 #include <wx/arrstr.h>
30 #include "Executor.h"
31 #include <ostream>
32 
33 namespace HuginQueue
34 {
35     /** generates the command queue for stitching a pano
36         it will also generate the necessary exiftool argfiles
37         @param[in] pano panorama structure containing the input project
38         @param[in] ExePath ExePath base path to all used utilities
39         @param[in] project name of the project file, which contains the pano data (should by in sync with pano, to prevent double loading of the data)
40         @param[in] prefix prefix of the output, should only contain the filename part
41         @param[out] statusText contains a short status text, can be printed before the queue is actually executed, useful for bug reports
42         @param[out] outputFiles array of all output files, contains also the temporary files created during stitching (used for detecting of overwritting files)
43         @param[out] tempFilesDelete array with all temporary files which should be deleted at the end
44         @param errStream output stream on which the error should be written
45         @return pointer to CommandQueue
46         */
47     WXIMPEX CommandQueue* GetStitchingCommandQueue(const HuginBase::Panorama & pano, const wxString& ExePath, const wxString& project, const wxString& prefix, wxString& statusText, wxArrayString& outputFiles, wxArrayString& tempFilesDelete, std::ostream& errStream);
48     /** generates the command queue for stitching a pano, the commands are parsed from the given executor output file
49     @param[in] pano panorama structure containing the input project
50     @param[in] ExePath ExePath base path to all used utilities
51     @param[in] project name of the project file, which contains the pano data (should by in sync with pano, to prevent double loading of the data)
52     @param[in] prefix prefix of the output, should only contain the filename part
53     @param[in] outputSettings read the output sequence from this file
54     @param[out] statusText contains a short status text, can be printed before the queue is actually executed, useful for bug reports
55     @param[out] outputFiles array of all output files, contains also the temporary files created during stitching (used for detecting of overwritting files)
56     @param[out] tempFilesDelete array with all temporary files which should be deleted at the end
57     @param errStream output stream on which the error should be written
58     @return pointer to CommandQueue
59     */
60     WXIMPEX CommandQueue* GetStitchingCommandQueueUserOutput(const HuginBase::Panorama & pano, const wxString& ExePath, const wxString& project, const wxString& prefix, const wxString& outputSettings, wxString& statusText, wxArrayString& outputFiles, wxArrayString& tempFilesDelete, std::ostream& errStream);
61     /** return a single string of all given files quoted */
62     WXIMPEX wxString GetQuotedFilenamesString(const wxArrayString& files);
63 
64 }; // namespace
65 
66 #endif
67