projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use Color::is_straight(). Also, re-enable the optimization for straight blending...
[synfig.git]
/
synfig-studio
/
trunk
/
src
/
gtkmm
/
state_draw.cpp
diff --git
a/synfig-studio/trunk/src/gtkmm/state_draw.cpp
b/synfig-studio/trunk/src/gtkmm/state_draw.cpp
index
5ffdd37
..
8bda933
100644
(file)
--- a/
synfig-studio/trunk/src/gtkmm/state_draw.cpp
+++ b/
synfig-studio/trunk/src/gtkmm/state_draw.cpp
@@
-62,6
+62,8
@@
#include <gtkmm/scale.h>
#include <sigc++/connection.h>
#include <gtkmm/scale.h>
#include <sigc++/connection.h>
+#include "general.h"
+
#endif
/* === U S I N G =========================================================== */
#endif
/* === U S I N G =========================================================== */
@@
-97,7
+99,7
@@
class studio::StateDraw_Context : public sigc::trackable
bool prev_workarea_layer_status_;
int nested;
bool prev_workarea_layer_status_;
int nested;
-
SigC::C
onnection process_queue_connection;
+
sigc::c
onnection process_queue_connection;
ValueNode_BLine::Handle last_stroke;
synfig::String last_stroke_id;
ValueNode_BLine::Handle last_stroke;
synfig::String last_stroke_id;
@@
-112,7
+114,7
@@
class studio::StateDraw_Context : public sigc::trackable
Duckmatic::Type old_duckmask;
Duckmatic::Type old_duckmask;
- void fill_last_stroke(
int depth_offset
);
+ void fill_last_stroke();
Smach::event_result new_bline(std::list<synfig::BLinePoint> bline,bool loop_bline_flag,float radius);
Smach::event_result new_bline(std::list<synfig::BLinePoint> bline,bool loop_bline_flag,float radius);
@@
-448,7
+450,7
@@
StateDraw_Context::StateDraw_Context(CanvasView* canvas_view):
//options_table.attach(button_fill_last_stroke, 0, 2, 13, 14, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
//options_table.attach(button_fill_last_stroke, 0, 2, 13, 14, Gtk::EXPAND|Gtk::FILL, Gtk::EXPAND|Gtk::FILL, 0, 0);
- button_fill_last_stroke.signal_pressed().connect(sigc::
bind(sigc::mem_fun(*this,&StateDraw_Context::fill_last_stroke), 0
));
+ button_fill_last_stroke.signal_pressed().connect(sigc::
mem_fun(*this,&StateDraw_Context::fill_last_stroke
));
check_localerror.signal_toggled().connect(sigc::mem_fun(*this,&StateDraw_Context::UpdateErrorBox));
options_table.show_all();
check_localerror.signal_toggled().connect(sigc::mem_fun(*this,&StateDraw_Context::UpdateErrorBox));
options_table.show_all();
@@
-519,11
+521,9
@@
StateDraw_Context::refresh_tool_options()
Gtk::StockID("synfig-fill"),
_("Fill Last Stroke")
)->signal_clicked().connect(
Gtk::StockID("synfig-fill"),
_("Fill Last Stroke")
)->signal_clicked().connect(
- sigc::bind(
- sigc::mem_fun(
- *this,
- &StateDraw_Context::fill_last_stroke),
- 0));
+ sigc::mem_fun(
+ *this,
+ &StateDraw_Context::fill_last_stroke));
}
Smach::event_result
}
Smach::event_result
@@
-588,7
+588,8
@@
StateDraw_Context::event_mouse_down_handler(const Smach::event& x)
}
case BUTTON_RIGHT: // Intercept the right-button click to short-circuit the pop-up menu
}
case BUTTON_RIGHT: // Intercept the right-button click to short-circuit the pop-up menu
- return Smach::RESULT_ACCEPT;
+ if (!getenv("SYNFIG_ENABLE_POPUP_MENU_IN_ALL_TOOLS"))
+ return Smach::RESULT_ACCEPT;
default:
return Smach::RESULT_OK;
default:
return Smach::RESULT_OK;
@@
-1000,8
+1001,11
@@
StateDraw_Context::new_bline(std::list<synfig::BLinePoint> bline,bool loop_bline
}
}
}
}
- // Create the layer
+ last_stroke=value_node;
+ last_stroke_id=get_id();
+
{
{
+ // Create the layer(s)
Layer::Handle layer;
Canvas::Handle canvas(get_canvas_view()->get_canvas());
int depth(0);
Layer::Handle layer;
Canvas::Handle canvas(get_canvas_view()->get_canvas());
int depth(0);
@@
-1013,7
+1017,12
@@
StateDraw_Context::new_bline(std::list<synfig::BLinePoint> bline,bool loop_bline
depth=layer->get_depth();
canvas=layer->get_canvas();
}
depth=layer->get_depth();
canvas=layer->get_canvas();
}
- get_canvas_interface()->get_selection_manager()->clear_selected_layers();
+
+ // fill_last_stroke() will take care of clearing the selection if we're calling it
+ if(get_outline_flag() && get_region_flag())
+ fill_last_stroke();
+ else
+ get_canvas_interface()->get_selection_manager()->clear_selected_layers();
//int number(synfig::UniqueID().get_uid());
//int number(synfig::UniqueID().get_uid());
@@
-1068,12
+1077,6
@@
StateDraw_Context::new_bline(std::list<synfig::BLinePoint> bline,bool loop_bline
//refresh_ducks();
}
//refresh_ducks();
}
- last_stroke=value_node;
- last_stroke_id=get_id();
-
- if(get_outline_flag() && get_region_flag())
- fill_last_stroke(1);
-
increment_id();
return Smach::RESULT_ACCEPT;
}
increment_id();
return Smach::RESULT_ACCEPT;
}
@@
-1519,7
+1522,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
if(value_prev.get_parent_value_node()==value_next.get_parent_value_node() &&
value_prev.get_parent_value_node()!=value_desc.get_parent_value_node())
{
if(value_prev.get_parent_value_node()==value_next.get_parent_value_node() &&
value_prev.get_parent_value_node()!=value_desc.get_parent_value_node())
{
- DEBUGPOINT();
vertex_list.erase(iter);
done=false;
break;
vertex_list.erase(iter);
done=false;
break;
@@
-1534,7
+1536,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
// if(value_prev.get_value_node()==value_desc.get_value_node() ||
// value_desc.get_value_node()==value_next.get_value_node())
// {
// if(value_prev.get_value_node()==value_desc.get_value_node() ||
// value_desc.get_value_node()==value_next.get_value_node())
// {
- // // DEBUGPOINT();
// vertex_list.erase(iter);
// done=false;
// printf("erased node - i = %d\n", i);
// vertex_list.erase(iter);
// done=false;
// printf("erased node - i = %d\n", i);
@@
-1544,7
+1545,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
// // if previous is the same as next, remove previous? or next?
// if(value_prev.get_value_node()==value_next.get_value_node())
// {
// // if previous is the same as next, remove previous? or next?
// if(value_prev.get_value_node()==value_next.get_value_node())
// {
- // // DEBUGPOINT();
// vertex_list.erase(next);
// // vertex_list.erase(prev);
// done=false;
// vertex_list.erase(next);
// // vertex_list.erase(prev);
// done=false;
@@
-1573,7
+1573,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
// strprintf("same parent, different points this %d < next-1 %d",
// value_desc.get_index(), ((value_next.get_index()-1))),
// current);
// strprintf("same parent, different points this %d < next-1 %d",
// value_desc.get_index(), ((value_next.get_index()-1))),
// current);
- // // DEBUGPOINT();
// for (int index = value_desc.get_index()+1; index < value_next.get_index(); index++)
// {
// printf("inserting up %d\n", index);
// for (int index = value_desc.get_index()+1; index < value_next.get_index(); index++)
// {
// printf("inserting up %d\n", index);
@@
-1589,7
+1588,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
// strprintf("same parent, different points next %d < this-1 %d",
// value_next.get_index(), ((value_desc.get_index()-1))),
// current);
// strprintf("same parent, different points next %d < this-1 %d",
// value_next.get_index(), ((value_desc.get_index()-1))),
// current);
- // // DEBUGPOINT();
// for (int index = value_desc.get_index()-1; index > value_next.get_index(); index--)
// {
// printf("inserting down %d\n", index);
// for (int index = value_desc.get_index()-1; index > value_next.get_index(); index--)
// {
// printf("inserting down %d\n", index);
@@
-1629,7
+1627,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
if((vertex.get_vertex()-vertex_next.get_vertex()).mag_squared()<radius*radius)
{
printf("in one - it's close\n");
if((vertex.get_vertex()-vertex_next.get_vertex()).mag_squared()<radius*radius)
{
printf("in one - it's close\n");
- // DEBUGPOINT();
ValueNode_Composite::Handle value_node;
ValueNode_Composite::Handle value_node_next;
value_node=ValueNode_Composite::Handle::cast_dynamic(value_desc.get_value_node().clone());
ValueNode_Composite::Handle value_node;
ValueNode_Composite::Handle value_node_next;
value_node=ValueNode_Composite::Handle::cast_dynamic(value_desc.get_value_node().clone());
@@
-1639,7
+1636,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
synfig::info(__FILE__":%d: Unable to properly connect blines.",__LINE__);
continue;
}
synfig::info(__FILE__":%d: Unable to properly connect blines.",__LINE__);
continue;
}
- // DEBUGPOINT();
// \todo if next isn't split, don't we want to copy its 'Tangent 1' instead?
value_node->set_link(5,value_node_next->get_link(5)); // Tangent 2
value_node->set_link(3,ValueNode_Const::create(true)); // Split Tangents
// \todo if next isn't split, don't we want to copy its 'Tangent 1' instead?
value_node->set_link(5,value_node_next->get_link(5)); // Tangent 2
value_node->set_link(3,ValueNode_Const::create(true)); // Split Tangents
@@
-1660,7
+1656,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
else if (value_prev.parent_is_value_node())
{
printf("in two - it's far\n");
else if (value_prev.parent_is_value_node())
{
printf("in two - it's far\n");
- // DEBUGPOINT();
// \todo this only makes sense if prev is on the same bline
printf("this is index %d\n", value_desc.get_index());
printf("prev is index %d\n", value_prev.get_index());
// \todo this only makes sense if prev is on the same bline
printf("this is index %d\n", value_desc.get_index());
printf("prev is index %d\n", value_prev.get_index());
@@
-1676,7
+1671,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
if (value_desc.get_index()<LinkableValueNode::Handle::cast_static(value_desc.get_parent_value_node())->link_count()-1)
{
printf("in two - b\n");
if (value_desc.get_index()<LinkableValueNode::Handle::cast_static(value_desc.get_parent_value_node())->link_count()-1)
{
printf("in two - b\n");
- // DEBUGPOINT();
printf("inserting node with index %d\n", value_desc.get_index()+1);
vertex_list.insert(next,
synfigapp::ValueDesc(value_desc.get_parent_value_node(),
printf("inserting node with index %d\n", value_desc.get_index()+1);
vertex_list.insert(next,
synfigapp::ValueDesc(value_desc.get_parent_value_node(),
@@
-1691,7
+1685,6
@@
StateDraw_Context::new_region(std::list<synfig::BLinePoint> bline, synfig::Real
if(value_desc.get_index()>0)
{
printf("in two - a\n");
if(value_desc.get_index()>0)
{
printf("in two - a\n");
- // DEBUGPOINT();
printf("inserting node on this line with index %d\n",
value_desc.get_index()-1);
vertex_list.insert(next,
printf("inserting node on this line with index %d\n",
value_desc.get_index()-1);
vertex_list.insert(next,
@@
-1931,7
+1924,7
@@
StateDraw_Context::reverse_bline(std::list<synfig::BLinePoint> &bline)
}
void
}
void
-StateDraw_Context::fill_last_stroke(
int depth_offset
)
+StateDraw_Context::fill_last_stroke()
{
if(!last_stroke)
return;
{
if(!last_stroke)
return;
@@
-1950,10
+1943,11
@@
StateDraw_Context::fill_last_stroke(int depth_offset)
layer=get_canvas_view()->get_selection_manager()->get_selected_layer();
if(layer)
{
layer=get_canvas_view()->get_selection_manager()->get_selected_layer();
if(layer)
{
- depth=layer->get_depth()
+ depth_offset
;
+ depth=layer->get_depth();
canvas=layer->get_canvas();
}
canvas=layer->get_canvas();
}
+ get_canvas_interface()->get_selection_manager()->clear_selected_layers();
layer=get_canvas_interface()->add_layer_to("region", canvas, depth);
assert(layer);
layer->set_param("color",synfigapp::Main::get_background_color());
layer=get_canvas_interface()->add_layer_to("region", canvas, depth);
assert(layer);
layer->set_param("color",synfigapp::Main::get_background_color());