Author: Carlos Lopez <[email protected]>
Date:   Mon Aug  8 14:18:16 2011 +0200

Rewrite DashItem class as independent class and not inherited from WidthPoint 
since it doesn't offer any advantage

---

 synfig-core/src/synfig/dashitem.cpp |   62 ++++++++++++++++++++++++-----------
 synfig-core/src/synfig/dashitem.h   |   23 +++++++++++--
 synfig-core/src/synfig/value.h      |    2 +-
 3 files changed, 63 insertions(+), 24 deletions(-)

diff --git a/synfig-core/src/synfig/dashitem.cpp 
b/synfig-core/src/synfig/dashitem.cpp
index 8a163f2..a0aca8b 100644
--- a/synfig-core/src/synfig/dashitem.cpp
+++ b/synfig-core/src/synfig/dashitem.cpp
@@ -47,48 +47,72 @@ using namespace synfig;
 
 /* === M E T H O D S ======================================================= */
 
-DashItem::DashItem()
+DashItem::DashItem():
+offset_(0.1),
+length_(0.1)
 {
-       set_offset(0.1);
-       set_length(0.1);
-       set_side_type_before(TYPE_FLAT);
-       set_side_type_after(TYPE_FLAT);
+       side_type_[0] = side_type_[1] = TYPE_FLAT;
 }
 
-DashItem::DashItem(const DashItem &ref) :
-WidthPoint::WidthPoint(ref.get_offset(), ref.get_length(), 
ref.get_side_type_before(), ref.get_side_type_after())
-{
-}
 
-DashItem::DashItem(Real offset, Real length, int sidebefore, int sideafter)
+DashItem::DashItem(Real offset, Real length, int sidebefore, int sideafter):
+       offset_(offset),
+       length_(length)
 {
-       set_offset(offset);
-       set_width(length);
-       set_side_type_before(sidebefore);
-       set_side_type_after(sideafter);
+       side_type_[0]=sidebefore;
+       side_type_[1]=sideafter;
 }
 
-
 void
 DashItem::set_length(Real x)
 {
-       set_width(x);
+       length_=x;
 }
 
 const Real&
 DashItem::get_length()const
 {
-       return get_width();
+       return length_;
 }
 
 void
 DashItem::set_offset(Real x)
 {
-       set_position(x);
+       offset_=x;
 }
 
 const Real&
 DashItem::get_offset()const
 {
-       return get_position();
+       return offset_;
+}
+
+int
+DashItem::get_side_type_before()const
+{
+       return side_type_[0];
+}
+
+void
+DashItem::set_side_type_before(int sidebefore)
+{
+       side_type_[0]=sidebefore;
+}
+
+int
+DashItem::get_side_type_after()const
+{
+       return side_type_[1];
+}
+
+void
+DashItem::set_side_type_after(int sideafter)
+{
+       side_type_[1]=sideafter;
+}
+
+int
+DashItem::get_side_type(int i)const
+{
+       return i>0? side_type_[1]: side_type_[0];
 }
diff --git a/synfig-core/src/synfig/dashitem.h 
b/synfig-core/src/synfig/dashitem.h
index bfc6475..08eacf2 100644
--- a/synfig-core/src/synfig/dashitem.h
+++ b/synfig-core/src/synfig/dashitem.h
@@ -28,7 +28,8 @@
 
 /* === H E A D E R S ======================================================= */
 
-#include "widthpoint.h"
+#include "uniqueid.h"
+#include "real.h"
 
 /* === M A C R O S ========================================================= */
 
@@ -38,12 +39,21 @@
 
 namespace synfig {
 
-class DashItem : public WidthPoint
+class DashItem : public UniqueID
 {
+private:
+       Real offset_;
+       Real length_;
+       int side_type_[2]; // Before [0] and After[1] side types
 public:
-
+       enum SideType
+       {
+               TYPE_ROUNDED         =0,
+               TYPE_SQUARED         =1,
+               TYPE_PEAK            =2,
+               TYPE_FLAT            =3
+       };
        DashItem();
-       DashItem(const DashItem &ref);
        DashItem(Real position, Real length, int sidebefore=TYPE_FLAT,
                int sideafter=TYPE_FLAT);
 
@@ -51,6 +61,11 @@ public:
        void set_length(Real x);
        const Real& get_offset()const;
        void set_offset(Real x);
+       int get_side_type_before()const;
+       void set_side_type_before(int sidebefore);
+       int get_side_type_after()const;
+       void set_side_type_after(int sideafter);
+       int get_side_type(int i)const;
 }; // END of class DashItem
 
 }; // END of namespace synfig
diff --git a/synfig-core/src/synfig/value.h b/synfig-core/src/synfig/value.h
index e9f612b..77a3290 100644
--- a/synfig-core/src/synfig/value.h
+++ b/synfig-core/src/synfig/value.h
@@ -99,7 +99,7 @@ public:
                TYPE_SEGMENT,           //!< Segment Point and Vector
                TYPE_BLINEPOINT,        //!< BLinePoint Origin (Point) 
2xTangents (Vector) Width (Real), Origin (Real) Split Tangent (Boolean)
                TYPE_WIDTHPOINT,        //!< WidthPoint Position (Real), Width 
(Real), 2xSide Type (int enum)
-               TYPE_DASHITEM,          //!< DashItem Offset (Real distance), 
Length (Real distance), 2xSide Type (int enum), inherited from WidthPoint
+               TYPE_DASHITEM,          //!< DashItem Offset (Real distance), 
Length (Real distance), 2xSide Type (int enum)
 
                // All types after this point require construction/destruction
 


------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
The must-attend event for mobile developers. Connect with experts. 
Get tools for creating Super Apps. See the latest technologies.
Sessions, hands-on labs, demos & much more. Register early & save!
http://p.sf.net/sfu/rim-blackberry-1
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to