Author: Carlos Lopez <[email protected]>
Date: Thu Jul 28 11:46:32 2011 +0200
Add code to parse/encode properly the DILits Linkable Value Node
---
synfig-core/src/synfig/loadcanvas.cpp | 28 +++++++++++++++++++++++++++-
synfig-core/src/synfig/savecanvas.cpp | 13 +++++++++++++
2 files changed, 40 insertions(+), 1 deletions(-)
diff --git a/synfig-core/src/synfig/loadcanvas.cpp
b/synfig-core/src/synfig/loadcanvas.cpp
index 9374ade..085d5e3 100644
--- a/synfig-core/src/synfig/loadcanvas.cpp
+++ b/synfig-core/src/synfig/loadcanvas.cpp
@@ -59,6 +59,7 @@
#include "valuenode_segcalcvertex.h"
#include "valuenode_bline.h"
#include "valuenode_wplist.h"
+#include "valuenode_dilist.h"
#include "layer.h"
#include "string.h"
@@ -1685,7 +1686,8 @@ CanvasParser::parse_dynamic_list(xmlpp::Element
*element,Canvas::Handle canvas)
{
assert(element->get_name()=="dynamic_list" ||
element->get_name()=="bline" ||
- element->get_name()=="wplist");
+ element->get_name()=="wplist" ||
+ element->get_name()=="dilist");
const float fps(canvas?canvas->rend_desc().get_frame_rate():0);
@@ -1706,6 +1708,7 @@ CanvasParser::parse_dynamic_list(xmlpp::Element
*element,Canvas::Handle canvas)
handle<ValueNode_DynamicList> value_node;
handle<ValueNode_BLine> bline_value_node;
handle<ValueNode_WPList> wplist_value_node;
+ handle<ValueNode_DIList> dilist_value_node;
if(element->get_name()=="bline")
{
@@ -1739,6 +1742,26 @@ CanvasParser::parse_dynamic_list(xmlpp::Element
*element,Canvas::Handle canvas)
wplist_value_node->set_homogeneous(false);
}
}
+ else if(element->get_name()=="dilist")
+ {
+ value_node=dilist_value_node=ValueNode_DIList::create();
+ if(element->get_attribute("loop"))
+ {
+ String loop=element->get_attribute("loop")->get_value();
+ if(loop=="true" || loop=="1" || loop=="TRUE" ||
loop=="True")
+ dilist_value_node->set_loop(true);
+ else
+ dilist_value_node->set_loop(false);
+ }
+ if(element->get_attribute("enabled"))
+ {
+ String
homogeneous=element->get_attribute("enabled")->get_value();
+ if(homogeneous=="true" || homogeneous=="1" ||
homogeneous=="TRUE" || homogeneous=="True")
+ dilist_value_node->set_enabled(true);
+ else
+ dilist_value_node->set_enabled(false);
+ }
+ }
else
value_node=ValueNode_DynamicList::create(type);
@@ -1963,6 +1986,9 @@ CanvasParser::parse_value_node(xmlpp::Element
*element,Canvas::Handle canvas)
if(element->get_name()=="wplist") // This is not a typo. The dynamic
list parser will parse a wplist.
value_node=parse_dynamic_list(element,canvas);
else
+ if(element->get_name()=="dilist") // This is not a typo. The dynamic
list parser will parse a dilist.
+ value_node=parse_dynamic_list(element,canvas);
+ else
if(LinkableValueNode::book().count(element->get_name()))
{
value_node=parse_linkable_value_node(element,canvas);
diff --git a/synfig-core/src/synfig/savecanvas.cpp
b/synfig-core/src/synfig/savecanvas.cpp
index 65fbaa4..2283db4 100644
--- a/synfig-core/src/synfig/savecanvas.cpp
+++ b/synfig-core/src/synfig/savecanvas.cpp
@@ -44,6 +44,7 @@
#include "valuenode_reference.h"
#include "valuenode_bline.h"
#include "valuenode_wplist.h"
+#include "valuenode_dilist.h"
#include "dashitem.h"
#include "time.h"
#include "keyframe.h"
@@ -390,6 +391,7 @@ xmlpp::Element* encode_dynamic_list(xmlpp::Element*
root,ValueNode_DynamicList::
ValueNode_BLine::ConstHandle
bline_value_node(ValueNode_BLine::ConstHandle::cast_dynamic(value_node));
ValueNode_WPList::ConstHandle
wplist_value_node(ValueNode_WPList::ConstHandle::cast_dynamic(value_node));
+ ValueNode_DIList::ConstHandle
dilist_value_node(ValueNode_DIList::ConstHandle::cast_dynamic(value_node));
if(bline_value_node)
{
@@ -409,6 +411,17 @@ xmlpp::Element* encode_dynamic_list(xmlpp::Element*
root,ValueNode_DynamicList::
else
root->set_attribute("homogeneous", "false");
}
+ if(dilist_value_node)
+ {
+ if(dilist_value_node->get_loop())
+ root->set_attribute("loop","true");
+ else
+ root->set_attribute("loop","false");
+ if(dilist_value_node->get_enabled())
+ root->set_attribute("enabled", "true");
+ else
+ root->set_attribute("enabled", "false");
+ }
for(iter=value_node->list.begin();iter!=value_node->list.end();++iter)
{
------------------------------------------------------------------------------
Got Input? Slashdot Needs You.
Take our quick survey online. Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl