Author: Carlos Lopez <[email protected]>
Date:   Tue Aug  9 13:42:14 2011 +0200

Add the widthpoints from the dash offset to the end ob bline. Add some debug 
info.

---

 .../src/modules/mod_geometry/advanced_outline.cpp  |   40 ++++++++++++++++----
 1 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/synfig-core/src/modules/mod_geometry/advanced_outline.cpp 
b/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
index 3ea2ac1..11ad105 100644
--- a/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
+++ b/synfig-core/src/modules/mod_geometry/advanced_outline.cpp
@@ -290,16 +290,40 @@ Advanced_Outline::sync()
                if(dash_enabled)
                {
                        Real blinelength(bline_length(bline, blineloop, NULL));
-                       // Put dash_offset in the [0,1] interval
-                       while (dash_offset > 1.0) dash_offset-=1.0;
-                       while (dash_offset < 0.0) dash_offset+=1.0;
-                       Real dashes_length(0.0);
-                       vector<DashItem>::iterator diter(dilist.begin());
-                       for(;diter!=dilist.end(); diter++)
+                       if(blinelength > EPSILON)
                        {
-                               
dashes_length+=diter->get_length()+diter->get_offset();
+                               // Put dash_offset in the [0,blinelength] 
interval
+                               dash_offset=fabs(dash_offset);
+                               if (dash_offset > blinelength) 
dash_offset=fmod(blinelength, dash_offset);
+                               Real dpos=dash_offset;
+                               Real dashes_length(0.0);
+                               vector<DashItem>::iterator 
diter(dilist.begin());
+                               for(;diter!=dilist.end(); diter++)
+                               {
+                                       
dashes_length+=diter->get_length()+diter->get_offset();
+                               }
+                               synfig::info("dashes length % f, bline length 
%f", dashes_length, blinelength);
+                               diter=dilist.begin();
+                               if(dashes_length>EPSILON)
+                               {
+                                       do
+                                       {
+                                               WidthPoint 
before((dpos+diter->get_offset())/blinelength, 0.0, 
diter->get_side_type_before(), WidthPoint::TYPE_INTERPOLATE);
+                                               WidthPoint 
after((dpos+diter->get_length()+diter->get_length())/blinelength, 
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();
+                                               diter++;
+                                               if(diter==dilist.end())
+                                                       diter=dilist.begin();
+                                       }while(dpos < blinelength);
+                               }
                        }
-                       synfig::info("dashes length % f, bline length %f", 
dashes_length, blinelength);
+                       synfig::info("------");
+                       vector<WidthPoint>::iterator dwiter(dwplist.begin());
+                       for(;dwiter!=dwplist.end();dwiter++)
+                               synfig::info("P:%f W:%f B:%d A:%d", 
dwiter->get_position(), dwiter->get_width(), dwiter->get_side_type_before(), 
dwiter->get_side_type_after());
+                       synfig::info("------");
                }
                do // Main loop
                {


------------------------------------------------------------------------------
uberSVN's rich system and user administration capabilities and model 
configuration take the hassle out of deploying and managing Subversion and 
the tools developers use with it. Learn more about uberSVN and get a free 
download at:  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