X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=synfig-studio%2Ftags%2Fsynfigstudio_0_61_07_rc2%2Fsrc%2Fgtkmm%2Frender.cpp;fp=synfig-studio%2Ftags%2Fsynfigstudio_0_61_07_rc2%2Fsrc%2Fgtkmm%2Frender.cpp;h=0000000000000000000000000000000000000000;hb=3a6643238c67c043fc3592837a05d6d2861967f1;hp=5e397d1d2a35a13d368e259d05b5c4eb7c855cad;hpb=47fce282611fbba1044921d22ca887f9b53ad91a;p=synfig.git diff --git a/synfig-studio/tags/synfigstudio_0_61_07_rc2/src/gtkmm/render.cpp b/synfig-studio/tags/synfigstudio_0_61_07_rc2/src/gtkmm/render.cpp deleted file mode 100644 index 5e397d1..0000000 --- a/synfig-studio/tags/synfigstudio_0_61_07_rc2/src/gtkmm/render.cpp +++ /dev/null @@ -1,346 +0,0 @@ -/* === S Y N F I G ========================================================= */ -/*! \file gtkmm/render.cpp -** \brief Template File -** -** $Id$ -** -** \legal -** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright (c) 2007 Chris Moore -** -** This package 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 package 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. -** \endlegal -*/ -/* ========================================================================= */ - -/* === H E A D E R S ======================================================= */ - -#ifdef USING_PCH -# include "pch.h" -#else -#ifdef HAVE_CONFIG_H -# include -#endif - -#include "render.h" -#include "app.h" -#include -#include -#include -#include -#include "asyncrenderer.h" - -#endif - -/* === U S I N G =========================================================== */ - -using namespace std; -using namespace etl; -using namespace synfig; -using namespace studio; - -/* === M A C R O S ========================================================= */ - -/* === G L O B A L S ======================================================= */ - -/* === P R O C E D U R E S ================================================= */ - -/* === M E T H O D S ======================================================= */ - -RenderSettings::RenderSettings(Gtk::Window& parent,handle canvas_interface): - Gtk::Dialog(_("Render Settings"),parent,false,true), - canvas_interface_(canvas_interface), - adjustment_quality(3,0,9), - entry_quality(adjustment_quality,1,0), - adjustment_antialias(1,1,31), - entry_antialias(adjustment_antialias,1,0), - toggle_single_frame(_("Use _current frame"), true) -{ - widget_rend_desc.show(); - widget_rend_desc.signal_changed().connect(sigc::mem_fun(*this,&studio::RenderSettings::on_rend_desc_changed)); - widget_rend_desc.set_rend_desc(canvas_interface_->get_canvas()->rend_desc()); - - canvas_interface->signal_rend_desc_changed().connect(sigc::mem_fun(*this,&RenderSettings::on_rend_desc_changed)); - - menu_target=manage(new class Gtk::Menu()); - - menu_target->items().push_back(Gtk::Menu_Helpers::MenuElem(_("Auto"), - sigc::bind(sigc::mem_fun(*this,&RenderSettings::set_target),String()) - )); - - synfig::Target::Book::iterator iter; - synfig::Target::Book book(synfig::Target::book()); - - for(iter=book.begin();iter!=book.end();iter++) - { - menu_target->items().push_back(Gtk::Menu_Helpers::MenuElem(iter->first, - sigc::bind(sigc::mem_fun(*this,&RenderSettings::set_target),iter->first) - )); - } - optionmenu_target.set_menu(*menu_target); - - optionmenu_target.set_history(0); - - Gtk::Alignment *dialogPadding = manage(new Gtk::Alignment(0, 0, 1, 1)); - dialogPadding->set_padding(12, 12, 12, 12); - get_vbox()->pack_start(*dialogPadding, false, false, 0); - - Gtk::VBox *dialogBox = manage(new Gtk::VBox(false, 12)); - dialogPadding->add(*dialogBox); - - Gtk::Button *choose_button(manage(new class Gtk::Button(Gtk::StockID(_("Choose..."))))); - choose_button->show(); - choose_button->signal_clicked().connect(sigc::mem_fun(*this, &studio::RenderSettings::on_choose_pressed)); - - Gtk::Frame *target_frame=manage(new Gtk::Frame(_("Target"))); - target_frame->set_shadow_type(Gtk::SHADOW_NONE); - ((Gtk::Label *) target_frame->get_label_widget())->set_markup(_("Target")); - dialogBox->pack_start(*target_frame); - Gtk::Alignment *targetPadding = manage(new Gtk::Alignment(0, 0, 1, 1)); - targetPadding->set_padding(6, 0, 24, 0); - target_frame->add(*targetPadding); - - Gtk::Table *target_table = manage(new Gtk::Table(2, 3, false)); - target_table->set_row_spacings(6); - target_table->set_col_spacings(12); - targetPadding->add(*target_table); - - Gtk::Label *filenameLabel = manage(new Gtk::Label(_("_Filename"), true)); - filenameLabel->set_alignment(0, 0.5); - filenameLabel->set_mnemonic_widget(entry_filename); - target_table->attach(*filenameLabel, 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - target_table->attach(entry_filename, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - target_table->attach(*choose_button, 2, 3, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - - Gtk::Label *targetLabel = manage(new Gtk::Label(_("_Target"), true)); - targetLabel->set_alignment(0, 0.5); - targetLabel->set_mnemonic_widget(optionmenu_target); - target_table->attach(*targetLabel, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - target_table->attach(optionmenu_target, 1, 3, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - - toggle_single_frame.signal_toggled().connect(sigc::mem_fun(*this, &studio::RenderSettings::on_single_frame_toggle)); - - Gtk::Frame *settings_frame=manage(new Gtk::Frame(_("Settings"))); - settings_frame->set_shadow_type(Gtk::SHADOW_NONE); - ((Gtk::Label *) settings_frame->get_label_widget())->set_markup(_("Settings")); - dialogBox->pack_start(*settings_frame); - - Gtk::Alignment *settingsPadding = manage(new Gtk::Alignment(0, 0, 1, 1)); - settingsPadding->set_padding(6, 0, 24, 0); - settings_frame->add(*settingsPadding); - - Gtk::Table *settings_table=manage(new Gtk::Table(2,2,false)); - settings_table->set_row_spacings(6); - settings_table->set_col_spacings(12); - settingsPadding->add(*settings_table); - - Gtk::Label *qualityLabel = manage(new Gtk::Label(_("_Quality"), true)); - qualityLabel->set_alignment(0, 0.5); - qualityLabel->set_mnemonic_widget(entry_quality); - settings_table->attach(*qualityLabel, 0, 1, 0, 1, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - settings_table->attach(entry_quality, 1, 2, 0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - - Gtk::Label *antiAliasLabel = manage(new Gtk::Label(_("_Anti-Aliasing"), true)); - antiAliasLabel->set_alignment(0, 0.5); - antiAliasLabel->set_mnemonic_widget(entry_antialias); - settings_table->attach(*antiAliasLabel, 0, 1, 1, 2, Gtk::SHRINK|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - settings_table->attach(entry_antialias, 1, 2, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - - toggle_single_frame.set_alignment(0, 0.5); - settings_table->attach(toggle_single_frame, 0, 2, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK|Gtk::FILL, 0, 0); - - dialogBox->pack_start(widget_rend_desc); - - - Gtk::Button *render_button(manage(new class Gtk::Button(Gtk::StockID("Render")))); - render_button->show(); - add_action_widget(*render_button,1); - render_button->signal_clicked().connect(sigc::mem_fun(*this, &studio::RenderSettings::on_render_pressed)); - - Gtk::Button *cancel_button(manage(new class Gtk::Button(Gtk::StockID("gtk-cancel")))); - cancel_button->show(); - add_action_widget(*cancel_button,0); - cancel_button->signal_clicked().connect(sigc::mem_fun(*this, &studio::RenderSettings::on_cancel_pressed)); - - //set_default_response(1); - - set_title(_("Render Settings")+String(" - ")+canvas_interface_->get_canvas()->get_name()); - - - toggle_single_frame.set_active(true); - widget_rend_desc.disable_time_section(); - - set_entry_filename(); - - get_vbox()->show_all(); -} - -RenderSettings::~RenderSettings() -{ -} - -void -RenderSettings::set_entry_filename() -{ - String filename(canvas_interface_->get_canvas()->get_file_name()); - - // if the basename of the filename has an extension, remove it - String base = basename(filename); - if(find(base.begin(),base.end(),'.')!=base.end()) - filename = String(filename.begin(), filename.begin()+filename.find_last_of('.')); - - // if this isn't the root canvas, append () to the filename - etl::handle canvas = canvas_interface_->get_canvas(); - if (!canvas->is_root()) - if(canvas->get_name().empty()) - filename+=" ("+canvas->get_id()+')'; - else - filename+=" ("+canvas->get_name()+')'; - - filename += ".png"; - - try - { - entry_filename.set_text((filename)); - } - catch(...) - { - synfig::warning("Averted crash!"); - entry_filename.set_text("output.png"); - } -} - -void -RenderSettings::on_rend_desc_changed() -{ - widget_rend_desc.set_rend_desc(canvas_interface_->get_canvas()->rend_desc()); -} - -void -RenderSettings::set_target(synfig::String name) -{ - target_name=name; -} - -void -RenderSettings::on_choose_pressed() -{ - String filename=entry_filename.get_text(); - if(App::dialog_save_file("Save Render As",filename)) - entry_filename.set_text(filename); -} - -void -RenderSettings::on_render_pressed() -{ - String filename=entry_filename.get_text(); - - if(filename.empty()) - { - canvas_interface_->get_ui_interface()->error(_("You must supply a filename!")); - return; - } - - // If the target type is not yet defined, - // try to figure it out from the outfile. - if(target_name.empty()) - { - try - { - String ext=String(find(filename.begin(),filename.end(),'.')+1,filename.end()); - if(Target::ext_book().count(ext)) - target_name=Target::ext_book()[ext]; - else - target_name=ext; - } - catch(std::runtime_error x) - { - canvas_interface_->get_ui_interface()->error(_("Unable to determine proper target from filename.")); - return; - } - } - - if(filename.empty() && target_name!="null") - { - canvas_interface_->get_ui_interface()->error(_("A filename is required for this target")); - return; - } - - Target::Handle target=Target::create(target_name,filename); - if(!target) - { - canvas_interface_->get_ui_interface()->error(_("Unable to create target for ")+filename); - return; - } - - hide(); - - target->set_canvas(canvas_interface_->get_canvas()); - RendDesc rend_desc(widget_rend_desc.get_rend_desc()); - rend_desc.set_antialias((int)adjustment_antialias.get_value()); - - // If we are to only render the current frame - if(toggle_single_frame.get_active()) - rend_desc.set_time(canvas_interface_->get_time()); - - target->set_rend_desc(&rend_desc); - target->set_quality((int)adjustment_quality.get_value()); - if( !target->init() ){ - canvas_interface_->get_ui_interface()->error(_("Target initialisation failure")); - return; - } - - canvas_interface_->get_ui_interface()->task(_("Rendering ")+filename); - - if(async_renderer) - { - async_renderer->stop(); - async_renderer.detach(); - } - async_renderer=new AsyncRenderer(target); - async_renderer->signal_finished().connect( sigc::mem_fun(*this,&RenderSettings::on_finished)); - async_renderer->start(); - /* - if(!target->render(canvas_interface_->get_ui_interface().get())) - { - canvas_interface_->get_ui_interface()->error(_("Render Failure")); - canvas_interface_->get_ui_interface()->amount_complete(0,10000); - return; - } - - // Success! - canvas_interface_->get_ui_interface()->task(filename+_(" rendered successfully")); - canvas_interface_->get_ui_interface()->amount_complete(0,10000); - */ - return; -} - -void -RenderSettings::on_finished() -{ - canvas_interface_->get_ui_interface()->task(_("File rendered successfully")); - canvas_interface_->get_ui_interface()->amount_complete(0,10000); -} - -void -RenderSettings::on_cancel_pressed() -{ - hide(); -} - -void -RenderSettings::on_single_frame_toggle() -{ - if(toggle_single_frame.get_active()) - widget_rend_desc.disable_time_section(); - else - widget_rend_desc.enable_time_section(); -}