Author: Carlos Lopez <[email protected]>
Date: Thu Aug 11 09:33:10 2011 +0200
Dash Widthpoints positions has to be homogeneous or standard to be comparable
with normal withpoints
---
.../src/modules/mod_geometry/advanced_outline.cpp | 21 ++++++++++++++-----
1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
b/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
index 04b9329..f2331f0 100644
--- a/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
+++ b/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
@@ -289,8 +289,13 @@ Advanced_Outline::sync()
int inserted(0);
while(dpos < blinelength)
{
-
before=WidthPoint((dpos+diter->get_offset())/blinelength, 0.0,
diter->get_side_type_before(), WidthPoint::TYPE_INTERPOLATE);
-
after=WidthPoint((dpos+diter->get_offset()+diter->get_length())/blinelength,
0.0,WidthPoint::TYPE_INTERPOLATE, diter->get_side_type_after());
+ // dash widthpoints should have
the same homogeneous or standard comparable positions.
+ Real
before_pos=(dpos+diter->get_offset())/blinelength;
+ Real
after_pos=(dpos+diter->get_offset()+diter->get_length())/blinelength;
+
before_pos=homogeneous?before_pos:hom_to_std(bline, before_pos,
wplist_.get_loop(), blineloop);
+
after_pos=homogeneous?after_pos:hom_to_std(bline, after_pos,
wplist_.get_loop(), blineloop);
+ before=WidthPoint(before_pos,
0.0, diter->get_side_type_before(), WidthPoint::TYPE_INTERPOLATE);
+ after=WidthPoint(after_pos,
0.0,WidthPoint::TYPE_INTERPOLATE, diter->get_side_type_after());
dwplist.push_back(before);
dwplist.push_back(after);
dpos+=diter->get_offset() +
diter->get_length();
@@ -325,9 +330,13 @@ Advanced_Outline::sync()
dpos=dash_offset;
while(dpos > 0.0)
{
- // dash widthpoints are
homogeneous by default
-
before=WidthPoint((dpos-rditer->get_length())/blinelength, 1.0,
rditer->get_side_type_before(), WidthPoint::TYPE_INTERPOLATE);
-
after=WidthPoint((dpos)/blinelength, 1.0,WidthPoint::TYPE_INTERPOLATE,
rditer->get_side_type_after());
+ // dash widthpoints should have
the same homogeneous or standard comparable positions.
+ Real
before_pos=(dpos-rditer->get_length())/blinelength;
+ Real
after_pos=(dpos)/blinelength;
+
before_pos=homogeneous?before_pos:hom_to_std(bline, before_pos,
wplist_.get_loop(), blineloop);
+
after_pos=homogeneous?after_pos:hom_to_std(bline, after_pos,
wplist_.get_loop(), blineloop);
+ before=WidthPoint(before_pos,
1.0, rditer->get_side_type_before(), WidthPoint::TYPE_INTERPOLATE);
+ after=WidthPoint(after_pos,
1.0,WidthPoint::TYPE_INTERPOLATE, rditer->get_side_type_after());
dwplist.insert(dwplist.begin(),after);
dwplist.insert(dwplist.begin(),before);
dpos-=rditer->get_offset() +
rditer->get_length();
@@ -336,7 +345,7 @@ Advanced_Outline::sync()
if(rditer==dilist.rend())
rditer=dilist.rbegin();
};
- // Correct the two first widthpoints
triming its position to be <= 1.0
+ // Correct the two first widthpoints
triming its position to be >= 0.0
if(inserted)
{
before=dwplist.front();
------------------------------------------------------------------------------
Get a FREE DOWNLOAD! and learn more about uberSVN rich system,
user administration capabilities and model configuration. Take
the hassle out of deploying and managing Subversion and the
tools developers use with it.
http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl