X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fsavecanvas.cpp;h=d381c7816a53dddfe196c715b756a3da73c386d4;hb=fc6d3aabad27fd3b4cf95b4d9fafd96a91e9f640;hp=8988a50d88c9ddecd388e23c41a4f69970bafe9b;hpb=0de47b351b4b0f1ada3cb7a83e5e46f9ca8a5460;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/savecanvas.cpp b/synfig-core/trunk/src/synfig/savecanvas.cpp index 8988a50..d381c78 100644 --- a/synfig-core/trunk/src/synfig/savecanvas.cpp +++ b/synfig-core/trunk/src/synfig/savecanvas.cpp @@ -6,6 +6,7 @@ ** ** \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 @@ -247,7 +248,7 @@ xmlpp::Element* encode_value(xmlpp::Element* root,const ValueBase &data,Canvas:: root->set_name("nil"); return root; default: - synfig::error(strprintf("Unknown value(%s), cannot create XML representation!",ValueBase::type_name(data.get_type()).c_str())); + synfig::error(strprintf(_("Unknown value(%s), cannot create XML representation!"),ValueBase::type_local_name(data.get_type()).c_str())); root->set_name("nil"); return root; } @@ -291,9 +292,7 @@ xmlpp::Element* encode_animated(xmlpp::Element* root,ValueNode_Animated::ConstHa waypoint_node->set_attribute("before","halt"); break; case INTERPOLATION_LINEAR: - // This is the default value for angles, so don't add a new attribute for them - if (value_node->get_type() != ValueBase::TYPE_ANGLE) - waypoint_node->set_attribute("before","linear"); + waypoint_node->set_attribute("before","linear"); break; case INTERPOLATION_MANUAL: waypoint_node->set_attribute("before","manual"); @@ -302,9 +301,7 @@ xmlpp::Element* encode_animated(xmlpp::Element* root,ValueNode_Animated::ConstHa waypoint_node->set_attribute("before","constant"); break; case INTERPOLATION_TCB: - // This is the default value, so don't add a new attribute (unless it's an angle - they default to linear) - if (value_node->get_type() == ValueBase::TYPE_ANGLE) - waypoint_node->set_attribute("before","auto"); + waypoint_node->set_attribute("before","auto"); break; default: error("Unknown waypoint type for \"before\" attribute"); @@ -316,9 +313,7 @@ xmlpp::Element* encode_animated(xmlpp::Element* root,ValueNode_Animated::ConstHa waypoint_node->set_attribute("after","halt"); break; case INTERPOLATION_LINEAR: - // This is the default value for angles, so don't add a new attribute for them - if (value_node->get_type() != ValueBase::TYPE_ANGLE) - waypoint_node->set_attribute("after","linear"); + waypoint_node->set_attribute("after","linear"); break; case INTERPOLATION_MANUAL: waypoint_node->set_attribute("after","manual"); @@ -327,9 +322,7 @@ xmlpp::Element* encode_animated(xmlpp::Element* root,ValueNode_Animated::ConstHa waypoint_node->set_attribute("after","constant"); break; case INTERPOLATION_TCB: - // This is the default value, so don't add a new attribute (unless it's an angle - they default to linear) - if (value_node->get_type() == ValueBase::TYPE_ANGLE) - waypoint_node->set_attribute("after","auto"); + waypoint_node->set_attribute("after","auto"); break; default: error("Unknown waypoint type for \"after\" attribute"); @@ -349,27 +342,6 @@ xmlpp::Element* encode_animated(xmlpp::Element* root,ValueNode_Animated::ConstHa return root; } -xmlpp::Element* encode_composite(xmlpp::Element* root,ValueNode_Composite::ConstHandle value_node,Canvas::ConstHandle canvas=0) -{ - assert(value_node); - root->set_name("composite"); - - root->set_attribute("type",ValueBase::type_name(value_node->get_type())); - - int i; - for(i=0;ilink_count();i++) - { - string name(strprintf("c%d",i+1)); - assert(value_node->get_link(i)); - if(value_node->get_link(i)->is_exported()) - root->set_attribute(name,value_node->get_link(i)->get_relative_id(canvas)); - else - encode_value_node(root->add_child(name)->add_child("value_node"),value_node->get_link(i).constant(),canvas); - } - - return root; -} - xmlpp::Element* encode_subtract(xmlpp::Element* root,ValueNode_Subtract::ConstHandle value_node,Canvas::ConstHandle canvas=0) { assert(value_node); @@ -524,9 +496,6 @@ xmlpp::Element* encode_value_node(xmlpp::Element* root,ValueNode::ConstHandle va if(ValueNode_Animated::ConstHandle::cast_dynamic(value_node)) encode_animated(root,ValueNode_Animated::ConstHandle::cast_dynamic(value_node),canvas); else - if(ValueNode_Composite::ConstHandle::cast_dynamic(value_node)) - encode_composite(root,ValueNode_Composite::ConstHandle::cast_dynamic(value_node),canvas); - else if(ValueNode_Subtract::ConstHandle::cast_dynamic(value_node)) encode_subtract(root,ValueNode_Subtract::ConstHandle::cast_dynamic(value_node),canvas); else @@ -643,7 +612,7 @@ xmlpp::Element* encode_canvas(xmlpp::Element* root,Canvas::ConstHandle canvas) root->set_name("canvas"); if(canvas->is_root()) - root->set_attribute("version","0.1"); + root->set_attribute("version",canvas->get_version()); if(!canvas->get_id().empty() && !canvas->is_root() && !canvas->is_inline()) root->set_attribute("id",canvas->get_id()); @@ -712,7 +681,8 @@ xmlpp::Element* encode_canvas(xmlpp::Element* root,Canvas::ConstHandle canvas) } // Output the section - if(!canvas->is_inline() && !canvas->value_node_list().empty() || !canvas->children().empty()) + //! \todo check where the parentheses should really go - around the && or the ||? + if((!canvas->is_inline() && !canvas->value_node_list().empty()) || !canvas->children().empty()) { xmlpp::Element *node=root->add_child("defs"); const ValueNodeList &value_node_list(canvas->value_node_list()); @@ -751,7 +721,7 @@ synfig::save_canvas(const String &filename, Canvas::ConstHandle canvas) synfig::String tmp_filename(filename+".TMP"); - if (String(filename.begin() + filename.find_last_of('.')+1, filename.end()) == "sifz") + if (filename_extension(filename) == ".sifz") xmlSetCompressMode(9); else xmlSetCompressMode(0);