canvas.h

Go to the documentation of this file.
00001 /* === S Y N F I G ========================================================= */
00021 /* ========================================================================= */
00022 
00023 /* === S T A R T =========================================================== */
00024 
00025 #ifndef __SYNFIG_CANVAS_H
00026 #define __SYNFIG_CANVAS_H
00027 
00028 /* === H E A D E R S ======================================================= */
00029 
00030 #include <map>
00031 #include <list>
00032 #include <ETL/handle>
00033 #include <sigc++/signal.h>
00034 
00035 #include "vector.h"
00036 #include "string.h"
00037 #include "canvasbase.h"
00038 #include "valuenode.h"
00039 #include "keyframe.h"
00040 #include "renddesc.h"
00041 #include "node.h"
00042 #include "guid.h"
00043 
00044 /* === M A C R O S ========================================================= */
00045 
00046 /* === T Y P E D E F S ===================================================== */
00047 
00048 /* === C L A S S E S & S T R U C T S ======================================= */
00049 
00050 namespace synfig {
00051 
00052 class Context;
00053 class GUID;
00054 
00058 class Canvas : public CanvasBase, public Node
00059 {
00060     /*
00061  -- ** -- T Y P E S -----------------------------------------------------------
00062     */
00063 
00064 public:
00065     typedef etl::handle<Canvas> Handle;
00066     typedef etl::loose_handle<Canvas> LooseHandle;
00067     typedef etl::handle<const Canvas> ConstHandle;
00068 
00069     typedef std::list<Handle> Children;
00070 
00071     friend void synfig::optimize_layers(Context, Canvas::Handle);
00072 
00073     /*
00074  -- ** -- D A T A -------------------------------------------------------------
00075     */
00076 
00077 private:
00078 
00080 
00081     String id_;
00082 
00084 
00085     String name_;
00086 
00088 
00089     String description_;
00090 
00092 
00093     String author_;
00094 
00096 
00097     String email_;
00098 
00100 
00101     String file_name_;
00102 
00104 
00105     std::map<String, String> meta_data_;
00106 
00108 
00109     ValueNodeList value_node_list_;
00110 
00112     KeyframeList keyframe_list_;
00113 
00115 
00118     LooseHandle parent_;
00119 
00121 
00122     Children children_;
00123 
00125 
00126     RendDesc desc_;
00127 
00129     Time cur_time_;
00130 
00132     mutable std::map<String,Handle> externals_;
00133 
00135     bool is_inline_;
00136 
00137     mutable bool is_dirty_;
00138 
00139     bool op_flag_;
00140 
00142     std::map<String,std::set<etl::handle<Layer> > > group_db_;
00143 
00144     /*
00145  -- ** -- S I G N A L S -------------------------------------------------------
00146     */
00147 
00148 private:
00149 
00151     sigc::signal<void,String> signal_group_added_;
00152 
00154     sigc::signal<void,String> signal_group_removed_;
00155 
00157     sigc::signal<void,String> signal_group_changed_;
00158 
00159     sigc::signal<void,String,etl::handle<synfig::Layer> > signal_group_pair_added_;
00160     sigc::signal<void,String,etl::handle<synfig::Layer> > signal_group_pair_removed_;
00161 
00163     sigc::signal<void,int*> signal_layers_reordered_;
00164 
00166     sigc::signal<void> signal_rend_desc_changed_;
00167 
00169     sigc::signal<void> signal_id_changed_;
00170 
00172     //sigc::signal<void> signal_dirty_;
00173 
00175     sigc::signal<void> signal_file_name_changed_;
00176 
00178     sigc::signal<void, String> signal_meta_data_changed_;
00179 
00181     std::map<String, sigc::signal<void> > signal_map_meta_data_changed_;
00182 
00183 
00185     sigc::signal<void, etl::handle<ValueNode> > signal_value_node_changed_;
00186 
00187     sigc::signal<void, etl::handle<ValueNode>, etl::handle<ValueNode> > signal_value_node_child_added_;
00188 
00189     sigc::signal<void, etl::handle<ValueNode>, etl::handle<ValueNode> > signal_value_node_child_removed_;
00190 
00191     /*
00192  -- ** -- S I G N A L   I N T E R F A C E -------------------------------------
00193     */
00194 
00195 public:
00196 
00197     sigc::signal<void,String,etl::handle<synfig::Layer> >& signal_group_pair_added() { return signal_group_pair_added_; }
00198     sigc::signal<void,String,etl::handle<synfig::Layer> >& signal_group_pair_removed() { return signal_group_pair_removed_; }
00199 
00201     sigc::signal<void,String>& signal_group_added() { return signal_group_added_; }
00202 
00204     sigc::signal<void,String>& signal_group_removed() { return signal_group_removed_; }
00205 
00207     sigc::signal<void,String>& signal_group_changed() { return signal_group_changed_; }
00208 
00210     sigc::signal<void,int*>& signal_layers_reordered() { return signal_layers_reordered_; }
00211 
00213     sigc::signal<void>& signal_rend_desc_changed() { return signal_rend_desc_changed_; }
00214 
00216     sigc::signal<void>& signal_id_changed() { return signal_id_changed_; }
00217 
00219     sigc::signal<void>& signal_file_name_changed();
00220 
00222     sigc::signal<void, String>& signal_meta_data_changed() { return signal_meta_data_changed_; }
00223 
00225     sigc::signal<void>& signal_meta_data_changed(const String& key) { return signal_map_meta_data_changed_[key]; }
00226 
00227 
00228     sigc::signal<void, etl::handle<ValueNode> >& signal_value_node_changed() { return signal_value_node_changed_; }
00229 
00231     sigc::signal<void>& signal_dirty() { return signal_changed();   }
00232 
00234     sigc::signal<void, etl::handle<ValueNode>, etl::handle<ValueNode> >& signal_value_node_child_added() { return signal_value_node_child_added_; }
00235 
00237     sigc::signal<void, etl::handle<ValueNode>, etl::handle<ValueNode> >& signal_value_node_child_removed() { return signal_value_node_child_removed_; }
00238 
00239     /*
00240  -- ** -- C O N S T R U C T O R S ---------------------------------------------
00241     */
00242 
00243 protected:
00244 
00245     Canvas(const String &name);
00246 
00247 public:
00248 
00249     ~Canvas();
00250 
00251     /*
00252  -- ** -- M E M B E R   F U N C T I O N S -------------------------------------
00253     */
00254 
00255 public:
00256 
00258     std::set<etl::handle<Layer> > get_layers_in_group(const String&group);
00259 
00261     std::set<String> get_groups()const;
00262 
00264     int get_group_count()const;
00265 
00267     void rename_group(const String&old_name,const String&new_name);
00268 
00270     bool is_inline()const { return is_inline_; }
00271 
00273     RendDesc &rend_desc() { return desc_; }
00274 
00276     const RendDesc &rend_desc()const { return desc_; }
00277 
00279     const String & get_name()const { return name_; }
00280 
00282     void set_name(const String &x);
00283 
00285     const String & get_author()const { return author_; }
00286 
00288     void set_author(const String &x);
00289 
00291     const String & get_description()const { return description_; }
00292 
00294     void set_description(const String &x);
00295 
00297     const String & get_id()const { return id_; }
00298 
00300     void set_id(const String &x);
00301 
00303     String get_meta_data(const String& key)const;
00304 
00306     std::list<String> get_meta_data_keys()const;
00307 
00309     void set_meta_data(const String& key, const String& data);
00310 
00312     void erase_meta_data(const String& key);
00313 
00315     String get_relative_id(etl::loose_handle<const Canvas> x)const;
00316 
00318     String _get_relative_id(etl::loose_handle<const Canvas> x)const;
00319 
00321     bool is_root()const { return !parent_; }
00322 
00324 
00325     LooseHandle parent()const { return parent_; }
00326 
00327     LooseHandle get_root()const;
00328 
00330     std::list<Handle> &children() { return children_; }
00331 
00333     const std::list<Handle> &children()const { return children_; }
00334 
00336     //Color get_color(const Point &pos)const;
00337 
00339     void set_time(Time t)const;
00340 
00342     Time get_time()const { return cur_time_; }
00343 
00345     int size()const;
00346 
00348     void clear();
00349 
00351     bool empty()const;
00352 
00354     // ValueNodeList &value_node_list() { return value_node_list_; }
00355 
00357     const ValueNodeList &value_node_list()const;
00358 
00360     KeyframeList &keyframe_list();
00361 
00363     const KeyframeList &keyframe_list()const;
00364 
00366 
00369     ValueNode::Handle find_value_node(const String &id);
00370 
00372     ValueNode::Handle surefind_value_node(const String &id);
00373 
00375 
00378     ValueNode::ConstHandle find_value_node(const String &id)const;
00379 
00381     void add_value_node(ValueNode::Handle x, const String &id);
00382 
00384     //void rename_value_node(ValueNode::Handle x, const String &id);
00385 
00387     void remove_value_node(ValueNode::Handle x);
00388 
00390     void remove_value_node(const String &id) { remove_value_node(find_value_node(id)); }
00391 
00393 
00397     Handle surefind_canvas(const String &id);
00398 
00400 
00403     Handle find_canvas(const String &id);
00404 
00406 
00409     ConstHandle find_canvas(const String &id)const;
00410 
00412     //void set_file_path(const String &);
00413 
00415     String get_file_path()const;
00416 
00418     void set_file_name(const String &);
00419 
00421     String get_file_name()const;
00422 
00424     Handle new_child_canvas();
00425 
00427     Handle new_child_canvas(const String &id);
00428 
00430     Handle add_child_canvas(Handle child_canvas, const String &id);
00431 
00432     void remove_child_canvas(Handle child_canvas);
00433 
00434     etl::handle<Layer> find_layer(const Point &pos);
00435 
00436     int get_depth(etl::handle<Layer>)const;
00437 
00438     Context get_context()const;
00439 
00440     iterator end();
00441 
00442     const_iterator end()const;
00443 
00444     reverse_iterator rbegin();
00445 
00446     const_reverse_iterator rbegin()const;
00447 
00448     etl::handle<Layer> &back();
00449 
00450     void push_back(etl::handle<Layer> x);
00451 
00452     void push_front(etl::handle<Layer> x);
00453 
00454     void push_back_simple(etl::handle<Layer> x);
00455 
00456     void insert(iterator iter,etl::handle<Layer> x);
00457     void erase(iterator iter);
00458 
00459     const etl::handle<Layer> &back()const;
00460 
00461     void set_inline(LooseHandle parent);
00462 
00463     static Handle create();
00464 
00465     static Handle create_inline(Handle parent);
00466 
00467     Handle clone(const GUID& deriv_guid=GUID())const;
00468 
00469 private:
00470     void add_group_pair(String group, etl::handle<Layer> layer);
00471     void remove_group_pair(String group, etl::handle<Layer> layer);
00472 
00473 protected:
00474     virtual void on_changed();
00475     virtual void get_times_vfunc(Node::time_set &set) const;
00476 }; // END of class Canvas
00477 
00478 void optimize_layers(Context context, Canvas::Handle op_canvas);
00479 
00480 
00481 }; // END of namespace synfig
00482 
00483 /* === E N D =============================================================== */
00484 
00485 #endif

Generated on Wed Aug 15 05:00:23 2007 for synfig by  doxygen 1.5.3