Merge branch 'eldruin_tool2' into eldruin_ffmpeg2
authorDiego Barrios Romero <eldruin@gmailcom>
Sat, 20 Feb 2010 15:34:40 +0000 (16:34 +0100)
committerDiego Barrios Romero <eldruin@gmailcom>
Sat, 20 Feb 2010 15:34:40 +0000 (16:34 +0100)
1  2 
synfig-core/src/tool/main.cpp

@@@ -45,7 -45,6 +45,7 @@@
  #include <synfig/layer.h>
  #include <synfig/canvas.h>
  #include <synfig/target.h>
 +#include <synfig/targetparam.h>
  #include <synfig/time.h>
  #include <synfig/string.h>
  #include <synfig/paramdesc.h>
@@@ -168,9 -167,9 +168,9 @@@ void display_help(bool full
  
  int process_global_flags(arg_list_t &arg_list)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
  
-       for(iter=arg_list.begin();iter!=arg_list.end();iter++)
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter == "--")
                        return SYNFIGTOOL_OK;
                {
                        Progress p(PACKAGE);
                        synfig::Main synfig_main(dirname(progname),&p);
-                       iter++;
+                       iter=next++;
                        if (iter==arg_list.end())
                        {
                                error("The `%s' flag requires a value.  Use --help for a list of options.", "--layer-info");
@@@ -349,14 -348,14 +349,14 @@@ bool flag_requires_value(String flag
                        flag=="-Q"                      || flag=="-s"                   || flag=="-t"                   || flag=="-T"                   || flag=="-w"                   ||
                        flag=="--append"        || flag=="--begin-time" || flag=="--canvas-info"|| flag=="--dpi"                || flag=="--dpi-x"              ||
                        flag=="--dpi-y"         || flag=="--end-time"   || flag=="--fps"                || flag=="--layer-info" || flag=="--start-time" ||
 -                      flag=="--time"          );
 +                      flag=="--time"          || flag=="-vc"                  || flag=="-vb");
  }
  
  int extract_arg_cluster(arg_list_t &arg_list,arg_list_t &cluster)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
  
