synfig-core  1.0.3
keyframe.h
Go to the documentation of this file.
1 /* === S Y N F I G ========================================================= */
22 /* ========================================================================= */
23 
24 /* === S T A R T =========================================================== */
25 
26 #ifndef __SYNFIG_KEYFRAME_H
27 #define __SYNFIG_KEYFRAME_H
28 
29 /* === H E A D E R S ======================================================= */
30 
31 #include <ETL/handle>
32 #include <vector>
33 #include "string.h"
34 #include "time.h"
35 #include "uniqueid.h"
36 #include "guid.h"
37 #include "waypoint.h"
38 
39 /* === M A C R O S ========================================================= */
40 
41 /* === T Y P E D E F S ===================================================== */
42 
43 /* === C L A S S E S & S T R U C T S ======================================= */
44 
45 namespace synfig {
46 
54 class Keyframe : public UniqueID
55 {
56 private:
57 
58  Time time_;
59  String desc_;
60  GUID guid_;
61 
65  bool active_;
66 
67  Waypoint::Model waypoint_model_;
71  bool has_waypoint_model_;
72 
73 public:
74 
75  Keyframe();
76 
77  Keyframe(const Time &time);
78 
79  ~Keyframe();
80 
81  void set_time(Time x) { time_=x; }
82 
83  Time get_time()const { return time_; }
84 
85  void set_description(String x) { desc_=x; }
86 
87  String get_description()const { return desc_; }
88 
89  const GUID& get_guid()const { return guid_; }
90  void set_guid(const GUID& x) { guid_=x; }
91 
93  void enable() { set_active(true); }
94 
96 
97  void disable() { set_active(false); }
98 
100 
101  void set_active(bool x);
102 
104  bool active()const { return active_; }
105 
106  using UniqueID::operator<;
107  using UniqueID::operator==;
108  using UniqueID::operator!=;
109  using UniqueID::operator=;
110 
111  bool operator<(const Keyframe &rhs)const { return time_<rhs.time_; }
112  bool operator<(const Time &rhs)const { return time_<rhs; }
113 
114 // bool operator==(const Keyframe &rhs)const { return id_==rhs.id_; }
115  bool operator==(const Time &rhs)const { return time_==rhs; }
116 
117 // bool operator!=(const Keyframe &rhs)const { return id_!=rhs.id_; }
118  bool operator!=(const Time &rhs)const { return time_!=rhs; }
119 
120  const Waypoint::Model &get_waypoint_model()const { return waypoint_model_; }
122  void apply_model(const Waypoint::Model &x);
124  bool has_model() const {return has_waypoint_model_; }
125 }; // END of class Keyframe
126 
127 class KeyframeList : public std::vector<Keyframe>
128 {
129 
130 public:
131 
132  iterator add(const Keyframe &x);
133 
134  void erase(const UniqueID &x);
135 
136  iterator find(const UniqueID &x);
137 
138  const_iterator find(const UniqueID &x)const;
139 
141  iterator find(const Time &x);
142 
144  iterator find_next(const Time &x, bool ignore_disabled = true);
145 
147  iterator find_prev(const Time &x, bool ignore_disabled = true);
148 
149  const_iterator find(const Time &x)const;
150  const_iterator find_next(const Time &x, bool ignore_disabled = true)const;
151  const_iterator find_prev(const Time &x, bool ignore_disabled = true)const;
152 
153  void find_prev_next(const Time& time, Time &prev, Time &next, bool ignore_disabled = true)const;
154 
155  void insert_time(const Time& location, const Time& delta);
156 
157  void dump()const;
158  void sync();
159 };
160 
161 //typedef std::list<Keyframe> KeyframeList;
162 
163 }; // END of namespace synfig
164 
165 /* === E N D =============================================================== */
166 
167 #endif