X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvaluenode_dynamiclist.h;h=e73afd97d31c07f51cc463d9a4879cf0e59d39bf;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=c7877ce81f8693f4748ae9b7493cd24c4442bbe5;hpb=e8a065f2385c219c511b57dac52786120bfa097d;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/valuenode_dynamiclist.h b/synfig-core/trunk/src/synfig/valuenode_dynamiclist.h index c7877ce..e73afd9 100644 --- a/synfig-core/trunk/src/synfig/valuenode_dynamiclist.h +++ b/synfig-core/trunk/src/synfig/valuenode_dynamiclist.h @@ -1,8 +1,8 @@ /* === S Y N F I G ========================================================= */ /*! \file valuenode_dynamiclist.h -** \brief Template Header +** \brief Header file for implementation of the "Dynamic List" valuenode conversion. ** -** $Id: valuenode_dynamiclist.h,v 1.1.1.1 2005/01/04 01:23:15 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley @@ -41,26 +41,27 @@ namespace synfig { class ValueNode_BLine; - +class Canvas; + /*! \class ValueNode_DynamicList ** \brief Animated List ValueNode ** -** This ValueNode was originaly set up to have a list +** This ValueNode was originally set up to have a list ** of ValueNodes and their associated "on" and "off" points. ** ie: Any time that was directly after an "on" point, -** the item would be "on", and any time that was directly +** the item would be "on", and any time that was directly ** after an "off" point would be "off". This is pretty intuitive. -** However, it does have it's problems. +** However, it does have its problems. ** -** The problems arrise when we introduce the concept of a +** The problems arise when we introduce the concept of a ** Keyframe. Keyframes can be manipulated via the Synfig ** Application Library. They allow the user to quickly -** and "automagickly" rearange an animation by moving -** the associated keyframes. With they old way that the +** and "automagically" rearrange an animation by moving +** the associated keyframes. With the old way that the ** "on" and "off" points were handled, this task became ** overly complicated. ** -** What is required is a "symetric" system of describing +** What is required is a "symmetric" system of describing ** "on" and "off" points. Instead of the point representing ** the state of the item after that point in time, we have ** the point represent only that frame. The state @@ -74,7 +75,7 @@ class ValueNode_BLine; class ValueNode_DynamicList : public LinkableValueNode { public: - + /*! \class ListEntry ** \brief Contains a potential list item, and associated timing information ** @@ -90,43 +91,43 @@ public: friend class ValueNode_BLine; public: typedef synfig::Activepoint Activepoint; - + typedef std::list ActivepointList; - + typedef std::pair findresult; typedef std::pair const_findresult; - + private: mutable Node::time_set times; public: ValueNode::RHandle value_node; - + ActivepointList timing_info; - + private: int index; etl::loose_handle parent_; - void set_parent_value_node(const etl::loose_handle &x) { parent_=x; } + void set_parent_value_node(const etl::loose_handle &x) { parent_=x; } public: int get_index()const { return index; } - - + + bool status_at_time(const Time &x)const; float amount_at_time(const Time &x, bool *rising=0)const; ActivepointList::iterator add(Time time, bool status, int priority=0); ActivepointList::iterator add(const Activepoint &x); - + findresult find_uid(const UniqueID& x); const_findresult find_uid(const UniqueID& x)const; - + findresult find_time(const Time& x); const_findresult find_time(const Time& x)const; - + ActivepointList::iterator find(const UniqueID& x); ActivepointList::const_iterator find(const UniqueID& x)const; ActivepointList::iterator find(const Time& x); @@ -141,10 +142,10 @@ public: ActivepointList::iterator add(Time time) { return add(time, status_at_time(time)); } - void erase(const UniqueID& x); - + void erase(const UniqueID& x); + int find(const Time& begin,const Time& end,std::vector& list); - + const synfig::Node::time_set &get_times() const; const etl::loose_handle &get_parent_value_node()const { return parent_; } @@ -153,7 +154,7 @@ public: ListEntry(const ValueNode::Handle &value_node); ListEntry(const ValueNode::Handle &value_node,Time begin, Time end); }; // END of struct ValueNode_DynamicList::ListEntry - + typedef etl::handle Handle; typedef etl::handle ConstHandle; @@ -169,7 +170,7 @@ public: std::vector list; public: - + void add(const ValueNode::Handle &value_node, int index=-1); void add(const ListEntry &value_node, int index=-1); void erase(const ValueNode::Handle &value_node); @@ -177,7 +178,7 @@ public: int find_next_valid_entry(int x, Time t)const; int find_prev_valid_entry(int x, Time t)const; - + virtual ValueNode::LooseHandle get_link_vfunc(int i)const; virtual int link_count()const; @@ -197,6 +198,8 @@ public: bool get_loop()const { return loop_; } void set_loop(bool x) { loop_=x; } + void set_member_canvas(etl::loose_handle); + ValueBase::Type get_contained_type()const; @@ -217,7 +220,7 @@ public: virtual ListEntry create_list_entry(int index, Time time=0, Real origin=0.5); protected: - + virtual bool set_link_vfunc(int i,ValueNode::Handle x); LinkableValueNode* create_new()const;