synfig-core  1.0.3
valuenode_bline.h
Go to the documentation of this file.
1 /* === S Y N F I G ========================================================= */
23 /* ========================================================================= */
24 
25 /* === S T A R T =========================================================== */
26 
27 #ifndef __SYNFIG_VALUENODE_BLINE_H
28 #define __SYNFIG_VALUENODE_BLINE_H
29 
30 /* === H E A D E R S ======================================================= */
31 
32 #include <vector>
33 #include <list>
34 
35 #include <synfig/valuenode.h>
36 #include <synfig/time.h>
37 #include <synfig/uniqueid.h>
38 #include <synfig/blinepoint.h>
39 #include "valuenode_dynamiclist.h"
40 
41 /* === M A C R O S ========================================================= */
42 
43 /* === C L A S S E S & S T R U C T S ======================================= */
44 
45 namespace synfig {
46 
47 
49 ValueBase convert_bline_to_segment_list(const ValueBase &bline);
50 
52 ValueBase convert_bline_to_width_list(const ValueBase &bline);
53 
55 Real find_closest_point(const ValueBase &bline, const Point &pos, Real &radius, bool loop, Point *out_point = 0);
56 
58 Real std_to_hom(const ValueBase &bline, Real pos, bool index_loop, bool bline_loop);
59 
61 Real hom_to_std(const ValueBase &bline, Real pos, bool index_loop, bool bline_loop);
62 
64 Real bline_length(const ValueBase &bline, bool bline_loop, std::vector<Real> *lengths);
65 
66 
71 {
72 public:
73 
74  typedef etl::handle<ValueNode_BLine> Handle;
75  typedef etl::handle<const ValueNode_BLine> ConstHandle;
76 
77 
78  ValueNode_BLine(etl::loose_handle<Canvas> canvas = 0);
79 
80 public:
81 
82  virtual ValueBase operator()(Time t)const;
83 
84  virtual ~ValueNode_BLine();
85 
86  virtual String link_local_name(int i)const;
87 
88  virtual String get_name()const;
89  virtual String get_local_name()const;
90 
91  virtual ListEntry create_list_entry(int index, Time time=0, Real origin=0.5);
92 
93 protected:
94 
96 
97 public:
98  //using synfig::LinkableValueNode::set_link_vfunc;
99  static bool check_type(Type &type);
100  static ValueNode_BLine* create(const ValueBase &x=type_list, etl::loose_handle<Canvas> canvas = 0);
101 
104  BLinePoint get_blinepoint(std::vector<ListEntry>::const_iterator current, Time t)const;
105  virtual Vocab get_children_vocab_vfunc()const;
106 #ifdef _DEBUG
107  virtual void ref()const;
108  virtual bool unref()const;
109 #endif
110 }; // END of class ValueNode_BLine
111 
113 
114 }; // END of namespace synfig
115 
116 /* === E N D =============================================================== */
117 
118 #endif