00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_APP_ACTION_WAYPOINTSETSMART_H
00026 #define __SYNFIG_APP_ACTION_WAYPOINTSETSMART_H
00027
00028
00029
00030 #include <synfigapp/action.h>
00031 #include <synfigapp/value_desc.h>
00032 #include <synfig/valuenode_animated.h>
00033
00034 #include <list>
00035 #include <set>
00036
00037
00038
00039
00040
00041
00042
00043 namespace synfigapp {
00044
00045 namespace Action {
00046
00047 class WaypointSetSmart :
00048 public Super
00049 {
00050 private:
00051
00052 synfig::ValueNode_Animated::Handle value_node;
00053 synfig::Waypoint waypoint;
00054
00055 bool time_set;
00056
00057 void calc_waypoint();
00058 void enclose_waypoint(const synfig::Waypoint& waypoint);
00059
00060 std::set<synfig::Time> times;
00061
00062 public:
00063
00064 WaypointSetSmart();
00065
00066 static ParamVocab get_param_vocab();
00067 static bool is_candidate(const ParamList &x);
00068
00069 virtual bool set_param(const synfig::String& name, const Param &);
00070 virtual bool is_ready()const;
00071
00072 virtual void prepare();
00073
00074 ACTION_MODULE_EXT
00075 };
00076
00077 };
00078 };
00079
00080
00081
00082 #endif