/* === M A C R O S ========================================================= */
+/* 0.33333333333333333 makes for nice short tangent handles,
+ 1.0 makes them draw as their real length */
+#define TANGENT_HANDLE_SCALE 0.33333333333333333
+
+/* leave this alone or the bezier won't lie on top of the bline */
+#define TANGENT_BEZIER_SCALE 0.33333333333333333
+
/* === G L O B A L S ======================================================= */
/* === P R O C E D U R E S ================================================= */
layer_name=="curve_gradient"
)
return false;
- if(
- (layer_name=="PasteCanvas"||
- layer_name=="paste_canvas")
- && !layer->get_param("children_lock").get(bool())
- )
+ if((layer_name=="PasteCanvas"|| layer_name=="paste_canvas") &&
+ !layer->get_param("children_lock").get(bool()))
return false;
}
return true;
}
void
+Duckmatic::toggle_select_ducks_in_box(const synfig::Vector& tl,const synfig::Vector& br)
+{
+ Vector vmin, vmax;
+ vmin[0]=std::min(tl[0],br[0]);
+ vmin[1]=std::min(tl[1],br[1]);
+ vmax[0]=std::max(tl[0],br[0]);
+ vmax[1]=std::max(tl[1],br[1]);
+
+ DuckMap::const_iterator iter;
+ for(iter=duck_map.begin();iter!=duck_map.end();++iter)
+ {
+ Point p(iter->second->get_trans_point());
+ if(p[0]<=vmax[0] && p[0]>=vmin[0] && p[1]<=vmax[1] && p[1]>=vmin[1] &&
+ is_duck_group_selectable(iter->second))
+ toggle_select_duck(iter->second);
+ }
+}
+
+void
Duckmatic::select_ducks_in_box(const synfig::Vector& tl,const synfig::Vector& br)
{
Vector vmin, vmax;
bezier->c1=last_duck();
bezier->c1->set_type(Duck::TYPE_TANGENT);
bezier->c1->set_origin(bezier->p1);
- bezier->c1->set_scalar(0.33333333333333333);
+ bezier->c1->set_scalar(TANGENT_BEZIER_SCALE);
bezier->c1->set_tangent(true);
bezier->c2=last_duck();
bezier->c2->set_type(Duck::TYPE_TANGENT);
bezier->c2->set_origin(bezier->p2);
- bezier->c2->set_scalar(-0.33333333333333333);
+ bezier->c2->set_scalar(-TANGENT_BEZIER_SCALE);
bezier->c2->set_tangent(true);
bezier->signal_user_click(2).connect(
duck_c->set_type(Duck::TYPE_TANGENT);
add_duck(duck_c);
duck_c->set_origin(duck_p);
- duck_c->set_scalar(0.33333333333333333);
+ duck_c->set_scalar(TANGENT_HANDLE_SCALE);
duck_c->set_tangent(true);
bezier->p1=duck_p;
duck_c->set_name(name+".T2");
add_duck(duck_c);
duck_c->set_origin(duck_p);
- duck_c->set_scalar(-0.33333333333333333);
+ duck_c->set_scalar(-TANGENT_HANDLE_SCALE);
duck_c->set_tangent(true);
bezier->p2=duck_p;
etl::handle<Duck> t1_duck(last_duck());
t1_duck->set_origin(vertex_duck);
- t1_duck->set_scalar(-0.33333333333333333);
+ t1_duck->set_scalar(-TANGENT_HANDLE_SCALE);
t1_duck->set_tangent(true);
etl::handle<Duck> t2_duck;
return false;
t2_duck=last_duck();
t2_duck->set_origin(vertex_duck);
- t2_duck->set_scalar(0.33333333333333333);
+ t2_duck->set_scalar(TANGENT_HANDLE_SCALE);
t2_duck->set_tangent(true);
}
else
return false;
t2_duck=last_duck();
t2_duck->set_origin(vertex_duck);
- t2_duck->set_scalar(0.33333333333333333);
+ t2_duck->set_scalar(TANGENT_HANDLE_SCALE);
t2_duck->set_tangent(true);
}
return true;
duck->set_origin(last_duck());
/*
ValueBase value(synfigapp::ValueDesc(value_desc.get_layer(),param_desc->get_origin()).get_value(get_time()));
- if(value.same_as(synfig::Point()))
+ if(value.same_type_as(synfig::Point()))
duck->set_origin(value.get(synfig::Point()));
*/
}
duck->set_origin(last_duck());
/*
ValueBase value(synfigapp::ValueDesc(value_desc.get_layer(),param_desc->get_origin()).get_value(get_time()));
- if(value.same_as(synfig::Point()))
+ if(value.same_type_as(synfig::Point()))
duck->set_origin(value.get(synfig::Point()));
*/
}
width->set_name(guid_string(synfigapp::ValueDesc(value_node,i))+".w");
{
ValueBase value(synfigapp::ValueDesc(value_desc.get_layer(),param_desc->get_hint()).get_value(get_time()));
- if(value.same_as(synfig::Real()))
+ if(value.same_type_as(synfig::Real()))
width->set_scalar(value.get(synfig::Real())*0.5f);
}
}
}
tduck->set_origin(duck);
- tduck->set_scalar(-0.33333333333333333);
+ tduck->set_scalar(-TANGENT_BEZIER_SCALE);
tduck->set_tangent(true);
bezier->p2=duck;
duck->set_origin(last_duck());
/*
ValueBase value(synfigapp::ValueDesc(value_desc.get_layer(),param_desc->get_origin()).get_value(get_time()));
- if(value.same_as(synfig::Point()))
+ if(value.same_type_as(synfig::Point()))
duck->set_origin(value.get(synfig::Point()));
*/
// if(!param_desc->get_origin().empty())
}
tduck->set_origin(duck);
- tduck->set_scalar(0.33333333333333333);
+ tduck->set_scalar(TANGENT_BEZIER_SCALE);
tduck->set_tangent(true);
bezier->p1=duck;
}
tduck->set_origin(duck);
- tduck->set_scalar(-0.33333333333333333);
+ tduck->set_scalar(-TANGENT_BEZIER_SCALE);
tduck->set_tangent(true);
bezier->p2=duck;
duck->set_origin(last_duck());
/*
ValueBase value(synfigapp::ValueDesc(value_desc.get_layer(),param_desc->get_origin()).get_value(get_time()));
- if(value.same_as(synfig::Point()))
+ if(value.same_type_as(synfig::Point()))
duck->set_origin(value.get(synfig::Point()));
*/
// if(!param_desc->get_origin().empty())