**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2007, 2008 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
String path;
+ String errors_text;
+ String warnings_text;
+
GUID guid_;
/*
const synfig::String& get_path()const { return path; }
- //! \todo writeme
- Canvas::Handle parse_from_file(const String &filename);
+ const synfig::String& get_errors_text()const { return errors_text; }
+ const synfig::String& get_warnings_text()const { return warnings_text; }
- Canvas::Handle parse_from_file_as(const String &filename,const String &as);
+ static void register_canvas_in_map(Canvas::Handle canvas, String as);
//! \todo writeme
- Canvas::Handle parse_from_string(const String &data);
+ Canvas::Handle parse_from_file_as(const String &filename,const String &as,String &errors);
+
+ static std::set<String> loading_;
private:
// ValueBase Parsing Functions
- Real parse_real(xmlpp::Element *node,Canvas::Handle canvas);
+ Real parse_real(xmlpp::Element *node);
Time parse_time(xmlpp::Element *node,Canvas::Handle canvas);
- int parse_integer(xmlpp::Element *node,Canvas::Handle canvas);
- Vector parse_vector(xmlpp::Element *node,Canvas::Handle canvas);
- Color parse_color(xmlpp::Element *node,Canvas::Handle canvas);
- Angle parse_angle(xmlpp::Element *node,Canvas::Handle canvas);
- String parse_string(xmlpp::Element *node,Canvas::Handle canvas);
- bool parse_bool(xmlpp::Element *node,Canvas::Handle canvas);
- Segment parse_segment(xmlpp::Element *node,Canvas::Handle canvas);
+ int parse_integer(xmlpp::Element *node);
+ Vector parse_vector(xmlpp::Element *node);
+ Color parse_color(xmlpp::Element *node);
+ Angle parse_angle(xmlpp::Element *node);
+ String parse_string(xmlpp::Element *node);
+ bool parse_bool(xmlpp::Element *node);
+ Segment parse_segment(xmlpp::Element *node);
ValueBase parse_list(xmlpp::Element *node,Canvas::Handle canvas);
- Gradient parse_gradient(xmlpp::Element *node,Canvas::Handle canvas);
- BLinePoint parse_bline_point(xmlpp::Element *node,Canvas::Handle canvas);
+ Gradient parse_gradient(xmlpp::Element *node);
+ BLinePoint parse_bline_point(xmlpp::Element *node);
Keyframe parse_keyframe(xmlpp::Element *node,Canvas::Handle canvas);
etl::handle<ValueNode_Animated> parse_animated(xmlpp::Element *node,Canvas::Handle canvas);
etl::handle<ValueNode_Subtract> parse_subtract(xmlpp::Element *node,Canvas::Handle canvas);
etl::handle<LinkableValueNode> parse_linkable_value_node(xmlpp::Element *node,Canvas::Handle canvas);
- etl::handle<ValueNode_Composite> parse_composite(xmlpp::Element *node,Canvas::Handle canvas);
etl::handle<ValueNode_DynamicList> parse_dynamic_list(xmlpp::Element *node,Canvas::Handle canvas);
}; // END of CanvasParser
//! Loads a canvas from \a filename
/*! \return The Canvas's handle on success, an empty handle on failure */
-extern Canvas::Handle open_canvas(const String &filename);
-extern Canvas::Handle open_canvas_as(const String &filename,const String &as);
-
-//! Retrieves a Canvas from a string in XML format
-extern Canvas::Handle string_to_canvas(const String &data);
+extern Canvas::Handle open_canvas(const String &filename,String &errors,String &warnings);
+extern Canvas::Handle open_canvas_as(const String &filename,const String &as,String &errors,String &warnings);
std::map<synfig::String, etl::loose_handle<Canvas> >& get_open_canvas_map();