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

Reply via email to