**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007 Chris Moore
**
** This package is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
#include <list>
#include <ETL/handle>
#include <sigc++/signal.h>
+#include <sigc++/connection.h>
#include "vector.h"
#include "string.h"
/* === M A C R O S ========================================================= */
+#define CURRENT_CANVAS_VERSION "0.2"
+
/* === T Y P E D E F S ===================================================== */
/* === C L A S S E S & S T R U C T S ======================================= */
typedef std::list<Handle> Children;
- friend void synfig::optimize_layers(Context, Canvas::Handle);
+ friend void synfig::optimize_layers(Context, Canvas::Handle, bool seen_motion_blur);
/*
-- ** -- D A T A -------------------------------------------------------------
/*! \see set_description(), get_description() */
String description_;
+ //! Contains the canvas' version string
+ /*! \see set_version(), get_version() */
+ String version_;
+
//! Contains the author's name
/*! \see set_author(), get_author() */
String author_;
//! Layer Group database
std::map<String,std::set<etl::handle<Layer> > > group_db_;
+ //! Layer Connection database
+ std::map<etl::loose_handle<Layer>,std::vector<sigc::connection> > connections_;
+
/*
-- ** -- S I G N A L S -------------------------------------------------------
*/
//! ValueBasenode Changed
sigc::signal<void, etl::handle<ValueNode> > signal_value_node_changed_;
+ sigc::signal<void, etl::handle<ValueNode> > signal_value_node_renamed_;
+
sigc::signal<void, etl::handle<ValueNode>, etl::handle<ValueNode> > signal_value_node_child_added_;
sigc::signal<void, etl::handle<ValueNode>, etl::handle<ValueNode> > signal_value_node_child_removed_;
sigc::signal<void, etl::handle<ValueNode> >& signal_value_node_changed() { return signal_value_node_changed_; }
+ sigc::signal<void, etl::handle<ValueNode> >& signal_value_node_renamed() { return signal_value_node_renamed_; }
+
//! Dirty
sigc::signal<void>& signal_dirty() { return signal_changed(); }
//! Sets the name of the canvas
void set_name(const String &x);
+ //! Gets the version string of the canvas
+ const String get_version()const { return version_; }
+
+ //! Sets the version string of the canvas
+ void set_version(const String &x) { version_ = x; }
+
//! Gets the author of the canvas
const String & get_author()const { return author_; }
private:
void add_group_pair(String group, etl::handle<Layer> layer);
void remove_group_pair(String group, etl::handle<Layer> layer);
+ void add_connection(etl::loose_handle<Layer> layer, sigc::connection connection);
+ void disconnect_connections(etl::loose_handle<Layer> layer);
protected:
virtual void on_changed();
virtual void get_times_vfunc(Node::time_set &set) const;
}; // END of class Canvas
-void optimize_layers(Context context, Canvas::Handle op_canvas);
+void optimize_layers(Context context, Canvas::Handle op_canvas, bool seen_motion_blur=false);
}; // END of namespace synfig