-       for(iter=arg_list.begin();iter!=arg_list.end();iter++)
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter->begin() != '-')
                {
                {
                        cluster.push_back(*iter);
                        arg_list.erase(iter);
-                       iter++;
+                       iter=next++;
                        if (iter==arg_list.end())
                        {
                                error("The `%s' flag requires a value.  Use --help for a list of options.", cluster.back().c_str());
   * \param arg_list Argument list from wich the parameter is extracted.
   * \param iter Iterator pointing to the argument list parameter to be
   * extracted.
+  * \param next Iterator pointing to the next argument.
   */
  string extract_parameter (arg_list_t& arg_list,
-                                                 arg_list_t::iterator& iter)
+                                                 arg_list_t::iterator& iter,
+                                                 arg_list_t::iterator& next)
  {
        string parameter;
        arg_list.erase(iter);
-       iter++;
+       iter = next++;
        parameter = *iter;
        arg_list.erase(iter);
        return parameter;
  
  int extract_RendDesc(arg_list_t &arg_list,RendDesc &desc)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
        int w=0,h=0;
        float span=0;
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter=="-w")
                {
-                       w = atoi(extract_parameter(arg_list, iter).c_str());
+                       w = atoi(extract_parameter(arg_list, iter, next).c_str());
                }
                else if(*iter=="-h")
                {
-                       h = atoi(extract_parameter(arg_list, iter).c_str());
+                       h = atoi(extract_parameter(arg_list, iter, next).c_str());
                }
                else if(*iter=="-a")
                {
              int a;
-                       a = atoi(extract_parameter(arg_list, iter).c_str());
+                       a = atoi(extract_parameter(arg_list, iter, next).c_str());
                        desc.set_antialias(a);
                        VERBOSE_OUT(1)<<strprintf(_("Antialiasing set to %d, (%d samples per pixel)"),a,a*a)<<endl;
                }
                else if(*iter=="-s")
                {
-                       span = atoi(extract_parameter(arg_list, iter).c_str());
+                       span = atoi(extract_parameter(arg_list, iter, next).c_str());
                        VERBOSE_OUT(1)<<strprintf(_("Span set to %d units"),span)<<endl;
                }
                else if(*iter=="--fps")
                {
-                       float fps = atof(extract_parameter(arg_list, iter).c_str());
+                       float fps = atof(extract_parameter(arg_list, iter, next).c_str());
                        desc.set_frame_rate(fps);
                        VERBOSE_OUT(1)<<strprintf(_("Frame rate set to %d frames per second"),fps)<<endl;
                }
                else if(*iter=="--dpi")
                {
-                       float dpi = atof(extract_parameter(arg_list, iter).c_str());
+                       float dpi = atof(extract_parameter(arg_list, iter, next).c_str());
                        float dots_per_meter=dpi*39.3700787402;
                        desc.set_x_res(dots_per_meter).set_y_res(dots_per_meter);
                        VERBOSE_OUT(1)<<strprintf(_("Physical resolution set to %f dpi"),dpi)<<endl;
                }
                else if(*iter=="--dpi-x")
                {
-                       float dpi = atof(extract_parameter(arg_list, iter).c_str());
+                       float dpi = atof(extract_parameter(arg_list, iter, next).c_str());
                        float dots_per_meter=dpi*39.3700787402;
                        desc.set_x_res(dots_per_meter);
                        VERBOSE_OUT(1)<<strprintf(_("Physical X resolution set to %f dpi"),dpi)<<endl;
                }
                else if(*iter=="--dpi-y")
                {
-                       float dpi = atof(extract_parameter(arg_list, iter).c_str());
+                       float dpi = atof(extract_parameter(arg_list, iter, next).c_str());
                        float dots_per_meter=dpi*39.3700787402;
                        desc.set_y_res(dots_per_meter);
                        VERBOSE_OUT(1)<<strprintf(_("Physical Y resolution set to %f dpi"),dpi)<<endl;
                }
                else if(*iter=="--start-time" || *iter=="--begin-time")
                {
-                       desc.set_time_start(Time(extract_parameter(arg_list, iter),
+                       desc.set_time_start(Time(extract_parameter(arg_list, iter, next),
                                                                desc.get_frame_rate()));
                }
                else if(*iter=="--end-time")
                {
-                       desc.set_time_end(Time(extract_parameter(arg_list, iter),
+                       desc.set_time_end(Time(extract_parameter(arg_list, iter, next),
                                                                   desc.get_frame_rate()));
                }
                else if(*iter=="--time")
                {
-                       desc.set_time(Time(extract_parameter(arg_list, iter),
+                       desc.set_time(Time(extract_parameter(arg_list, iter, next),
                                                           desc.get_frame_rate()));
                        VERBOSE_OUT(1)<<_("Rendering frame at ")<<desc.get_time_start().get_string(desc.get_frame_rate())<<endl;
                }
                else if(*iter=="-g")
                {
                        synfig::warning("Gamma argument is currently ignored");
-                       //desc.set_gamma(Gamma(atoi(extract_parameter(arg_list, iter).c_str())));
+                       //desc.set_gamma(Gamma(atoi(extract_parameter(arg_list, iter, next).c_str())));
                }
                else if (flag_requires_value(*iter))
                        iter++;
  
  int extract_quality(arg_list_t &arg_list,int &quality)
  {
-       arg_list_t::iterator iter;
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       arg_list_t::iterator iter, next;
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter=="-Q")
                {
-                       quality = atoi(extract_parameter(arg_list, iter).c_str());
+                       quality = atoi(extract_parameter(arg_list, iter, next).c_str());
                        VERBOSE_OUT(1)<<strprintf(_("Quality set to %d"),quality)<<endl;
                }
                else if (flag_requires_value(*iter))
  
  int extract_threads(arg_list_t &arg_list,int &threads)
  {
-       arg_list_t::iterator iter;
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       arg_list_t::iterator iter, next;
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter=="-T")
                {
-                       threads = atoi(extract_parameter(arg_list, iter).c_str());
+                       threads = atoi(extract_parameter(arg_list, iter, next).c_str());
                        VERBOSE_OUT(1)<<strprintf(_("Threads set to %d"),threads)<<endl;
                }
                else if (flag_requires_value(*iter))
  
  int extract_target(arg_list_t &arg_list,string &type)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
        type.clear();
  
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter=="-t")
                {
-                       type = extract_parameter(arg_list, iter);
+                       type = extract_parameter(arg_list, iter, next);
                }
                else if (flag_requires_value(*iter))
                        iter++;
        return SYNFIGTOOL_OK;
  }
  
 +int extract_target_params(arg_list_t& arg_list,
 +                                                TargetParam& params)
 +{
 +      arg_list_t::iterator iter;
 +
 +      for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
 +      {
 +              if(*iter=="-vc")
 +              {
 +                      // Target video codec
 +                      params.video_codec = extract_parameter(arg_list, iter);
 +              }
 +              else if(*iter=="-vb")
 +              {
 +                      // Target bitrate
 +                      params.bitrate =
 +                              atoi(extract_parameter(arg_list, iter).c_str());
 +              }
 +              else if (flag_requires_value(*iter))
 +                      iter++;
 +      }
 +
 +      return SYNFIGTOOL_OK;
 +}
 +
  int extract_append(arg_list_t &arg_list,string &filename)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
        filename.clear();
  
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter=="--append")
                {
-                       filename = extract_parameter(arg_list, iter);
+                       filename = extract_parameter(arg_list, iter, next);
                }
                else if (flag_requires_value(*iter))
                        iter++;
  
  int extract_outfile(arg_list_t &arg_list,string &outfile)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
        int ret=SYNFIGTOOL_FILENOTFOUND;
        outfile.clear();
  
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter=="-o")
                {
-                       outfile = extract_parameter(arg_list, iter);
+                       outfile = extract_parameter(arg_list, iter, next);
                        ret=SYNFIGTOOL_OK;
                }
                else if (flag_requires_value(*iter))
  
  int extract_canvasid(arg_list_t &arg_list,string &canvasid)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
        //canvasid.clear();
  
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
        {
                if(*iter=="-c")
                {
-                       canvasid = extract_parameter(arg_list, iter);
+                       canvasid = extract_parameter(arg_list, iter, next);
                }
                else if (flag_requires_value(*iter))
                        iter++;
  
  int extract_list_canvases(arg_list_t &arg_list,bool &list_canvases)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
  
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       for(next=arg_list.begin(), iter = next++; iter!=arg_list.end();
+               iter = next++)
                if(*iter=="--list-canvases")
                {
                        list_canvases = true;
  
  void extract_canvas_info(arg_list_t &arg_list, Job &job)
  {
-       arg_list_t::iterator iter;
+       arg_list_t::iterator iter, next;
  
-       for(iter=arg_list.begin(); iter!=arg_list.end(); iter++)
+       for(next=arg_list.begin(),iter=next++;iter!=arg_list.end();iter=next++)
                if(*iter=="--canvas-info")
                {
                        job.canvas_info = true;
-                       String values(extract_parameter(arg_list, iter)), value;
+                       String values(extract_parameter(arg_list, iter, next)), value;
  
                        std::string::size_type pos;
                        while (!values.empty())
@@@ -1079,12 -1056,6 +1082,12 @@@ int main(int argc, char *argv[]
                                }
                        }
  
 +                      TargetParam target_parameters;
 +                      // Extract the extra parameters for the targets that
 +                      // need them.
 +                      if (target_name == "ffmpeg")
 +                              extract_target_params(imageargs, target_parameters);
 +
                        // If the target type is STILL not yet defined, then
                        // set it to a some sort of default
                        if(target_name.empty())
                        VERBOSE_OUT(4)<<"outfile_name="<<job_list.front().outfilename<<endl;
  
                        VERBOSE_OUT(4)<<_("Creating the target...")<<endl;
 -                      job_list.front().target=synfig::Target::create(target_name,job_list.front().outfilename);
 +                      job_list.front().target =
 +                              synfig::Target::create(target_name,
 +                                                                         job_list.front().outfilename,
 +                                                                         target_parameters);
  
                        if(target_name=="sif")
                                job_list.front().sifout=true;