X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fsavecanvas.cpp;h=8988a50d88c9ddecd388e23c41a4f69970bafe9b;hb=d3187b0a5a28aa2e07d68b415bc21e2df5ce9791;hp=690277cf630f1af91daeac96aab832d038cf19f8;hpb=c3ad95144d148602f672e95ddda1f18fc35502f8;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/savecanvas.cpp b/synfig-core/trunk/src/synfig/savecanvas.cpp index 690277c..8988a50 100644 --- a/synfig-core/trunk/src/synfig/savecanvas.cpp +++ b/synfig-core/trunk/src/synfig/savecanvas.cpp @@ -57,6 +57,10 @@ #include "gradient.h" #include +extern "C" { +#include +} + #endif /* === U S I N G =========================================================== */ @@ -287,7 +291,9 @@ xmlpp::Element* encode_animated(xmlpp::Element* root,ValueNode_Animated::ConstHa waypoint_node->set_attribute("before","halt"); break; case INTERPOLATION_LINEAR: - waypoint_node->set_attribute("before","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"); break; case INTERPOLATION_MANUAL: waypoint_node->set_attribute("before","manual"); @@ -296,7 +302,9 @@ 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 + // 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"); break; default: error("Unknown waypoint type for \"before\" attribute"); @@ -308,7 +316,9 @@ xmlpp::Element* encode_animated(xmlpp::Element* root,ValueNode_Animated::ConstHa waypoint_node->set_attribute("after","halt"); break; case INTERPOLATION_LINEAR: - waypoint_node->set_attribute("after","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"); break; case INTERPOLATION_MANUAL: waypoint_node->set_attribute("after","manual"); @@ -317,10 +327,12 @@ 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 + // 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"); break; default: - error("Unknown waypoint type for \"before\" attribute"); + error("Unknown waypoint type for \"after\" attribute"); } if(iter->get_tension()!=0.0) @@ -739,6 +751,11 @@ 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") + xmlSetCompressMode(9); + else + xmlSetCompressMode(0); + try { assert(canvas);