diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-02-15 03:48:34 +0400 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2013-02-15 03:48:34 +0400 |
commit | 731d08d4974ce695e7d1446b934d0656a4d82942 (patch) | |
tree | 6568f2d1befa6c4cac0005bc4dcf3e239363757f /release/scripts/freestyle | |
parent | 9e3bf44011285917db1e1061a2f459722674b1b9 (diff) |
Freestyle Python API improvements - part 3.
Major API updates were made to address code review comments.
This revision mostly focuses on Python wrappers of C++ 0D and 1D elements (i.e.,
Interface0D and Interface1D, as well as their subclasses).
* Most getter/setter methods were reimplemented as attributes using PyGetSetDef.
Vector attributes are now implemented based on mathutils callbacks. Boolean
attributes now only accept boolean values.
* The __getitem__ method was removed and the Sequence protocol was used instead.
* The naming of methods and attributes was fixed to follow the naming conventions
of the Blender Python API (i.e., lower case + underscores for methods and attributes,
and CamelCase for classes). Some naming inconsistency within the Freestyle Python
API was also addressed.
* The Freestyle API had a number of method names including prefix/suffix "A" and
"B", and their meanings were inconsistent (i.e., referring to different things
depending on the classes). The names with these two letters were replaced with
more straightforward names. Also some attribute names were changed so as to indicate
the type of the value (e.g., FEdge.next_fedge instead of FEdge.next_edge) in line
with other names explicitly indicating what the value is (e.g., SVertex.viewvertex).
* In addition, some code clean-up was done in both C++ and Python.
Notes:
In summary, the following irregular naming changes were made through this revision
(those resulting from regular changes of naming conventions are not listed):
- CurvePoint: {A,B} --> {first,second}_svertex
- FEdge: vertex{A,B} --> {first,second}_svertex
- FEdge: {next,previous}Edge --> {next,previous}_fedge
- FEdgeSharp: normal{A,B} --> normal_{right,left}
- FEdgeSharp: {a,b}FaceMark --> face_mark_{right,left}
- FEdgeSharp: {a,b}Material --> material_{right,left}
- FEdgeSharp: {a,b}MaterialIndex --> material_index_{right,left}
- FrsCurve: empty --> is_empty
- FrsCurve: nSegments --> segments_size
- TVertex: mate() --> get_mate()
- ViewEdge: fedge{A,B} --> {first,last}_fedge
- ViewEdge: setaShape, aShape --> occlude
- ViewEdge: {A,B} --> {first,last}_viewvertex
- ViewMap: getScene3dBBox --> scene_bbox
Diffstat (limited to 'release/scripts/freestyle')
7 files changed, 584 insertions, 673 deletions
diff --git a/release/scripts/freestyle/style_modules/ChainingIterators.py b/release/scripts/freestyle/style_modules/ChainingIterators.py index f2d953ddc14..20b92d62613 100644 --- a/release/scripts/freestyle/style_modules/ChainingIterators.py +++ b/release/scripts/freestyle/style_modules/ChainingIterators.py @@ -44,10 +44,10 @@ class pyChainSilhouetteIterator(ChainingIterator): it = AdjacencyIterator(iter) tvertex = self.getVertex() if type(tvertex) is TVertex: - mateVE = tvertex.mate(self.getCurrentEdge()) - while(it.isEnd() == 0): + mateVE = tvertex.get_mate(self.getCurrentEdge()) + while not it.isEnd(): ve = it.getObject() - if(ve.getId() == mateVE.getId() ): + if ve.id == mateVE.id: winner = ve break it.increment() @@ -55,24 +55,24 @@ class pyChainSilhouetteIterator(ChainingIterator): ## case of NonTVertex natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] for i in range(len(natures)): - currentNature = self.getCurrentEdge().getNature() - if(natures[i] & currentNature): + currentNature = self.getCurrentEdge().nature + if (natures[i] & currentNature) != 0: count=0 - while(it.isEnd() == 0): + while not it.isEnd(): visitNext = 0 - oNature = it.getObject().getNature() - if(oNature & natures[i] != 0): - if(natures[i] != oNature): + oNature = it.getObject().nature + if (oNature & natures[i]) != 0: + if natures[i] != oNature: for j in range(i): - if(natures[j] & oNature != 0): + if (natures[j] & oNature) != 0: visitNext = 1 break - if(visitNext != 0): + if visitNext != 0: break count = count+1 winner = it.getObject() it.increment() - if(count != 1): + if count != 1: winner = None break return winner @@ -96,10 +96,10 @@ class pyChainSilhouetteGenericIterator(ChainingIterator): it = AdjacencyIterator(iter) tvertex = self.getVertex() if type(tvertex) is TVertex: - mateVE = tvertex.mate(self.getCurrentEdge()) - while(it.isEnd() == 0): + mateVE = tvertex.get_mate(self.getCurrentEdge()) + while not it.isEnd(): ve = it.getObject() - if(ve.getId() == mateVE.getId() ): + if ve.id == mateVE.id: winner = ve break it.increment() @@ -107,28 +107,28 @@ class pyChainSilhouetteGenericIterator(ChainingIterator): ## case of NonTVertex natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] for i in range(len(natures)): - currentNature = self.getCurrentEdge().getNature() - if(natures[i] & currentNature): + currentNature = self.getCurrentEdge().nature + if (natures[i] & currentNature) != 0: count=0 - while(it.isEnd() == 0): + while not it.isEnd(): visitNext = 0 - oNature = it.getObject().getNature() + oNature = it.getObject().nature ve = it.getObject() - if(ve.getId() == self.getCurrentEdge().getId()): + if ve.id == self.getCurrentEdge().id: it.increment() continue - if(oNature & natures[i] != 0): - if(natures[i] != oNature): + if (oNature & natures[i]) != 0: + if natures[i] != oNature: for j in range(i): - if(natures[j] & oNature != 0): + if (natures[j] & oNature) != 0: visitNext = 1 break - if(visitNext != 0): + if visitNext != 0: break count = count+1 winner = ve it.increment() - if(count != 1): + if count != 1: winner = None break return winner @@ -146,14 +146,14 @@ class pyExternalContourChainingIterator(ChainingIterator): self._isInSelection = 1 def checkViewEdge(self, ve, orientation): - if(orientation != 0): - vertex = ve.B() + if orientation != 0: + vertex = ve.second_svertex() else: - vertex = ve.A() + vertex = ve.first_svertex() it = AdjacencyIterator(vertex,1,1) - while(it.isEnd() == 0): + while not it.isEnd(): ave = it.getObject() - if(self._isExternalContour(ave)): + if self._isExternalContour(ave): return 1 it.increment() print("pyExternlContourChainingIterator : didn't find next edge") @@ -161,23 +161,23 @@ class pyExternalContourChainingIterator(ChainingIterator): def traverse(self, iter): winner = None it = AdjacencyIterator(iter) - while(it.isEnd() == 0): + while not it.isEnd(): ve = it.getObject() - if(self._isExternalContour(ve)): - if (ve.getTimeStamp() == GetTimeStampCF()): + if self._isExternalContour(ve): + if ve.time_stamp == GetTimeStampCF(): winner = ve it.increment() self._nEdges = self._nEdges+1 - if(winner == None): + if winner is None: orient = 1 it = AdjacencyIterator(iter) - while(it.isEnd() == 0): + while not it.isEnd(): ve = it.getObject() - if(it.isIncoming() != 0): + if it.isIncoming() != 0: # FIXME orient = 0 good = self.checkViewEdge(ve,orient) - if(good != 0): + if good != 0: winner = ve it.increment() return winner @@ -198,10 +198,10 @@ class pySketchyChainSilhouetteIterator(ChainingIterator): it = AdjacencyIterator(iter) tvertex = self.getVertex() if type(tvertex) is TVertex: - mateVE = tvertex.mate(self.getCurrentEdge()) - while(it.isEnd() == 0): + mateVE = tvertex.get_mate(self.getCurrentEdge()) + while not it.isEnd(): ve = it.getObject() - if(ve.getId() == mateVE.getId() ): + if ve.id == mateVE.id: winner = ve break it.increment() @@ -209,33 +209,33 @@ class pySketchyChainSilhouetteIterator(ChainingIterator): ## case of NonTVertex natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] for i in range(len(natures)): - currentNature = self.getCurrentEdge().getNature() - if(natures[i] & currentNature): + currentNature = self.getCurrentEdge().nature + if (natures[i] & currentNature) != 0: count=0 - while(it.isEnd() == 0): + while not it.isEnd(): visitNext = 0 - oNature = it.getObject().getNature() + oNature = it.getObject().nature ve = it.getObject() - if(ve.getId() == self.getCurrentEdge().getId()): + if ve.id == self.getCurrentEdge().id: it.increment() continue - if(oNature & natures[i] != 0): - if(natures[i] != oNature): + if (oNature & natures[i]) != 0: + if (natures[i] != oNature) != 0: for j in range(i): - if(natures[j] & oNature != 0): + if (natures[j] & oNature) != 0: visitNext = 1 break - if(visitNext != 0): + if visitNext != 0: break count = count+1 winner = ve it.increment() - if(count != 1): + if count != 1: winner = None break - if(winner == None): + if winner is None: winner = self.getCurrentEdge() - if(winner.getChainingTimeStamp() == self._timeStamp): + if winner.chaining_time_stamp == self._timeStamp: winner = None return winner @@ -257,16 +257,16 @@ class pySketchyChainingIterator(ChainingIterator): def traverse(self, iter): winner = None it = AdjacencyIterator(iter) - while(it.isEnd() == 0): + while not it.isEnd(): ve = it.getObject() - if(ve.getId() == self.getCurrentEdge().getId()): + if ve.id == self.getCurrentEdge().id: it.increment() continue winner = ve it.increment() - if(winner == None): + if winner is None: winner = self.getCurrentEdge() - if(winner.getChainingTimeStamp() == self._timeStamp): + if winner.chaining_time_stamp == self._timeStamp: return None return winner @@ -290,16 +290,16 @@ class pyFillOcclusionsRelativeChainingIterator(ChainingIterator): def traverse(self, iter): winner = None winnerOrientation = 0 - print(self.getCurrentEdge().getId().getFirst(), self.getCurrentEdge().getId().getSecond()) + print(self.getCurrentEdge().id.first, self.getCurrentEdge().id.second) it = AdjacencyIterator(iter) tvertex = self.getVertex() if type(tvertex) is TVertex: - mateVE = tvertex.mate(self.getCurrentEdge()) - while(it.isEnd() == 0): + mateVE = tvertex.get_mate(self.getCurrentEdge()) + while not it.isEnd(): ve = it.getObject() - if(ve.getId() == mateVE.getId() ): + if ve.id == mateVE.id: winner = ve - if(it.isIncoming() == 0): + if it.isIncoming() == 0: # FIXME winnerOrientation = 1 else: winnerOrientation = 0 @@ -309,52 +309,52 @@ class pyFillOcclusionsRelativeChainingIterator(ChainingIterator): ## case of NonTVertex natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] for nat in natures: - if(self.getCurrentEdge().getNature() & nat != 0): + if (self.getCurrentEdge().nature & nat) != 0: count=0 - while(it.isEnd() == 0): + while not it.isEnd(): ve = it.getObject() - if(ve.getNature() & nat != 0): + if (ve.nature & nat) != 0: count = count+1 winner = ve - if(it.isIncoming() == 0): + if it.isIncoming() == 0: # FIXME winnerOrientation = 1 else: winnerOrientation = 0 it.increment() - if(count != 1): + if count != 1: winner = None break - if(winner != None): + if winner is not None: # check whether this edge was part of the selection - if(winner.getTimeStamp() != GetTimeStampCF()): - #print("---", winner.getId().getFirst(), winner.getId().getSecond()) + if winner.time_stamp != GetTimeStampCF(): + #print("---", winner.id.first, winner.id.second) # if not, let's check whether it's short enough with # respect to the chain made without staying in the selection #------------------------------------------------------------ # Did we compute the prospective chain length already ? - if(self._length == 0): + if self._length == 0: #if not, let's do it _it = pyChainSilhouetteGenericIterator(0,0) _it.setBegin(winner) _it.setCurrentEdge(winner) _it.setOrientation(winnerOrientation) _it.init() - while(_it.isEnd() == 0): + while not _it.isEnd(): ve = _it.getObject() - #print("--------", ve.getId().getFirst(), ve.getId().getSecond()) - self._length = self._length + ve.getLength2D() + #print("--------", ve.id.first, ve.id.second) + self._length = self._length + ve.length_2d _it.increment() - if(_it.isBegin() != 0): + if _it.isBegin(): break; _it.setBegin(winner) _it.setCurrentEdge(winner) _it.setOrientation(winnerOrientation) - if(_it.isBegin() == 0): + if not _it.isBegin(): _it.decrement() - while ((_it.isEnd() == 0) and (_it.isBegin() == 0)): + while (not _it.isEnd()) and (not _it.isBegin()): ve = _it.getObject() - #print("--------", ve.getId().getFirst(), ve.getId().getSecond()) - self._length = self._length + ve.getLength2D() + #print("--------", ve.id.first, ve.id.second) + self._length = self._length + ve.length_2d _it.decrement() # let's do the comparison: @@ -365,12 +365,12 @@ class pyFillOcclusionsRelativeChainingIterator(ChainingIterator): _cit.setCurrentEdge(winner) _cit.setOrientation(winnerOrientation) _cit.init() - while((_cit.isEnd() == 0) and (_cit.getObject().getTimeStamp() != GetTimeStampCF())): + while _cit.isEnd() == 0 and _cit.getObject().time_stamp != GetTimeStampCF(): ve = _cit.getObject() - #print("-------- --------", ve.getId().getFirst(), ve.getId().getSecond()) - connexl = connexl + ve.getLength2D() + #print("-------- --------", ve.id.first, ve.id.second) + connexl = connexl + ve.length_2d _cit.increment() - if(connexl > self._percent * self._length): + if connexl > self._percent * self._length: winner = None return winner @@ -389,16 +389,16 @@ class pyFillOcclusionsAbsoluteChainingIterator(ChainingIterator): def traverse(self, iter): winner = None winnerOrientation = 0 - #print(self.getCurrentEdge().getId().getFirst(), self.getCurrentEdge().getId().getSecond()) + #print(self.getCurrentEdge().id.first, self.getCurrentEdge().id.second) it = AdjacencyIterator(iter) tvertex = self.getVertex() if type(tvertex) is TVertex: - mateVE = tvertex.mate(self.getCurrentEdge()) - while(it.isEnd() == 0): + mateVE = tvertex.get_mate(self.getCurrentEdge()) + while not it.isEnd(): ve = it.getObject() - if(ve.getId() == mateVE.getId() ): + if ve.id == mateVE.id: winner = ve - if(it.isIncoming() == 0): + if it.isIncoming() == 0: # FIXME winnerOrientation = 1 else: winnerOrientation = 0 @@ -408,25 +408,25 @@ class pyFillOcclusionsAbsoluteChainingIterator(ChainingIterator): ## case of NonTVertex natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] for nat in natures: - if(self.getCurrentEdge().getNature() & nat != 0): + if (self.getCurrentEdge().nature & nat) != 0: count=0 - while(it.isEnd() == 0): + while not it.isEnd(): ve = it.getObject() - if(ve.getNature() & nat != 0): + if (ve.nature & nat) != 0: count = count+1 winner = ve - if(it.isIncoming() == 0): + if it.isIncoming() == 0: # FIXME winnerOrientation = 1 else: winnerOrientation = 0 it.increment() - if(count != 1): + if count != 1: winner = None break - if(winner != None): + if winner is not None: # check whether this edge was part of the selection - if(winner.getTimeStamp() != GetTimeStampCF()): - #print("---", winner.getId().getFirst(), winner.getId().getSecond()) + if winner.time_stamp != GetTimeStampCF(): + #print("---", winner.id.first, winner.id.second) # nw let's compute the length of this connex non selected part: connexl = 0 _cit = pyChainSilhouetteGenericIterator(0,0) @@ -434,12 +434,12 @@ class pyFillOcclusionsAbsoluteChainingIterator(ChainingIterator): _cit.setCurrentEdge(winner) _cit.setOrientation(winnerOrientation) _cit.init() - while((_cit.isEnd() == 0) and (_cit.getObject().getTimeStamp() != GetTimeStampCF())): + while _cit.isEnd() == 0 and _cit.getObject().time_stamp != GetTimeStampCF(): ve = _cit.getObject() - #print("-------- --------", ve.getId().getFirst(), ve.getId().getSecond()) - connexl = connexl + ve.getLength2D() + #print("-------- --------", ve.id.first, ve.id.second) + connexl = connexl + ve.length_2d _cit.increment() - if(connexl > self._length): + if connexl > self._length: winner = None return winner @@ -464,16 +464,16 @@ class pyFillOcclusionsAbsoluteAndRelativeChainingIterator(ChainingIterator): def traverse(self, iter): winner = None winnerOrientation = 0 - print(self.getCurrentEdge().getId().getFirst(), self.getCurrentEdge().getId().getSecond()) + print(self.getCurrentEdge().id.first, self.getCurrentEdge().id.second) it = AdjacencyIterator(iter) tvertex = self.getVertex() if type(tvertex) is TVertex: - mateVE = tvertex.mate(self.getCurrentEdge()) - while(it.isEnd() == 0): + mateVE = tvertex.get_mate(self.getCurrentEdge()) + while not it.isEnd(): ve = it.getObject() - if(ve.getId() == mateVE.getId() ): + if ve.id == mateVE.id: winner = ve - if(it.isIncoming() == 0): + if it.isIncoming() == 0: # FIXME winnerOrientation = 1 else: winnerOrientation = 0 @@ -483,52 +483,52 @@ class pyFillOcclusionsAbsoluteAndRelativeChainingIterator(ChainingIterator): ## case of NonTVertex natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] for nat in natures: - if(self.getCurrentEdge().getNature() & nat != 0): + if (self.getCurrentEdge().nature & nat) != 0: count=0 - while(it.isEnd() == 0): + while not it.isEnd(): ve = it.getObject() - if(ve.getNature() & nat != 0): + if (ve.nature & nat) != 0: count = count+1 winner = ve - if(it.isIncoming() == 0): + if it.isIncoming() == 0: # FIXME winnerOrientation = 1 else: winnerOrientation = 0 it.increment() - if(count != 1): + if count != 1: winner = None break - if(winner != None): + if winner is not None: # check whether this edge was part of the selection - if(winner.getTimeStamp() != GetTimeStampCF()): - #print("---", winner.getId().getFirst(), winner.getId().getSecond()) + if winner.time_stamp != GetTimeStampCF(): + #print("---", winner.id.first, winner.id.second) # if not, let's check whether it's short enough with # respect to the chain made without staying in the selection #------------------------------------------------------------ # Did we compute the prospective chain length already ? - if(self._length == 0): + if self._length == 0: #if not, let's do it _it = pyChainSilhouetteGenericIterator(0,0) _it.setBegin(winner) _it.setCurrentEdge(winner) _it.setOrientation(winnerOrientation) _it.init() - while(_it.isEnd() == 0): + while not _it.isEnd(): ve = _it.getObject() - #print("--------", ve.getId().getFirst(), ve.getId().getSecond()) - self._length = self._length + ve.getLength2D() + #print("--------", ve.id.first, ve.id.second) + self._length = self._length + ve.length_2d _it.increment() - if(_it.isBegin() != 0): + if _it.isBegin(): break; _it.setBegin(winner) _it.setCurrentEdge(winner) _it.setOrientation(winnerOrientation) - if(_it.isBegin() == 0): + if not _it.isBegin(): _it.decrement() - while ((_it.isEnd() == 0) and (_it.isBegin() == 0)): + while (not _it.isEnd()) and (not _it.isBegin()): ve = _it.getObject() - #print("--------", ve.getId().getFirst(), ve.getId().getSecond()) - self._length = self._length + ve.getLength2D() + #print("--------", ve.id.first, ve.id.second) + self._length = self._length + ve.length_2d _it.decrement() # let's do the comparison: @@ -539,12 +539,12 @@ class pyFillOcclusionsAbsoluteAndRelativeChainingIterator(ChainingIterator): _cit.setCurrentEdge(winner) _cit.setOrientation(winnerOrientation) _cit.init() - while((_cit.isEnd() == 0) and (_cit.getObject().getTimeStamp() != GetTimeStampCF())): + while _cit.isEnd() == 0 and _cit.getObject().time_stamp != GetTimeStampCF(): ve = _cit.getObject() - #print("-------- --------", ve.getId().getFirst(), ve.getId().getSecond()) - connexl = connexl + ve.getLength2D() + #print("-------- --------", ve.id.first, ve.id.second) + connexl = connexl + ve.length_2d _cit.increment() - if((connexl > self._percent * self._length) or (connexl > self._absLength)): + if (connexl > self._percent * self._length) or (connexl > self._absLength): winner = None return winner @@ -569,16 +569,16 @@ class pyFillQi0AbsoluteAndRelativeChainingIterator(ChainingIterator): def traverse(self, iter): winner = None winnerOrientation = 0 - print(self.getCurrentEdge().getId().getFirst(), self.getCurrentEdge().getId().getSecond()) + print(self.getCurrentEdge().id.first, self.getCurrentEdge().id.second) it = AdjacencyIterator(iter) tvertex = self.getVertex() if type(tvertex) is TVertex: - mateVE = tvertex.mate(self.getCurrentEdge()) - while(it.isEnd() == 0): + mateVE = tvertex.get_mate(self.getCurrentEdge()) + while not it.isEnd(): ve = it.getObject() - if(ve.getId() == mateVE.getId() ): + if ve.id == mateVE.id: winner = ve - if(it.isIncoming() == 0): + if it.isIncoming() == 0: # FIXME winnerOrientation = 1 else: winnerOrientation = 0 @@ -588,52 +588,52 @@ class pyFillQi0AbsoluteAndRelativeChainingIterator(ChainingIterator): ## case of NonTVertex natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] for nat in natures: - if(self.getCurrentEdge().getNature() & nat != 0): + if (self.getCurrentEdge().nature & nat) != 0: count=0 - while(it.isEnd() == 0): + while not it.isEnd(): ve = it.getObject() - if(ve.getNature() & nat != 0): + if (ve.nature & nat) != 0: count = count+1 winner = ve - if(it.isIncoming() == 0): + if it.isIncoming() == 0: # FIXME winnerOrientation = 1 else: winnerOrientation = 0 it.increment() - if(count != 1): + if count != 1: winner = None break - if(winner != None): + if winner is not None: # check whether this edge was part of the selection - if(winner.qi() != 0): - #print("---", winner.getId().getFirst(), winner.getId().getSecond()) + if winner.qi != 0: + #print("---", winner.id.first, winner.id.second) # if not, let's check whether it's short enough with # respect to the chain made without staying in the selection #------------------------------------------------------------ # Did we compute the prospective chain length already ? - if(self._length == 0): + if self._length == 0: #if not, let's do it _it = pyChainSilhouetteGenericIterator(0,0) _it.setBegin(winner) _it.setCurrentEdge(winner) _it.setOrientation(winnerOrientation) _it.init() - while(_it.isEnd() == 0): + while not _it.isEnd(): ve = _it.getObject() - #print("--------", ve.getId().getFirst(), ve.getId().getSecond()) - self._length = self._length + ve.getLength2D() + #print("--------", ve.id.first, ve.id.second) + self._length = self._length + ve.length_2d _it.increment() - if(_it.isBegin() != 0): + if _it.isBegin(): break; _it.setBegin(winner) _it.setCurrentEdge(winner) _it.setOrientation(winnerOrientation) - if(_it.isBegin() == 0): + if not _it.isBegin(): _it.decrement() - while ((_it.isEnd() == 0) and (_it.isBegin() == 0)): + while (not _it.isEnd()) and (not _it.isBegin()): ve = _it.getObject() - #print("--------", ve.getId().getFirst(), ve.getId().getSecond()) - self._length = self._length + ve.getLength2D() + #print("--------", ve.id.first, ve.id.second) + self._length = self._length + ve.length_2d _it.decrement() # let's do the comparison: @@ -644,12 +644,12 @@ class pyFillQi0AbsoluteAndRelativeChainingIterator(ChainingIterator): _cit.setCurrentEdge(winner) _cit.setOrientation(winnerOrientation) _cit.init() - while((_cit.isEnd() == 0) and (_cit.getObject().qi() != 0)): + while not _cit.isEnd() and _cit.getObject().qi != 0: ve = _cit.getObject() - #print("-------- --------", ve.getId().getFirst(), ve.getId().getSecond()) - connexl = connexl + ve.getLength2D() + #print("-------- --------", ve.id.first, ve.id.second) + connexl = connexl + ve.length_2d _cit.increment() - if((connexl > self._percent * self._length) or (connexl > self._absLength)): + if (connexl > self._percent * self._length) or (connexl > self._absLength): winner = None return winner @@ -671,35 +671,35 @@ class pyNoIdChainSilhouetteIterator(ChainingIterator): it = AdjacencyIterator(iter) tvertex = self.getVertex() if type(tvertex) is TVertex: - mateVE = tvertex.mate(self.getCurrentEdge()) - while(it.isEnd() == 0): + mateVE = tvertex.get_mate(self.getCurrentEdge()) + while not it.isEnd(): ve = it.getObject() - feB = self.getCurrentEdge().fedgeB() - feA = ve.fedgeA() - vB = feB.vertexB() - vA = feA.vertexA() - if vA.getId().getFirst() == vB.getId().getFirst(): + feB = self.getCurrentEdge().last_fedge + feA = ve.first_fedge + vB = feB.second_svertex + vA = feA.first_svertex + if vA.id.first == vB.id.first: winner = ve break - feA = self.getCurrentEdge().fedgeA() - feB = ve.fedgeB() - vB = feB.vertexB() - vA = feA.vertexA() - if vA.getId().getFirst() == vB.getId().getFirst(): + feA = self.getCurrentEdge().first_fedge + feB = ve.last_fedge + vB = feB.second_svertex + vA = feA.first_svertex + if vA.id.first == vB.id.first: winner = ve break - feA = self.getCurrentEdge().fedgeB() - feB = ve.fedgeB() - vB = feB.vertexB() - vA = feA.vertexB() - if vA.getId().getFirst() == vB.getId().getFirst(): + feA = self.getCurrentEdge().last_fedge + feB = ve.last_fedge + vB = feB.second_svertex + vA = feA.second_svertex + if vA.id.first == vB.id.first: winner = ve break - feA = self.getCurrentEdge().fedgeA() - feB = ve.fedgeA() - vB = feB.vertexA() - vA = feA.vertexA() - if vA.getId().getFirst() == vB.getId().getFirst(): + feA = self.getCurrentEdge().first_fedge + feB = ve.first_fedge + vB = feB.first_svertex + vA = feA.first_svertex + if vA.id.first == vB.id.first: winner = ve break it.increment() @@ -707,24 +707,24 @@ class pyNoIdChainSilhouetteIterator(ChainingIterator): ## case of NonTVertex natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] for i in range(len(natures)): - currentNature = self.getCurrentEdge().getNature() - if(natures[i] & currentNature): + currentNature = self.getCurrentEdge().nature + if (natures[i] & currentNature) != 0: count=0 - while(it.isEnd() == 0): + while not it.isEnd(): visitNext = 0 - oNature = it.getObject().getNature() - if(oNature & natures[i] != 0): - if(natures[i] != oNature): + oNature = it.getObject().nature + if (oNature & natures[i]) != 0: + if natures[i] != oNature: for j in range(i): - if(natures[j] & oNature != 0): + if (natures[j] & oNature) != 0: visitNext = 1 break - if(visitNext != 0): + if visitNext != 0: break count = count+1 winner = it.getObject() it.increment() - if(count != 1): + if count != 1: winner = None break return winner diff --git a/release/scripts/freestyle/style_modules/Functions0D.py b/release/scripts/freestyle/style_modules/Functions0D.py index 38dd4b770a6..90e7765d505 100644 --- a/release/scripts/freestyle/style_modules/Functions0D.py +++ b/release/scripts/freestyle/style_modules/Functions0D.py @@ -8,9 +8,9 @@ class CurveMaterialF0D(UnaryFunction0DMaterial): def __call__(self, inter): cp = inter.getObject() assert(isinstance(cp, CurvePoint)) - fe = cp.A().getFEdge(cp.B()) + fe = cp.first_svertex.get_fedge(cp.second_svertex) assert(fe is not None) - return fe.material() if fe.isSmooth() else fe.bMaterial() + return fe.material if fe.is_smooth else fe.material_left class pyInverseCurvature2DAngleF0D(UnaryFunction0DDouble): def getName(self): @@ -26,13 +26,9 @@ class pyCurvilinearLengthF0D(UnaryFunction0DDouble): return "CurvilinearLengthF0D" def __call__(self, inter): - i0d = inter.getObject() - s = i0d.getExactTypeName() - if (string.find(s, "CurvePoint") == -1): - print("CurvilinearLengthF0D: not implemented yet for", s) - return -1 - cp = castToCurvePoint(i0d) - return cp.t2d() + cp = inter.getObject() + assert(isinstance(cp, CurvePoint)) + return cp.t2d ## estimate anisotropy of density class pyDensityAnisotropyF0D(UnaryFunction0DDouble): @@ -51,13 +47,13 @@ class pyDensityAnisotropyF0D(UnaryFunction0DDouble): c_1 = self.d1Density(inter) c_2 = self.d2Density(inter) c_3 = self.d3Density(inter) - cMax = max( max(c_0,c_1), max(c_2,c_3)) - cMin = min( min(c_0,c_1), min(c_2,c_3)) - if ( c_iso == 0 ): + cMax = max(max(c_0,c_1), max(c_2,c_3)) + cMin = min(min(c_0,c_1), min(c_2,c_3)) + if c_iso == 0: v = 0 else: v = (cMax-cMin)/c_iso - return (v) + return v ## Returns the gradient vector for a pixel ## l @@ -70,9 +66,9 @@ class pyViewMapGradientVectorF0D(UnaryFunction0DVec2f): def getName(self): return "pyViewMapGradientVectorF0D" def __call__(self, iter): - p = iter.getObject().getPoint2D() - gx = ReadCompleteViewMapPixelCF(self._l, int(p.x()+self._step), int(p.y()))- ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y())) - gy = ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y()+self._step))- ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y())) + p = iter.getObject().point_2d + gx = ReadCompleteViewMapPixelCF(self._l, int(p.x+self._step), int(p.y))- ReadCompleteViewMapPixelCF(self._l, int(p.x), int(p.y)) + gy = ReadCompleteViewMapPixelCF(self._l, int(p.x), int(p.y+self._step))- ReadCompleteViewMapPixelCF(self._l, int(p.x), int(p.y)) return Vector([gx, gy]) class pyViewMapGradientNormF0D(UnaryFunction0DDouble): @@ -83,9 +79,9 @@ class pyViewMapGradientNormF0D(UnaryFunction0DDouble): def getName(self): return "pyViewMapGradientNormF0D" def __call__(self, iter): - p = iter.getObject().getPoint2D() - gx = ReadCompleteViewMapPixelCF(self._l, int(p.x()+self._step), int(p.y()))- ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y())) - gy = ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y()+self._step))- ReadCompleteViewMapPixelCF(self._l, int(p.x()), int(p.y())) + p = iter.getObject().point_2d + gx = ReadCompleteViewMapPixelCF(self._l, int(p.x+self._step), int(p.y))- ReadCompleteViewMapPixelCF(self._l, int(p.x), int(p.y)) + gy = ReadCompleteViewMapPixelCF(self._l, int(p.x), int(p.y+self._step))- ReadCompleteViewMapPixelCF(self._l, int(p.x), int(p.y)) grad = Vector([gx, gy]) return grad.length diff --git a/release/scripts/freestyle/style_modules/PredicatesB1D.py b/release/scripts/freestyle/style_modules/PredicatesB1D.py index 3b7d21039df..6b787270233 100644 --- a/release/scripts/freestyle/style_modules/PredicatesB1D.py +++ b/release/scripts/freestyle/style_modules/PredicatesB1D.py @@ -5,7 +5,6 @@ from random import * class pyZBP1D(BinaryPredicate1D): def getName(self): return "pyZBP1D" - def __call__(self, i1, i2): func = GetZF1D() return (func(i1) > func(i2)) @@ -14,38 +13,33 @@ class pyZDiscontinuityBP1D(BinaryPredicate1D): def __init__(self, iType = IntegrationType.MEAN): BinaryPredicate1D.__init__(self) self._GetZDiscontinuity = ZDiscontinuityF1D(iType) - def getName(self): return "pyZDiscontinuityBP1D" - def __call__(self, i1, i2): return (self._GetZDiscontinuity(i1) > self._GetZDiscontinuity(i2)) class pyLengthBP1D(BinaryPredicate1D): def getName(self): return "LengthBP1D" - def __call__(self, i1, i2): - return (i1.getLength2D() > i2.getLength2D()) + return (i1.length_2d > i2.length_2d) class pySilhouetteFirstBP1D(BinaryPredicate1D): def getName(self): return "SilhouetteFirstBP1D" - def __call__(self, inter1, inter2): bpred = SameShapeIdBP1D() if (bpred(inter1, inter2) != 1): return 0 - if (inter1.getNature() & Nature.SILHOUETTE): - return (inter2.getNature() & Nature.SILHOUETTE) - return (inter1.getNature() == inter2.getNature()) + if (inter1.nature & Nature.SILHOUETTE): + return (inter2.nature & Nature.SILHOUETTE) != 0 + return (inter1.nature == inter2.nature) class pyNatureBP1D(BinaryPredicate1D): def getName(self): return "NatureBP1D" - def __call__(self, inter1, inter2): - return (inter1.getNature() & inter2.getNature()) + return (inter1.nature & inter2.nature) class pyViewMapGradientNormBP1D(BinaryPredicate1D): def __init__(self,l, sampling=2.0): @@ -63,7 +57,6 @@ class pyShuffleBP1D(BinaryPredicate1D): seed(1) def getName(self): return "pyNearAndContourFirstBP1D" - def __call__(self, inter1, inter2): r1 = uniform(0,1) r2 = uniform(0,1) diff --git a/release/scripts/freestyle/style_modules/PredicatesU0D.py b/release/scripts/freestyle/style_modules/PredicatesU0D.py index 162254f17ed..0f7f1925624 100644 --- a/release/scripts/freestyle/style_modules/PredicatesU0D.py +++ b/release/scripts/freestyle/style_modules/PredicatesU0D.py @@ -5,43 +5,34 @@ class pyHigherCurvature2DAngleUP0D(UnaryPredicate0D): def __init__(self,a): UnaryPredicate0D.__init__(self) self._a = a - def getName(self): return "HigherCurvature2DAngleUP0D" - def __call__(self, inter): func = Curvature2DAngleF0D() a = func(inter) - return ( a > self._a) + return (a > self._a) class pyUEqualsUP0D(UnaryPredicate0D): def __init__(self,u, w): UnaryPredicate0D.__init__(self) self._u = u self._w = w - def getName(self): return "UEqualsUP0D" - def __call__(self, inter): func = pyCurvilinearLengthF0D() u = func(inter) - return ( ( u > (self._u-self._w) ) and ( u < (self._u+self._w) ) ) + return (u > (self._u-self._w)) and (u < (self._u+self._w)) class pyVertexNatureUP0D(UnaryPredicate0D): def __init__(self,nature): UnaryPredicate0D.__init__(self) self._nature = nature - def getName(self): return "pyVertexNatureUP0D" - def __call__(self, inter): v = inter.getObject() - nat = v.getNature() - if(nat & self._nature): - return 1; - return 0 + return (v.nature & self._nature) != 0 ## check whether an Interface0DIterator ## is a TVertex and is the one that is @@ -54,13 +45,13 @@ class pyBackTVertexUP0D(UnaryPredicate0D): return "pyBackTVertexUP0D" def __call__(self, iter): v = iter.getObject() - nat = v.getNature() - if(nat & Nature.T_VERTEX == 0): + nat = v.nature + if (nat & Nature.T_VERTEX) == 0: return 0 next = iter - if(next.isEnd()): + if next.isEnd(): return 0 - if(self._getQI(next) != 0): + if self._getQI(next) != 0: return 1 return 0 @@ -70,13 +61,11 @@ class pyParameterUP0DGoodOne(UnaryPredicate0D): self._m = pmin self._M = pmax #self.getCurvilinearAbscissa = GetCurvilinearAbscissaF0D() - def getName(self): return "pyCurvilinearAbscissaHigherThanUP0D" - def __call__(self, inter): #s = self.getCurvilinearAbscissa(inter) - u = inter.u() + u = inter.u() # FIXME #print(u) return ((u>=self._m) and (u<=self._M)) @@ -86,18 +75,14 @@ class pyParameterUP0D(UnaryPredicate0D): self._m = pmin self._M = pmax #self.getCurvilinearAbscissa = GetCurvilinearAbscissaF0D() - def getName(self): return "pyCurvilinearAbscissaHigherThanUP0D" - def __call__(self, inter): func = Curvature2DAngleF0D() c = func(inter) b1 = (c>0.1) #s = self.getCurvilinearAbscissa(inter) - u = inter.u() + u = inter.u() # FIXME #print(u) b = ((u>=self._m) and (u<=self._M)) return b and b1 - - diff --git a/release/scripts/freestyle/style_modules/PredicatesU1D.py b/release/scripts/freestyle/style_modules/PredicatesU1D.py index 3529ca8b4e3..73c35d542b3 100644 --- a/release/scripts/freestyle/style_modules/PredicatesU1D.py +++ b/release/scripts/freestyle/style_modules/PredicatesU1D.py @@ -17,22 +17,18 @@ class pyHigherLengthUP1D(UnaryPredicate1D): def __init__(self,l): UnaryPredicate1D.__init__(self) self._l = l - def getName(self): return "HigherLengthUP1D" - def __call__(self, inter): - return (inter.getLength2D() > self._l) + return (inter.length_2d > self._l) class pyNatureUP1D(UnaryPredicate1D): def __init__(self,nature): UnaryPredicate1D.__init__(self) self._nature = nature self._getNature = CurveNatureF1D() - def getName(self): return "pyNatureUP1D" - def __call__(self, inter): if(self._getNature(inter) & self._nature): return 1 @@ -43,18 +39,16 @@ class pyHigherNumberOfTurnsUP1D(UnaryPredicate1D): UnaryPredicate1D.__init__(self) self._n = n self._a = a - def getName(self): return "HigherNumberOfTurnsUP1D" - def __call__(self, inter): count = 0 func = Curvature2DAngleF0D() - it = inter.verticesBegin() - while(it.isEnd() == 0): - if(func(it) > self._a): + it = inter.vertices_begin() + while not it.isEnd(): + if func(it) > self._a: count = count+1 - if(count > self._n): + if count > self._n: return 1 it.increment() return 0 @@ -66,12 +60,10 @@ class pyDensityUP1D(UnaryPredicate1D): self._threshold = threshold self._integration = integration self._func = DensityF1D(self._wsize, self._integration, sampling) - def getName(self): return "pyDensityUP1D" - def __call__(self, inter): - if(self._func(inter) < self._threshold): + if self._func(inter) < self._threshold: return 1 return 0 @@ -81,15 +73,13 @@ class pyLowSteerableViewMapDensityUP1D(UnaryPredicate1D): self._threshold = threshold self._level = level self._integration = integration - def getName(self): return "pyLowSteerableViewMapDensityUP1D" - def __call__(self, inter): func = GetSteerableViewMapDensityF1D(self._level, self._integration) v = func(inter) print(v) - if(v < self._threshold): + if v < self._threshold: return 1 return 0 @@ -100,15 +90,13 @@ class pyLowDirectionalViewMapDensityUP1D(UnaryPredicate1D): self._orientation = orientation self._level = level self._integration = integration - def getName(self): return "pyLowDirectionalViewMapDensityUP1D" - def __call__(self, inter): func = GetDirectionalViewMapDensityF1D(self._orientation, self._level, self._integration) v = func(inter) #print(v) - if(v < self._threshold): + if v < self._threshold: return 1 return 0 @@ -121,11 +109,9 @@ class pyHighSteerableViewMapDensityUP1D(UnaryPredicate1D): self._func = GetSteerableViewMapDensityF1D(self._level, self._integration) def getName(self): return "pyHighSteerableViewMapDensityUP1D" - def __call__(self, inter): - v = self._func(inter) - if(v > self._threshold): + if v > self._threshold: return 1 return 0 @@ -139,11 +125,10 @@ class pyHighDirectionalViewMapDensityUP1D(UnaryPredicate1D): self._sampling = sampling def getName(self): return "pyLowDirectionalViewMapDensityUP1D" - def __call__(self, inter): func = GetDirectionalViewMapDensityF1D(self._orientation, self._level, self._integration, self._sampling) v = func(inter) - if(v > self._threshold): + if v > self._threshold: return 1 return 0 @@ -155,16 +140,14 @@ class pyHighViewMapDensityUP1D(UnaryPredicate1D): self._integration = integration self._sampling = sampling self._func = GetCompleteViewMapDensityF1D(self._level, self._integration, self._sampling) # 2.0 is the smpling - def getName(self): return "pyHighViewMapDensityUP1D" - def __call__(self, inter): #print("toto") #print(func.getName()) #print(inter.getExactTypeName()) v= self._func(inter) - if(v > self._threshold): + if v > self._threshold: return 1 return 0 @@ -177,15 +160,13 @@ class pyDensityFunctorUP1D(UnaryPredicate1D): self._funcmin = float(funcmin) self._funcmax = float(funcmax) self._integration = integration - def getName(self): return "pyDensityFunctorUP1D" - def __call__(self, inter): func = DensityF1D(self._wsize, self._integration) res = self._functor(inter) k = (res-self._funcmin)/(self._funcmax-self._funcmin) - if(func(inter) < self._threshold*k): + if func(inter) < self._threshold*k: return 1 return 0 @@ -196,10 +177,9 @@ class pyZSmallerUP1D(UnaryPredicate1D): self._integration = integration def getName(self): return "pyZSmallerUP1D" - def __call__(self, inter): func = GetProjectedZF1D(self._integration) - if(func(inter) < self._z): + if func(inter) < self._z: return 1 return 0 @@ -213,32 +193,32 @@ class pyIsOccludedByUP1D(UnaryPredicate1D): func = GetShapeF1D() shapes = func(inter) for s in shapes: - if(s.getId() == self._id): + if(s.id == self._id): return 0 - it = inter.verticesBegin() - itlast = inter.verticesEnd() + it = inter.vertices_begin() + itlast = inter.vertices_end() itlast.decrement() v = it.getObject() vlast = itlast.getObject() - tvertex = v.viewvertex() + tvertex = v.viewvertex if type(tvertex) is TVertex: - print("TVertex: [ ", tvertex.getId().getFirst(), ",", tvertex.getId().getSecond()," ]") - eit = tvertex.edgesBegin() - while(eit.isEnd() == 0): + print("TVertex: [ ", tvertex.id.first, ",", tvertex.id.second," ]") + eit = tvertex.edges_begin() + while not eit.isEnd(): ve, incoming = eit.getObject() - if(ve.getId() == self._id): + if ve.id == self._id: return 1 - print("-------", ve.getId().getFirst(), "-", ve.getId().getSecond()) + print("-------", ve.id.first, "-", ve.id.second) eit.increment() - tvertex = vlast.viewvertex() + tvertex = vlast.viewvertex if type(tvertex) is TVertex: - print("TVertex: [ ", tvertex.getId().getFirst(), ",", tvertex.getId().getSecond()," ]") - eit = tvertex.edgesBegin() - while(eit.isEnd() == 0): + print("TVertex: [ ", tvertex.id.first, ",", tvertex.id.second," ]") + eit = tvertex.edges_begin() + while not eit.isEnd(): ve, incoming = eit.getObject() - if(ve.getId() == self._id): + if ve.id == self._id: return 1 - print("-------", ve.getId().getFirst(), "-", ve.getId().getSecond()) + print("-------", ve.id.first, "-", ve.id.second) eit.increment() return 0 @@ -252,7 +232,7 @@ class pyIsInOccludersListUP1D(UnaryPredicate1D): func = GetOccludersF1D() occluders = func(inter) for a in occluders: - if(a.getId() == self._id): + if a.id == self._id: return 1 return 0 @@ -268,7 +248,7 @@ class pyIsOccludedByItselfUP1D(UnaryPredicate1D): lst2 = self.__func2(inter) for vs1 in lst1: for vs2 in lst2: - if vs1.getId() == vs2.getId(): + if vs1.id == vs2.id: return 1 return 0 @@ -282,8 +262,8 @@ class pyIsOccludedByIdListUP1D(UnaryPredicate1D): def __call__(self, inter): lst1 = self.__func1(inter) for vs1 in lst1: - for id in self._idlist: - if vs1.getId() == id: + for _id in self._idlist: + if vs1.id == _id: return 1 return 0 @@ -292,29 +272,28 @@ class pyShapeIdListUP1D(UnaryPredicate1D): UnaryPredicate1D.__init__(self) self._idlist = idlist self._funcs = [] - for id in idlist : - self._funcs.append(ShapeUP1D(id.getFirst(), id.getSecond())) - + for _id in idlist : + self._funcs.append(ShapeUP1D(_id.first, _id.second)) def getName(self): return "pyShapeIdUP1D" def __call__(self, inter): for func in self._funcs : - if(func(inter) == 1) : + if func(inter) == 1: return 1 return 0 ## deprecated class pyShapeIdUP1D(UnaryPredicate1D): - def __init__(self,id): + def __init__(self, _id): UnaryPredicate1D.__init__(self) - self._id = id + self._id = _id def getName(self): return "pyShapeIdUP1D" def __call__(self, inter): func = GetShapeF1D() shapes = func(inter) for a in shapes: - if(a.getId() == self._id): + if a.id == self._id: return 1 return 0 @@ -352,30 +331,28 @@ class pyDensityVariableSigmaUP1D(UnaryPredicate1D): self._tmax = tmax self._integration = integration self._sampling = sampling - def getName(self): return "pyDensityUP1D" - def __call__(self, inter): sigma = (self._sigmaMax-self._sigmaMin)/(self._lmax-self._lmin)*(self._functor(inter)-self._lmin) + self._sigmaMin t = (self._tmax-self._tmin)/(self._lmax-self._lmin)*(self._functor(inter)-self._lmin) + self._tmin - if(sigma<self._sigmaMin): + if sigma < self._sigmaMin: sigma = self._sigmaMin self._func = DensityF1D(sigma, self._integration, self._sampling) d = self._func(inter) - if(d<t): + if d < t: return 1 return 0 class pyClosedCurveUP1D(UnaryPredicate1D): def __call__(self, inter): - it = inter.verticesBegin() - itlast = inter.verticesEnd() + it = inter.vertices_begin() + itlast = inter.vertices_end() itlast.decrement() vlast = itlast.getObject() v = it.getObject() - print(v.getId().getFirst(), v.getId().getSecond()) - print(vlast.getId().getFirst(), vlast.getId().getSecond()) - if(v.getId() == vlast.getId()): + print(v.id.first, v.id.second) + print(vlast.id.first, vlast.id.second) + if v.id == vlast.id: return 1 return 0 diff --git a/release/scripts/freestyle/style_modules/parameter_editor.py b/release/scripts/freestyle/style_modules/parameter_editor.py index 51664fe4ac6..e297a913e53 100644 --- a/release/scripts/freestyle/style_modules/parameter_editor.py +++ b/release/scripts/freestyle/style_modules/parameter_editor.py @@ -93,19 +93,19 @@ class ThicknessModifierMixIn: scene = Freestyle.getCurrentScene() self.__persp_camera = (scene.camera.data.type == "PERSP") def set_thickness(self, sv, outer, inner): - fe = sv.A().getFEdge(sv.B()) - nature = fe.getNature() + fe = sv.first_svertex.get_fedge(sv.second_svertex) + nature = fe.nature if (nature & Nature.BORDER): if self.__persp_camera: - point = -sv.getPoint3D() + point = -sv.point_3d.copy() point.normalize() - dir = point.dot(fe.normalB()) + dir = point.dot(fe.normal_left) else: - dir = fe.normalB().z + dir = fe.normal_left.z if dir < 0.0: # the back side is visible outer, inner = inner, outer elif (nature & Nature.SILHOUETTE): - if fe.isSmooth(): # TODO more tests needed + if fe.is_smooth: # TODO more tests needed outer, inner = inner, outer else: outer = inner = (outer + inner) / 2 @@ -158,7 +158,7 @@ class BaseThicknessShader(StrokeShader, ThicknessModifierMixIn): def getName(self): return "BaseThicknessShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while it.isEnd() == 0: sv = it.getObject() self.set_thickness(sv, self.__outer, self.__inner) @@ -167,9 +167,9 @@ class BaseThicknessShader(StrokeShader, ThicknessModifierMixIn): # Along Stroke modifiers def iter_t2d_along_stroke(stroke): - total = stroke.getLength2D() + total = stroke.length_2d distance = 0.0 - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): p = it.getObject().point if not it.isBegin(): @@ -220,9 +220,9 @@ class ThicknessAlongStrokeShader(ThicknessBlenderMixIn, CurveMappingModifier): def iter_distance_from_camera(stroke, range_min, range_max): normfac = range_max - range_min # normalization factor - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): - p = it.getObject().getPoint3D() # in the camera coordinate + p = it.getObject().point_3d # in the camera coordinate distance = p.length if distance < range_min: t = 0.0 @@ -288,9 +288,9 @@ def iter_distance_from_object(stroke, object, range_min, range_max): mv.invert() loc = mv * object.location # loc in the camera coordinate normfac = range_max - range_min # normalization factor - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): - p = it.getObject().getPoint3D() # in the camera coordinate + p = it.getObject().point_3d # in the camera coordinate distance = (p - loc).length if distance < range_min: t = 0.0 @@ -361,7 +361,7 @@ class ThicknessDistanceFromObjectShader(ThicknessBlenderMixIn, CurveMappingModif def iter_material_color(stroke, material_attr): func = CurveMaterialF0D() - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): material = func(it.castToInterface0DIterator()) if material_attr == "DIFF": @@ -379,7 +379,7 @@ def iter_material_color(stroke, material_attr): def iter_material_value(stroke, material_attr): func = CurveMaterialF0D() - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): material = func(it.castToInterface0DIterator()) if material_attr == "DIFF": @@ -405,7 +405,7 @@ def iter_material_value(stroke, material_attr): elif material_attr == "SPEC_B": t = material.specular[2] elif material_attr == "SPEC_HARDNESS": - t = material.shininess() + t = material.shininess elif material_attr == "ALPHA": t = material.diffuse[3] else: @@ -476,7 +476,7 @@ class CalligraphicThicknessShader(ThicknessBlenderMixIn, ScalarBlendModifier): self.__max_thickness = max_thickness def shade(self, stroke): func = VertexOrientation2DF0D() - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): dir = func(it.castToInterface0DIterator()) orthDir = mathutils.Vector((-dir.y, dir.x)) @@ -494,7 +494,7 @@ class CalligraphicThicknessShader(ThicknessBlenderMixIn, ScalarBlendModifier): def iter_distance_along_stroke(stroke): distance = 0.0 - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): p = it.getObject().point if not it.isBegin(): @@ -518,7 +518,7 @@ class SinusDisplacementShader(StrokeShader): n = self._getNormal(it.castToInterface0DIterator()) n = n * self._amplitude * math.cos(distance / self._wavelength * 2 * math.pi + self._phase) v.point = v.point + n - stroke.UpdateLength() + stroke.update_length() class PerlinNoise1DShader(StrokeShader): def __init__(self, freq = 10, amp = 10, oct = 4, angle = math.radians(45), seed = -1): @@ -531,14 +531,14 @@ class PerlinNoise1DShader(StrokeShader): def getName(self): return "PerlinNoise1DShader" def shade(self, stroke): - length = stroke.getLength2D() - it = stroke.strokeVerticesBegin() + length = stroke.length_2d + it = stroke.stroke_vertices_begin() while not it.isEnd(): v = it.getObject() nres = self.__noise.turbulence1(length * v.u, self.__freq, self.__amp, self.__oct) v.point = v.point + nres * self.__dir it.increment() - stroke.UpdateLength() + stroke.update_length() class PerlinNoise2DShader(StrokeShader): def __init__(self, freq = 10, amp = 10, oct = 4, angle = math.radians(45), seed = -1): @@ -551,14 +551,14 @@ class PerlinNoise2DShader(StrokeShader): def getName(self): return "PerlinNoise2DShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): v = it.getObject() - vec = Vector([v.getProjectedX(), v.getProjectedY()]) # FIXME + vec = Vector([v.projected_x, v.projected_y]) nres = self.__noise.turbulence2(vec, self.__freq, self.__amp, self.__oct) v.point = v.point + nres * self.__dir it.increment() - stroke.UpdateLength() + stroke.update_length() class Offset2DShader(StrokeShader): def __init__(self, start, end, x, y): @@ -570,7 +570,7 @@ class Offset2DShader(StrokeShader): def getName(self): return "Offset2DShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): v = it.getObject() u = v.u @@ -579,7 +579,7 @@ class Offset2DShader(StrokeShader): n = n * a v.point = v.point + n + self.__xy it.increment() - stroke.UpdateLength() + stroke.update_length() class Transform2DShader(StrokeShader): def __init__(self, pivot, scale_x, scale_y, angle, pivot_u, pivot_x, pivot_y): @@ -596,15 +596,15 @@ class Transform2DShader(StrokeShader): def shade(self, stroke): # determine the pivot of scaling and rotation operations if self.__pivot == "START": - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() pivot = it.getObject().point elif self.__pivot == "END": - it = stroke.strokeVerticesEnd() + it = stroke.stroke_vertices_end() it.decrement() pivot = it.getObject().point elif self.__pivot == "PARAM": p = None - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): prev = p v = it.getObject() @@ -621,7 +621,7 @@ class Transform2DShader(StrokeShader): elif self.__pivot == "CENTER": pivot = Vector([0.0, 0.0]) n = 0 - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): p = it.getObject().point pivot = pivot + p @@ -634,7 +634,7 @@ class Transform2DShader(StrokeShader): # apply scaling and rotation operations cos_theta = math.cos(self.__angle) sin_theta = math.sin(self.__angle) - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() while not it.isEnd(): v = it.getObject() p = v.point @@ -645,7 +645,7 @@ class Transform2DShader(StrokeShader): p.y = x * sin_theta + y * cos_theta v.point = p + pivot it.increment() - stroke.UpdateLength() + stroke.update_length() # Predicates and helper functions @@ -677,7 +677,7 @@ class ObjectNamesUP1D(UnaryPredicate1D): def getName(self): return "ObjectNamesUP1D" def __call__(self, viewEdge): - found = viewEdge.viewShape().getName() in self._names + found = viewEdge.viewshape.name in self._names if self._negative: return not found return found @@ -685,7 +685,7 @@ class ObjectNamesUP1D(UnaryPredicate1D): # Stroke caps def iter_stroke_vertices(stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() prev_p = None while not it.isEnd(): sv = it.getObject() @@ -715,7 +715,7 @@ class RoundCapShader(StrokeShader): caplen_end = (R + L) / 2.0 nverts_end = max(5, int(R + L)) # adjust the total number of stroke vertices - stroke.Resample(nverts + nverts_beg + nverts_end) + stroke.resample(nverts + nverts_beg + nverts_end) # restore the location and attribute of the original vertices for i in range(nverts): p, attr = buffer[i] @@ -748,7 +748,7 @@ class RoundCapShader(StrokeShader): stroke[-i-1].attribute = attr stroke[-i-1].attribute.thickness = (R * r, L * r) # update the curvilinear 2D length of each vertex - stroke.UpdateLength() + stroke.update_length() class SquareCapShader(StrokeShader): def shade(self, stroke): @@ -767,7 +767,7 @@ class SquareCapShader(StrokeShader): caplen_end = (R + L) / 2.0 nverts_end = 1 # adjust the total number of stroke vertices - stroke.Resample(nverts + nverts_beg + nverts_end) + stroke.resample(nverts + nverts_beg + nverts_end) # restore the location and attribute of the original vertices for i in range(nverts): p, attr = buffer[i] @@ -786,7 +786,7 @@ class SquareCapShader(StrokeShader): stroke[-1].point = p + d / d.length * caplen_beg stroke[-1].attribute = attr # update the curvilinear 2D length of each vertex - stroke.UpdateLength() + stroke.update_length() # Split by dashed line pattern @@ -847,7 +847,7 @@ class DashedLineShader(StrokeShader): start = 0.0 # 2D curvilinear length visible = True sampling = 1.0 - it = stroke.strokeVerticesBegin(sampling) + it = stroke.stroke_vertices_begin(sampling) while not it.isEnd(): pos = it.t() # The extra 'sampling' term is added below, because the @@ -872,14 +872,10 @@ class AngleLargerThanBP1D(BinaryPredicate1D): def getName(self): return "AngleLargerThanBP1D" def __call__(self, i1, i2): - fe1a = i1.fedgeA() - fe1b = i1.fedgeB() - fe2a = i2.fedgeA() - fe2b = i2.fedgeB() - sv1a = fe1a.vertexA().getPoint2D() - sv1b = fe1b.vertexB().getPoint2D() - sv2a = fe2a.vertexA().getPoint2D() - sv2b = fe2b.vertexB().getPoint2D() + sv1a = i1.first_fedge.first_svertex.point_2d + sv1b = i1.last_fedge.second_svertex.point_2d + sv2a = i2.first_fedge.first_svertex.point_2d + sv2b = i2.last_fedge.second_svertex.point_2d if (sv1a - sv2a).length < 1e-6: dir1 = sv1a - sv1b dir2 = sv2b - sv2a @@ -920,7 +916,7 @@ class LengthThresholdUP1D(UnaryPredicate1D): def getName(self): return "LengthThresholdUP1D" def __call__(self, inter): - length = inter.getLength2D() + length = inter.length_2d if self._min_length is not None and length < self._min_length: return False if self._max_length is not None and length > self._max_length: @@ -929,28 +925,28 @@ class LengthThresholdUP1D(UnaryPredicate1D): class FaceMarkBothUP1D(UnaryPredicate1D): def __call__(self, inter): # ViewEdge - fe = inter.fedgeA() + fe = inter.first_fedge while fe is not None: - if fe.isSmooth(): - if fe.faceMark(): + if fe.is_smooth: + if fe.face_mark: return True else: - if fe.aFaceMark() and fe.bFaceMark(): + if fe.face_mark_right and fe.face_mark_left: return True - fe = fe.nextEdge() + fe = fe.next_fedge return False class FaceMarkOneUP1D(UnaryPredicate1D): def __call__(self, inter): # ViewEdge - fe = inter.fedgeA() + fe = inter.first_fedge while fe is not None: - if fe.isSmooth(): - if fe.faceMark(): + if fe.is_smooth: + if fe.face_mark: return True else: - if fe.aFaceMark() or fe.bFaceMark(): + if fe.face_mark_right or fe.face_mark_left: return True - fe = fe.nextEdge() + fe = fe.next_fedge return False # predicates for splitting @@ -967,10 +963,10 @@ class MaterialBoundaryUP0D(UnaryPredicate0D): it.increment() if it.isEnd(): return False - fe = v.getFEdge(it_prev.getObject()) - idx1 = fe.materialIndex() if fe.isSmooth() else fe.bMaterialIndex() - fe = v.getFEdge(it.getObject()) - idx2 = fe.materialIndex() if fe.isSmooth() else fe.bMaterialIndex() + fe = v.get_fedge(it_prev.getObject()) + idx1 = fe.material_index if fe.is_smooth else fe.material_index_left + fe = v.get_fedge(it.getObject()) + idx2 = fe.material_index if fe.is_smooth else fe.material_index_left return idx1 != idx2 class Curvature2DAngleThresholdUP0D(UnaryPredicate0D): diff --git a/release/scripts/freestyle/style_modules/shaders.py b/release/scripts/freestyle/style_modules/shaders.py index 25a12b447fd..bd682336462 100644 --- a/release/scripts/freestyle/style_modules/shaders.py +++ b/release/scripts/freestyle/style_modules/shaders.py @@ -19,13 +19,12 @@ class pyDepthDiscontinuityThicknessShader(StrokeShader): def getName(self): return "pyDepthDiscontinuityThicknessShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() z_min=0.0 z_max=1.0 a = (self.__max - self.__min)/(z_max-z_min) b = (self.__min*z_max-self.__max*z_min)/(z_max-z_min) - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): z = self.__func(it.castToInterface0DIterator()) thickness = a*z+b it.getObject().attribute.thickness = (thickness, thickness) @@ -35,13 +34,11 @@ class pyConstantThicknessShader(StrokeShader): def __init__(self, thickness): StrokeShader.__init__(self) self._thickness = thickness - def getName(self): return "pyConstantThicknessShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): t = self._thickness/2.0 it.getObject().attribute.thickness = (t, t) it.increment() @@ -50,13 +47,11 @@ class pyFXSThicknessShader(StrokeShader): def __init__(self, thickness): StrokeShader.__init__(self) self._thickness = thickness - def getName(self): return "pyFXSThicknessShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): t = self._thickness/2.0 it.getObject().attribute.thickness = (t, t) it.increment() @@ -69,21 +64,19 @@ class pyFXSVaryingThicknessWithDensityShader(StrokeShader): self.threshold_max= threshold_max self._thicknessMin = thicknessMin self._thicknessMax = thicknessMax - def getName(self): return "pyVaryingThicknessWithDensityShader" def shade(self, stroke): - n = stroke.strokeVerticesSize() + n = stroke.stroke_vertices_size() i = 0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() + it = stroke.stroke_vertices_begin() func = DensityF0D(self.wsize) - while it.isEnd() == 0: + while not it.isEnd(): toto = it.castToInterface0DIterator() c= func(toto) - if (c < self.threshold_min ): + if c < self.threshold_min: c = self.threshold_min - if (c > self.threshold_max ): + if c > self.threshold_max: c = self.threshold_max ## t = (c - self.threshold_min)/(self.threshold_max - self.threshold_min)*(self._thicknessMax-self._thicknessMin) + self._thicknessMin t = (self.threshold_max - c )/(self.threshold_max - self.threshold_min)*(self._thicknessMax-self._thicknessMin) + self._thicknessMin @@ -96,17 +89,15 @@ class pyIncreasingThicknessShader(StrokeShader): StrokeShader.__init__(self) self._thicknessMin = thicknessMin self._thicknessMax = thicknessMax - def getName(self): return "pyIncreasingThicknessShader" def shade(self, stroke): - n = stroke.strokeVerticesSize() + n = stroke.stroke_vertices_size() i = 0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): c = float(i)/float(n) - if(i < float(n)/2.0): + if i < float(n)/2.0: t = (1.0 - c)*self._thicknessMin + c * self._thicknessMax else: t = (1.0 - c)*self._thicknessMax + c * self._thicknessMin @@ -120,30 +111,28 @@ class pyConstrainedIncreasingThicknessShader(StrokeShader): self._thicknessMin = thicknessMin self._thicknessMax = thicknessMax self._ratio = ratio - def getName(self): return "pyConstrainedIncreasingThicknessShader" def shade(self, stroke): - slength = stroke.getLength2D() + slength = stroke.length_2d tmp = self._ratio*slength maxT = 0.0 - if(tmp < self._thicknessMax): + if tmp < self._thicknessMax: maxT = tmp else: maxT = self._thicknessMax - n = stroke.strokeVerticesSize() + n = stroke.stroke_vertices_size() i = 0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): att = it.getObject().attribute c = float(i)/float(n) - if(i < float(n)/2.0): + if i < float(n)/2.0: t = (1.0 - c)*self._thicknessMin + c * maxT else: t = (1.0 - c)*maxT + c * self._thicknessMin att.thickness = (t/2.0, t/2.0) - if(i == n-1): + if i == n-1: att.thickness = (self._thicknessMin/2.0, self._thicknessMin/2.0) i = i+1 it.increment() @@ -153,29 +142,27 @@ class pyDecreasingThicknessShader(StrokeShader): StrokeShader.__init__(self) self._thicknessMin = thicknessMin self._thicknessMax = thicknessMax - def getName(self): return "pyDecreasingThicknessShader" def shade(self, stroke): - l = stroke.getLength2D() + l = stroke.length_2d tMax = self._thicknessMax - if(self._thicknessMax > 0.33*l): + if self._thicknessMax > 0.33*l: tMax = 0.33*l tMin = self._thicknessMin - if(self._thicknessMin > 0.1*l): + if self._thicknessMin > 0.1*l: tMin = 0.1*l - n = stroke.strokeVerticesSize() + n = stroke.stroke_vertices_size() i = 0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): c = float(i)/float(n) t = (1.0 - c)*tMax +c*tMin it.getObject().attribute.thickness = (t/2.0, t/2.0) i = i+1 it.increment() -def smoothC( a, exp ): +def smoothC(a, exp): c = pow(float(a),exp)*pow(2.0,exp) return c @@ -185,16 +172,14 @@ class pyNonLinearVaryingThicknessShader(StrokeShader): self._thicknessMin = thicknessMiddle self._thicknessMax = thicknessExtremity self._exponent = exponent - def getName(self): return "pyNonLinearVaryingThicknessShader" def shade(self, stroke): - n = stroke.strokeVerticesSize() + n = stroke.stroke_vertices_size() i = 0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: - if(i < float(n)/2.0): + it = stroke.stroke_vertices_begin() + while not it.isEnd(): + if i < float(n)/2.0: c = float(i)/float(n) else: c = float(n-i)/float(n) @@ -211,23 +196,20 @@ class pySLERPThicknessShader(StrokeShader): self._thicknessMin = thicknessMin self._thicknessMax = thicknessMax self._omega = omega - def getName(self): return "pySLERPThicknessShader" def shade(self, stroke): - slength = stroke.getLength2D() + slength = stroke.length_2d tmp = 0.33*slength maxT = self._thicknessMax - if(tmp < self._thicknessMax): + if tmp < self._thicknessMax: maxT = tmp - - n = stroke.strokeVerticesSize() + n = stroke.stroke_vertices_size() i = 0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): c = float(i)/float(n) - if(i < float(n)/2.0): + if i < float(n)/2.0: t = sin((1-c)*self._omega)/sinh(self._omega)*self._thicknessMin + sin(c*self._omega)/sinh(self._omega) * maxT else: t = sin((1-c)*self._omega)/sinh(self._omega)*maxT + sin(c*self._omega)/sinh(self._omega) * self._thicknessMin @@ -240,26 +222,24 @@ class pyTVertexThickenerShader(StrokeShader): ## FIXME StrokeShader.__init__(self) self._a = a self._n = n - def getName(self): return "pyTVertexThickenerShader" - def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() predTVertex = pyVertexNatureUP0D(Nature.T_VERTEX) - while it.isEnd() == 0: - if(predTVertex(it) == 1): + while not it.isEnd(): + if predTVertex(it) == 1: it2 = StrokeVertexIterator(it) it2.increment() - if not(it.isBegin() or it2.isEnd()): + if not (it.isBegin() or it2.isEnd()): it.increment() continue n = self._n a = self._a - if(it.isBegin()): + if it.isBegin(): it3 = StrokeVertexIterator(it) count = 0 - while (it3.isEnd() == 0 and count < n): + while (not it3.isEnd()) and count < n: att = it3.getObject().attribute (tr, tl) = att.thickness r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1 @@ -267,10 +247,10 @@ class pyTVertexThickenerShader(StrokeShader): ## FIXME att.thickness = (r*tr, r*tl) it3.increment() count = count + 1 - if(it2.isEnd()): + if it2.isEnd(): it4 = StrokeVertexIterator(it) count = 0 - while (it4.isBegin() == 0 and count < n): + while (not it4.isBegin()) and count < n: att = it4.getObject().attribute (tr, tl) = att.thickness r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1 @@ -278,7 +258,7 @@ class pyTVertexThickenerShader(StrokeShader): ## FIXME att.thickness = (r*tr, r*tl) it4.decrement() count = count + 1 - if ((it4.isBegin() == 1)): + if it4.isBegin(): att = it4.getObject().attribute (tr, tl) = att.thickness r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1 @@ -294,17 +274,16 @@ class pyImportance2DThicknessShader(StrokeShader): self._w = float(w) self._kmin = float(kmin) self._kmax = float(kmax) - def getName(self): return "pyImportanceThicknessShader" def shade(self, stroke): origin = Vector([self._x, self._y]) - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): v = it.getObject() - p = Vector([v.getProjectedX(), v.getProjectedY()]) + p = Vector([v.projected_x, v.projected_y]) d = (p-origin).length - if(d>self._w): + if d > self._w: k = self._kmin else: k = (self._kmax*(self._w-d) + self._kmin*d)/self._w @@ -322,17 +301,16 @@ class pyImportance3DThicknessShader(StrokeShader): self._w = float(w) self._kmin = float(kmin) self._kmax = float(kmax) - def getName(self): return "pyImportance3DThicknessShader" def shade(self, stroke): origin = Vector([self._x, self._y, self._z]) - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): v = it.getObject() - p = Vector([v.getX(), v.getY(), v.getZ()]) + p = v.point_3d d = (p-origin).length - if(d>self._w): + if d > self._w: k = self._kmin else: k = (self._kmax*(self._w-d) + self._kmin*d)/self._w @@ -350,10 +328,10 @@ class pyZDependingThicknessShader(StrokeShader): def getName(self): return "pyZDependingThicknessShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() z_min = 1 z_max = 0 - while it.isEnd() == 0: + while not it.isEnd(): z = self.__func(it.castToInterface0DIterator()) if z < z_min: z_min = z @@ -361,8 +339,8 @@ class pyZDependingThicknessShader(StrokeShader): z_max = z it.increment() z_diff = 1 / (z_max - z_min) - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): z = (self.__func(it.castToInterface0DIterator()) - z_min) * z_diff thickness = (1 - z) * self.__max + z * self.__min it.getObject().attribute.thickness = (thickness, thickness) @@ -382,9 +360,8 @@ class pyConstantColorShader(StrokeShader): def getName(self): return "pyConstantColorShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): att = it.getObject().attribute att.color = (self._r, self._g, self._b) att.alpha = self._a @@ -399,11 +376,10 @@ class pyIncreasingColorShader(StrokeShader): def getName(self): return "pyIncreasingColorShader" def shade(self, stroke): - n = stroke.strokeVerticesSize() - 1 + n = stroke.stroke_vertices_size() - 1 inc = 0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): att = it.getObject().attribute c = float(inc)/float(n) @@ -423,11 +399,10 @@ class pyInterpolateColorShader(StrokeShader): def getName(self): return "pyInterpolateColorShader" def shade(self, stroke): - n = stroke.strokeVerticesSize() - 1 + n = stroke.stroke_vertices_size() - 1 inc = 0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): att = it.getObject().attribute u = float(inc)/float(n) c = 1-2*(fabs(u-0.5)) @@ -442,20 +417,17 @@ class pyMaterialColorShader(StrokeShader): def __init__(self, threshold=50): StrokeShader.__init__(self) self._threshold = threshold - def getName(self): return "pyMaterialColorShader" - def shade(self, stroke): - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() + it = stroke.stroke_vertices_begin() func = MaterialF0D() xn = 0.312713 yn = 0.329016 Yn = 1.0 un = 4.* xn/ ( -2.*xn + 12.*yn + 3. ) vn= 9.* yn/ ( -2.*xn + 12.*yn +3. ) - while it.isEnd() == 0: + while not it.isEnd(): toto = it.castToInterface0DIterator() mat = func(toto) @@ -467,7 +439,7 @@ class pyMaterialColorShader(StrokeShader): Y = 0.212671*r + 0.71516 *g + 0.072169*b Z = 0.019334*r + 0.119193*g + 0.950227*b - if((X == 0) and (Y == 0) and (Z == 0)): + if X == 0 and Y == 0 and Z == 0: X = 0.01 Y = 0.01 Z = 0.01 @@ -478,7 +450,7 @@ class pyMaterialColorShader(StrokeShader): U = 13. * L * (u - un) V = 13. * L * (v - vn) - if (L > self._threshold): + if L > self._threshold: L = L/1.3 U = U+10 else: @@ -504,30 +476,29 @@ class pyMaterialColorShader(StrokeShader): it.increment() class pyRandomColorShader(StrokeShader): - def getName(self): - return "pyRandomColorShader" def __init__(self, s=1): StrokeShader.__init__(self) seed(s) + def getName(self): + return "pyRandomColorShader" def shade(self, stroke): ## pick a random color c0 = float(uniform(15,75))/100.0 c1 = float(uniform(15,75))/100.0 c2 = float(uniform(15,75))/100.0 print(c0, c1, c2) - it = stroke.strokeVerticesBegin() - while(it.isEnd() == 0): + it = stroke.stroke_vertices_begin() + while not it.isEnd(): it.getObject().attribute.color = (c0,c1,c2) it.increment() class py2DCurvatureColorShader(StrokeShader): def getName(self): return "py2DCurvatureColorShader" - def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() func = Curvature2DAngleF0D() - while it.isEnd() == 0: + while not it.isEnd(): c = func(it.castToInterface0DIterator()) if c < 0: print("negative 2D curvature") @@ -542,9 +513,8 @@ class pyTimeColorShader(StrokeShader): self._step = step def shade(self, stroke): c = self._t*1.0 - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): it.getObject().attribute.color = (c,c,c) it.increment() self._t = self._t+self._step @@ -558,8 +528,8 @@ class pySamplingShader(StrokeShader): def getName(self): return "pySamplingShader" def shade(self, stroke): - stroke.Resample(float(self._sampling)) - stroke.UpdateLength() + stroke.resample(float(self._sampling)) + stroke.update_length() class pyBackboneStretcherShader(StrokeShader): def __init__(self, l): @@ -568,10 +538,10 @@ class pyBackboneStretcherShader(StrokeShader): def getName(self): return "pyBackboneStretcherShader" def shade(self, stroke): - it0 = stroke.strokeVerticesBegin() + it0 = stroke.stroke_vertices_begin() it1 = StrokeVertexIterator(it0) it1.increment() - itn = stroke.strokeVerticesEnd() + itn = stroke.stroke_vertices_end() itn.decrement() itn_1 = StrokeVertexIterator(itn) itn_1.decrement() @@ -579,10 +549,10 @@ class pyBackboneStretcherShader(StrokeShader): v1 = it1.getObject() vn_1 = itn_1.getObject() vn = itn.getObject() - p0 = Vector([v0.getProjectedX(), v0.getProjectedY()]) - pn = Vector([vn.getProjectedX(), vn.getProjectedY()]) - p1 = Vector([v1.getProjectedX(), v1.getProjectedY()]) - pn_1 = Vector([vn_1.getProjectedX(), vn_1.getProjectedY()]) + p0 = Vector([v0.projected_x, v0.projected_y]) + pn = Vector([vn.projected_x, vn.projected_y]) + p1 = Vector([v1.projected_x, v1.projected_y]) + pn_1 = Vector([vn_1.projected_x, vn_1.projected_y]) d1 = p0-p1 d1.normalize() dn = pn-pn_1 @@ -591,7 +561,7 @@ class pyBackboneStretcherShader(StrokeShader): newLast = pn+dn*float(self._l) v0.point = newFirst vn.point = newLast - stroke.UpdateLength() + stroke.update_length() class pyLengthDependingBackboneStretcherShader(StrokeShader): def __init__(self, l): @@ -600,12 +570,12 @@ class pyLengthDependingBackboneStretcherShader(StrokeShader): def getName(self): return "pyBackboneStretcherShader" def shade(self, stroke): - l = stroke.getLength2D() + l = stroke.length_2d stretch = self._l*l - it0 = stroke.strokeVerticesBegin() + it0 = stroke.stroke_vertices_begin() it1 = StrokeVertexIterator(it0) it1.increment() - itn = stroke.strokeVerticesEnd() + itn = stroke.stroke_vertices_end() itn.decrement() itn_1 = StrokeVertexIterator(itn) itn_1.decrement() @@ -613,10 +583,10 @@ class pyLengthDependingBackboneStretcherShader(StrokeShader): v1 = it1.getObject() vn_1 = itn_1.getObject() vn = itn.getObject() - p0 = Vector([v0.getProjectedX(), v0.getProjectedY()]) - pn = Vector([vn.getProjectedX(), vn.getProjectedY()]) - p1 = Vector([v1.getProjectedX(), v1.getProjectedY()]) - pn_1 = Vector([vn_1.getProjectedX(), vn_1.getProjectedY()]) + p0 = Vector([v0.projected_x, v0.projected_y]) + pn = Vector([vn.projected_x, vn.projected_y]) + p1 = Vector([v1.projected_x, v1.projected_y]) + pn_1 = Vector([vn_1.projected_x, vn_1.projected_y]) d1 = p0-p1 d1.normalize() dn = pn-pn_1 @@ -625,7 +595,7 @@ class pyLengthDependingBackboneStretcherShader(StrokeShader): newLast = pn+dn*float(stretch) v0.point = newFirst vn.point = newLast - stroke.UpdateLength() + stroke.update_length() ## Shader to replace a stroke by its corresponding tangent @@ -634,27 +604,27 @@ class pyGuidingLineShader(StrokeShader): return "pyGuidingLineShader" ## shading method def shade(self, stroke): - it = stroke.strokeVerticesBegin() ## get the first vertex - itlast = stroke.strokeVerticesEnd() ## + it = stroke.stroke_vertices_begin() ## get the first vertex + itlast = stroke.stroke_vertices_end() ## itlast.decrement() ## get the last one t = itlast.getObject().point - it.getObject().point ## tangent direction itmiddle = StrokeVertexIterator(it) ## - while(itmiddle.getObject().u<0.5): ## look for the stroke middle vertex + while itmiddle.getObject().u < 0.5: ## look for the stroke middle vertex itmiddle.increment() ## it = StrokeVertexIterator(itmiddle) it.increment() - while(it.isEnd() == 0): ## position all the vertices along the tangent for the right part + while not it.isEnd(): ## position all the vertices along the tangent for the right part it.getObject().point = itmiddle.getObject().point \ +t*(it.getObject().u-itmiddle.getObject().u) it.increment() it = StrokeVertexIterator(itmiddle) it.decrement() - while(it.isBegin() == 0): ## position all the vertices along the tangent for the left part + while not it.isBegin(): ## position all the vertices along the tangent for the left part it.getObject().point = itmiddle.getObject().point \ -t*(itmiddle.getObject().u-it.getObject().u) it.decrement() it.getObject().point = itmiddle.getObject().point-t*itmiddle.getObject().u ## first vertex - stroke.UpdateLength() + stroke.update_length() class pyBackboneStretcherNoCuspShader(StrokeShader): @@ -664,16 +634,16 @@ class pyBackboneStretcherNoCuspShader(StrokeShader): def getName(self): return "pyBackboneStretcherNoCuspShader" def shade(self, stroke): - it0 = stroke.strokeVerticesBegin() + it0 = stroke.stroke_vertices_begin() it1 = StrokeVertexIterator(it0) it1.increment() - itn = stroke.strokeVerticesEnd() + itn = stroke.stroke_vertices_end() itn.decrement() itn_1 = StrokeVertexIterator(itn) itn_1.decrement() v0 = it0.getObject() v1 = it1.getObject() - if((v0.getNature() & Nature.CUSP == 0) and (v1.getNature() & Nature.CUSP == 0)): + if (v0.nature & Nature.CUSP) == 0 and (v1.nature & Nature.CUSP) == 0: p0 = v0.point p1 = v1.point d1 = p0-p1 @@ -682,14 +652,14 @@ class pyBackboneStretcherNoCuspShader(StrokeShader): v0.point = newFirst vn_1 = itn_1.getObject() vn = itn.getObject() - if((vn.getNature() & Nature.CUSP == 0) and (vn_1.getNature() & Nature.CUSP == 0)): + if (vn.nature & Nature.CUSP) == 0 and (vn_1.nature & Nature.CUSP) == 0: pn = vn.point pn_1 = vn_1.point dn = pn-pn_1 dn.normalize() newLast = pn+dn*float(self._l) vn.point = newLast - stroke.UpdateLength() + stroke.update_length() class pyDiffusion2Shader(StrokeShader): """This shader iteratively adds an offset to the position of each @@ -706,14 +676,14 @@ class pyDiffusion2Shader(StrokeShader): return "pyDiffusionShader" def shade(self, stroke): for i in range (1, self._nbIter): - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: - v=it.getObject() + it = stroke.stroke_vertices_begin() + while not it.isEnd(): + v = it.getObject() p1 = v.point p2 = self._normalInfo(it.castToInterface0DIterator())*self._lambda*self._curvatureInfo(it.castToInterface0DIterator()) v.point = p1+p2 it.increment() - stroke.UpdateLength() + stroke.update_length() class pyTipRemoverShader(StrokeShader): def __init__(self, l): @@ -722,49 +692,49 @@ class pyTipRemoverShader(StrokeShader): def getName(self): return "pyTipRemoverShader" def shade(self, stroke): - originalSize = stroke.strokeVerticesSize() - if(originalSize<4): + originalSize = stroke.stroke_vertices_size() + if originalSize < 4: return verticesToRemove = [] oldAttributes = [] - it = stroke.strokeVerticesBegin() - while(it.isEnd() == 0): + it = stroke.stroke_vertices_begin() + while not it.isEnd(): v = it.getObject() - if((v.curvilinear_abscissa < self._l) or (v.stroke_length-v.curvilinear_abscissa < self._l)): + if v.curvilinear_abscissa < self._l or v.stroke_length-v.curvilinear_abscissa < self._l: verticesToRemove.append(v) oldAttributes.append(StrokeAttribute(v.attribute)) it.increment() - if(originalSize-len(verticesToRemove) < 2): + if originalSize-len(verticesToRemove) < 2: return for sv in verticesToRemove: - stroke.RemoveVertex(sv) - stroke.UpdateLength() - stroke.Resample(originalSize) - if(stroke.strokeVerticesSize() != originalSize): + stroke.remove_vertex(sv) + stroke.update_length() + stroke.resample(originalSize) + if stroke.stroke_vertices_size() != originalSize: print("pyTipRemover: Warning: resampling problem") - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() for a in oldAttributes: - if(it.isEnd() == 1): + if it.isEnd(): break it.getObject().attribute = a it.increment() - stroke.UpdateLength() + stroke.update_length() class pyTVertexRemoverShader(StrokeShader): def getName(self): return "pyTVertexRemoverShader" def shade(self, stroke): - if(stroke.strokeVerticesSize() <= 3 ): + if stroke.stroke_vertices_size() <= 3: return predTVertex = pyVertexNatureUP0D(Nature.T_VERTEX) - it = stroke.strokeVerticesBegin() - itlast = stroke.strokeVerticesEnd() + it = stroke.stroke_vertices_begin() + itlast = stroke.stroke_vertices_end() itlast.decrement() - if(predTVertex(it) == 1): - stroke.RemoveVertex(it.getObject()) - if(predTVertex(itlast) == 1): - stroke.RemoveVertex(itlast.getObject()) - stroke.UpdateLength() + if predTVertex(it): + stroke.remove_vertex(it.getObject()) + if predTVertex(itlast): + stroke.remove_vertex(itlast.getObject()) + stroke.update_length() class pyExtremitiesOrientationShader(StrokeShader): def __init__(self, x1,y1,x2=0,y2=0): @@ -774,39 +744,39 @@ class pyExtremitiesOrientationShader(StrokeShader): def getName(self): return "pyExtremitiesOrientationShader" def shade(self, stroke): - print(self._v1.x,self._v1.y) + #print(self._v1.x,self._v1.y) stroke.setBeginningOrientation(self._v1.x,self._v1.y) stroke.setEndingOrientation(self._v2.x,self._v2.y) -def getFEdge(it1, it2): - return it1.getFEdge(it2) +def get_fedge(it1, it2): + return it1.get_fedge(it2) class pyHLRShader(StrokeShader): def getName(self): return "pyHLRShader" def shade(self, stroke): - originalSize = stroke.strokeVerticesSize() - if(originalSize<4): + originalSize = stroke.stroke_vertices_size() + if originalSize < 4: return - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() invisible = 0 it2 = StrokeVertexIterator(it) it2.increment() - fe = getFEdge(it.getObject(), it2.getObject()) - if(fe.viewedge().qi() != 0): + fe = get_fedge(it.getObject(), it2.getObject()) + if fe.viewedge.qi != 0: invisible = 1 - while(it2.isEnd() == 0): + while not it2.isEnd(): v = it.getObject() vnext = it2.getObject() - if(v.getNature() & Nature.VIEW_VERTEX): - #if(v.getNature() & Nature.T_VERTEX): - fe = getFEdge(v,vnext) - qi = fe.viewedge().qi() - if(qi != 0): + if (v.nature & Nature.VIEW_VERTEX) != 0: + #if (v.nature & Nature.T_VERTEX) != 0: + fe = get_fedge(v, vnext) + qi = fe.viewedge.qi + if qi != 0: invisible = 1 else: invisible = 0 - if(invisible == 1): + if invisible: v.attribute.visible = False it.increment() it2.increment() @@ -820,53 +790,53 @@ class pyTVertexOrientationShader(StrokeShader): ## finds the TVertex orientation from the TVertex and ## the previous or next edge def findOrientation(self, tv, ve): - mateVE = tv.mate(ve) - if ve.qi() != 0 or mateVE.qi() != 0: + mateVE = tv.get_mate(ve) + if ve.qi != 0 or mateVE.qi != 0: ait = AdjacencyIterator(tv,1,0) winner = None incoming = True while not ait.isEnd(): ave = ait.getObject() - if ave.getId() != ve.getId() and ave.getId() != mateVE.getId(): + if ave.id != ve.id and ave.id != mateVE.id: winner = ait.getObject() - if not ait.isIncoming(): + if not ait.isIncoming(): # FIXME incoming = False break ait.increment() if winner is not None: if not incoming: - direction = self._Get2dDirection(winner.fedgeB()) + direction = self._Get2dDirection(winner.last_fedge) else: - direction = self._Get2dDirection(winner.fedgeA()) + direction = self._Get2dDirection(winner.first_fedge) return direction return None def castToTVertex(self, cp): if cp.t2d() == 0.0: - return cp.A().viewvertex() + return cp.first_svertex.viewvertex elif cp.t2d() == 1.0: - return cp.B().viewvertex() + return cp.second_svertex.viewvertex return None def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() it2 = StrokeVertexIterator(it) it2.increment() ## case where the first vertex is a TVertex v = it.getObject() - if(v.getNature() & Nature.T_VERTEX): + if (v.nature & Nature.T_VERTEX) != 0: tv = self.castToTVertex(v) if tv is not None: - ve = getFEdge(v, it2.getObject()).viewedge() + ve = get_fedge(v, it2.getObject()).viewedge dir = self.findOrientation(tv, ve) if dir is not None: #print(dir.x, dir.y) v.attribute.set_attribute_vec2("orientation", dir) - while(it2.isEnd() == 0): + while not it2.isEnd(): vprevious = it.getObject() v = it2.getObject() - if(v.getNature() & Nature.T_VERTEX): + if (v.nature & Nature.T_VERTEX) != 0: tv = self.castToTVertex(v) if tv is not None: - ve = getFEdge(vprevious, v).viewedge() + ve = get_fedge(vprevious, v).viewedge dir = self.findOrientation(tv, ve) if dir is not None: #print(dir.x, dir.y) @@ -875,12 +845,12 @@ class pyTVertexOrientationShader(StrokeShader): it2.increment() ## case where the last vertex is a TVertex v = it.getObject() - if(v.getNature() & Nature.T_VERTEX): + if (v.nature & Nature.T_VERTEX) != 0: itPrevious = StrokeVertexIterator(it) itPrevious.decrement() tv = self.castToTVertex(v) if tv is not None: - ve = getFEdge(itPrevious.getObject(), v).viewedge() + ve = get_fedge(itPrevious.getObject(), v).viewedge dir = self.findOrientation(tv, ve) if dir is not None: #print(dir.x, dir.y) @@ -892,12 +862,11 @@ class pySinusDisplacementShader(StrokeShader): self._f = f self._a = a self._getNormal = Normal2DF0D() - def getName(self): return "pySinusDisplacementShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): v = it.getObject() #print(self._getNormal.getName()) n = self._getNormal(it.castToInterface0DIterator()) @@ -909,7 +878,7 @@ class pySinusDisplacementShader(StrokeShader): v.point = p+n #v.point = v.point+n*a*cos(f*v.u) it.increment() - stroke.UpdateLength() + stroke.update_length() class pyPerlinNoise1DShader(StrokeShader): def __init__(self, freq = 10, amp = 10, oct = 4, seed = -1): @@ -921,14 +890,14 @@ class pyPerlinNoise1DShader(StrokeShader): def getName(self): return "pyPerlinNoise1DShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): v = it.getObject() - i = v.getProjectedX() + v.getProjectedY() + i = v.projected_x + v.projected_y nres = self.__noise.turbulence1(i, self.__freq, self.__amp, self.__oct) - v.point = (v.getProjectedX() + nres, v.getProjectedY() + nres) + v.point = (v.projected_x + nres, v.projected_y + nres) it.increment() - stroke.UpdateLength() + stroke.update_length() class pyPerlinNoise2DShader(StrokeShader): def __init__(self, freq = 10, amp = 10, oct = 4, seed = -1): @@ -940,14 +909,14 @@ class pyPerlinNoise2DShader(StrokeShader): def getName(self): return "pyPerlinNoise2DShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): v = it.getObject() - vec = Vector([v.getProjectedX(), v.getProjectedY()]) + vec = Vector([v.projected_x, v.projected_y]) nres = self.__noise.turbulence2(vec, self.__freq, self.__amp, self.__oct) - v.point = (v.getProjectedX() + nres, v.getProjectedY() + nres) + v.point = (v.projected_x + nres, v.projected_y + nres) it.increment() - stroke.UpdateLength() + stroke.update_length() class pyBluePrintCirclesShader(StrokeShader): def __init__(self, turns = 1, random_radius = 3, random_center = 5): @@ -958,24 +927,24 @@ class pyBluePrintCirclesShader(StrokeShader): def getName(self): return "pyBluePrintCirclesShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() if it.isEnd(): return - p_min = Vector(it.getObject().point) - p_max = Vector(it.getObject().point) - while it.isEnd() == 0: + p_min = it.getObject().point.copy() + p_max = it.getObject().point.copy() + while not it.isEnd(): p = it.getObject().point - if (p.x < p_min.x): + if p.x < p_min.x: p_min.x = p.x - if (p.x > p_max.x): + if p.x > p_max.x: p_max.x = p.x - if (p.y < p_min.y): + if p.y < p_min.y: p_min.y = p.y - if (p.y > p_max.y): + if p.y > p_max.y: p_max.y = p.y it.increment() - stroke.Resample(32 * self.__turns) - sv_nb = stroke.strokeVerticesSize() + stroke.resample(32 * self.__turns) + sv_nb = stroke.stroke_vertices_size() # print("min :", p_min.x, p_min.y) # DEBUG # print("mean :", p_sum.x, p_sum.y) # DEBUG # print("max :", p_max.x, p_max.y) # DEBUG @@ -989,13 +958,13 @@ class pyBluePrintCirclesShader(StrokeShader): R = self.__random_radius C = self.__random_center i = 0 - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() for j in range(self.__turns): prev_radius = radius prev_center = center radius = radius + randint(-R, R) center = center + Vector([randint(-C, C), randint(-C, C)]) - while i < sv_nb and it.isEnd() == 0: + while i < sv_nb and not it.isEnd(): t = float(i) / float(sv_nb - 1) r = prev_radius + (radius - prev_radius) * t c = prev_center + (center - prev_center) * t @@ -1006,12 +975,12 @@ class pyBluePrintCirclesShader(StrokeShader): it.increment() i = 1 verticesToRemove = [] - while it.isEnd() == 0: + while not it.isEnd(): verticesToRemove.append(it.getObject()) it.increment() for sv in verticesToRemove: - stroke.RemoveVertex(sv) - stroke.UpdateLength() + stroke.remove_vertex(sv) + stroke.update_length() class pyBluePrintEllipsesShader(StrokeShader): def __init__(self, turns = 1, random_radius = 3, random_center = 5): @@ -1022,24 +991,24 @@ class pyBluePrintEllipsesShader(StrokeShader): def getName(self): return "pyBluePrintEllipsesShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() if it.isEnd(): return - p_min = Vector(it.getObject().point) - p_max = Vector(it.getObject().point) - while it.isEnd() == 0: + p_min = it.getObject().point.copy() + p_max = it.getObject().point.copy() + while not it.isEnd(): p = it.getObject().point - if (p.x < p_min.x): + if p.x < p_min.x: p_min.x = p.x - if (p.x > p_max.x): + if p.x > p_max.x: p_max.x = p.x - if (p.y < p_min.y): + if p.y < p_min.y: p_min.y = p.y - if (p.y > p_max.y): + if p.y > p_max.y: p_max.y = p.y it.increment() - stroke.Resample(32 * self.__turns) - sv_nb = stroke.strokeVerticesSize() + stroke.resample(32 * self.__turns) + sv_nb = stroke.stroke_vertices_size() sv_nb = sv_nb // self.__turns center = (p_min + p_max) / 2 radius = center - p_min @@ -1048,13 +1017,13 @@ class pyBluePrintEllipsesShader(StrokeShader): R = self.__random_radius C = self.__random_center i = 0 - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() for j in range(self.__turns): prev_radius = radius prev_center = center radius = radius + Vector([randint(-R, R), randint(-R, R)]) center = center + Vector([randint(-C, C), randint(-C, C)]) - while i < sv_nb and it.isEnd() == 0: + while i < sv_nb and not it.isEnd(): t = float(i) / float(sv_nb - 1) r = prev_radius + (radius - prev_radius) * t c = prev_center + (center - prev_center) * t @@ -1065,12 +1034,12 @@ class pyBluePrintEllipsesShader(StrokeShader): it.increment() i = 1 verticesToRemove = [] - while it.isEnd() == 0: + while not it.isEnd(): verticesToRemove.append(it.getObject()) it.increment() for sv in verticesToRemove: - stroke.RemoveVertex(sv) - stroke.UpdateLength() + stroke.remove_vertex(sv) + stroke.update_length() class pyBluePrintSquaresShader(StrokeShader): @@ -1079,29 +1048,27 @@ class pyBluePrintSquaresShader(StrokeShader): self.__turns = turns self.__bb_len = bb_len self.__bb_rand = bb_rand - def getName(self): return "pyBluePrintSquaresShader" - def shade(self, stroke): - it = stroke.strokeVerticesBegin() + it = stroke.stroke_vertices_begin() if it.isEnd(): return - p_min = Vector(it.getObject().point) - p_max = Vector(it.getObject().point) - while it.isEnd() == 0: + p_min = it.getObject().point.copy() + p_max = it.getObject().point.copy() + while not it.isEnd(): p = it.getObject().point - if (p.x < p_min.x): + if p.x < p_min.x: p_min.x = p.x - if (p.x > p_max.x): + if p.x > p_max.x: p_max.x = p.x - if (p.y < p_min.y): + if p.y < p_min.y: p_min.y = p.y - if (p.y > p_max.y): + if p.y > p_max.y: p_max.y = p.y it.increment() - stroke.Resample(32 * self.__turns) - sv_nb = stroke.strokeVerticesSize() + stroke.resample(32 * self.__turns) + sv_nb = stroke.stroke_vertices_size() ####################################################### sv_nb = sv_nb // self.__turns first = sv_nb // 4 @@ -1119,8 +1086,8 @@ class pyBluePrintSquaresShader(StrokeShader): ####################################################### R = self.__bb_rand r = self.__bb_rand // 2 - it = stroke.strokeVerticesBegin() - visible = 1 + it = stroke.stroke_vertices_begin() + visible = True for j in range(self.__turns): p_first = p_first + Vector([randint(-R, R), randint(-r, r)]) p_first_end = p_first_end + Vector([randint(-R, R), randint(-r, r)]) @@ -1135,42 +1102,42 @@ class pyBluePrintSquaresShader(StrokeShader): vec_third = p_third_end - p_third vec_fourth = p_fourth_end - p_fourth i = 0 - while i < sv_nb and it.isEnd() == 0: + while i < sv_nb and not it.isEnd(): if i < first: p_new = p_first + vec_first * float(i)/float(first - 1) if i == first - 1: - visible = 0 + visible = False elif i < second: p_new = p_second + vec_second * float(i - first)/float(second - first - 1) if i == second - 1: - visible = 0 + visible = False elif i < third: p_new = p_third + vec_third * float(i - second)/float(third - second - 1) if i == third - 1: - visible = 0 + visible = False else: p_new = p_fourth + vec_fourth * float(i - third)/float(fourth - third - 1) if i == fourth - 1: - visible = 0 + visible = False if it.getObject() == None: i = i + 1 it.increment() - if visible == 0: - visible = 1 + if not visible: + visible = True continue it.getObject().point = p_new it.getObject().attribute.visible = visible - if visible == 0: - visible = 1 + if not visible: + visible = True i = i + 1 it.increment() verticesToRemove = [] - while it.isEnd() == 0: + while not it.isEnd(): verticesToRemove.append(it.getObject()) it.increment() for sv in verticesToRemove: - stroke.RemoveVertex(sv) - stroke.UpdateLength() + stroke.remove_vertex(sv) + stroke.update_length() class pyBluePrintDirectedSquaresShader(StrokeShader): @@ -1182,20 +1149,20 @@ class pyBluePrintDirectedSquaresShader(StrokeShader): def getName(self): return "pyBluePrintDirectedSquaresShader" def shade(self, stroke): - stroke.Resample(32 * self.__turns) + stroke.resample(32 * self.__turns) p_mean = Vector([0, 0]) - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): p = it.getObject().point p_mean = p_mean + p it.increment() - sv_nb = stroke.strokeVerticesSize() + sv_nb = stroke.stroke_vertices_size() p_mean = p_mean / sv_nb p_var_xx = 0 p_var_yy = 0 p_var_xy = 0 - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): p = it.getObject().point p_var_xx = p_var_xx + pow(p.x - p_mean.x, 2) p_var_yy = p_var_yy + pow(p.y - p_mean.y, 2) @@ -1236,40 +1203,40 @@ class pyBluePrintDirectedSquaresShader(StrokeShader): vec_third = vec_first * -1 vec_fourth = vec_second * -1 ####################################################### - it = stroke.strokeVerticesBegin() - visible = 1 + it = stroke.stroke_vertices_begin() + visible = True for j in range(self.__turns): i = 0 while i < sv_nb: if i < first: p_new = p_first + vec_first * float(i)/float(first - 1) if i == first - 1: - visible = 0 + visible = False elif i < second: p_new = p_second + vec_second * float(i - first)/float(second - first - 1) if i == second - 1: - visible = 0 + visible = False elif i < third: p_new = p_third + vec_third * float(i - second)/float(third - second - 1) if i == third - 1: - visible = 0 + visible = False else: p_new = p_fourth + vec_fourth * float(i - third)/float(fourth - third - 1) if i == fourth - 1: - visible = 0 + visible = False it.getObject().point = p_new it.getObject().attribute.visible = visible - if visible == 0: - visible = 1 + if not visible: + visible = True i = i + 1 it.increment() verticesToRemove = [] - while it.isEnd() == 0: + while not it.isEnd(): verticesToRemove.append(it.getObject()) it.increment() for sv in verticesToRemove: - stroke.RemoveVertex(sv) - stroke.UpdateLength() + stroke.remove_vertex(sv) + stroke.update_length() class pyModulateAlphaShader(StrokeShader): def __init__(self, min = 0, max = 1): @@ -1279,8 +1246,8 @@ class pyModulateAlphaShader(StrokeShader): def getName(self): return "pyModulateAlphaShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): alpha = it.getObject().attribute.alpha p = it.getObject().point alpha = alpha * p.y / 400 @@ -1291,15 +1258,13 @@ class pyModulateAlphaShader(StrokeShader): it.getObject().attribute.alpha = alpha it.increment() - ## various class pyDummyShader(StrokeShader): def getName(self): return "pyDummyShader" def shade(self, stroke): - it = stroke.strokeVerticesBegin() - it_end = stroke.strokeVerticesEnd() - while it.isEnd() == 0: + it = stroke.stroke_vertices_begin() + while not it.isEnd(): toto = it.castToInterface0DIterator() att = it.getObject().attribute att.color = (0.3, 0.4, 0.4) @@ -1309,26 +1274,25 @@ class pyDummyShader(StrokeShader): class pyDebugShader(StrokeShader): def getName(self): return "pyDebugShader" - def shade(self, stroke): fe = GetSelectedFEdgeCF() - id1=fe.vertexA().getId() - id2=fe.vertexB().getId() - #print(id1.getFirst(), id1.getSecond()) - #print(id2.getFirst(), id2.getSecond()) - it = stroke.strokeVerticesBegin() - found = 0 - foundfirst = 0 - foundsecond = 0 - while it.isEnd() == 0: + id1 = fe.first_svertex.id + id2 = fe.second_svertex.id + #print(id1.first, id1.second) + #print(id2.first, id2.second) + it = stroke.stroke_vertices_begin() + found = True + foundfirst = True + foundsecond = False + while not it.isEnd(): cp = it.getObject() - if((cp.A().getId() == id1) or (cp.B().getId() == id1)): - foundfirst = 1 - if((cp.A().getId() == id2) or (cp.B().getId() == id2)): - foundsecond = 1 - if((foundfirst != 0) and (foundsecond != 0)): - found = 1 + if cp.first_svertex.id == id1 or cp.second_svertex.id == id1: + foundfirst = True + if cp.first_svertex.id == id2 or cp.second_svertex.id == id2: + foundsecond = True + if foundfirst and foundsecond: + found = True break it.increment() - if(found != 0): - print("The selected Stroke id is: ", stroke.getId().getFirst(), stroke.getId().getSecond()) + if found: + print("The selected Stroke id is: ", stroke.id.first, stroke.id.second) |