00001
00021
00022
00023
00024
00025 #ifndef __SYNFIG_APP_ACTION_ACTIVEPOINTSETSMART_H
00026 #define __SYNFIG_APP_ACTION_ACTIVEPOINTSETSMART_H
00027
00028
00029
00030 #include <synfigapp/action.h>
00031 #include <synfigapp/value_desc.h>
00032 #include <synfig/valuenode_dynamiclist.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 ActivepointSetSmart :
00048 public Super
00049 {
00050 private:
00051
00052 ValueDesc value_desc;
00053 synfig::ValueNode_DynamicList::Handle value_node;
00054 int index;
00055 synfig::Activepoint activepoint;
00056 bool time_set;
00057
00058 void calc_activepoint();
00059 void enclose_activepoint(const synfig::Activepoint& activepoint);
00060
00061 std::set<synfig::Time> times;
00062
00063 public:
00064
00065 ActivepointSetSmart();
00066
00067 static ParamVocab get_param_vocab();
00068 static bool is_candidate(const ParamList &x);
00069
00070 virtual bool set_param(const synfig::String& name, const Param &);
00071 virtual bool is_ready()const;
00072
00073 virtual void prepare();
00074
00075 ACTION_MODULE_EXT
00076 };
00077
00078 };
00079 };
00080
00081
00082
00083 #endif