Author: Carlos Lopez <[email protected]>
Date: Tue Mar 22 16:11:38 2011 +0100
Enable creation of Advanced Outline using the BLine Tool
---
synfig-studio/src/gui/states/state_bline.cpp | 89 ++++++++++++++++++++++++--
1 files changed, 84 insertions(+), 5 deletions(-)
diff --git a/synfig-studio/src/gui/states/state_bline.cpp
b/synfig-studio/src/gui/states/state_bline.cpp
index 935e682..74dbcc7 100644
--- a/synfig-studio/src/gui/states/state_bline.cpp
+++ b/synfig-studio/src/gui/states/state_bline.cpp
@@ -119,6 +119,7 @@ class studio::StateBLine_Context : public sigc::trackable
Gtk::Entry entry_id;
Gtk::CheckButton checkbutton_layer_region;
Gtk::CheckButton checkbutton_layer_outline;
+ Gtk::CheckButton checkbutton_layer_advanced_outline;
Gtk::CheckButton checkbutton_layer_curve_gradient;
Gtk::CheckButton checkbutton_layer_plant;
Gtk::CheckButton checkbutton_layer_link_origins;
@@ -137,6 +138,7 @@ public:
return
get_layer_region_flag() +
get_layer_outline_flag() +
+ get_layer_advanced_outline_flag()+
get_layer_curve_gradient_flag() +
get_layer_plant_flag();
}
@@ -156,6 +158,9 @@ public:
bool get_layer_outline_flag()const { return
checkbutton_layer_outline.get_active(); }
void set_layer_outline_flag(bool x) { return
checkbutton_layer_outline.set_active(x); }
+ bool get_layer_advanced_outline_flag()const { return
checkbutton_layer_advanced_outline.get_active(); }
+ void set_layer_advanced_outline_flag(bool x) { return
checkbutton_layer_advanced_outline.set_active(x); }
+
bool get_layer_curve_gradient_flag()const { return
checkbutton_layer_curve_gradient.get_active(); }
void set_layer_curve_gradient_flag(bool x) { return
checkbutton_layer_curve_gradient.set_active(x); }
@@ -251,6 +256,11 @@ StateBLine_Context::load_settings()
else
set_layer_outline_flag(true);
+ if(settings.get_value("bline.layer_advanced_outline",value) &&
value=="0")
+ set_layer_advanced_outline_flag(false);
+ else
+ set_layer_advanced_outline_flag(true);
+
if(settings.get_value("bline.layer_curve_gradient",value) &&
value=="1")
set_layer_curve_gradient_flag(true);
else
@@ -297,6 +307,7 @@ StateBLine_Context::save_settings()
synfig::ChangeLocale change_locale(LC_NUMERIC, "C");
sanity_check();
settings.set_value("bline.layer_outline",get_layer_outline_flag()?"1":"0");
+
settings.set_value("bline.layer_advanced_outline",get_layer_advanced_outline_flag()?"1":"0");
settings.set_value("bline.layer_region",get_layer_region_flag()?"1":"0");
settings.set_value("bline.layer_curve_gradient",get_layer_curve_gradient_flag()?"1":"0");
settings.set_value("bline.layer_plant",get_layer_plant_flag()?"1":"0");
@@ -376,6 +387,7 @@ StateBLine_Context::StateBLine_Context(CanvasView*
canvas_view):
entry_id(),
checkbutton_layer_region(_("Create Region BLine")),
checkbutton_layer_outline(_("Create Outline BLine")),
+ checkbutton_layer_advanced_outline(_("Create Advanced Outline BLine")),
checkbutton_layer_curve_gradient(_("Create Curve Gradient BLine")),
checkbutton_layer_plant(_("Create Plant BLine")),
checkbutton_layer_link_origins(_("Link Origins")),
@@ -393,11 +405,12 @@ StateBLine_Context::StateBLine_Context(CanvasView*
canvas_view):
options_table.attach(*manage(new Gtk::Label(_("BLine Tool"))), 0, 2,
0, 1, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
options_table.attach(entry_id,
0, 2, 1, 2, Gtk::EXPAND|Gtk::FILL,
Gtk::EXPAND|Gtk::FILL, 0, 0);
options_table.attach(checkbutton_layer_outline,
0, 2, 2, 3, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- options_table.attach(checkbutton_layer_region,
0, 2, 3, 4, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- options_table.attach(checkbutton_layer_plant,
0, 2, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- options_table.attach(checkbutton_layer_curve_gradient,
0, 2, 5, 6, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- options_table.attach(checkbutton_layer_link_origins,
0, 2, 6, 7, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- options_table.attach(checkbutton_auto_export,
0, 2, 7, 8, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ options_table.attach(checkbutton_layer_advanced_outline,
0, 2, 3, 4, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ options_table.attach(checkbutton_layer_region,
0, 2, 4, 5, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ options_table.attach(checkbutton_layer_plant,
0, 2, 5, 6, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ options_table.attach(checkbutton_layer_curve_gradient,
0, 2, 6, 7, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ options_table.attach(checkbutton_layer_link_origins,
0, 2, 7, 8, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
+ options_table.attach(checkbutton_auto_export,
0, 2, 8, 9, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
options_table.attach(*manage(new Gtk::Label(_("Feather"))), 0, 1,
10, 11, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
options_table.attach(spin_feather,
1, 2, 10, 11, Gtk::EXPAND|Gtk::FILL,
Gtk::EXPAND|Gtk::FILL, 0, 0);
//options_table.attach(button_make, 0, 2, 5, 6, Gtk::EXPAND|Gtk::FILL,
Gtk::EXPAND|Gtk::FILL, 0, 0);
@@ -893,6 +906,72 @@ StateBLine_Context::run_()
}
}
+
///////////////////////////////////////////////////////////////////////////
+ // A D V A N C E D O U T L I N E
+
///////////////////////////////////////////////////////////////////////////
+
+ if(get_layer_advanced_outline_flag())
+ {
+ synfigapp::PushMode
push_mode(get_canvas_interface(),synfigapp::MODE_NORMAL);
+
+ Layer::Handle
layer(get_canvas_interface()->add_layer_to("advanced_outline",canvas,depth));
+ if (!layer)
+ {
+ group.cancel();
+ throw String(_("Unable to create layer"));
+ }
+ layer_selection.push_back(layer);
+ layer->set_description(get_id()+_(" Advanced Outline"));
+
get_canvas_interface()->signal_layer_new_description()(layer,layer->get_description());
+ if(get_feather())
+ {
+ layer->set_param("feather",get_feather());
+
get_canvas_interface()->signal_layer_param_changed()(layer,"feather");
+ }
+
+ {
+ synfigapp::Action::Handle
action(synfigapp::Action::create("LayerParamConnect"));
+ assert(action);
+
+ action->set_param("canvas",get_canvas());
+
action->set_param("canvas_interface",get_canvas_interface());
+ action->set_param("layer",layer);
+ if(!action->set_param("param",String("bline")))
+ synfig::error("LayerParamConnect didn't
like \"param\"");
+
if(!action->set_param("value_node",ValueNode::Handle(value_node_bline)))
+ synfig::error("LayerParamConnect didn't
like \"value_node\"");
+
+
if(!get_canvas_interface()->get_instance()->perform_action(action))
+ {
+ group.cancel();
+ throw String(_("Unable to create
Advanced Outline layer"));
+ return false;
+ }
+ }
+
+ // only link the advanced outline's origin parameter if
the option is selected and we're creating more than one layer
+ if (get_layer_link_origins_flag() && layers_to_create >
1)
+ {
+ synfigapp::Action::Handle
action(synfigapp::Action::create("LayerParamConnect"));
+ assert(action);
+
+ action->set_param("canvas",get_canvas());
+
action->set_param("canvas_interface",get_canvas_interface());
+ action->set_param("layer",layer);
+ if(!action->set_param("param",String("origin")))
+ synfig::error("LayerParamConnect didn't
like \"param\"");
+
if(!action->set_param("value_node",ValueNode::Handle(value_node_origin)))
+ synfig::error("LayerParamConnect didn't
like \"value_node\"");
+
+
if(!get_canvas_interface()->get_instance()->perform_action(action))
+ {
+ group.cancel();
+ throw String(_("Unable to create
Advanced Outline layer"));
+ return false;
+ }
+ }
+ }
+
egress_on_selection_change=false;
get_canvas_interface()->get_selection_manager()->clear_selected_layers();
get_canvas_interface()->get_selection_manager()->set_selected_layers(layer_selection);
------------------------------------------------------------------------------
Create and publish websites with WebMatrix
Use the most popular FREE web apps or write code yourself;
WebMatrix provides all the features you need to develop and publish
your website. http://p.sf.net/sfu/ms-webmatrix-sf
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl