Revision: 41450
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41450
Author:   kjym3
Date:     2011-11-01 21:08:18 +0000 (Tue, 01 Nov 2011)
Log Message:
-----------
* Fix for stroke geometry shaders that did not update the 2D length after the
modifications of stroke vertices.

* Fix for a bug in pyBluePrintCirclesShader that did not check the end of
iteration over stroke vertices.

* Fix for stroke vertex removal during iteration over stroke vertices in
pyBluePrintCirclesShader, pyBluePrintEllipsesShader, pyBluePrintSquaresShader,
and pyBluePrintDirectedSquaresShader.

Modified Paths:
--------------
    
branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py

Modified: 
branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py
===================================================================
--- 
branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py  
    2011-11-01 20:14:58 UTC (rev 41449)
+++ 
branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py  
    2011-11-01 21:08:18 UTC (rev 41450)
@@ -608,6 +608,7 @@
                newLast = pn+dn*float(self._l)
                v0.setPoint(newFirst)
                vn.setPoint(newLast)
+               stroke.UpdateLength()
                
 class pyLengthDependingBackboneStretcherShader(StrokeShader):
        def __init__(self, l):
@@ -641,6 +642,7 @@
                newLast = pn+dn*float(stretch)
                v0.setPoint(newFirst)
                vn.setPoint(newLast)
+               stroke.UpdateLength()
 
 
 ## Shader to replace a stroke by its corresponding tangent
@@ -669,6 +671,7 @@
                        -t*(itmiddle.getObject().u()-it.getObject().u()))
                        it.decrement()
                
it.getObject().setPoint(itmiddle.getObject().getPoint()-t*(itmiddle.getObject().u()))
 ## first vertex
+               stroke.UpdateLength()
 
 
 class pyBackboneStretcherNoCuspShader(StrokeShader):
@@ -703,6 +706,7 @@
                        dn.normalize()
                        newLast = pn+dn*float(self._l)  
                        vn.setPoint(newLast)
+               stroke.UpdateLength()
 
 normalInfo=Normal2DF0D()
 curvatureInfo=Curvature2DAngleF0D()
@@ -728,6 +732,7 @@
                                p2 = 
self._normalInfo(it.castToInterface0DIterator())*self._lambda*self._curvatureInfo(it.castToInterface0DIterator())
                                v.setPoint(p1+p2)
                                it.increment()
+               stroke.UpdateLength()
 
 class pyTipRemoverShader(StrokeShader):
        def __init__(self, l):
@@ -762,6 +767,7 @@
                        v = it.getObject()
                        v.setAttribute(a)
                        it.increment()
+               stroke.UpdateLength()
 
 class pyTVertexRemoverShader(StrokeShader):
        def getName(self):
@@ -777,6 +783,7 @@
                        stroke.RemoveVertex(it.getObject())
                if(predTVertex(itlast) == 1):
                        stroke.RemoveVertex(itlast.getObject())
+               stroke.UpdateLength()
 
 class pyExtremitiesOrientationShader(StrokeShader):
        def __init__(self, x1,y1,x2=0,y2=0):
@@ -911,6 +918,7 @@
                        v.setPoint(p+n)
                        #v.setPoint(v.getPoint()+n*a*cos(f*v.u()))
                        it.increment()
+               stroke.UpdateLength()
 
 class pyPerlinNoise1DShader(StrokeShader):
        def __init__(self, freq = 10, amp = 10, oct = 4, seed = -1):
@@ -929,6 +937,7 @@
                        nres = self.__noise.turbulence1(i, self.__freq, 
self.__amp, self.__oct)
                        v.setPoint(v.getProjectedX() + nres, v.getProjectedY() 
+ nres)
                        it.increment()
+               stroke.UpdateLength()
 
 class pyPerlinNoise2DShader(StrokeShader):
        def __init__(self, freq = 10, amp = 10, oct = 4, seed = -1):
@@ -947,6 +956,7 @@
                        nres = self.__noise.turbulence2(vec, self.__freq, 
self.__amp, self.__oct)
                        v.setPoint(v.getProjectedX() + nres, v.getProjectedY() 
+ nres)
                        it.increment()
+               stroke.UpdateLength()
 
 class pyBluePrintCirclesShader(StrokeShader):
        def __init__(self, turns = 1):
@@ -987,15 +997,19 @@
                        center.x = center.x + randint(-5, 5)
                        center.y = center.y + randint(-5, 5)
                        i = 0
-                       while i < sv_nb:
+                       while i < sv_nb and it.isEnd() == 0:
                                p_new.x = center.x + radius * cos(2 * pi * 
float(i) / float(sv_nb - 1))
                                p_new.y = center.y + radius * sin(2 * pi * 
float(i) / float(sv_nb - 1))
                                it.getObject().setPoint(p_new)
                                i = i + 1
                                it.increment()
+               verticesToRemove = []
                while it.isEnd() == 0:
-                       stroke.RemoveVertex(it.getObject())
+                       verticesToRemove.append(it.getObject())
                        it.increment()
+               for sv in verticesToRemove:
+                       stroke.RemoveVertex(sv)
+               stroke.UpdateLength()
 
 class pyBluePrintEllipsesShader(StrokeShader):
        def __init__(self, turns = 1):
@@ -1039,9 +1053,13 @@
                                it.getObject().setPoint(p_new)
                                i = i + 1
                                it.increment()
+               verticesToRemove = []
                while it.isEnd() == 0:
-                       stroke.RemoveVertex(it.getObject())
+                       verticesToRemove.append(it.getObject())
                        it.increment()
+               for sv in verticesToRemove:
+                       stroke.RemoveVertex(sv)
+               stroke.UpdateLength()
 
 
 class pyBluePrintSquaresShader(StrokeShader):
@@ -1118,9 +1136,13 @@
                                        visible = 1
                                i = i + 1
                                it.increment()
+               verticesToRemove = []
                while it.isEnd() == 0:
-                       stroke.RemoveVertex(it.getObject())
+                       verticesToRemove.append(it.getObject())
                        it.increment()
+               for sv in verticesToRemove:
+                       stroke.RemoveVertex(sv)
+               stroke.UpdateLength()
 
 
 class pyBluePrintDirectedSquaresShader(StrokeShader):
@@ -1223,9 +1245,13 @@
                                        visible = 1
                                i = i + 1
                                it.increment()
+               verticesToRemove = []
                while it.isEnd() == 0:
-                       stroke.RemoveVertex(it.getObject())
+                       verticesToRemove.append(it.getObject())
                        it.increment()
+               for sv in verticesToRemove:
+                       stroke.RemoveVertex(sv)
+               stroke.UpdateLength()
 
 class pyModulateAlphaShader(StrokeShader):
        def __init__(self, min = 0, max = 1):

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to