projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't expand time fields to their full format (eg. "1s" -> "0h 0m 1s 0f") when they...
[synfig.git]
/
synfig-studio
/
trunk
/
src
/
gtkmm
/
duckmatic.cpp
diff --git
a/synfig-studio/trunk/src/gtkmm/duckmatic.cpp
b/synfig-studio/trunk/src/gtkmm/duckmatic.cpp
index
957b76b
..
d6cc012
100644
(file)
--- a/
synfig-studio/trunk/src/gtkmm/duckmatic.cpp
+++ b/
synfig-studio/trunk/src/gtkmm/duckmatic.cpp
@@
-6,6
+6,7
@@
**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
**
** \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
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
@@
-55,6
+56,8
@@
#include "onemoment.h"
#include "onemoment.h"
+#include "general.h"
+
#endif
/* === U S I N G =========================================================== */
#endif
/* === U S I N G =========================================================== */
@@
-86,7
+89,7
@@
Duckmatic::Duckmatic():
grid_snap(false),
guide_snap(false),
grid_size(1.0/4.0,1.0/4.0),
grid_snap(false),
guide_snap(false),
grid_size(1.0/4.0,1.0/4.0),
- show_persist
a
nt_strokes(true)
+ show_persist
e
nt_strokes(true)
{
axis_lock=false;
drag_offset_=Point(0,0);
{
axis_lock=false;
drag_offset_=Point(0,0);
@@
-96,7
+99,12
@@
Duckmatic::Duckmatic():
Duckmatic::~Duckmatic()
{
clear_ducks();
Duckmatic::~Duckmatic()
{
clear_ducks();
- //synfig::info("Duckmatic::~Duckmatic(): Deleted. Duck Count=%d",Duck::duck_count);
+
+ if (Duck::duck_count)
+ synfig::error("%d ducks not yet deleted!", Duck::duck_count);
+
+ if (getenv("SYNFIG_DEBUG_DESTRUCTORS"))
+ synfig::info("Duckmatic::~Duckmatic(): Deleted");
}
void
}
void
@@
-109,8
+117,8
@@
Duckmatic::clear_ducks()
bezier_list_.clear();
stroke_list_.clear();
bezier_list_.clear();
stroke_list_.clear();
- if(show_persist
a
nt_strokes)
- stroke_list_=persist
a
nt_stroke_list_;
+ if(show_persist
e
nt_strokes)
+ stroke_list_=persist
e
nt_stroke_list_;
}
//! Returns \a true if the given duck is currently selected
}
//! Returns \a true if the given duck is currently selected
@@
-150,8
+158,6
@@
Duckmatic::set_guide_snap(bool x)
}
}
}
}
-
-
Duckmatic::GuideList::iterator
Duckmatic::find_guide_x(synfig::Point pos, float radius)
{
Duckmatic::GuideList::iterator
Duckmatic::find_guide_x(synfig::Point pos, float radius)
{
@@
-256,11
+262,8
@@
Duckmatic::is_duck_group_selectable(const etl::handle<Duck>& x)const
layer_name=="curve_gradient"
)
return false;
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;
return false;
}
return true;
@@
-384,7
+387,6
@@
Duckmatic::toggle_select_duck(const etl::handle<Duck> &duck)
select_duck(duck);
}
select_duck(duck);
}
-
void
Duckmatic::translate_selected_ducks(const synfig::Vector& vector)
{
void
Duckmatic::translate_selected_ducks(const synfig::Vector& vector)
{
@@
-411,7
+413,7
@@
Duckmatic::end_duck_drag()
}
Point
}
Point
-Duckmatic::snap_point_to_grid(const Point& x, float radius)const
+Duckmatic::snap_point_to_grid(const
synfig::
Point& x, float radius)const
{
Point ret(x);
{
Point ret(x);
@@
-507,26
+509,21
@@
DuckDrag_Translate::duck_drag(Duckmatic* duckmatic, const synfig::Vector& vector
for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++)
{
for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++)
{
- if((*iter)->get_type()!=Duck::TYPE_VERTEX&&(*iter)->get_type()!=Duck::TYPE_POSITION)continue;
+ if((*iter)->get_type()!=Duck::TYPE_VERTEX &&
+ (*iter)->get_type()!=Duck::TYPE_POSITION)
+ continue;
(*iter)->set_trans_point(positions[i]+vect);
}
for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++)
{
(*iter)->set_trans_point(positions[i]+vect);
}
for(i=0,iter=selected_ducks.begin();iter!=selected_ducks.end();++iter,i++)
{
- if((*iter)->get_type()==Duck::TYPE_VERTEX||(*iter)->get_type()==Duck::TYPE_POSITION)continue;
+ if((*iter)->get_type()==Duck::TYPE_VERTEX ||
+ (*iter)->get_type()==Duck::TYPE_POSITION)
+ continue;
(*iter)->set_trans_point(positions[i]+vect);
}
last_translate_=vect;
}
(*iter)->set_trans_point(positions[i]+vect);
}
last_translate_=vect;
}
-
-
-
-
-
-
-
-
-
void
Duckmatic::signal_edited_selected_ducks()
{
void
Duckmatic::signal_edited_selected_ducks()
{
@@
-542,10
+539,21
@@
Duckmatic::signal_edited_selected_ducks()
// Go ahead and call everyone's signals
for(iter=ducks.begin();iter!=ducks.end();++iter)
{
// Go ahead and call everyone's signals
for(iter=ducks.begin();iter!=ducks.end();++iter)
{
- if(!(*iter)->signal_edited()((*iter)->get_point()))
+ if ((*iter)->get_type() == Duck::TYPE_ANGLE)
+ {
+ if(!(*iter)->signal_edited_angle()((*iter)->get_rotations()))
+ {
+ selected_ducks=old_set;
+ throw String("Bad edit");
+ }
+ }
+ else
{
{
- selected_ducks=old_set;
- throw String("Bad edit");
+ if(!(*iter)->signal_edited()((*iter)->get_point()))
+ {
+ selected_ducks=old_set;
+ throw String("Bad edit");
+ }
}
}
selected_ducks=old_set;
}
}
selected_ducks=old_set;
@@
-563,10
+571,6
@@
Duckmatic::signal_user_click_selected_ducks(int button)
}
}
}
}
-
-
-
-
void
Duckmatic::add_duck(const etl::handle<Duck> &duck)
{
void
Duckmatic::add_duck(const etl::handle<Duck> &duck)
{
@@
-617,26
+621,26
@@
Duckmatic::add_stroke(etl::smart_ptr<std::list<synfig::Point> > stroke_point_lis
}
void
}
void
-Duckmatic::add_persist
a
nt_stroke(etl::smart_ptr<std::list<synfig::Point> > stroke_point_list, const synfig::Color& color)
+Duckmatic::add_persist
e
nt_stroke(etl::smart_ptr<std::list<synfig::Point> > stroke_point_list, const synfig::Color& color)
{
add_stroke(stroke_point_list,color);
{
add_stroke(stroke_point_list,color);
- persist
a
nt_stroke_list_.push_back(stroke_list_.back());
+ persist
e
nt_stroke_list_.push_back(stroke_list_.back());
}
void
}
void
-Duckmatic::clear_persist
a
nt_strokes()
+Duckmatic::clear_persist
e
nt_strokes()
{
{
- persist
a
nt_stroke_list_.clear();
+ persist
e
nt_stroke_list_.clear();
}
void
}
void
-Duckmatic::set_show_persist
a
nt_strokes(bool x)
+Duckmatic::set_show_persist
e
nt_strokes(bool x)
{
{
- if(x!=show_persist
a
nt_strokes)
+ if(x!=show_persist
e
nt_strokes)
{
{
- show_persist
a
nt_strokes=x;
+ show_persist
e
nt_strokes=x;
if(x)
if(x)
- stroke_list_=persist
a
nt_stroke_list_;
+ stroke_list_=persist
e
nt_stroke_list_;
else
stroke_list_.clear();
}
else
stroke_list_.clear();
}
@@
-713,7
+717,6
@@
Duckmatic::last_bezier()const
return bezier_list_.back();
}
return bezier_list_.back();
}
-
etl::handle<Duckmatic::Duck>
Duckmatic::find_duck(synfig::Point point, synfig::Real radius, Duck::Type type)
{
etl::handle<Duckmatic::Duck>
Duckmatic::find_duck(synfig::Point point, synfig::Real radius, Duck::Type type)
{
@@
-816,11
+819,10
@@
Duckmatic::find_bezier(synfig::Point pos, synfig::Real scale, synfig::Real radiu
return 0;
}
return 0;
}
-
-
bool
Duckmatic::save_sketch(const synfig::String& filename)const
{
bool
Duckmatic::save_sketch(const synfig::String& filename)const
{
+ ChangeLocale change_locale(LC_NUMERIC, "C");
std::ofstream file(filename.c_str());
if(!file)return false;
std::ofstream file(filename.c_str());
if(!file)return false;
@@
-829,7
+831,7
@@
Duckmatic::save_sketch(const synfig::String& filename)const
std::list<etl::handle<Stroke> >::const_iterator iter;
std::list<etl::handle<Stroke> >::const_iterator iter;
- for(iter=persist
ant_stroke_list_.begin();iter!=persista
nt_stroke_list_.end();++iter)
+ for(iter=persist
ent_stroke_list_.begin();iter!=persiste
nt_stroke_list_.end();++iter)
{
file<<"C "
<<(*iter)->color.get_r()<<' '
{
file<<"C "
<<(*iter)->color.get_r()<<' '
@@
-854,6
+856,7
@@
Duckmatic::save_sketch(const synfig::String& filename)const
bool
Duckmatic::load_sketch(const synfig::String& filename)
{
bool
Duckmatic::load_sketch(const synfig::String& filename)
{
+ ChangeLocale change_locale(LC_NUMERIC, "C");
std::ifstream file(filename.c_str());
if(!file)
std::ifstream file(filename.c_str());
if(!file)
@@
-868,7
+871,6
@@
Duckmatic::load_sketch(const synfig::String& filename)
return false;
}
return false;
}
-
etl::smart_ptr<std::list<synfig::Point> > stroke_data;
while(file)
etl::smart_ptr<std::list<synfig::Point> > stroke_data;
while(file)
@@
-890,7
+892,7
@@
Duckmatic::load_sketch(const synfig::String& filename)
synfig::warning("Bad color line \"%s\"",line.c_str());
r=0;g=0;b=0;
}
synfig::warning("Bad color line \"%s\"",line.c_str());
r=0;g=0;b=0;
}
- add_persist
a
nt_stroke(stroke_data, synfig::Color(r,g,b));
+ add_persist
e
nt_stroke(stroke_data, synfig::Color(r,g,b));
}
break;
case 'V':
}
break;
case 'V':
@@
-898,7
+900,7
@@
Duckmatic::load_sketch(const synfig::String& filename)
if(!stroke_data)
{
stroke_data.spawn();
if(!stroke_data)
{
stroke_data.spawn();
- add_persist
a
nt_stroke(stroke_data, synfig::Color(0,0,0));
+ add_persist
e
nt_stroke(stroke_data, synfig::Color(0,0,0));
}
float x,y;
if(!strscanf(line,"V %f %f",&x, &y))
}
float x,y;
if(!strscanf(line,"V %f %f",&x, &y))
@@
-916,13
+918,6
@@
Duckmatic::load_sketch(const synfig::String& filename)
return true;
}
return true;
}
-
-
-
-
-
-
-
Duckmatic::Push::Push(Duckmatic *duckmatic_):
duckmatic_(duckmatic_)
{
Duckmatic::Push::Push(Duckmatic *duckmatic_):
duckmatic_(duckmatic_)
{
@@
-951,14
+946,6
@@
Duckmatic::Push::restore()
needs_restore=false;
}
needs_restore=false;
}
-
-
-
-
-
-
-
-
inline String guid_string(const synfigapp::ValueDesc& x)
{
if(x.parent_is_layer_param())
inline String guid_string(const synfigapp::ValueDesc& x)
{
if(x.parent_is_layer_param())
@@
-1038,7
+1025,7
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
duck->set_scalar(param_desc->get_scalar());
}
duck->set_scalar(param_desc->get_scalar());
}
- duck->signal_edited().clear();
+ duck->signal_edited().clear();
// value_desc.get_value_type() == ValueBase::TYPE_REAL:
duck->signal_edited().connect(
sigc::bind(
sigc::mem_fun(
duck->signal_edited().connect(
sigc::bind(
sigc::mem_fun(
@@
-1114,12
+1101,13
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
duck->set_scalar(param_desc->get_scalar());
}
duck->set_scalar(param_desc->get_scalar());
}
- duck->signal_edited().clear();
- duck->signal_edited().connect(
+ duck->signal_edited().clear(); // value_desc.get_value_type() == ValueBase::TYPE_ANGLE:
+ duck->signal_edited_angle().clear();
+ duck->signal_edited_angle().connect(
sigc::bind(
sigc::mem_fun(
*canvas_view,
sigc::bind(
sigc::mem_fun(
*canvas_view,
- &studio::CanvasView::on_duck_changed
+ &studio::CanvasView::on_duck_
angle_
changed
),
value_desc
)
),
value_desc
)
@@
-1212,8
+1200,7
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
else
duck->set_type(Duck::TYPE_POSITION);
else
duck->set_type(Duck::TYPE_POSITION);
-
- duck->signal_edited().clear();
+ duck->signal_edited().clear(); // value_desc.get_value_type() == ValueBase::TYPE_VECTOR:
duck->signal_edited().connect(
sigc::bind(
sigc::mem_fun(
duck->signal_edited().connect(
sigc::bind(
sigc::mem_fun(
@@
-1264,7
+1251,6
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
bezier->c1->set_scalar(TANGENT_BEZIER_SCALE);
bezier->c1->set_tangent(true);
bezier->c1->set_scalar(TANGENT_BEZIER_SCALE);
bezier->c1->set_tangent(true);
-
if(!add_to_ducks(synfigapp::ValueDesc(value_node,2),canvas_view,transform_stack))
return false;
bezier->p2=last_duck();
if(!add_to_ducks(synfigapp::ValueDesc(value_node,2),canvas_view,transform_stack))
return false;
bezier->p2=last_duck();
@@
-1351,7
+1337,6
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
ValueNode_Composite::Handle value_node;
value_node=ValueNode_Composite::Handle::cast_dynamic(value_desc.get_value_node());
ValueNode_Composite::Handle value_node;
value_node=ValueNode_Composite::Handle::cast_dynamic(value_desc.get_value_node());
-
if(!add_to_ducks(synfigapp::ValueDesc(value_node,0),canvas_view,transform_stack))
return false;
etl::handle<Duck> vertex_duck(last_duck());
if(!add_to_ducks(synfigapp::ValueDesc(value_node,0),canvas_view,transform_stack))
return false;
etl::handle<Duck> vertex_duck(last_duck());
@@
-1819,7
+1804,6
@@
Duckmatic::add_to_ducks(const synfigapp::ValueDesc& value_desc,etl::handle<Canva
return true;
}
return true;
}
-
break;
default:
break;
break;
default:
break;