projects
/
synfig.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Tidying.
[synfig.git]
/
synfig-core
/
trunk
/
src
/
synfig
/
savecanvas.cpp
diff --git
a/synfig-core/trunk/src/synfig/savecanvas.cpp
b/synfig-core/trunk/src/synfig/savecanvas.cpp
index
690277c
..
8988a50
100644
(file)
--- a/
synfig-core/trunk/src/synfig/savecanvas.cpp
+++ b/
synfig-core/trunk/src/synfig/savecanvas.cpp
@@
-57,6
+57,10
@@
#include "gradient.h"
#include <errno.h>
#include "gradient.h"
#include <errno.h>
+extern "C" {
+#include <libxml/tree.h>
+}
+
#endif
/* === U S I N G =========================================================== */
#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","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");
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:
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");
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","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");
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:
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:
break;
default:
- error("Unknown waypoint type for \"
before
\" attribute");
+ error("Unknown waypoint type for \"
after
\" attribute");
}
if(iter->get_tension()!=0.0)
}
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");
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);
try
{
assert(canvas);