X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fstate_bline.cpp;h=8d967699661e529a64749d41f0a38f4e5e94e59a;hb=db95494e5ab8a617cbfb4b9e8096d4b3f47725c5;hp=f632f2e4aa62fe175aee2f6fb012a23416e7131e;hpb=335832e496a82a78d530d52b7b8ae6c7cec0b6f4;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/state_bline.cpp b/synfig-studio/trunk/src/gtkmm/state_bline.cpp index f632f2e..8d96769 100644 --- a/synfig-studio/trunk/src/gtkmm/state_bline.cpp +++ b/synfig-studio/trunk/src/gtkmm/state_bline.cpp @@ -217,15 +217,15 @@ public: StateBLine::StateBLine(): Smach::state("bline") { - insert(event_def(EVENT_LAYER_SELECTION_CHANGED,&StateBLine_Context::event_layer_selection_changed_handler)); - insert(event_def(EVENT_STOP,&StateBLine_Context::event_stop_handler)); - insert(event_def(EVENT_REFRESH,&StateBLine_Context::event_refresh_handler)); - insert(event_def(EVENT_REFRESH_DUCKS,&StateBLine_Context::event_hijack)); - insert(event_def(EVENT_WORKAREA_MOUSE_BUTTON_DOWN,&StateBLine_Context::event_mouse_click_handler)); - insert(event_def(EVENT_WORKAREA_MOUSE_BUTTON_UP,&StateBLine_Context::event_mouse_release_handler)); - insert(event_def(EVENT_WORKAREA_MOUSE_MOTION,&StateBLine_Context::event_mouse_motion_handler)); - insert(event_def(EVENT_WORKAREA_MOUSE_BUTTON_DRAG,&StateBLine_Context::event_mouse_motion_handler)); - insert(event_def(EVENT_REFRESH_TOOL_OPTIONS,&StateBLine_Context::event_refresh_tool_options)); + insert(event_def(EVENT_LAYER_SELECTION_CHANGED, &StateBLine_Context::event_layer_selection_changed_handler)); + insert(event_def(EVENT_STOP, &StateBLine_Context::event_stop_handler)); + insert(event_def(EVENT_REFRESH, &StateBLine_Context::event_refresh_handler)); + insert(event_def(EVENT_REFRESH_DUCKS, &StateBLine_Context::event_hijack)); + insert(event_def(EVENT_WORKAREA_MOUSE_BUTTON_DOWN, &StateBLine_Context::event_mouse_click_handler)); + insert(event_def(EVENT_WORKAREA_MOUSE_BUTTON_UP, &StateBLine_Context::event_mouse_release_handler)); + insert(event_def(EVENT_WORKAREA_MOUSE_MOTION, &StateBLine_Context::event_mouse_motion_handler)); + insert(event_def(EVENT_WORKAREA_MOUSE_BUTTON_DRAG, &StateBLine_Context::event_mouse_motion_handler)); + insert(event_def(EVENT_REFRESH_TOOL_OPTIONS, &StateBLine_Context::event_refresh_tool_options)); } StateBLine::~StateBLine() @@ -358,10 +358,10 @@ StateBLine_Context::StateBLine_Context(CanvasView* canvas_view): duckmatic_push(get_work_area()), settings(synfigapp::Main::get_selected_input_device()->settings()), entry_id(), - checkbutton_layer_region(_("Fill")), - checkbutton_layer_outline(_("Outline")), - checkbutton_layer_curve_gradient(_("Gradient")), - checkbutton_layer_plant(_("Plant")), + checkbutton_layer_region(_("Create Region BLine")), + checkbutton_layer_outline(_("Create Outline BLine")), + checkbutton_layer_curve_gradient(_("Create Gradient BLine")), + checkbutton_layer_plant(_("Create Plant BLine")), checkbutton_layer_link_offsets(_("Link Offsets")), checkbutton_auto_export(_("Auto Export")), button_make(_("Make")), @@ -374,16 +374,16 @@ StateBLine_Context::StateBLine_Context(CanvasView* canvas_view): load_settings(); // Set up the tool options dialog - //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_offsets, 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(*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(*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_offsets, 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(*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); //button_make.signal_pressed().connect(sigc::mem_fun(*this,&StateBLine_Context::run)); options_table.show_all(); @@ -606,6 +606,11 @@ StateBLine_Context::run_() value_node_bline->set_member_canvas(canvas); synfigapp::SelectionManager::LayerList layer_selection; + if (!getenv("SYNFIG_TOOLS_CLEAR_SELECTION")) + layer_selection = get_canvas_view()->get_selection_manager()->get_selected_layers(); + + // count how many layers we're going to be creating + int layers_to_create = this->layers_to_create(); /////////////////////////////////////////////////////////////////////////// // C U R V E G R A D I E N T @@ -642,7 +647,8 @@ StateBLine_Context::run_() } } - if (get_layer_link_offsets_flag()) + // only link the curve gradient's offset parameter if the option is selected and we're creating more than one layer + if (get_layer_link_offsets_flag() && layers_to_create > 1) { synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect")); assert(action); @@ -700,8 +706,8 @@ StateBLine_Context::run_() } } - // plants don't have offsets? - if (get_layer_link_offsets_flag()) + // only link the plant's offset parameter if the option is selected and we're creating more than one layer + if (get_layer_link_offsets_flag() && layers_to_create > 1) { synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect")); assert(action); @@ -770,7 +776,8 @@ StateBLine_Context::run_() } } - if (get_layer_link_offsets_flag()) + // only link the region's offset parameter if the option is selected and we're creating more than one layer + if (get_layer_link_offsets_flag() && layers_to_create > 1) { synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect")); assert(action); @@ -833,7 +840,8 @@ StateBLine_Context::run_() } } - if (get_layer_link_offsets_flag()) + // only link the outline's offset parameter if the option is selected and we're creating more than one layer + if (get_layer_link_offsets_flag() && layers_to_create > 1) { synfigapp::Action::Handle action(synfigapp::Action::create("layer_param_connect")); assert(action); @@ -1006,7 +1014,7 @@ StateBLine_Context::refresh_ducks(bool button_down) duck->signal_user_click(2).connect( sigc::bind(sigc::mem_fun(*this,&studio::StateBLine_Context::popup_vertex_menu),value_node) ); - duck->set_guid(value_node->get_guid()^GUID::hasher(0)); + duck->set_guid(value_node->get_guid()^synfig::GUID::hasher(0)); get_work_area()->add_duck(duck); @@ -1017,7 +1025,7 @@ StateBLine_Context::refresh_ducks(bool button_down) tduck->set_origin(duck); tduck->set_scalar(-0.33333333333333333); tduck->set_tangent(true); - tduck->set_guid(value_node->get_guid()^GUID::hasher(3)); + tduck->set_guid(value_node->get_guid()^synfig::GUID::hasher(3)); tduck->signal_edited().connect( sigc::bind(sigc::mem_fun(*this,&studio::StateBLine_Context::on_tangent1_change),value_node) ); @@ -1080,7 +1088,7 @@ StateBLine_Context::refresh_ducks(bool button_down) sigc::bind(sigc::mem_fun(*this,&studio::StateBLine_Context::on_tangent1_change),value_node) ); } - tduck->set_guid(value_node->get_guid()^GUID::hasher(4)); + tduck->set_guid(value_node->get_guid()^synfig::GUID::hasher(4)); tduck->signal_user_click(2).connect( sigc::bind(sigc::mem_fun(*this,&studio::StateBLine_Context::popup_handle_menu),value_node) ); @@ -1165,8 +1173,8 @@ StateBLine_Context::refresh_ducks(bool button_down) //get_work_area()->add_duck(bezier->c2); get_work_area()->add_bezier(bezier); - duck->set_guid(GUID()); - tduck->set_guid(GUID()); + duck->set_guid(synfig::GUID()); + tduck->set_guid(synfig::GUID()); next_duck=duck; } @@ -1306,11 +1314,7 @@ StateBLine_Context::bline_insert_vertex(synfig::ValueNode_Const::Handle value_no bline_point.set_vertex(curve(origin)); bline_point.set_width((next_bline_point.get_width()-prev_bline_point.get_width())*origin+prev_bline_point.get_width()); -#ifdef ETL_FIXED_DERIVATIVE bline_point.set_tangent1(deriv(origin)*std::min(1.0f-origin,origin)); -#else - bline_point.set_tangent1(-deriv(origin)*std::min(1.0f-origin,origin)); -#endif bline_point.set_tangent2(bline_point.get_tangent1()); bline_point.set_split_tangent_flag(false); bline_point.set_origin(origin);