Author: Carlos Lopez <[email protected]>
Date:   Sat Aug 13 21:05:25 2011 +0200

To keep back compatibility, don't use homogeneous interpolation when 
homogeneous is off and loading old "0.1" layer version.

---

 .../src/modules/mod_geometry/advanced_outline.cpp  |   27 +++++++++++++------
 .../src/modules/mod_geometry/advanced_outline.h    |    2 +
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/synfig-core/src/modules/mod_geometry/advanced_outline.cpp 
b/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
index bcd9147..dc41268 100644
--- a/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
+++ b/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
@@ -66,7 +66,7 @@ SYNFIG_LAYER_INIT(Advanced_Outline);
 SYNFIG_LAYER_SET_NAME(Advanced_Outline,"advanced_outline");
 SYNFIG_LAYER_SET_LOCAL_NAME(Advanced_Outline,N_("Advanced Outline"));
 SYNFIG_LAYER_SET_CATEGORY(Advanced_Outline,N_("Geometry"));
-SYNFIG_LAYER_SET_VERSION(Advanced_Outline,"0.1");
+SYNFIG_LAYER_SET_VERSION(Advanced_Outline,"0.2");
 SYNFIG_LAYER_SET_CVS_ID(Advanced_Outline,"$Id$");
 /* === P R O C E D U R E S ================================================= */
 Point line_intersection( const Point& p1, const Vector& t1, const Point& p2, 
const Vector& t2 );
@@ -82,6 +82,7 @@ Advanced_Outline::Advanced_Outline()
        dash_offset_=0.0;
        homogeneous_=false;
        dash_enabled_=false;
+       old_version=false;
        clear();
 
        vector<BLinePoint> bline_point_list;
@@ -248,7 +249,7 @@ Advanced_Outline::sync()
                                        {
                                                WidthPoint i(wpback);
                                                WidthPoint n(wpfront);
-                                               if(!homogeneous)
+                                               if(!homogeneous && !old_version)
                                                {
                                                        
i.set_position(std_to_hom(bline, i.get_position(), wplist_.get_loop(), 
blineloop));
                                                        
n.set_position(std_to_hom(bline, n.get_position(), wplist_.get_loop(), 
blineloop));
@@ -261,7 +262,7 @@ Advanced_Outline::sync()
                                        {
                                                WidthPoint i(wpback);
                                                WidthPoint n(wpfront);
-                                               if(!homogeneous)
+                                               if(!homogeneous && !old_version)
                                                {
                                                        
i.set_position(std_to_hom(bline, i.get_position(), wplist_.get_loop(), 
blineloop));
                                                        
n.set_position(std_to_hom(bline, n.get_position(), wplist_.get_loop(), 
blineloop));
@@ -552,7 +553,7 @@ Advanced_Outline::sync()
                                        WidthPoint i(*cwiter);
                                        WidthPoint n(*cwnext);
                                        Real p(ipos);
-                                       if(!homogeneous)
+                                       if(!homogeneous && !old_version)
                                        {
                                                
i.set_position(std_to_hom(bline, i.get_position(), wplist_.get_loop(), 
blineloop));
                                                
n.set_position(std_to_hom(bline, n.get_position(), wplist_.get_loop(), 
blineloop));
@@ -584,7 +585,7 @@ Advanced_Outline::sync()
                                                        WidthPoint i(*cwiter);
                                                        WidthPoint n(*cwnext);
                                                        Real p(ipos);
-                                                       if(!homogeneous)
+                                                       if(!homogeneous && 
!old_version)
                                                        {
                                                                
i.set_position(std_to_hom(bline, i.get_position(), wplist_.get_loop(), 
blineloop));
                                                                
n.set_position(std_to_hom(bline, n.get_position(), wplist_.get_loop(), 
blineloop));
@@ -677,7 +678,7 @@ Advanced_Outline::sync()
                                        WidthPoint i(*cwiter);
                                        WidthPoint n(*cwnext);
                                        Real p(ipos);
-                                       if(!homogeneous)
+                                       if(!homogeneous && !old_version)
                                        {
                                                
i.set_position(std_to_hom(bline, i.get_position(), wplist_.get_loop(), 
blineloop));
                                                
n.set_position(std_to_hom(bline, n.get_position(), wplist_.get_loop(), 
blineloop));
@@ -715,7 +716,7 @@ Advanced_Outline::sync()
                                                        WidthPoint i(*cwiter);
                                                        WidthPoint n(*cwnext);
                                                        Real p(ipos);
-                                                       if(!homogeneous)
+                                                       if(!homogeneous && 
!old_version)
                                                        {
                                                                
i.set_position(std_to_hom(bline, i.get_position(), wplist_.get_loop(), 
blineloop));
                                                                
n.set_position(std_to_hom(bline, n.get_position(), wplist_.get_loop(), 
blineloop));
@@ -746,7 +747,7 @@ Advanced_Outline::sync()
                                        WidthPoint i(*cwiter);
                                        WidthPoint n(*cwnext);
                                        Real po(ipos);
-                                       if(!homogeneous)
+                                       if(!homogeneous && !old_version)
                                        {
                                                
i.set_position(std_to_hom(bline, i.get_position(), wplist_.get_loop(), 
blineloop));
                                                
n.set_position(std_to_hom(bline, n.get_position(), wplist_.get_loop(), 
blineloop));
@@ -775,7 +776,7 @@ Advanced_Outline::sync()
                                WidthPoint i(*cwiter);
                                WidthPoint n(*cwnext);
                                Real po(ipos);
-                               if(!homogeneous)
+                               if(!homogeneous && !old_version)
                                {
                                        i.set_position(std_to_hom(bline, 
i.get_position(), wplist_.get_loop(), blineloop));
                                        n.set_position(std_to_hom(bline, 
n.get_position(), wplist_.get_loop(), blineloop));
@@ -859,6 +860,14 @@ Advanced_Outline::set_time(Context context, Time time, 
Vector pos)const
        context.set_time(time,pos);
 }
 
+bool
+Advanced_Outline::set_version(const synfig::String &ver)
+{
+       if (ver=="0.1")
+               old_version = true;
+       return true;
+}
+
 ValueBase
 Advanced_Outline::get_param(const String& param)const
 {
diff --git a/synfig-core/src/modules/mod_geometry/advanced_outline.h 
b/synfig-core/src/modules/mod_geometry/advanced_outline.h
index e63ff6e..d3626e8 100644
--- a/synfig-core/src/modules/mod_geometry/advanced_outline.h
+++ b/synfig-core/src/modules/mod_geometry/advanced_outline.h
@@ -62,6 +62,7 @@ private:
        bool homogeneous_;
        Real dash_offset_;
        bool dash_enabled_;
+       bool old_version;
 
 public:
        enum CuspType
@@ -79,6 +80,7 @@ public:
        virtual Vocab get_param_vocab()const;
        virtual void set_time(Context context, Time time)const;
        virtual void set_time(Context context, Time time, Vector pos)const;
+       virtual bool set_version(const synfig::String &ver);
        //! Connects the parameter to another Value Node. Implementation for 
this layer
        virtual bool connect_dynamic_param(const String& param, 
etl::loose_handle<ValueNode> x );
 


------------------------------------------------------------------------------
FREE DOWNLOAD - uberSVN with Social Coding for Subversion.
Subversion made easy with a complete admin console. Easy 
to use, easy to manage, easy to install, easy to extend. 
Get a Free download of the new open ALM Subversion platform now.
http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to