Freestyle Python API improvements - part 4.

Major API updates were made as in part 3 to address code review comments.
This revision focuses on Python wrappers of C++ iterators.

* Most getter/setter methods were reimplemented as attributes using PyGetSetDef.

* 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).  The only irregular naming change is the following, to
better indicate the functionality:

- ChainingIterator: getVertex --> next_vertex

* In addition, some code clean-up was done in both C++ and Python.  Also duplicated
definitions of predicate classes were removed.
This commit is contained in:
2013-02-16 14:21:40 +00:00
parent aa9c01f384
commit b35a893249
17 changed files with 1001 additions and 1074 deletions

View File

@@ -42,11 +42,11 @@ class pyChainSilhouetteIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
tvertex = self.getVertex() tvertex = self.next_vertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
mateVE = tvertex.get_mate(self.getCurrentEdge()) mateVE = tvertex.get_mate(self.current_edge)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if ve.id == mateVE.id: if ve.id == mateVE.id:
winner = ve winner = ve
break break
@@ -55,12 +55,12 @@ class pyChainSilhouetteIterator(ChainingIterator):
## case of NonTVertex ## case of NonTVertex
natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
for i in range(len(natures)): for i in range(len(natures)):
currentNature = self.getCurrentEdge().nature currentNature = self.current_edge.nature
if (natures[i] & currentNature) != 0: if (natures[i] & currentNature) != 0:
count=0 count=0
while not it.isEnd(): while not it.is_end:
visitNext = 0 visitNext = 0
oNature = it.getObject().nature oNature = it.object.nature
if (oNature & natures[i]) != 0: if (oNature & natures[i]) != 0:
if natures[i] != oNature: if natures[i] != oNature:
for j in range(i): for j in range(i):
@@ -70,7 +70,7 @@ class pyChainSilhouetteIterator(ChainingIterator):
if visitNext != 0: if visitNext != 0:
break break
count = count+1 count = count+1
winner = it.getObject() winner = it.object
it.increment() it.increment()
if count != 1: if count != 1:
winner = None winner = None
@@ -94,11 +94,11 @@ class pyChainSilhouetteGenericIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
tvertex = self.getVertex() tvertex = self.next_vertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
mateVE = tvertex.get_mate(self.getCurrentEdge()) mateVE = tvertex.get_mate(self.current_edge)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if ve.id == mateVE.id: if ve.id == mateVE.id:
winner = ve winner = ve
break break
@@ -107,14 +107,14 @@ class pyChainSilhouetteGenericIterator(ChainingIterator):
## case of NonTVertex ## case of NonTVertex
natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
for i in range(len(natures)): for i in range(len(natures)):
currentNature = self.getCurrentEdge().nature currentNature = self.current_edge.nature
if (natures[i] & currentNature) != 0: if (natures[i] & currentNature) != 0:
count=0 count=0
while not it.isEnd(): while not it.is_end:
visitNext = 0 visitNext = 0
oNature = it.getObject().nature oNature = it.object.nature
ve = it.getObject() ve = it.object
if ve.id == self.getCurrentEdge().id: if ve.id == self.current_edge.id:
it.increment() it.increment()
continue continue
if (oNature & natures[i]) != 0: if (oNature & natures[i]) != 0:
@@ -137,22 +137,19 @@ class pyExternalContourChainingIterator(ChainingIterator):
def __init__(self): def __init__(self):
ChainingIterator.__init__(self, 0, 1,None,1) ChainingIterator.__init__(self, 0, 1,None,1)
self._isExternalContour = ExternalContourUP1D() self._isExternalContour = ExternalContourUP1D()
def getExactTypeName(self): def getExactTypeName(self):
return "pyExternalContourIterator" return "pyExternalContourIterator"
def init(self): def init(self):
self._nEdges = 0 self._nEdges = 0
self._isInSelection = 1 self._isInSelection = 1
def checkViewEdge(self, ve, orientation): def checkViewEdge(self, ve, orientation):
if orientation != 0: if orientation != 0:
vertex = ve.second_svertex() vertex = ve.second_svertex()
else: else:
vertex = ve.first_svertex() vertex = ve.first_svertex()
it = AdjacencyIterator(vertex,1,1) it = AdjacencyIterator(vertex,1,1)
while not it.isEnd(): while not it.is_end:
ave = it.getObject() ave = it.object
if self._isExternalContour(ave): if self._isExternalContour(ave):
return 1 return 1
it.increment() it.increment()
@@ -161,8 +158,8 @@ class pyExternalContourChainingIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if self._isExternalContour(ve): if self._isExternalContour(ve):
if ve.time_stamp == GetTimeStampCF(): if ve.time_stamp == GetTimeStampCF():
winner = ve winner = ve
@@ -172,9 +169,9 @@ class pyExternalContourChainingIterator(ChainingIterator):
if winner is None: if winner is None:
orient = 1 orient = 1
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if it.isIncoming() != 0: # FIXME if it.is_incoming:
orient = 0 orient = 0
good = self.checkViewEdge(ve,orient) good = self.checkViewEdge(ve,orient)
if good != 0: if good != 0:
@@ -196,11 +193,11 @@ class pySketchyChainSilhouetteIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
tvertex = self.getVertex() tvertex = self.next_vertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
mateVE = tvertex.get_mate(self.getCurrentEdge()) mateVE = tvertex.get_mate(self.current_edge)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if ve.id == mateVE.id: if ve.id == mateVE.id:
winner = ve winner = ve
break break
@@ -209,14 +206,14 @@ class pySketchyChainSilhouetteIterator(ChainingIterator):
## case of NonTVertex ## case of NonTVertex
natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
for i in range(len(natures)): for i in range(len(natures)):
currentNature = self.getCurrentEdge().nature currentNature = self.current_edge.nature
if (natures[i] & currentNature) != 0: if (natures[i] & currentNature) != 0:
count=0 count=0
while not it.isEnd(): while not it.is_end:
visitNext = 0 visitNext = 0
oNature = it.getObject().nature oNature = it.object.nature
ve = it.getObject() ve = it.object
if ve.id == self.getCurrentEdge().id: if ve.id == self.current_edge.id:
it.increment() it.increment()
continue continue
if (oNature & natures[i]) != 0: if (oNature & natures[i]) != 0:
@@ -234,7 +231,7 @@ class pySketchyChainSilhouetteIterator(ChainingIterator):
winner = None winner = None
break break
if winner is None: if winner is None:
winner = self.getCurrentEdge() winner = self.current_edge
if winner.chaining_time_stamp == self._timeStamp: if winner.chaining_time_stamp == self._timeStamp:
winner = None winner = None
return winner return winner
@@ -250,22 +247,20 @@ class pySketchyChainingIterator(ChainingIterator):
self._nRounds = nRounds self._nRounds = nRounds
def getExactTypeName(self): def getExactTypeName(self):
return "pySketchyChainingIterator" return "pySketchyChainingIterator"
def init(self): def init(self):
self._timeStamp = GetTimeStampCF()+self._nRounds self._timeStamp = GetTimeStampCF()+self._nRounds
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if ve.id == self.getCurrentEdge().id: if ve.id == self.current_edge.id:
it.increment() it.increment()
continue continue
winner = ve winner = ve
it.increment() it.increment()
if winner is None: if winner is None:
winner = self.getCurrentEdge() winner = self.current_edge
if winner.chaining_time_stamp == self._timeStamp: if winner.chaining_time_stamp == self._timeStamp:
return None return None
return winner return winner
@@ -290,16 +285,16 @@ class pyFillOcclusionsRelativeChainingIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
winnerOrientation = 0 winnerOrientation = 0
print(self.getCurrentEdge().id.first, self.getCurrentEdge().id.second) print(self.current_edge.id.first, self.current_edge.id.second)
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
tvertex = self.getVertex() tvertex = self.next_vertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
mateVE = tvertex.get_mate(self.getCurrentEdge()) mateVE = tvertex.get_mate(self.current_edge)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if ve.id == mateVE.id: if ve.id == mateVE.id:
winner = ve winner = ve
if it.isIncoming() == 0: # FIXME if not it.is_incoming:
winnerOrientation = 1 winnerOrientation = 1
else: else:
winnerOrientation = 0 winnerOrientation = 0
@@ -309,14 +304,14 @@ class pyFillOcclusionsRelativeChainingIterator(ChainingIterator):
## case of NonTVertex ## case of NonTVertex
natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
for nat in natures: for nat in natures:
if (self.getCurrentEdge().nature & nat) != 0: if (self.current_edge.nature & nat) != 0:
count=0 count=0
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if (ve.nature & nat) != 0: if (ve.nature & nat) != 0:
count = count+1 count = count+1
winner = ve winner = ve
if it.isIncoming() == 0: # FIXME if not it.is_incoming:
winnerOrientation = 1 winnerOrientation = 1
else: else:
winnerOrientation = 0 winnerOrientation = 0
@@ -335,24 +330,24 @@ class pyFillOcclusionsRelativeChainingIterator(ChainingIterator):
if self._length == 0: if self._length == 0:
#if not, let's do it #if not, let's do it
_it = pyChainSilhouetteGenericIterator(0,0) _it = pyChainSilhouetteGenericIterator(0,0)
_it.setBegin(winner) _it.begin = winner
_it.setCurrentEdge(winner) _it.current_edge = winner
_it.setOrientation(winnerOrientation) _it.orientation = winnerOrientation
_it.init() _it.init()
while not _it.isEnd(): while not _it.is_end:
ve = _it.getObject() ve = _it.object
#print("--------", ve.id.first, ve.id.second) #print("--------", ve.id.first, ve.id.second)
self._length = self._length + ve.length_2d self._length = self._length + ve.length_2d
_it.increment() _it.increment()
if _it.isBegin(): if _it.is_begin:
break; break;
_it.setBegin(winner) _it.begin = winner
_it.setCurrentEdge(winner) _it.current_edge = winner
_it.setOrientation(winnerOrientation) _it.orientation = winnerOrientation
if not _it.isBegin(): if not _it.is_begin:
_it.decrement() _it.decrement()
while (not _it.isEnd()) and (not _it.isBegin()): while (not _it.is_end) and (not _it.is_begin):
ve = _it.getObject() ve = _it.object
#print("--------", ve.id.first, ve.id.second) #print("--------", ve.id.first, ve.id.second)
self._length = self._length + ve.length_2d self._length = self._length + ve.length_2d
_it.decrement() _it.decrement()
@@ -361,12 +356,12 @@ class pyFillOcclusionsRelativeChainingIterator(ChainingIterator):
# nw let's compute the length of this connex non selected part: # nw let's compute the length of this connex non selected part:
connexl = 0 connexl = 0
_cit = pyChainSilhouetteGenericIterator(0,0) _cit = pyChainSilhouetteGenericIterator(0,0)
_cit.setBegin(winner) _cit.begin = winner
_cit.setCurrentEdge(winner) _cit.current_edge = winner
_cit.setOrientation(winnerOrientation) _cit.orientation = winnerOrientation
_cit.init() _cit.init()
while _cit.isEnd() == 0 and _cit.getObject().time_stamp != GetTimeStampCF(): while _cit.is_end == 0 and _cit.object.time_stamp != GetTimeStampCF():
ve = _cit.getObject() ve = _cit.object
#print("-------- --------", ve.id.first, ve.id.second) #print("-------- --------", ve.id.first, ve.id.second)
connexl = connexl + ve.length_2d connexl = connexl + ve.length_2d
_cit.increment() _cit.increment()
@@ -389,16 +384,16 @@ class pyFillOcclusionsAbsoluteChainingIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
winnerOrientation = 0 winnerOrientation = 0
#print(self.getCurrentEdge().id.first, self.getCurrentEdge().id.second) #print(self.current_edge.id.first, self.current_edge.id.second)
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
tvertex = self.getVertex() tvertex = self.next_vertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
mateVE = tvertex.get_mate(self.getCurrentEdge()) mateVE = tvertex.get_mate(self.current_edge)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if ve.id == mateVE.id: if ve.id == mateVE.id:
winner = ve winner = ve
if it.isIncoming() == 0: # FIXME if not it.is_incoming:
winnerOrientation = 1 winnerOrientation = 1
else: else:
winnerOrientation = 0 winnerOrientation = 0
@@ -408,14 +403,14 @@ class pyFillOcclusionsAbsoluteChainingIterator(ChainingIterator):
## case of NonTVertex ## case of NonTVertex
natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
for nat in natures: for nat in natures:
if (self.getCurrentEdge().nature & nat) != 0: if (self.current_edge.nature & nat) != 0:
count=0 count=0
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if (ve.nature & nat) != 0: if (ve.nature & nat) != 0:
count = count+1 count = count+1
winner = ve winner = ve
if it.isIncoming() == 0: # FIXME if not it.is_incoming:
winnerOrientation = 1 winnerOrientation = 1
else: else:
winnerOrientation = 0 winnerOrientation = 0
@@ -430,12 +425,12 @@ class pyFillOcclusionsAbsoluteChainingIterator(ChainingIterator):
# nw let's compute the length of this connex non selected part: # nw let's compute the length of this connex non selected part:
connexl = 0 connexl = 0
_cit = pyChainSilhouetteGenericIterator(0,0) _cit = pyChainSilhouetteGenericIterator(0,0)
_cit.setBegin(winner) _cit.begin = winner
_cit.setCurrentEdge(winner) _cit.current_edge = winner
_cit.setOrientation(winnerOrientation) _cit.orientation = winnerOrientation
_cit.init() _cit.init()
while _cit.isEnd() == 0 and _cit.getObject().time_stamp != GetTimeStampCF(): while _cit.is_end == 0 and _cit.object.time_stamp != GetTimeStampCF():
ve = _cit.getObject() ve = _cit.object
#print("-------- --------", ve.id.first, ve.id.second) #print("-------- --------", ve.id.first, ve.id.second)
connexl = connexl + ve.length_2d connexl = connexl + ve.length_2d
_cit.increment() _cit.increment()
@@ -464,16 +459,16 @@ class pyFillOcclusionsAbsoluteAndRelativeChainingIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
winnerOrientation = 0 winnerOrientation = 0
print(self.getCurrentEdge().id.first, self.getCurrentEdge().id.second) print(self.current_edge.id.first, self.current_edge.id.second)
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
tvertex = self.getVertex() tvertex = self.next_vertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
mateVE = tvertex.get_mate(self.getCurrentEdge()) mateVE = tvertex.get_mate(self.current_edge)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if ve.id == mateVE.id: if ve.id == mateVE.id:
winner = ve winner = ve
if it.isIncoming() == 0: # FIXME if not it.is_incoming:
winnerOrientation = 1 winnerOrientation = 1
else: else:
winnerOrientation = 0 winnerOrientation = 0
@@ -483,14 +478,14 @@ class pyFillOcclusionsAbsoluteAndRelativeChainingIterator(ChainingIterator):
## case of NonTVertex ## case of NonTVertex
natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
for nat in natures: for nat in natures:
if (self.getCurrentEdge().nature & nat) != 0: if (self.current_edge.nature & nat) != 0:
count=0 count=0
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if (ve.nature & nat) != 0: if (ve.nature & nat) != 0:
count = count+1 count = count+1
winner = ve winner = ve
if it.isIncoming() == 0: # FIXME if not it.is_incoming:
winnerOrientation = 1 winnerOrientation = 1
else: else:
winnerOrientation = 0 winnerOrientation = 0
@@ -509,24 +504,24 @@ class pyFillOcclusionsAbsoluteAndRelativeChainingIterator(ChainingIterator):
if self._length == 0: if self._length == 0:
#if not, let's do it #if not, let's do it
_it = pyChainSilhouetteGenericIterator(0,0) _it = pyChainSilhouetteGenericIterator(0,0)
_it.setBegin(winner) _it.begin = winner
_it.setCurrentEdge(winner) _it.current_edge = winner
_it.setOrientation(winnerOrientation) _it.orientation = winnerOrientation
_it.init() _it.init()
while not _it.isEnd(): while not _it.is_end:
ve = _it.getObject() ve = _it.object
#print("--------", ve.id.first, ve.id.second) #print("--------", ve.id.first, ve.id.second)
self._length = self._length + ve.length_2d self._length = self._length + ve.length_2d
_it.increment() _it.increment()
if _it.isBegin(): if _it.is_begin:
break; break;
_it.setBegin(winner) _it.begin = winner
_it.setCurrentEdge(winner) _it.current_edge = winner
_it.setOrientation(winnerOrientation) _it.orientation = winnerOrientation
if not _it.isBegin(): if not _it.is_begin:
_it.decrement() _it.decrement()
while (not _it.isEnd()) and (not _it.isBegin()): while (not _it.is_end) and (not _it.is_begin):
ve = _it.getObject() ve = _it.object
#print("--------", ve.id.first, ve.id.second) #print("--------", ve.id.first, ve.id.second)
self._length = self._length + ve.length_2d self._length = self._length + ve.length_2d
_it.decrement() _it.decrement()
@@ -535,12 +530,12 @@ class pyFillOcclusionsAbsoluteAndRelativeChainingIterator(ChainingIterator):
# nw let's compute the length of this connex non selected part: # nw let's compute the length of this connex non selected part:
connexl = 0 connexl = 0
_cit = pyChainSilhouetteGenericIterator(0,0) _cit = pyChainSilhouetteGenericIterator(0,0)
_cit.setBegin(winner) _cit.begin = winner
_cit.setCurrentEdge(winner) _cit.current_edge = winner
_cit.setOrientation(winnerOrientation) _cit.orientation = winnerOrientation
_cit.init() _cit.init()
while _cit.isEnd() == 0 and _cit.getObject().time_stamp != GetTimeStampCF(): while _cit.is_end == 0 and _cit.object.time_stamp != GetTimeStampCF():
ve = _cit.getObject() ve = _cit.object
#print("-------- --------", ve.id.first, ve.id.second) #print("-------- --------", ve.id.first, ve.id.second)
connexl = connexl + ve.length_2d connexl = connexl + ve.length_2d
_cit.increment() _cit.increment()
@@ -569,16 +564,16 @@ class pyFillQi0AbsoluteAndRelativeChainingIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
winnerOrientation = 0 winnerOrientation = 0
print(self.getCurrentEdge().id.first, self.getCurrentEdge().id.second) print(self.current_edge.id.first, self.current_edge.id.second)
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
tvertex = self.getVertex() tvertex = self.next_vertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
mateVE = tvertex.get_mate(self.getCurrentEdge()) mateVE = tvertex.get_mate(self.current_edge)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if ve.id == mateVE.id: if ve.id == mateVE.id:
winner = ve winner = ve
if it.isIncoming() == 0: # FIXME if not it.is_incoming:
winnerOrientation = 1 winnerOrientation = 1
else: else:
winnerOrientation = 0 winnerOrientation = 0
@@ -588,14 +583,14 @@ class pyFillQi0AbsoluteAndRelativeChainingIterator(ChainingIterator):
## case of NonTVertex ## case of NonTVertex
natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
for nat in natures: for nat in natures:
if (self.getCurrentEdge().nature & nat) != 0: if (self.current_edge.nature & nat) != 0:
count=0 count=0
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
if (ve.nature & nat) != 0: if (ve.nature & nat) != 0:
count = count+1 count = count+1
winner = ve winner = ve
if it.isIncoming() == 0: # FIXME if not it.is_incoming:
winnerOrientation = 1 winnerOrientation = 1
else: else:
winnerOrientation = 0 winnerOrientation = 0
@@ -614,24 +609,24 @@ class pyFillQi0AbsoluteAndRelativeChainingIterator(ChainingIterator):
if self._length == 0: if self._length == 0:
#if not, let's do it #if not, let's do it
_it = pyChainSilhouetteGenericIterator(0,0) _it = pyChainSilhouetteGenericIterator(0,0)
_it.setBegin(winner) _it.begin = winner
_it.setCurrentEdge(winner) _it.current_edge = winner
_it.setOrientation(winnerOrientation) _it.orientation = winnerOrientation
_it.init() _it.init()
while not _it.isEnd(): while not _it.is_end:
ve = _it.getObject() ve = _it.object
#print("--------", ve.id.first, ve.id.second) #print("--------", ve.id.first, ve.id.second)
self._length = self._length + ve.length_2d self._length = self._length + ve.length_2d
_it.increment() _it.increment()
if _it.isBegin(): if _it.is_begin:
break; break;
_it.setBegin(winner) _it.begin = winner
_it.setCurrentEdge(winner) _it.current_edge = winner
_it.setOrientation(winnerOrientation) _it.orientation = winnerOrientation
if not _it.isBegin(): if not _it.is_begin:
_it.decrement() _it.decrement()
while (not _it.isEnd()) and (not _it.isBegin()): while (not _it.is_end) and (not _it.is_begin):
ve = _it.getObject() ve = _it.object
#print("--------", ve.id.first, ve.id.second) #print("--------", ve.id.first, ve.id.second)
self._length = self._length + ve.length_2d self._length = self._length + ve.length_2d
_it.decrement() _it.decrement()
@@ -640,12 +635,12 @@ class pyFillQi0AbsoluteAndRelativeChainingIterator(ChainingIterator):
# nw let's compute the length of this connex non selected part: # nw let's compute the length of this connex non selected part:
connexl = 0 connexl = 0
_cit = pyChainSilhouetteGenericIterator(0,0) _cit = pyChainSilhouetteGenericIterator(0,0)
_cit.setBegin(winner) _cit.begin = winner
_cit.setCurrentEdge(winner) _cit.current_edge = winner
_cit.setOrientation(winnerOrientation) _cit.orientation = winnerOrientation
_cit.init() _cit.init()
while not _cit.isEnd() and _cit.getObject().qi != 0: while not _cit.is_end and _cit.object.qi != 0:
ve = _cit.getObject() ve = _cit.object
#print("-------- --------", ve.id.first, ve.id.second) #print("-------- --------", ve.id.first, ve.id.second)
connexl = connexl + ve.length_2d connexl = connexl + ve.length_2d
_cit.increment() _cit.increment()
@@ -669,33 +664,33 @@ class pyNoIdChainSilhouetteIterator(ChainingIterator):
def traverse(self, iter): def traverse(self, iter):
winner = None winner = None
it = AdjacencyIterator(iter) it = AdjacencyIterator(iter)
tvertex = self.getVertex() tvertex = self.next_vertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
mateVE = tvertex.get_mate(self.getCurrentEdge()) mateVE = tvertex.get_mate(self.current_edge)
while not it.isEnd(): while not it.is_end:
ve = it.getObject() ve = it.object
feB = self.getCurrentEdge().last_fedge feB = self.current_edge.last_fedge
feA = ve.first_fedge feA = ve.first_fedge
vB = feB.second_svertex vB = feB.second_svertex
vA = feA.first_svertex vA = feA.first_svertex
if vA.id.first == vB.id.first: if vA.id.first == vB.id.first:
winner = ve winner = ve
break break
feA = self.getCurrentEdge().first_fedge feA = self.current_edge.first_fedge
feB = ve.last_fedge feB = ve.last_fedge
vB = feB.second_svertex vB = feB.second_svertex
vA = feA.first_svertex vA = feA.first_svertex
if vA.id.first == vB.id.first: if vA.id.first == vB.id.first:
winner = ve winner = ve
break break
feA = self.getCurrentEdge().last_fedge feA = self.current_edge.last_fedge
feB = ve.last_fedge feB = ve.last_fedge
vB = feB.second_svertex vB = feB.second_svertex
vA = feA.second_svertex vA = feA.second_svertex
if vA.id.first == vB.id.first: if vA.id.first == vB.id.first:
winner = ve winner = ve
break break
feA = self.getCurrentEdge().first_fedge feA = self.current_edge.first_fedge
feB = ve.first_fedge feB = ve.first_fedge
vB = feB.first_svertex vB = feB.first_svertex
vA = feA.first_svertex vA = feA.first_svertex
@@ -707,12 +702,12 @@ class pyNoIdChainSilhouetteIterator(ChainingIterator):
## case of NonTVertex ## case of NonTVertex
natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE] natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
for i in range(len(natures)): for i in range(len(natures)):
currentNature = self.getCurrentEdge().nature currentNature = self.current_edge.nature
if (natures[i] & currentNature) != 0: if (natures[i] & currentNature) != 0:
count=0 count=0
while not it.isEnd(): while not it.is_end:
visitNext = 0 visitNext = 0
oNature = it.getObject().nature oNature = it.object.nature
if (oNature & natures[i]) != 0: if (oNature & natures[i]) != 0:
if natures[i] != oNature: if natures[i] != oNature:
for j in range(i): for j in range(i):
@@ -722,7 +717,7 @@ class pyNoIdChainSilhouetteIterator(ChainingIterator):
if visitNext != 0: if visitNext != 0:
break break
count = count+1 count = count+1
winner = it.getObject() winner = it.object
it.increment() it.increment()
if count != 1: if count != 1:
winner = None winner = None

View File

@@ -6,7 +6,7 @@ class CurveMaterialF0D(UnaryFunction0DMaterial):
def getName(self): def getName(self):
return "CurveMaterialF0D" return "CurveMaterialF0D"
def __call__(self, inter): def __call__(self, inter):
cp = inter.getObject() cp = inter.object
assert(isinstance(cp, CurvePoint)) assert(isinstance(cp, CurvePoint))
fe = cp.first_svertex.get_fedge(cp.second_svertex) fe = cp.first_svertex.get_fedge(cp.second_svertex)
assert(fe is not None) assert(fe is not None)
@@ -26,7 +26,7 @@ class pyCurvilinearLengthF0D(UnaryFunction0DDouble):
return "CurvilinearLengthF0D" return "CurvilinearLengthF0D"
def __call__(self, inter): def __call__(self, inter):
cp = inter.getObject() cp = inter.object
assert(isinstance(cp, CurvePoint)) assert(isinstance(cp, CurvePoint))
return cp.t2d return cp.t2d
@@ -66,7 +66,7 @@ class pyViewMapGradientVectorF0D(UnaryFunction0DVec2f):
def getName(self): def getName(self):
return "pyViewMapGradientVectorF0D" return "pyViewMapGradientVectorF0D"
def __call__(self, iter): def __call__(self, iter):
p = iter.getObject().point_2d p = iter.object.point_2d
gx = ReadCompleteViewMapPixelCF(self._l, int(p.x+self._step), int(p.y))- ReadCompleteViewMapPixelCF(self._l, int(p.x), int(p.y)) 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)) 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]) return Vector([gx, gy])
@@ -79,7 +79,7 @@ class pyViewMapGradientNormF0D(UnaryFunction0DDouble):
def getName(self): def getName(self):
return "pyViewMapGradientNormF0D" return "pyViewMapGradientNormF0D"
def __call__(self, iter): def __call__(self, iter):
p = iter.getObject().point_2d p = iter.object.point_2d
gx = ReadCompleteViewMapPixelCF(self._l, int(p.x+self._step), int(p.y))- ReadCompleteViewMapPixelCF(self._l, int(p.x), int(p.y)) 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)) 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]) grad = Vector([gx, gy])

View File

@@ -31,7 +31,7 @@ class pyVertexNatureUP0D(UnaryPredicate0D):
def getName(self): def getName(self):
return "pyVertexNatureUP0D" return "pyVertexNatureUP0D"
def __call__(self, inter): def __call__(self, inter):
v = inter.getObject() v = inter.object
return (v.nature & self._nature) != 0 return (v.nature & self._nature) != 0
## check whether an Interface0DIterator ## check whether an Interface0DIterator
@@ -44,14 +44,11 @@ class pyBackTVertexUP0D(UnaryPredicate0D):
def getName(self): def getName(self):
return "pyBackTVertexUP0D" return "pyBackTVertexUP0D"
def __call__(self, iter): def __call__(self, iter):
v = iter.getObject() if (iter.object.nature & Nature.T_VERTEX) == 0:
nat = v.nature
if (nat & Nature.T_VERTEX) == 0:
return 0 return 0
next = iter if iter.is_end:
if next.isEnd():
return 0 return 0
if self._getQI(next) != 0: if self._getQI(iter) != 0:
return 1 return 1
return 0 return 0
@@ -65,7 +62,7 @@ class pyParameterUP0DGoodOne(UnaryPredicate0D):
return "pyCurvilinearAbscissaHigherThanUP0D" return "pyCurvilinearAbscissaHigherThanUP0D"
def __call__(self, inter): def __call__(self, inter):
#s = self.getCurvilinearAbscissa(inter) #s = self.getCurvilinearAbscissa(inter)
u = inter.u() # FIXME u = inter.u
#print(u) #print(u)
return ((u>=self._m) and (u<=self._M)) return ((u>=self._m) and (u<=self._M))
@@ -82,7 +79,7 @@ class pyParameterUP0D(UnaryPredicate0D):
c = func(inter) c = func(inter)
b1 = (c>0.1) b1 = (c>0.1)
#s = self.getCurvilinearAbscissa(inter) #s = self.getCurvilinearAbscissa(inter)
u = inter.u() # FIXME u = inter.u
#print(u) #print(u)
b = ((u>=self._m) and (u<=self._M)) b = ((u>=self._m) and (u<=self._M))
return b and b1 return b and b1

View File

@@ -45,7 +45,7 @@ class pyHigherNumberOfTurnsUP1D(UnaryPredicate1D):
count = 0 count = 0
func = Curvature2DAngleF0D() func = Curvature2DAngleF0D()
it = inter.vertices_begin() it = inter.vertices_begin()
while not it.isEnd(): while not it.is_end:
if func(it) > self._a: if func(it) > self._a:
count = count+1 count = count+1
if count > self._n: if count > self._n:
@@ -198,14 +198,14 @@ class pyIsOccludedByUP1D(UnaryPredicate1D):
it = inter.vertices_begin() it = inter.vertices_begin()
itlast = inter.vertices_end() itlast = inter.vertices_end()
itlast.decrement() itlast.decrement()
v = it.getObject() v = it.object
vlast = itlast.getObject() vlast = itlast.object
tvertex = v.viewvertex tvertex = v.viewvertex
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
print("TVertex: [ ", tvertex.id.first, ",", tvertex.id.second," ]") print("TVertex: [ ", tvertex.id.first, ",", tvertex.id.second," ]")
eit = tvertex.edges_begin() eit = tvertex.edges_begin()
while not eit.isEnd(): while not eit.is_end:
ve, incoming = eit.getObject() ve, incoming = eit.object
if ve.id == self._id: if ve.id == self._id:
return 1 return 1
print("-------", ve.id.first, "-", ve.id.second) print("-------", ve.id.first, "-", ve.id.second)
@@ -214,8 +214,8 @@ class pyIsOccludedByUP1D(UnaryPredicate1D):
if type(tvertex) is TVertex: if type(tvertex) is TVertex:
print("TVertex: [ ", tvertex.id.first, ",", tvertex.id.second," ]") print("TVertex: [ ", tvertex.id.first, ",", tvertex.id.second," ]")
eit = tvertex.edges_begin() eit = tvertex.edges_begin()
while not eit.isEnd(): while not eit.is_end:
ve, incoming = eit.getObject() ve, incoming = eit.object
if ve.id == self._id: if ve.id == self._id:
return 1 return 1
print("-------", ve.id.first, "-", ve.id.second) print("-------", ve.id.first, "-", ve.id.second)
@@ -349,8 +349,8 @@ class pyClosedCurveUP1D(UnaryPredicate1D):
it = inter.vertices_begin() it = inter.vertices_begin()
itlast = inter.vertices_end() itlast = inter.vertices_end()
itlast.decrement() itlast.decrement()
vlast = itlast.getObject() vlast = itlast.object
v = it.getObject() v = it.object
print(v.id.first, v.id.second) print(v.id.first, v.id.second)
print(vlast.id.first, vlast.id.second) print(vlast.id.first, vlast.id.second)
if v.id == vlast.id: if v.id == vlast.id:

View File

@@ -159,8 +159,8 @@ class BaseThicknessShader(StrokeShader, ThicknessModifierMixIn):
return "BaseThicknessShader" return "BaseThicknessShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while it.isEnd() == 0: while not it.is_end:
sv = it.getObject() sv = it.object
self.set_thickness(sv, self.__outer, self.__inner) self.set_thickness(sv, self.__outer, self.__inner)
it.increment() it.increment()
@@ -170,9 +170,9 @@ def iter_t2d_along_stroke(stroke):
total = stroke.length_2d total = stroke.length_2d
distance = 0.0 distance = 0.0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point p = it.object.point
if not it.isBegin(): if not it.is_begin:
distance += (prev - p).length distance += (prev - p).length
prev = p prev = p
t = min(distance / total, 1.0) t = min(distance / total, 1.0)
@@ -184,7 +184,7 @@ class ColorAlongStrokeShader(ColorRampModifier):
return "ColorAlongStrokeShader" return "ColorAlongStrokeShader"
def shade(self, stroke): def shade(self, stroke):
for it, t in iter_t2d_along_stroke(stroke): for it, t in iter_t2d_along_stroke(stroke):
sv = it.getObject() sv = it.object
a = sv.attribute.color a = sv.attribute.color
b = self.evaluate(t) b = self.evaluate(t)
sv.attribute.color = self.blend_ramp(a, b) sv.attribute.color = self.blend_ramp(a, b)
@@ -194,7 +194,7 @@ class AlphaAlongStrokeShader(CurveMappingModifier):
return "AlphaAlongStrokeShader" return "AlphaAlongStrokeShader"
def shade(self, stroke): def shade(self, stroke):
for it, t in iter_t2d_along_stroke(stroke): for it, t in iter_t2d_along_stroke(stroke):
sv = it.getObject() sv = it.object
a = sv.attribute.alpha a = sv.attribute.alpha
b = self.evaluate(t) b = self.evaluate(t)
sv.attribute.alpha = self.blend(a, b) sv.attribute.alpha = self.blend(a, b)
@@ -210,7 +210,7 @@ class ThicknessAlongStrokeShader(ThicknessBlenderMixIn, CurveMappingModifier):
return "ThicknessAlongStrokeShader" return "ThicknessAlongStrokeShader"
def shade(self, stroke): def shade(self, stroke):
for it, t in iter_t2d_along_stroke(stroke): for it, t in iter_t2d_along_stroke(stroke):
sv = it.getObject() sv = it.object
a = sv.attribute.thickness a = sv.attribute.thickness
b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min) b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min)
c = self.blend_thickness(a[0], a[1], b) c = self.blend_thickness(a[0], a[1], b)
@@ -221,8 +221,8 @@ class ThicknessAlongStrokeShader(ThicknessBlenderMixIn, CurveMappingModifier):
def iter_distance_from_camera(stroke, range_min, range_max): def iter_distance_from_camera(stroke, range_min, range_max):
normfac = range_max - range_min # normalization factor normfac = range_max - range_min # normalization factor
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point_3d # in the camera coordinate p = it.object.point_3d # in the camera coordinate
distance = p.length distance = p.length
if distance < range_min: if distance < range_min:
t = 0.0 t = 0.0
@@ -242,7 +242,7 @@ class ColorDistanceFromCameraShader(ColorRampModifier):
return "ColorDistanceFromCameraShader" return "ColorDistanceFromCameraShader"
def shade(self, stroke): def shade(self, stroke):
for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max): for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max):
sv = it.getObject() sv = it.object
a = sv.attribute.color a = sv.attribute.color
b = self.evaluate(t) b = self.evaluate(t)
sv.attribute.color = self.blend_ramp(a, b) sv.attribute.color = self.blend_ramp(a, b)
@@ -256,7 +256,7 @@ class AlphaDistanceFromCameraShader(CurveMappingModifier):
return "AlphaDistanceFromCameraShader" return "AlphaDistanceFromCameraShader"
def shade(self, stroke): def shade(self, stroke):
for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max): for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max):
sv = it.getObject() sv = it.object
a = sv.attribute.alpha a = sv.attribute.alpha
b = self.evaluate(t) b = self.evaluate(t)
sv.attribute.alpha = self.blend(a, b) sv.attribute.alpha = self.blend(a, b)
@@ -274,7 +274,7 @@ class ThicknessDistanceFromCameraShader(ThicknessBlenderMixIn, CurveMappingModif
return "ThicknessDistanceFromCameraShader" return "ThicknessDistanceFromCameraShader"
def shade(self, stroke): def shade(self, stroke):
for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max): for it, t in iter_distance_from_camera(stroke, self.__range_min, self.__range_max):
sv = it.getObject() sv = it.object
a = sv.attribute.thickness a = sv.attribute.thickness
b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min) b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min)
c = self.blend_thickness(a[0], a[1], b) c = self.blend_thickness(a[0], a[1], b)
@@ -289,8 +289,8 @@ def iter_distance_from_object(stroke, object, range_min, range_max):
loc = mv * object.location # loc in the camera coordinate loc = mv * object.location # loc in the camera coordinate
normfac = range_max - range_min # normalization factor normfac = range_max - range_min # normalization factor
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point_3d # in the camera coordinate p = it.object.point_3d # in the camera coordinate
distance = (p - loc).length distance = (p - loc).length
if distance < range_min: if distance < range_min:
t = 0.0 t = 0.0
@@ -313,7 +313,7 @@ class ColorDistanceFromObjectShader(ColorRampModifier):
if self.__target is None: if self.__target is None:
return return
for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max): for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max):
sv = it.getObject() sv = it.object
a = sv.attribute.color a = sv.attribute.color
b = self.evaluate(t) b = self.evaluate(t)
sv.attribute.color = self.blend_ramp(a, b) sv.attribute.color = self.blend_ramp(a, b)
@@ -330,7 +330,7 @@ class AlphaDistanceFromObjectShader(CurveMappingModifier):
if self.__target is None: if self.__target is None:
return return
for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max): for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max):
sv = it.getObject() sv = it.object
a = sv.attribute.alpha a = sv.attribute.alpha
b = self.evaluate(t) b = self.evaluate(t)
sv.attribute.alpha = self.blend(a, b) sv.attribute.alpha = self.blend(a, b)
@@ -351,7 +351,7 @@ class ThicknessDistanceFromObjectShader(ThicknessBlenderMixIn, CurveMappingModif
if self.__target is None: if self.__target is None:
return return
for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max): for it, t in iter_distance_from_object(stroke, self.__target, self.__range_min, self.__range_max):
sv = it.getObject() sv = it.object
a = sv.attribute.thickness a = sv.attribute.thickness
b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min) b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min)
c = self.blend_thickness(a[0], a[1], b) c = self.blend_thickness(a[0], a[1], b)
@@ -362,8 +362,8 @@ class ThicknessDistanceFromObjectShader(ThicknessBlenderMixIn, CurveMappingModif
def iter_material_color(stroke, material_attr): def iter_material_color(stroke, material_attr):
func = CurveMaterialF0D() func = CurveMaterialF0D()
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
material = func(it.castToInterface0DIterator()) material = func(it.cast_to_interface0diterator())
if material_attr == "DIFF": if material_attr == "DIFF":
color = (material.diffuse[0], color = (material.diffuse[0],
material.diffuse[1], material.diffuse[1],
@@ -380,8 +380,8 @@ def iter_material_color(stroke, material_attr):
def iter_material_value(stroke, material_attr): def iter_material_value(stroke, material_attr):
func = CurveMaterialF0D() func = CurveMaterialF0D()
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
material = func(it.castToInterface0DIterator()) material = func(it.cast_to_interface0diterator())
if material_attr == "DIFF": if material_attr == "DIFF":
r = material.diffuse[0] r = material.diffuse[0]
g = material.diffuse[1] g = material.diffuse[1]
@@ -423,12 +423,12 @@ class ColorMaterialShader(ColorRampModifier):
def shade(self, stroke): def shade(self, stroke):
if self.__material_attr in ["DIFF", "SPEC"] and not self.__use_ramp: if self.__material_attr in ["DIFF", "SPEC"] and not self.__use_ramp:
for it, b in iter_material_color(stroke, self.__material_attr): for it, b in iter_material_color(stroke, self.__material_attr):
sv = it.getObject() sv = it.object
a = sv.attribute.color a = sv.attribute.color
sv.attribute.color = self.blend_ramp(a, b) sv.attribute.color = self.blend_ramp(a, b)
else: else:
for it, t in iter_material_value(stroke, self.__material_attr): for it, t in iter_material_value(stroke, self.__material_attr):
sv = it.getObject() sv = it.object
a = sv.attribute.color a = sv.attribute.color
b = self.evaluate(t) b = self.evaluate(t)
sv.attribute.color = self.blend_ramp(a, b) sv.attribute.color = self.blend_ramp(a, b)
@@ -441,7 +441,7 @@ class AlphaMaterialShader(CurveMappingModifier):
return "AlphaMaterialShader" return "AlphaMaterialShader"
def shade(self, stroke): def shade(self, stroke):
for it, t in iter_material_value(stroke, self.__material_attr): for it, t in iter_material_value(stroke, self.__material_attr):
sv = it.getObject() sv = it.object
a = sv.attribute.alpha a = sv.attribute.alpha
b = self.evaluate(t) b = self.evaluate(t)
sv.attribute.alpha = self.blend(a, b) sv.attribute.alpha = self.blend(a, b)
@@ -458,7 +458,7 @@ class ThicknessMaterialShader(ThicknessBlenderMixIn, CurveMappingModifier):
return "ThicknessMaterialShader" return "ThicknessMaterialShader"
def shade(self, stroke): def shade(self, stroke):
for it, t in iter_material_value(stroke, self.__material_attr): for it, t in iter_material_value(stroke, self.__material_attr):
sv = it.getObject() sv = it.object
a = sv.attribute.thickness a = sv.attribute.thickness
b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min) b = self.__value_min + self.evaluate(t) * (self.__value_max - self.__value_min)
c = self.blend_thickness(a[0], a[1], b) c = self.blend_thickness(a[0], a[1], b)
@@ -477,12 +477,12 @@ class CalligraphicThicknessShader(ThicknessBlenderMixIn, ScalarBlendModifier):
def shade(self, stroke): def shade(self, stroke):
func = VertexOrientation2DF0D() func = VertexOrientation2DF0D()
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
dir = func(it.castToInterface0DIterator()) dir = func(it.cast_to_interface0diterator())
orthDir = mathutils.Vector((-dir.y, dir.x)) orthDir = mathutils.Vector((-dir.y, dir.x))
orthDir.normalize() orthDir.normalize()
fac = abs(orthDir * self.__orientation) fac = abs(orthDir * self.__orientation)
sv = it.getObject() sv = it.object
a = sv.attribute.thickness a = sv.attribute.thickness
b = self.__min_thickness + fac * (self.__max_thickness - self.__min_thickness) b = self.__min_thickness + fac * (self.__max_thickness - self.__min_thickness)
b = max(b, 0.0) b = max(b, 0.0)
@@ -495,9 +495,9 @@ class CalligraphicThicknessShader(ThicknessBlenderMixIn, ScalarBlendModifier):
def iter_distance_along_stroke(stroke): def iter_distance_along_stroke(stroke):
distance = 0.0 distance = 0.0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point p = it.object.point
if not it.isBegin(): if not it.is_begin:
distance += (prev - p).length distance += (prev - p).length
prev = p prev = p
yield it, distance yield it, distance
@@ -514,8 +514,8 @@ class SinusDisplacementShader(StrokeShader):
return "SinusDisplacementShader" return "SinusDisplacementShader"
def shade(self, stroke): def shade(self, stroke):
for it, distance in iter_distance_along_stroke(stroke): for it, distance in iter_distance_along_stroke(stroke):
v = it.getObject() v = it.object
n = self._getNormal(it.castToInterface0DIterator()) n = self._getNormal(it.cast_to_interface0diterator())
n = n * self._amplitude * math.cos(distance / self._wavelength * 2 * math.pi + self._phase) n = n * self._amplitude * math.cos(distance / self._wavelength * 2 * math.pi + self._phase)
v.point = v.point + n v.point = v.point + n
stroke.update_length() stroke.update_length()
@@ -533,8 +533,8 @@ class PerlinNoise1DShader(StrokeShader):
def shade(self, stroke): def shade(self, stroke):
length = stroke.length_2d length = stroke.length_2d
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
nres = self.__noise.turbulence1(length * v.u, self.__freq, self.__amp, self.__oct) nres = self.__noise.turbulence1(length * v.u, self.__freq, self.__amp, self.__oct)
v.point = v.point + nres * self.__dir v.point = v.point + nres * self.__dir
it.increment() it.increment()
@@ -552,8 +552,8 @@ class PerlinNoise2DShader(StrokeShader):
return "PerlinNoise2DShader" return "PerlinNoise2DShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
vec = Vector([v.projected_x, v.projected_y]) vec = Vector([v.projected_x, v.projected_y])
nres = self.__noise.turbulence2(vec, self.__freq, self.__amp, self.__oct) nres = self.__noise.turbulence2(vec, self.__freq, self.__amp, self.__oct)
v.point = v.point + nres * self.__dir v.point = v.point + nres * self.__dir
@@ -571,11 +571,11 @@ class Offset2DShader(StrokeShader):
return "Offset2DShader" return "Offset2DShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
u = v.u u = v.u
a = self.__start + u * (self.__end - self.__start) a = self.__start + u * (self.__end - self.__start)
n = self.__getNormal(it.castToInterface0DIterator()) n = self.__getNormal(it.cast_to_interface0diterator())
n = n * a n = n * a
v.point = v.point + n + self.__xy v.point = v.point + n + self.__xy
it.increment() it.increment()
@@ -597,17 +597,17 @@ class Transform2DShader(StrokeShader):
# determine the pivot of scaling and rotation operations # determine the pivot of scaling and rotation operations
if self.__pivot == "START": if self.__pivot == "START":
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
pivot = it.getObject().point pivot = it.object.point
elif self.__pivot == "END": elif self.__pivot == "END":
it = stroke.stroke_vertices_end() it = stroke.stroke_vertices_end()
it.decrement() it.decrement()
pivot = it.getObject().point pivot = it.object.point
elif self.__pivot == "PARAM": elif self.__pivot == "PARAM":
p = None p = None
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
prev = p prev = p
v = it.getObject() v = it.object
p = v.point p = v.point
u = v.u u = v.u
if self.__pivot_u < u: if self.__pivot_u < u:
@@ -622,8 +622,8 @@ class Transform2DShader(StrokeShader):
pivot = Vector([0.0, 0.0]) pivot = Vector([0.0, 0.0])
n = 0 n = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point p = it.object.point
pivot = pivot + p pivot = pivot + p
n = n + 1 n = n + 1
it.increment() it.increment()
@@ -635,8 +635,8 @@ class Transform2DShader(StrokeShader):
cos_theta = math.cos(self.__angle) cos_theta = math.cos(self.__angle)
sin_theta = math.sin(self.__angle) sin_theta = math.sin(self.__angle)
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
p = v.point p = v.point
p = p - pivot p = p - pivot
x = p.x * self.__scale_x x = p.x * self.__scale_x
@@ -687,8 +687,8 @@ class ObjectNamesUP1D(UnaryPredicate1D):
def iter_stroke_vertices(stroke): def iter_stroke_vertices(stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
prev_p = None prev_p = None
while not it.isEnd(): while not it.is_end:
sv = it.getObject() sv = it.object
p = sv.point p = sv.point
if prev_p is None or (prev_p - p).length > 1e-6: if prev_p is None or (prev_p - p).length > 1e-6:
yield sv yield sv
@@ -848,8 +848,8 @@ class DashedLineShader(StrokeShader):
visible = True visible = True
sampling = 1.0 sampling = 1.0
it = stroke.stroke_vertices_begin(sampling) it = stroke.stroke_vertices_begin(sampling)
while not it.isEnd(): while not it.is_end:
pos = it.t() pos = it.t # curvilinear abscissa
# The extra 'sampling' term is added below, because the # The extra 'sampling' term is added below, because the
# visibility attribute of the i-th vertex refers to the # visibility attribute of the i-th vertex refers to the
# visibility of the stroke segment between the i-th and # visibility of the stroke segment between the i-th and
@@ -860,7 +860,7 @@ class DashedLineShader(StrokeShader):
if index == len(self._pattern): if index == len(self._pattern):
index = 0 index = 0
visible = not visible visible = not visible
it.getObject().attribute.visible = visible it.object.attribute.visible = visible
it.increment() it.increment()
# predicates for chaining # predicates for chaining
@@ -955,17 +955,17 @@ class MaterialBoundaryUP0D(UnaryPredicate0D):
def getName(self): def getName(self):
return "MaterialBoundaryUP0D" return "MaterialBoundaryUP0D"
def __call__(self, it): def __call__(self, it):
if it.isBegin(): if it.is_begin:
return False return False
it_prev = Interface0DIterator(it) it_prev = Interface0DIterator(it)
it_prev.decrement() it_prev.decrement()
v = it.getObject() v = it.object
it.increment() it.increment()
if it.isEnd(): if it.is_end:
return False return False
fe = v.get_fedge(it_prev.getObject()) fe = v.get_fedge(it_prev.object)
idx1 = fe.material_index if fe.is_smooth else fe.material_index_left idx1 = fe.material_index if fe.is_smooth else fe.material_index_left
fe = v.get_fedge(it.getObject()) fe = v.get_fedge(it.object)
idx2 = fe.material_index if fe.is_smooth else fe.material_index_left idx2 = fe.material_index if fe.is_smooth else fe.material_index_left
return idx1 != idx2 return idx1 != idx2
@@ -993,7 +993,7 @@ class Length2DThresholdUP0D(UnaryPredicate0D):
def getName(self): def getName(self):
return "Length2DThresholdUP0D" return "Length2DThresholdUP0D"
def __call__(self, inter): def __call__(self, inter):
t = inter.t() # curvilinear abscissa t = inter.t # curvilinear abscissa
if t < self._t: if t < self._t:
self._t = 0.0 self._t = 0.0
return False return False

View File

@@ -33,24 +33,6 @@ from PredicatesU1D import *
from PredicatesU0D import * from PredicatesU0D import *
from Functions0D import * from Functions0D import *
## Predicate to tell whether a TVertex
## corresponds to a change from 0 to 1 or not.
class pyBackTVertexUP0D(UnaryPredicate0D):
def __init__(self):
UnaryPredicate0D.__init__(self)
self._getQI = QuantitativeInvisibilityF0D()
def getName(self):
return "pyBackTVertexUP0D"
def __call__(self, iter):
v = iter.getObject()
nat = v.getNature()
if(nat & Nature.T_VERTEX == 0):
return 0
if(self._getQI(iter) != 0):
return 1
return 0
upred = QuantitativeInvisibilityUP1D(0) upred = QuantitativeInvisibilityUP1D(0)
Operators.select(upred) Operators.select(upred)
Operators.bidirectionalChain(ChainSilhouetteIterator(), NotUP1D(upred)) Operators.bidirectionalChain(ChainSilhouetteIterator(), NotUP1D(upred))

View File

@@ -24,10 +24,10 @@ class pyDepthDiscontinuityThicknessShader(StrokeShader):
a = (self.__max - self.__min)/(z_max-z_min) a = (self.__max - self.__min)/(z_max-z_min)
b = (self.__min*z_max-self.__max*z_min)/(z_max-z_min) b = (self.__min*z_max-self.__max*z_min)/(z_max-z_min)
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
z = self.__func(it.castToInterface0DIterator()) z = self.__func(it.cast_to_interface0diterator())
thickness = a*z+b thickness = a*z+b
it.getObject().attribute.thickness = (thickness, thickness) it.object.attribute.thickness = (thickness, thickness)
it.increment() it.increment()
class pyConstantThicknessShader(StrokeShader): class pyConstantThicknessShader(StrokeShader):
@@ -38,9 +38,9 @@ class pyConstantThicknessShader(StrokeShader):
return "pyConstantThicknessShader" return "pyConstantThicknessShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
t = self._thickness/2.0 t = self._thickness/2.0
it.getObject().attribute.thickness = (t, t) it.object.attribute.thickness = (t, t)
it.increment() it.increment()
class pyFXSThicknessShader(StrokeShader): class pyFXSThicknessShader(StrokeShader):
@@ -51,9 +51,9 @@ class pyFXSThicknessShader(StrokeShader):
return "pyFXSThicknessShader" return "pyFXSThicknessShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
t = self._thickness/2.0 t = self._thickness/2.0
it.getObject().attribute.thickness = (t, t) it.object.attribute.thickness = (t, t)
it.increment() it.increment()
class pyFXSVaryingThicknessWithDensityShader(StrokeShader): class pyFXSVaryingThicknessWithDensityShader(StrokeShader):
@@ -71,8 +71,8 @@ class pyFXSVaryingThicknessWithDensityShader(StrokeShader):
i = 0 i = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
func = DensityF0D(self.wsize) func = DensityF0D(self.wsize)
while not it.isEnd(): while not it.is_end:
toto = it.castToInterface0DIterator() toto = it.cast_to_interface0diterator()
c= func(toto) c= func(toto)
if c < self.threshold_min: if c < self.threshold_min:
c = self.threshold_min c = self.threshold_min
@@ -80,7 +80,7 @@ class pyFXSVaryingThicknessWithDensityShader(StrokeShader):
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 = (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 t = (self.threshold_max - c )/(self.threshold_max - self.threshold_min)*(self._thicknessMax-self._thicknessMin) + self._thicknessMin
it.getObject().attribute.thickness = (t/2.0, t/2.0) it.object.attribute.thickness = (t/2.0, t/2.0)
i = i+1 i = i+1
it.increment() it.increment()
@@ -95,13 +95,13 @@ class pyIncreasingThicknessShader(StrokeShader):
n = stroke.stroke_vertices_size() n = stroke.stroke_vertices_size()
i = 0 i = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
c = float(i)/float(n) 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 t = (1.0 - c)*self._thicknessMin + c * self._thicknessMax
else: else:
t = (1.0 - c)*self._thicknessMax + c * self._thicknessMin t = (1.0 - c)*self._thicknessMax + c * self._thicknessMin
it.getObject().attribute.thickness = (t/2.0, t/2.0) it.object.attribute.thickness = (t/2.0, t/2.0)
i = i+1 i = i+1
it.increment() it.increment()
@@ -124,8 +124,8 @@ class pyConstrainedIncreasingThicknessShader(StrokeShader):
n = stroke.stroke_vertices_size() n = stroke.stroke_vertices_size()
i = 0 i = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
att = it.getObject().attribute att = it.object.attribute
c = float(i)/float(n) 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 t = (1.0 - c)*self._thicknessMin + c * maxT
@@ -155,10 +155,10 @@ class pyDecreasingThicknessShader(StrokeShader):
n = stroke.stroke_vertices_size() n = stroke.stroke_vertices_size()
i = 0 i = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
c = float(i)/float(n) c = float(i)/float(n)
t = (1.0 - c)*tMax +c*tMin t = (1.0 - c)*tMax +c*tMin
it.getObject().attribute.thickness = (t/2.0, t/2.0) it.object.attribute.thickness = (t/2.0, t/2.0)
i = i+1 i = i+1
it.increment() it.increment()
@@ -178,14 +178,14 @@ class pyNonLinearVaryingThicknessShader(StrokeShader):
n = stroke.stroke_vertices_size() n = stroke.stroke_vertices_size()
i = 0 i = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
if i < float(n)/2.0: if i < float(n)/2.0:
c = float(i)/float(n) c = float(i)/float(n)
else: else:
c = float(n-i)/float(n) c = float(n-i)/float(n)
c = smoothC(c, self._exponent) c = smoothC(c, self._exponent)
t = (1.0 - c)*self._thicknessMax + c * self._thicknessMin t = (1.0 - c)*self._thicknessMax + c * self._thicknessMin
it.getObject().attribute.thickness = (t/2.0, t/2.0) it.object.attribute.thickness = (t/2.0, t/2.0)
i = i+1 i = i+1
it.increment() it.increment()
@@ -207,13 +207,13 @@ class pySLERPThicknessShader(StrokeShader):
n = stroke.stroke_vertices_size() n = stroke.stroke_vertices_size()
i = 0 i = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
c = float(i)/float(n) 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 t = sin((1-c)*self._omega)/sinh(self._omega)*self._thicknessMin + sin(c*self._omega)/sinh(self._omega) * maxT
else: else:
t = sin((1-c)*self._omega)/sinh(self._omega)*maxT + sin(c*self._omega)/sinh(self._omega) * self._thicknessMin t = sin((1-c)*self._omega)/sinh(self._omega)*maxT + sin(c*self._omega)/sinh(self._omega) * self._thicknessMin
it.getObject().attribute.thickness = (t/2.0, t/2.0) it.object.attribute.thickness = (t/2.0, t/2.0)
i = i+1 i = i+1
it.increment() it.increment()
@@ -227,39 +227,39 @@ class pyTVertexThickenerShader(StrokeShader): ## FIXME
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
predTVertex = pyVertexNatureUP0D(Nature.T_VERTEX) predTVertex = pyVertexNatureUP0D(Nature.T_VERTEX)
while not it.isEnd(): while not it.is_end:
if predTVertex(it) == 1: if predTVertex(it) == 1:
it2 = StrokeVertexIterator(it) it2 = StrokeVertexIterator(it)
it2.increment() it2.increment()
if not (it.isBegin() or it2.isEnd()): if not (it.is_begin or it2.is_end):
it.increment() it.increment()
continue continue
n = self._n n = self._n
a = self._a a = self._a
if it.isBegin(): if it.is_begin:
it3 = StrokeVertexIterator(it) it3 = StrokeVertexIterator(it)
count = 0 count = 0
while (not it3.isEnd()) and count < n: while (not it3.is_end) and count < n:
att = it3.getObject().attribute att = it3.object.attribute
(tr, tl) = att.thickness (tr, tl) = att.thickness
r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1 r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1
#r = (1.0-a)/float(n-1)*count + a #r = (1.0-a)/float(n-1)*count + a
att.thickness = (r*tr, r*tl) att.thickness = (r*tr, r*tl)
it3.increment() it3.increment()
count = count + 1 count = count + 1
if it2.isEnd(): if it2.is_end:
it4 = StrokeVertexIterator(it) it4 = StrokeVertexIterator(it)
count = 0 count = 0
while (not it4.isBegin()) and count < n: while (not it4.is_begin) and count < n:
att = it4.getObject().attribute att = it4.object.attribute
(tr, tl) = att.thickness (tr, tl) = att.thickness
r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1 r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1
#r = (1.0-a)/float(n-1)*count + a #r = (1.0-a)/float(n-1)*count + a
att.thickness = (r*tr, r*tl) att.thickness = (r*tr, r*tl)
it4.decrement() it4.decrement()
count = count + 1 count = count + 1
if it4.isBegin(): if it4.is_begin:
att = it4.getObject().attribute att = it4.object.attribute
(tr, tl) = att.thickness (tr, tl) = att.thickness
r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1 r = (a-1.0)/float(n-1)*(float(n)/float(count+1) - 1) + 1
#r = (1.0-a)/float(n-1)*count + a #r = (1.0-a)/float(n-1)*count + a
@@ -279,8 +279,8 @@ class pyImportance2DThicknessShader(StrokeShader):
def shade(self, stroke): def shade(self, stroke):
origin = Vector([self._x, self._y]) origin = Vector([self._x, self._y])
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
p = Vector([v.projected_x, v.projected_y]) p = Vector([v.projected_x, v.projected_y])
d = (p-origin).length d = (p-origin).length
if d > self._w: if d > self._w:
@@ -306,8 +306,8 @@ class pyImportance3DThicknessShader(StrokeShader):
def shade(self, stroke): def shade(self, stroke):
origin = Vector([self._x, self._y, self._z]) origin = Vector([self._x, self._y, self._z])
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
p = v.point_3d p = v.point_3d
d = (p-origin).length d = (p-origin).length
if d > self._w: if d > self._w:
@@ -331,8 +331,8 @@ class pyZDependingThicknessShader(StrokeShader):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
z_min = 1 z_min = 1
z_max = 0 z_max = 0
while not it.isEnd(): while not it.is_end:
z = self.__func(it.castToInterface0DIterator()) z = self.__func(it.cast_to_interface0diterator())
if z < z_min: if z < z_min:
z_min = z z_min = z
if z > z_max: if z > z_max:
@@ -340,10 +340,10 @@ class pyZDependingThicknessShader(StrokeShader):
it.increment() it.increment()
z_diff = 1 / (z_max - z_min) z_diff = 1 / (z_max - z_min)
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
z = (self.__func(it.castToInterface0DIterator()) - z_min) * z_diff z = (self.__func(it.cast_to_interface0diterator()) - z_min) * z_diff
thickness = (1 - z) * self.__max + z * self.__min thickness = (1 - z) * self.__max + z * self.__min
it.getObject().attribute.thickness = (thickness, thickness) it.object.attribute.thickness = (thickness, thickness)
it.increment() it.increment()
@@ -361,8 +361,8 @@ class pyConstantColorShader(StrokeShader):
return "pyConstantColorShader" return "pyConstantColorShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
att = it.getObject().attribute att = it.object.attribute
att.color = (self._r, self._g, self._b) att.color = (self._r, self._g, self._b)
att.alpha = self._a att.alpha = self._a
it.increment() it.increment()
@@ -379,8 +379,8 @@ class pyIncreasingColorShader(StrokeShader):
n = stroke.stroke_vertices_size() - 1 n = stroke.stroke_vertices_size() - 1
inc = 0 inc = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
att = it.getObject().attribute att = it.object.attribute
c = float(inc)/float(n) c = float(inc)/float(n)
att.color = ((1-c)*self._c1[0] + c*self._c2[0], att.color = ((1-c)*self._c1[0] + c*self._c2[0],
@@ -402,8 +402,8 @@ class pyInterpolateColorShader(StrokeShader):
n = stroke.stroke_vertices_size() - 1 n = stroke.stroke_vertices_size() - 1
inc = 0 inc = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
att = it.getObject().attribute att = it.object.attribute
u = float(inc)/float(n) u = float(inc)/float(n)
c = 1-2*(fabs(u-0.5)) c = 1-2*(fabs(u-0.5))
att.color = ((1-c)*self._c1[0] + c*self._c2[0], att.color = ((1-c)*self._c1[0] + c*self._c2[0],
@@ -427,8 +427,8 @@ class pyMaterialColorShader(StrokeShader):
Yn = 1.0 Yn = 1.0
un = 4.* xn/ ( -2.*xn + 12.*yn + 3. ) un = 4.* xn/ ( -2.*xn + 12.*yn + 3. )
vn= 9.* yn/ ( -2.*xn + 12.*yn +3. ) vn= 9.* yn/ ( -2.*xn + 12.*yn +3. )
while not it.isEnd(): while not it.is_end:
toto = it.castToInterface0DIterator() toto = it.cast_to_interface0diterator()
mat = func(toto) mat = func(toto)
r = mat.diffuse[0] r = mat.diffuse[0]
@@ -472,7 +472,7 @@ class pyMaterialColorShader(StrokeShader):
g = max(0,g) g = max(0,g)
b = max(0,b) b = max(0,b)
it.getObject().attribute.color = (r, g, b) it.object.attribute.color = (r, g, b)
it.increment() it.increment()
class pyRandomColorShader(StrokeShader): class pyRandomColorShader(StrokeShader):
@@ -488,8 +488,8 @@ class pyRandomColorShader(StrokeShader):
c2 = float(uniform(15,75))/100.0 c2 = float(uniform(15,75))/100.0
print(c0, c1, c2) print(c0, c1, c2)
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
it.getObject().attribute.color = (c0,c1,c2) it.object.attribute.color = (c0,c1,c2)
it.increment() it.increment()
class py2DCurvatureColorShader(StrokeShader): class py2DCurvatureColorShader(StrokeShader):
@@ -498,12 +498,12 @@ class py2DCurvatureColorShader(StrokeShader):
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
func = Curvature2DAngleF0D() func = Curvature2DAngleF0D()
while not it.isEnd(): while not it.is_end:
c = func(it.castToInterface0DIterator()) c = func(it.cast_to_interface0diterator())
if c < 0: if c < 0:
print("negative 2D curvature") print("negative 2D curvature")
color = 10.0 * c/3.1415 color = 10.0 * c/3.1415
it.getObject().attribute.color = (color, color, color) it.object.attribute.color = (color, color, color)
it.increment() it.increment()
class pyTimeColorShader(StrokeShader): class pyTimeColorShader(StrokeShader):
@@ -514,8 +514,8 @@ class pyTimeColorShader(StrokeShader):
def shade(self, stroke): def shade(self, stroke):
c = self._t*1.0 c = self._t*1.0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
it.getObject().attribute.color = (c,c,c) it.object.attribute.color = (c,c,c)
it.increment() it.increment()
self._t = self._t+self._step self._t = self._t+self._step
@@ -545,10 +545,10 @@ class pyBackboneStretcherShader(StrokeShader):
itn.decrement() itn.decrement()
itn_1 = StrokeVertexIterator(itn) itn_1 = StrokeVertexIterator(itn)
itn_1.decrement() itn_1.decrement()
v0 = it0.getObject() v0 = it0.object
v1 = it1.getObject() v1 = it1.object
vn_1 = itn_1.getObject() vn_1 = itn_1.object
vn = itn.getObject() vn = itn.object
p0 = Vector([v0.projected_x, v0.projected_y]) p0 = Vector([v0.projected_x, v0.projected_y])
pn = Vector([vn.projected_x, vn.projected_y]) pn = Vector([vn.projected_x, vn.projected_y])
p1 = Vector([v1.projected_x, v1.projected_y]) p1 = Vector([v1.projected_x, v1.projected_y])
@@ -579,10 +579,10 @@ class pyLengthDependingBackboneStretcherShader(StrokeShader):
itn.decrement() itn.decrement()
itn_1 = StrokeVertexIterator(itn) itn_1 = StrokeVertexIterator(itn)
itn_1.decrement() itn_1.decrement()
v0 = it0.getObject() v0 = it0.object
v1 = it1.getObject() v1 = it1.object
vn_1 = itn_1.getObject() vn_1 = itn_1.object
vn = itn.getObject() vn = itn.object
p0 = Vector([v0.projected_x, v0.projected_y]) p0 = Vector([v0.projected_x, v0.projected_y])
pn = Vector([vn.projected_x, vn.projected_y]) pn = Vector([vn.projected_x, vn.projected_y])
p1 = Vector([v1.projected_x, v1.projected_y]) p1 = Vector([v1.projected_x, v1.projected_y])
@@ -607,23 +607,23 @@ class pyGuidingLineShader(StrokeShader):
it = stroke.stroke_vertices_begin() ## get the first vertex it = stroke.stroke_vertices_begin() ## get the first vertex
itlast = stroke.stroke_vertices_end() ## itlast = stroke.stroke_vertices_end() ##
itlast.decrement() ## get the last one itlast.decrement() ## get the last one
t = itlast.getObject().point - it.getObject().point ## tangent direction t = itlast.object.point - it.object.point ## tangent direction
itmiddle = StrokeVertexIterator(it) ## itmiddle = StrokeVertexIterator(it) ##
while itmiddle.getObject().u < 0.5: ## look for the stroke middle vertex while itmiddle.object.u < 0.5: ## look for the stroke middle vertex
itmiddle.increment() ## itmiddle.increment() ##
it = StrokeVertexIterator(itmiddle) it = StrokeVertexIterator(itmiddle)
it.increment() it.increment()
while not it.isEnd(): ## position all the vertices along the tangent for the right part while not it.is_end: ## position all the vertices along the tangent for the right part
it.getObject().point = itmiddle.getObject().point \ it.object.point = itmiddle.object.point \
+t*(it.getObject().u-itmiddle.getObject().u) +t*(it.object.u-itmiddle.object.u)
it.increment() it.increment()
it = StrokeVertexIterator(itmiddle) it = StrokeVertexIterator(itmiddle)
it.decrement() it.decrement()
while not it.isBegin(): ## position all the vertices along the tangent for the left part while not it.is_begin: ## position all the vertices along the tangent for the left part
it.getObject().point = itmiddle.getObject().point \ it.object.point = itmiddle.object.point \
-t*(itmiddle.getObject().u-it.getObject().u) -t*(itmiddle.object.u-it.object.u)
it.decrement() it.decrement()
it.getObject().point = itmiddle.getObject().point-t*itmiddle.getObject().u ## first vertex it.object.point = itmiddle.object.point-t*itmiddle.object.u ## first vertex
stroke.update_length() stroke.update_length()
@@ -641,8 +641,8 @@ class pyBackboneStretcherNoCuspShader(StrokeShader):
itn.decrement() itn.decrement()
itn_1 = StrokeVertexIterator(itn) itn_1 = StrokeVertexIterator(itn)
itn_1.decrement() itn_1.decrement()
v0 = it0.getObject() v0 = it0.object
v1 = it1.getObject() v1 = it1.object
if (v0.nature & Nature.CUSP) == 0 and (v1.nature & Nature.CUSP) == 0: if (v0.nature & Nature.CUSP) == 0 and (v1.nature & Nature.CUSP) == 0:
p0 = v0.point p0 = v0.point
p1 = v1.point p1 = v1.point
@@ -650,8 +650,8 @@ class pyBackboneStretcherNoCuspShader(StrokeShader):
d1.normalize() d1.normalize()
newFirst = p0+d1*float(self._l) newFirst = p0+d1*float(self._l)
v0.point = newFirst v0.point = newFirst
vn_1 = itn_1.getObject() vn_1 = itn_1.object
vn = itn.getObject() vn = itn.object
if (vn.nature & Nature.CUSP) == 0 and (vn_1.nature & Nature.CUSP) == 0: if (vn.nature & Nature.CUSP) == 0 and (vn_1.nature & Nature.CUSP) == 0:
pn = vn.point pn = vn.point
pn_1 = vn_1.point pn_1 = vn_1.point
@@ -677,10 +677,10 @@ class pyDiffusion2Shader(StrokeShader):
def shade(self, stroke): def shade(self, stroke):
for i in range (1, self._nbIter): for i in range (1, self._nbIter):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
p1 = v.point p1 = v.point
p2 = self._normalInfo(it.castToInterface0DIterator())*self._lambda*self._curvatureInfo(it.castToInterface0DIterator()) p2 = self._normalInfo(it.cast_to_interface0diterator())*self._lambda*self._curvatureInfo(it.cast_to_interface0diterator())
v.point = p1+p2 v.point = p1+p2
it.increment() it.increment()
stroke.update_length() stroke.update_length()
@@ -698,8 +698,8 @@ class pyTipRemoverShader(StrokeShader):
verticesToRemove = [] verticesToRemove = []
oldAttributes = [] oldAttributes = []
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
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) verticesToRemove.append(v)
oldAttributes.append(StrokeAttribute(v.attribute)) oldAttributes.append(StrokeAttribute(v.attribute))
@@ -714,9 +714,9 @@ class pyTipRemoverShader(StrokeShader):
print("pyTipRemover: Warning: resampling problem") print("pyTipRemover: Warning: resampling problem")
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
for a in oldAttributes: for a in oldAttributes:
if it.isEnd(): if it.is_end:
break break
it.getObject().attribute = a it.object.attribute = a
it.increment() it.increment()
stroke.update_length() stroke.update_length()
@@ -731,9 +731,9 @@ class pyTVertexRemoverShader(StrokeShader):
itlast = stroke.stroke_vertices_end() itlast = stroke.stroke_vertices_end()
itlast.decrement() itlast.decrement()
if predTVertex(it): if predTVertex(it):
stroke.remove_vertex(it.getObject()) stroke.remove_vertex(it.object)
if predTVertex(itlast): if predTVertex(itlast):
stroke.remove_vertex(itlast.getObject()) stroke.remove_vertex(itlast.object)
stroke.update_length() stroke.update_length()
class pyExtremitiesOrientationShader(StrokeShader): class pyExtremitiesOrientationShader(StrokeShader):
@@ -762,12 +762,12 @@ class pyHLRShader(StrokeShader):
invisible = 0 invisible = 0
it2 = StrokeVertexIterator(it) it2 = StrokeVertexIterator(it)
it2.increment() it2.increment()
fe = get_fedge(it.getObject(), it2.getObject()) fe = get_fedge(it.object, it2.object)
if fe.viewedge.qi != 0: if fe.viewedge.qi != 0:
invisible = 1 invisible = 1
while not it2.isEnd(): while not it2.is_end:
v = it.getObject() v = it.object
vnext = it2.getObject() vnext = it2.object
if (v.nature & Nature.VIEW_VERTEX) != 0: if (v.nature & Nature.VIEW_VERTEX) != 0:
#if (v.nature & Nature.T_VERTEX) != 0: #if (v.nature & Nature.T_VERTEX) != 0:
fe = get_fedge(v, vnext) fe = get_fedge(v, vnext)
@@ -795,10 +795,10 @@ class pyTVertexOrientationShader(StrokeShader):
ait = AdjacencyIterator(tv,1,0) ait = AdjacencyIterator(tv,1,0)
winner = None winner = None
incoming = True incoming = True
while not ait.isEnd(): while not ait.is_end:
ave = ait.getObject() ave = ait.object
if ave.id != ve.id and ave.id != mateVE.id: if ave.id != ve.id and ave.id != mateVE.id:
winner = ait.getObject() winner = ait.object
if not ait.isIncoming(): # FIXME if not ait.isIncoming(): # FIXME
incoming = False incoming = False
break break
@@ -821,18 +821,18 @@ class pyTVertexOrientationShader(StrokeShader):
it2 = StrokeVertexIterator(it) it2 = StrokeVertexIterator(it)
it2.increment() it2.increment()
## case where the first vertex is a TVertex ## case where the first vertex is a TVertex
v = it.getObject() v = it.object
if (v.nature & Nature.T_VERTEX) != 0: if (v.nature & Nature.T_VERTEX) != 0:
tv = self.castToTVertex(v) tv = self.castToTVertex(v)
if tv is not None: if tv is not None:
ve = get_fedge(v, it2.getObject()).viewedge ve = get_fedge(v, it2.object).viewedge
dir = self.findOrientation(tv, ve) dir = self.findOrientation(tv, ve)
if dir is not None: if dir is not None:
#print(dir.x, dir.y) #print(dir.x, dir.y)
v.attribute.set_attribute_vec2("orientation", dir) v.attribute.set_attribute_vec2("orientation", dir)
while not it2.isEnd(): while not it2.is_end:
vprevious = it.getObject() vprevious = it.object
v = it2.getObject() v = it2.object
if (v.nature & Nature.T_VERTEX) != 0: if (v.nature & Nature.T_VERTEX) != 0:
tv = self.castToTVertex(v) tv = self.castToTVertex(v)
if tv is not None: if tv is not None:
@@ -844,13 +844,13 @@ class pyTVertexOrientationShader(StrokeShader):
it.increment() it.increment()
it2.increment() it2.increment()
## case where the last vertex is a TVertex ## case where the last vertex is a TVertex
v = it.getObject() v = it.object
if (v.nature & Nature.T_VERTEX) != 0: if (v.nature & Nature.T_VERTEX) != 0:
itPrevious = StrokeVertexIterator(it) itPrevious = StrokeVertexIterator(it)
itPrevious.decrement() itPrevious.decrement()
tv = self.castToTVertex(v) tv = self.castToTVertex(v)
if tv is not None: if tv is not None:
ve = get_fedge(itPrevious.getObject(), v).viewedge ve = get_fedge(itPrevious.object, v).viewedge
dir = self.findOrientation(tv, ve) dir = self.findOrientation(tv, ve)
if dir is not None: if dir is not None:
#print(dir.x, dir.y) #print(dir.x, dir.y)
@@ -866,10 +866,10 @@ class pySinusDisplacementShader(StrokeShader):
return "pySinusDisplacementShader" return "pySinusDisplacementShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
#print(self._getNormal.getName()) #print(self._getNormal.getName())
n = self._getNormal(it.castToInterface0DIterator()) n = self._getNormal(it.cast_to_interface0diterator())
p = v.point p = v.point
u = v.u u = v.u
a = self._a*(1-2*(fabs(u-0.5))) a = self._a*(1-2*(fabs(u-0.5)))
@@ -891,8 +891,8 @@ class pyPerlinNoise1DShader(StrokeShader):
return "pyPerlinNoise1DShader" return "pyPerlinNoise1DShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
i = v.projected_x + v.projected_y i = v.projected_x + v.projected_y
nres = self.__noise.turbulence1(i, self.__freq, self.__amp, self.__oct) nres = self.__noise.turbulence1(i, self.__freq, self.__amp, self.__oct)
v.point = (v.projected_x + nres, v.projected_y + nres) v.point = (v.projected_x + nres, v.projected_y + nres)
@@ -910,8 +910,8 @@ class pyPerlinNoise2DShader(StrokeShader):
return "pyPerlinNoise2DShader" return "pyPerlinNoise2DShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
v = it.getObject() v = it.object
vec = Vector([v.projected_x, v.projected_y]) vec = Vector([v.projected_x, v.projected_y])
nres = self.__noise.turbulence2(vec, self.__freq, self.__amp, self.__oct) nres = self.__noise.turbulence2(vec, self.__freq, self.__amp, self.__oct)
v.point = (v.projected_x + nres, v.projected_y + nres) v.point = (v.projected_x + nres, v.projected_y + nres)
@@ -928,12 +928,12 @@ class pyBluePrintCirclesShader(StrokeShader):
return "pyBluePrintCirclesShader" return "pyBluePrintCirclesShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
if it.isEnd(): if it.is_end:
return return
p_min = it.getObject().point.copy() p_min = it.object.point.copy()
p_max = it.getObject().point.copy() p_max = it.object.point.copy()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point p = it.object.point
if p.x < p_min.x: if p.x < p_min.x:
p_min.x = p.x p_min.x = p.x
if p.x > p_max.x: if p.x > p_max.x:
@@ -964,19 +964,19 @@ class pyBluePrintCirclesShader(StrokeShader):
prev_center = center prev_center = center
radius = radius + randint(-R, R) radius = radius + randint(-R, R)
center = center + Vector([randint(-C, C), randint(-C, C)]) center = center + Vector([randint(-C, C), randint(-C, C)])
while i < sv_nb and not it.isEnd(): while i < sv_nb and not it.is_end:
t = float(i) / float(sv_nb - 1) t = float(i) / float(sv_nb - 1)
r = prev_radius + (radius - prev_radius) * t r = prev_radius + (radius - prev_radius) * t
c = prev_center + (center - prev_center) * t c = prev_center + (center - prev_center) * t
p_new.x = c.x + r * cos(2 * pi * t) p_new.x = c.x + r * cos(2 * pi * t)
p_new.y = c.y + r * sin(2 * pi * t) p_new.y = c.y + r * sin(2 * pi * t)
it.getObject().point = p_new it.object.point = p_new
i = i + 1 i = i + 1
it.increment() it.increment()
i = 1 i = 1
verticesToRemove = [] verticesToRemove = []
while not it.isEnd(): while not it.is_end:
verticesToRemove.append(it.getObject()) verticesToRemove.append(it.object)
it.increment() it.increment()
for sv in verticesToRemove: for sv in verticesToRemove:
stroke.remove_vertex(sv) stroke.remove_vertex(sv)
@@ -992,12 +992,12 @@ class pyBluePrintEllipsesShader(StrokeShader):
return "pyBluePrintEllipsesShader" return "pyBluePrintEllipsesShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
if it.isEnd(): if it.is_end:
return return
p_min = it.getObject().point.copy() p_min = it.object.point.copy()
p_max = it.getObject().point.copy() p_max = it.object.point.copy()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point p = it.object.point
if p.x < p_min.x: if p.x < p_min.x:
p_min.x = p.x p_min.x = p.x
if p.x > p_max.x: if p.x > p_max.x:
@@ -1023,19 +1023,19 @@ class pyBluePrintEllipsesShader(StrokeShader):
prev_center = center prev_center = center
radius = radius + Vector([randint(-R, R), randint(-R, R)]) radius = radius + Vector([randint(-R, R), randint(-R, R)])
center = center + Vector([randint(-C, C), randint(-C, C)]) center = center + Vector([randint(-C, C), randint(-C, C)])
while i < sv_nb and not it.isEnd(): while i < sv_nb and not it.is_end:
t = float(i) / float(sv_nb - 1) t = float(i) / float(sv_nb - 1)
r = prev_radius + (radius - prev_radius) * t r = prev_radius + (radius - prev_radius) * t
c = prev_center + (center - prev_center) * t c = prev_center + (center - prev_center) * t
p_new.x = c.x + r.x * cos(2 * pi * t) p_new.x = c.x + r.x * cos(2 * pi * t)
p_new.y = c.y + r.y * sin(2 * pi * t) p_new.y = c.y + r.y * sin(2 * pi * t)
it.getObject().point = p_new it.object.point = p_new
i = i + 1 i = i + 1
it.increment() it.increment()
i = 1 i = 1
verticesToRemove = [] verticesToRemove = []
while not it.isEnd(): while not it.is_end:
verticesToRemove.append(it.getObject()) verticesToRemove.append(it.object)
it.increment() it.increment()
for sv in verticesToRemove: for sv in verticesToRemove:
stroke.remove_vertex(sv) stroke.remove_vertex(sv)
@@ -1052,12 +1052,12 @@ class pyBluePrintSquaresShader(StrokeShader):
return "pyBluePrintSquaresShader" return "pyBluePrintSquaresShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
if it.isEnd(): if it.is_end:
return return
p_min = it.getObject().point.copy() p_min = it.object.point.copy()
p_max = it.getObject().point.copy() p_max = it.object.point.copy()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point p = it.object.point
if p.x < p_min.x: if p.x < p_min.x:
p_min.x = p.x p_min.x = p.x
if p.x > p_max.x: if p.x > p_max.x:
@@ -1102,7 +1102,7 @@ class pyBluePrintSquaresShader(StrokeShader):
vec_third = p_third_end - p_third vec_third = p_third_end - p_third
vec_fourth = p_fourth_end - p_fourth vec_fourth = p_fourth_end - p_fourth
i = 0 i = 0
while i < sv_nb and not it.isEnd(): while i < sv_nb and not it.is_end:
if i < first: if i < first:
p_new = p_first + vec_first * float(i)/float(first - 1) p_new = p_first + vec_first * float(i)/float(first - 1)
if i == first - 1: if i == first - 1:
@@ -1119,21 +1119,21 @@ class pyBluePrintSquaresShader(StrokeShader):
p_new = p_fourth + vec_fourth * float(i - third)/float(fourth - third - 1) p_new = p_fourth + vec_fourth * float(i - third)/float(fourth - third - 1)
if i == fourth - 1: if i == fourth - 1:
visible = False visible = False
if it.getObject() == None: if it.object == None:
i = i + 1 i = i + 1
it.increment() it.increment()
if not visible: if not visible:
visible = True visible = True
continue continue
it.getObject().point = p_new it.object.point = p_new
it.getObject().attribute.visible = visible it.object.attribute.visible = visible
if not visible: if not visible:
visible = True visible = True
i = i + 1 i = i + 1
it.increment() it.increment()
verticesToRemove = [] verticesToRemove = []
while not it.isEnd(): while not it.is_end:
verticesToRemove.append(it.getObject()) verticesToRemove.append(it.object)
it.increment() it.increment()
for sv in verticesToRemove: for sv in verticesToRemove:
stroke.remove_vertex(sv) stroke.remove_vertex(sv)
@@ -1152,8 +1152,8 @@ class pyBluePrintDirectedSquaresShader(StrokeShader):
stroke.resample(32 * self.__turns) stroke.resample(32 * self.__turns)
p_mean = Vector([0, 0]) p_mean = Vector([0, 0])
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point p = it.object.point
p_mean = p_mean + p p_mean = p_mean + p
it.increment() it.increment()
sv_nb = stroke.stroke_vertices_size() sv_nb = stroke.stroke_vertices_size()
@@ -1162,8 +1162,8 @@ class pyBluePrintDirectedSquaresShader(StrokeShader):
p_var_yy = 0 p_var_yy = 0
p_var_xy = 0 p_var_xy = 0
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
p = it.getObject().point p = it.object.point
p_var_xx = p_var_xx + pow(p.x - p_mean.x, 2) 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) p_var_yy = p_var_yy + pow(p.y - p_mean.y, 2)
p_var_xy = p_var_xy + (p.x - p_mean.x) * (p.y - p_mean.y) p_var_xy = p_var_xy + (p.x - p_mean.x) * (p.y - p_mean.y)
@@ -1224,15 +1224,15 @@ class pyBluePrintDirectedSquaresShader(StrokeShader):
p_new = p_fourth + vec_fourth * float(i - third)/float(fourth - third - 1) p_new = p_fourth + vec_fourth * float(i - third)/float(fourth - third - 1)
if i == fourth - 1: if i == fourth - 1:
visible = False visible = False
it.getObject().point = p_new it.object.point = p_new
it.getObject().attribute.visible = visible it.object.attribute.visible = visible
if not visible: if not visible:
visible = True visible = True
i = i + 1 i = i + 1
it.increment() it.increment()
verticesToRemove = [] verticesToRemove = []
while not it.isEnd(): while not it.is_end:
verticesToRemove.append(it.getObject()) verticesToRemove.append(it.object)
it.increment() it.increment()
for sv in verticesToRemove: for sv in verticesToRemove:
stroke.remove_vertex(sv) stroke.remove_vertex(sv)
@@ -1247,15 +1247,15 @@ class pyModulateAlphaShader(StrokeShader):
return "pyModulateAlphaShader" return "pyModulateAlphaShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
alpha = it.getObject().attribute.alpha alpha = it.object.attribute.alpha
p = it.getObject().point p = it.object.point
alpha = alpha * p.y / 400 alpha = alpha * p.y / 400
if alpha < self.__min: if alpha < self.__min:
alpha = self.__min alpha = self.__min
elif alpha > self.__max: elif alpha > self.__max:
alpha = self.__max alpha = self.__max
it.getObject().attribute.alpha = alpha it.object.attribute.alpha = alpha
it.increment() it.increment()
## various ## various
@@ -1264,9 +1264,9 @@ class pyDummyShader(StrokeShader):
return "pyDummyShader" return "pyDummyShader"
def shade(self, stroke): def shade(self, stroke):
it = stroke.stroke_vertices_begin() it = stroke.stroke_vertices_begin()
while not it.isEnd(): while not it.is_end:
toto = it.castToInterface0DIterator() toto = it.cast_to_interface0diterator()
att = it.getObject().attribute att = it.object.attribute
att.color = (0.3, 0.4, 0.4) att.color = (0.3, 0.4, 0.4)
att.thickness = (0, 5) att.thickness = (0, 5)
it.increment() it.increment()
@@ -1284,8 +1284,8 @@ class pyDebugShader(StrokeShader):
found = True found = True
foundfirst = True foundfirst = True
foundsecond = False foundsecond = False
while not it.isEnd(): while not it.is_end:
cp = it.getObject() cp = it.object
if cp.first_svertex.id == id1 or cp.second_svertex.id == id1: if cp.first_svertex.id == id1 or cp.second_svertex.id == id1:
foundfirst = True foundfirst = True
if cp.first_svertex.id == id2 or cp.second_svertex.id == id2: if cp.first_svertex.id == id2 or cp.second_svertex.id == id2:

View File

@@ -7,24 +7,6 @@ from Functions0D import *
from Functions1D import * from Functions1D import *
from shaders import * from shaders import *
class pyDensityUP1D(UnaryPredicate1D):
def __init__(self,wsize,threshold, integration = IntegrationType.MEAN, sampling=2.0):
UnaryPredicate1D.__init__(self)
self._wsize = wsize
self._threshold = threshold
self._integration = integration
self._func = DensityF1D(self._wsize, self._integration, sampling)
def getName(self):
return "pyDensityUP1D"
def __call__(self, inter):
d = self._func(inter)
print("For Chain ", inter.getId().getFirst(), inter.getId().getSecond(), "density is ", d)
if(d < self._threshold):
return 1
return 0
Operators.select(QuantitativeInvisibilityUP1D(0)) Operators.select(QuantitativeInvisibilityUP1D(0))
Operators.bidirectionalChain(ChainSilhouetteIterator()) Operators.bidirectionalChain(ChainSilhouetteIterator())
#Operators.sequentialSplit(pyVertexNatureUP0D(Nature.VIEW_VERTEX), 2) #Operators.sequentialSplit(pyVertexNatureUP0D(Nature.VIEW_VERTEX), 2)

View File

@@ -12,8 +12,6 @@
#include "Iterator/BPy_ChainPredicateIterator.h" #include "Iterator/BPy_ChainPredicateIterator.h"
#include "Iterator/BPy_ChainSilhouetteIterator.h" #include "Iterator/BPy_ChainSilhouetteIterator.h"
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@@ -21,64 +19,64 @@ extern "C" {
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
//-------------------MODULE INITIALIZATION-------------------------------- //-------------------MODULE INITIALIZATION--------------------------------
int Iterator_Init( PyObject *module ) int Iterator_Init(PyObject *module)
{ {
if( module == NULL ) if (module == NULL)
return -1; return -1;
if( PyType_Ready( &Iterator_Type ) < 0 ) if (PyType_Ready(&Iterator_Type) < 0)
return -1; return -1;
Py_INCREF( &Iterator_Type ); Py_INCREF(&Iterator_Type);
PyModule_AddObject(module, "Iterator", (PyObject *)&Iterator_Type); PyModule_AddObject(module, "Iterator", (PyObject *)&Iterator_Type);
if( PyType_Ready( &AdjacencyIterator_Type ) < 0 ) if (PyType_Ready(&AdjacencyIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &AdjacencyIterator_Type ); Py_INCREF(&AdjacencyIterator_Type);
PyModule_AddObject(module, "AdjacencyIterator", (PyObject *)&AdjacencyIterator_Type); PyModule_AddObject(module, "AdjacencyIterator", (PyObject *)&AdjacencyIterator_Type);
if( PyType_Ready( &Interface0DIterator_Type ) < 0 ) if (PyType_Ready(&Interface0DIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &Interface0DIterator_Type ); Py_INCREF(&Interface0DIterator_Type);
PyModule_AddObject(module, "Interface0DIterator", (PyObject *)&Interface0DIterator_Type); PyModule_AddObject(module, "Interface0DIterator", (PyObject *)&Interface0DIterator_Type);
if( PyType_Ready( &CurvePointIterator_Type ) < 0 ) if (PyType_Ready(&CurvePointIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &CurvePointIterator_Type ); Py_INCREF(&CurvePointIterator_Type);
PyModule_AddObject(module, "CurvePointIterator", (PyObject *)&CurvePointIterator_Type); PyModule_AddObject(module, "CurvePointIterator", (PyObject *)&CurvePointIterator_Type);
if( PyType_Ready( &StrokeVertexIterator_Type ) < 0 ) if (PyType_Ready(&StrokeVertexIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &StrokeVertexIterator_Type ); Py_INCREF(&StrokeVertexIterator_Type);
PyModule_AddObject(module, "StrokeVertexIterator", (PyObject *)&StrokeVertexIterator_Type); PyModule_AddObject(module, "StrokeVertexIterator", (PyObject *)&StrokeVertexIterator_Type);
if( PyType_Ready( &SVertexIterator_Type ) < 0 ) if (PyType_Ready(&SVertexIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &SVertexIterator_Type ); Py_INCREF(&SVertexIterator_Type);
PyModule_AddObject(module, "SVertexIterator", (PyObject *)&SVertexIterator_Type); PyModule_AddObject(module, "SVertexIterator", (PyObject *)&SVertexIterator_Type);
if( PyType_Ready( &orientedViewEdgeIterator_Type ) < 0 ) if (PyType_Ready(&orientedViewEdgeIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &orientedViewEdgeIterator_Type ); Py_INCREF(&orientedViewEdgeIterator_Type);
PyModule_AddObject(module, "orientedViewEdgeIterator", (PyObject *)&orientedViewEdgeIterator_Type); PyModule_AddObject(module, "orientedViewEdgeIterator", (PyObject *)&orientedViewEdgeIterator_Type);
if( PyType_Ready( &ViewEdgeIterator_Type ) < 0 ) if (PyType_Ready(&ViewEdgeIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &ViewEdgeIterator_Type ); Py_INCREF(&ViewEdgeIterator_Type);
PyModule_AddObject(module, "ViewEdgeIterator", (PyObject *)&ViewEdgeIterator_Type); PyModule_AddObject(module, "ViewEdgeIterator", (PyObject *)&ViewEdgeIterator_Type);
if( PyType_Ready( &ChainingIterator_Type ) < 0 ) if (PyType_Ready(&ChainingIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &ChainingIterator_Type ); Py_INCREF(&ChainingIterator_Type);
PyModule_AddObject(module, "ChainingIterator", (PyObject *)&ChainingIterator_Type); PyModule_AddObject(module, "ChainingIterator", (PyObject *)&ChainingIterator_Type);
if( PyType_Ready( &ChainPredicateIterator_Type ) < 0 ) if (PyType_Ready(&ChainPredicateIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &ChainPredicateIterator_Type ); Py_INCREF(&ChainPredicateIterator_Type);
PyModule_AddObject(module, "ChainPredicateIterator", (PyObject *)&ChainPredicateIterator_Type); PyModule_AddObject(module, "ChainPredicateIterator", (PyObject *)&ChainPredicateIterator_Type);
if( PyType_Ready( &ChainSilhouetteIterator_Type ) < 0 ) if (PyType_Ready(&ChainSilhouetteIterator_Type) < 0)
return -1; return -1;
Py_INCREF( &ChainSilhouetteIterator_Type ); Py_INCREF(&ChainSilhouetteIterator_Type);
PyModule_AddObject(module, "ChainSilhouetteIterator", (PyObject *)&ChainSilhouetteIterator_Type); PyModule_AddObject(module, "ChainSilhouetteIterator", (PyObject *)&ChainSilhouetteIterator_Type);
return 0; return 0;
@@ -86,97 +84,96 @@ int Iterator_Init( PyObject *module )
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char Iterator___doc__[] = PyDoc_STRVAR(Iterator_doc,
"Base class to define iterators.\n"; "Base class to define iterators.");
static void Iterator___dealloc__(BPy_Iterator* self) static void Iterator_dealloc(BPy_Iterator* self)
{ {
if (self->it) if (self->it)
delete self->it; delete self->it;
Py_TYPE(self)->tp_free((PyObject*)self); Py_TYPE(self)->tp_free((PyObject*)self);
} }
static PyObject * Iterator___repr__(BPy_Iterator* self) static PyObject * Iterator_repr(BPy_Iterator* self)
{ {
return PyUnicode_FromFormat("type: %s - address: %p", self->it->getExactTypeName().c_str(), self->it ); return PyUnicode_FromFormat("type: %s - address: %p", self->it->getExactTypeName().c_str(), self->it);
} }
static char Iterator_getExactTypeName___doc__[] = PyDoc_STRVAR(Iterator_increment_doc,
".. method:: getExactTypeName()\n"
"\n"
" Returns the name of the iterator.\n"
"\n"
" :return: The name of the iterator.\n"
" :rtype: str\n";
static PyObject * Iterator_getExactTypeName(BPy_Iterator* self) {
return PyUnicode_FromString( self->it->getExactTypeName().c_str() );
}
static char Iterator_increment___doc__[] =
".. method:: increment()\n" ".. method:: increment()\n"
"\n" "\n"
" Makes the iterator point the next element.\n"; " Makes the iterator point the next element.");
static PyObject * Iterator_increment(BPy_Iterator* self) { static PyObject * Iterator_increment(BPy_Iterator* self)
{
if (self->it->isEnd()) { if (self->it->isEnd()) {
PyErr_SetString(PyExc_RuntimeError , "cannot increment any more"); PyErr_SetString(PyExc_RuntimeError , "cannot increment any more");
return NULL; return NULL;
} }
self->it->increment(); self->it->increment();
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static char Iterator_decrement___doc__[] = PyDoc_STRVAR(Iterator_decrement_doc,
".. method:: decrement()\n" ".. method:: decrement()\n"
"\n" "\n"
" Makes the iterator point the previous element.\n"; " Makes the iterator point the previous element.");
static PyObject * Iterator_decrement(BPy_Iterator* self) { static PyObject * Iterator_decrement(BPy_Iterator* self)
{
if (self->it->isBegin()) { if (self->it->isBegin()) {
PyErr_SetString(PyExc_RuntimeError , "cannot decrement any more"); PyErr_SetString(PyExc_RuntimeError , "cannot decrement any more");
return NULL; return NULL;
} }
self->it->decrement(); self->it->decrement();
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static char Iterator_isBegin___doc__[] =
".. method:: isBegin()\n"
"\n"
" Returns true if the interator points the first element.\n"
"\n"
" :return: True if the interator points the first element.\n"
" :rtype: bool\n";
static PyObject * Iterator_isBegin(BPy_Iterator* self) {
return PyBool_from_bool( self->it->isBegin() );
}
static char Iterator_isEnd___doc__[] =
".. method:: isEnd()\n"
"\n"
" Returns true if the interator points the last element.\n"
"\n"
" :return: True if the interator points the last element.\n"
" :rtype: bool\n";
static PyObject * Iterator_isEnd(BPy_Iterator* self) {
return PyBool_from_bool( self->it->isEnd() );
}
/*----------------------Iterator instance definitions ----------------------------*/
static PyMethodDef BPy_Iterator_methods[] = { static PyMethodDef BPy_Iterator_methods[] = {
{"getExactTypeName", ( PyCFunction ) Iterator_getExactTypeName, METH_NOARGS, Iterator_getExactTypeName___doc__}, {"increment", (PyCFunction) Iterator_increment, METH_NOARGS, Iterator_increment_doc},
{"increment", ( PyCFunction ) Iterator_increment, METH_NOARGS, Iterator_increment___doc__}, {"decrement", (PyCFunction) Iterator_decrement, METH_NOARGS, Iterator_decrement_doc},
{"decrement", ( PyCFunction ) Iterator_decrement, METH_NOARGS, Iterator_decrement___doc__},
{"isBegin", ( PyCFunction ) Iterator_isBegin, METH_NOARGS, Iterator_isBegin___doc__},
{"isEnd", ( PyCFunction ) Iterator_isEnd, METH_NOARGS, Iterator_isEnd___doc__},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
/*----------------------Iterator get/setters ----------------------------*/
PyDoc_STRVAR(Iterator_exact_type_name_doc,
"The string of the name of this iterator.\n"
"\n"
":type: str");
static PyObject *Iterator_exact_type_name_get(BPy_Iterator *self, void *UNUSED(closure))
{
return PyUnicode_FromString(self->it->getExactTypeName().c_str());
}
PyDoc_STRVAR(Iterator_is_begin_doc,
"True if the interator points the first element.\n"
"\n"
":type: bool");
static PyObject *Iterator_is_begin_get(BPy_Iterator *self, void *UNUSED(closure))
{
return PyBool_from_bool(self->it->isBegin());
}
PyDoc_STRVAR(Iterator_is_end_doc,
"True if the interator points the last element.\n"
"\n"
":type: bool");
static PyObject *Iterator_is_end_get(BPy_Iterator *self, void *UNUSED(closure))
{
return PyBool_from_bool(self->it->isEnd());
}
static PyGetSetDef BPy_Iterator_getseters[] = {
{(char *)"exact_type_name", (getter)Iterator_exact_type_name_get, (setter)NULL, (char *)Iterator_exact_type_name_doc, NULL},
{(char *)"is_begin", (getter)Iterator_is_begin_get, (setter)NULL, (char *)Iterator_is_begin_doc, NULL},
{(char *)"is_end", (getter)Iterator_is_end_get, (setter)NULL, (char *)Iterator_is_end_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
/*-----------------------BPy_Iterator type definition ------------------------------*/ /*-----------------------BPy_Iterator type definition ------------------------------*/
PyTypeObject Iterator_Type = { PyTypeObject Iterator_Type = {
@@ -184,12 +181,12 @@ PyTypeObject Iterator_Type = {
"Iterator", /* tp_name */ "Iterator", /* tp_name */
sizeof(BPy_Iterator), /* tp_basicsize */ sizeof(BPy_Iterator), /* tp_basicsize */
0, /* tp_itemsize */ 0, /* tp_itemsize */
(destructor)Iterator___dealloc__, /* tp_dealloc */ (destructor)Iterator_dealloc, /* tp_dealloc */
0, /* tp_print */ 0, /* tp_print */
0, /* tp_getattr */ 0, /* tp_getattr */
0, /* tp_setattr */ 0, /* tp_setattr */
0, /* tp_reserved */ 0, /* tp_reserved */
(reprfunc)Iterator___repr__, /* tp_repr */ (reprfunc)Iterator_repr, /* tp_repr */
0, /* tp_as_number */ 0, /* tp_as_number */
0, /* tp_as_sequence */ 0, /* tp_as_sequence */
0, /* tp_as_mapping */ 0, /* tp_as_mapping */
@@ -200,7 +197,7 @@ PyTypeObject Iterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
Iterator___doc__, /* tp_doc */ Iterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -209,7 +206,7 @@ PyTypeObject Iterator_Type = {
0, /* tp_iternext */ 0, /* tp_iternext */
BPy_Iterator_methods, /* tp_methods */ BPy_Iterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_Iterator_getseters, /* tp_getset */
0, /* tp_base */ 0, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
@@ -225,5 +222,3 @@ PyTypeObject Iterator_Type = {
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@@ -11,7 +11,7 @@ extern "C" {
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char AdjacencyIterator___doc__[] = PyDoc_STRVAR(AdjacencyIterator_doc,
"Class hierarchy: :class:`Iterator` > :class:`AdjacencyIterator`\n" "Class hierarchy: :class:`Iterator` > :class:`AdjacencyIterator`\n"
"\n" "\n"
"Class for representing adjacency iterators used in the chaining\n" "Class for representing adjacency iterators used in the chaining\n"
@@ -37,26 +37,26 @@ static char AdjacencyIterator___doc__[] =
" Copy constructor.\n" " Copy constructor.\n"
"\n" "\n"
" :arg it: An AdjacencyIterator object.\n" " :arg it: An AdjacencyIterator object.\n"
" :type it: :class:`AdjacencyIterator`\n"; " :type it: :class:`AdjacencyIterator`");
static int AdjacencyIterator___init__(BPy_AdjacencyIterator *self, PyObject *args ) static int AdjacencyIterator_init(BPy_AdjacencyIterator *self, PyObject *args)
{ {
PyObject *obj1 = 0, *obj2 = 0 , *obj3 = 0; PyObject *obj1 = 0, *obj2 = 0 , *obj3 = 0;
if (! PyArg_ParseTuple(args, "|OOO", &obj1, &obj2, &obj3) ) if (!PyArg_ParseTuple(args, "|OOO", &obj1, &obj2, &obj3))
return -1; return -1;
if( !obj1 && !obj2 && !obj3 ){ if (!obj1) {
self->a_it = new AdjacencyIterator(); self->a_it = new AdjacencyIterator();
} else if( BPy_AdjacencyIterator_Check(obj1) ) { } else if (BPy_AdjacencyIterator_Check(obj1) && !obj2) {
self->a_it = new AdjacencyIterator(*( ((BPy_AdjacencyIterator *) obj1)->a_it )); self->a_it = new AdjacencyIterator(*(((BPy_AdjacencyIterator *)obj1)->a_it));
} else if( BPy_ViewVertex_Check(obj1) ) { } else if (BPy_ViewVertex_Check(obj1) && (!obj2 || PyBool_Check(obj2)) && (!obj3 || PyBool_Check(obj3))) {
bool restrictToSelection = ( obj2 ) ? bool_from_PyBool(obj2) : true; bool restrictToSelection = (obj2) ? bool_from_PyBool(obj2) : true;
bool restrictToUnvisited = ( obj3 ) ? bool_from_PyBool(obj3) : true; bool restrictToUnvisited = (obj3) ? bool_from_PyBool(obj3) : true;
self->a_it = new AdjacencyIterator( ((BPy_ViewVertex *) obj1)->vv, restrictToSelection, restrictToUnvisited ); self->a_it = new AdjacencyIterator(((BPy_ViewVertex *)obj1)->vv, restrictToSelection, restrictToUnvisited);
} else { } else {
PyErr_SetString(PyExc_TypeError, "invalid argument(s)"); PyErr_SetString(PyExc_TypeError, "invalid argument(s)");
@@ -66,55 +66,54 @@ static int AdjacencyIterator___init__(BPy_AdjacencyIterator *self, PyObject *arg
self->py_it.it = self->a_it; self->py_it.it = self->a_it;
return 0; return 0;
} }
static PyObject * AdjacencyIterator_iternext(BPy_AdjacencyIterator *self) { static PyObject * AdjacencyIterator_iternext(BPy_AdjacencyIterator *self)
{
if (self->a_it->isEnd()) { if (self->a_it->isEnd()) {
PyErr_SetNone(PyExc_StopIteration); PyErr_SetNone(PyExc_StopIteration);
return NULL; return NULL;
} }
ViewEdge *ve = self->a_it->operator*(); ViewEdge *ve = self->a_it->operator*();
self->a_it->increment(); self->a_it->increment();
return BPy_ViewEdge_from_ViewEdge( *ve ); return BPy_ViewEdge_from_ViewEdge(*ve);
} }
static char AdjacencyIterator_isIncoming___doc__[] = static PyMethodDef BPy_AdjacencyIterator_methods[] = {
".. method:: isIncoming()\n" {NULL, NULL, 0, NULL}
"\n" };
" Returns true if the current ViewEdge is coming towards the\n"
" iteration vertex. False otherwise.\n"
"\n"
" :return: True if the current ViewEdge is coming towards the\n"
" iteration vertex\n"
" :rtype: bool\n";
static PyObject * AdjacencyIterator_isIncoming(BPy_AdjacencyIterator *self) { /*----------------------AdjacencyIterator get/setters ----------------------------*/
return PyBool_from_bool(self->a_it->isIncoming());
}
static char AdjacencyIterator_getObject___doc__[] = PyDoc_STRVAR(AdjacencyIterator_object_doc,
".. method:: getObject()\n" "The ViewEdge object currently pointed by this iterator.\n"
"\n" "\n"
" Returns the pointed ViewEdge.\n" ":type: :class:`ViewEdge`");
"\n"
" :return: The pointed ViewEdge.\n"
" :rtype: :class:`ViewEdge`\n";
static PyObject * AdjacencyIterator_getObject(BPy_AdjacencyIterator *self) {
static PyObject *AdjacencyIterator_object_get(BPy_AdjacencyIterator *self, void *UNUSED(closure))
{
ViewEdge *ve = self->a_it->operator*(); ViewEdge *ve = self->a_it->operator*();
if( ve ) if (ve)
return BPy_ViewEdge_from_ViewEdge( *ve ); return BPy_ViewEdge_from_ViewEdge(*ve);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
/*----------------------AdjacencyIterator instance definitions ----------------------------*/ PyDoc_STRVAR(AdjacencyIterator_is_incoming_doc,
static PyMethodDef BPy_AdjacencyIterator_methods[] = { "True if the current ViewEdge is coming towards the iteration vertex, and\n"
{"isIncoming", ( PyCFunction ) AdjacencyIterator_isIncoming, METH_NOARGS, AdjacencyIterator_isIncoming___doc__}, "False otherwise.\n"
{"getObject", ( PyCFunction ) AdjacencyIterator_getObject, METH_NOARGS, AdjacencyIterator_getObject___doc__}, "\n"
{NULL, NULL, 0, NULL} ":type: bool");
static PyObject *AdjacencyIterator_is_incoming_get(BPy_AdjacencyIterator *self, void *UNUSED(closure))
{
return PyBool_from_bool(self->a_it->isIncoming());
}
static PyGetSetDef BPy_AdjacencyIterator_getseters[] = {
{(char *)"is_incoming", (getter)AdjacencyIterator_is_incoming_get, (setter)NULL, (char *)AdjacencyIterator_is_incoming_doc, NULL},
{(char *)"object", (getter)AdjacencyIterator_object_get, (setter)NULL, (char *)AdjacencyIterator_object_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
}; };
/*-----------------------BPy_AdjacencyIterator type definition ------------------------------*/ /*-----------------------BPy_AdjacencyIterator type definition ------------------------------*/
@@ -140,7 +139,7 @@ PyTypeObject AdjacencyIterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
AdjacencyIterator___doc__, /* tp_doc */ AdjacencyIterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -149,13 +148,13 @@ PyTypeObject AdjacencyIterator_Type = {
(iternextfunc)AdjacencyIterator_iternext, /* tp_iternext */ (iternextfunc)AdjacencyIterator_iternext, /* tp_iternext */
BPy_AdjacencyIterator_methods, /* tp_methods */ BPy_AdjacencyIterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_AdjacencyIterator_getseters, /* tp_getset */
&Iterator_Type, /* tp_base */ &Iterator_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)AdjacencyIterator___init__, /* tp_init */ (initproc)AdjacencyIterator_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
0, /* tp_new */ 0, /* tp_new */
}; };

View File

@@ -13,7 +13,7 @@ extern "C" {
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char ChainingIterator___doc__[] = PyDoc_STRVAR(ChainingIterator_doc,
"Class hierarchy: :class:`Iterator` > :class:`ViewEdgeIterator` > :class:`ChainingIterator`\n" "Class hierarchy: :class:`Iterator` > :class:`ViewEdgeIterator` > :class:`ChainingIterator`\n"
"\n" "\n"
"Base class for chaining iterators. This class is designed to be\n" "Base class for chaining iterators. This class is designed to be\n"
@@ -47,52 +47,53 @@ static char ChainingIterator___doc__[] =
" Copy constructor.\n" " Copy constructor.\n"
"\n" "\n"
" :arg brother: \n" " :arg brother: \n"
" :type brother: ChainingIterator\n"; " :type brother: ChainingIterator");
static int ChainingIterator___init__(BPy_ChainingIterator *self, PyObject *args ) static int ChainingIterator___init__(BPy_ChainingIterator *self, PyObject *args)
{ {
PyObject *obj1 = 0, *obj2 = 0, *obj3 = 0, *obj4 = 0; PyObject *obj1 = 0, *obj2 = 0, *obj3 = 0, *obj4 = 0;
if (!( PyArg_ParseTuple(args, "|OOOO", &obj1, &obj2, &obj3, &obj4) )) if (!PyArg_ParseTuple(args, "|OOOO", &obj1, &obj2, &obj3, &obj4))
return -1; return -1;
if( obj1 && BPy_ChainingIterator_Check(obj1) ) { if (obj1 && BPy_ChainingIterator_Check(obj1)) {
self->c_it = new ChainingIterator(*( ((BPy_ChainingIterator *) obj1)->c_it )); self->c_it = new ChainingIterator(*(((BPy_ChainingIterator *)obj1)->c_it));
} else { } else {
bool restrictToSelection = ( obj1 ) ? bool_from_PyBool(obj1) : true; bool restrictToSelection = (obj1) ? bool_from_PyBool(obj1) : true;
bool restrictToUnvisited = ( obj2 ) ? bool_from_PyBool(obj2) : true; bool restrictToUnvisited = (obj2) ? bool_from_PyBool(obj2) : true;
ViewEdge *begin; ViewEdge *begin;
if ( !obj3 || obj3 == Py_None ) if (!obj3 || obj3 == Py_None)
begin = NULL; begin = NULL;
else if ( BPy_ViewEdge_Check(obj3) ) else if (BPy_ViewEdge_Check(obj3))
begin = ((BPy_ViewEdge *) obj3)->ve; begin = ((BPy_ViewEdge *)obj3)->ve;
else { else {
PyErr_SetString(PyExc_TypeError, "3rd argument must be either a ViewEdge object or None"); PyErr_SetString(PyExc_TypeError, "3rd argument must be either a ViewEdge object or None");
return -1; return -1;
} }
bool orientation = ( obj4 ) ? bool_from_PyBool(obj4) : true; bool orientation = (obj4) ? bool_from_PyBool(obj4) : true;
self->c_it = new ChainingIterator( restrictToSelection, restrictToUnvisited, begin, orientation); self->c_it = new ChainingIterator(restrictToSelection, restrictToUnvisited, begin, orientation);
} }
self->py_ve_it.ve_it = self->c_it; self->py_ve_it.ve_it = self->c_it;
self->py_ve_it.py_it.it = self->c_it; self->py_ve_it.py_it.it = self->c_it;
self->c_it->py_c_it = (PyObject *) self; self->c_it->py_c_it = (PyObject *)self;
return 0; return 0;
} }
static char ChainingIterator_init___doc__[] = PyDoc_STRVAR(ChainingIterator_init_doc,
".. method:: init()\n" ".. method:: init()\n"
"\n" "\n"
" Initializes the iterator context. This method is called each\n" " Initializes the iterator context. This method is called each\n"
" time a new chain is started. It can be used to reset some\n" " time a new chain is started. It can be used to reset some\n"
" history information that you might want to keep.\n"; " history information that you might want to keep.");
static PyObject *ChainingIterator_init( BPy_ChainingIterator *self ) { static PyObject *ChainingIterator_init(BPy_ChainingIterator *self)
if( typeid(*(self->c_it)) == typeid(ChainingIterator) ) { {
if (typeid(*(self->c_it)) == typeid(ChainingIterator)) {
PyErr_SetString(PyExc_TypeError, "init() method not properly overridden"); PyErr_SetString(PyExc_TypeError, "init() method not properly overridden");
return NULL; return NULL;
} }
@@ -101,7 +102,7 @@ static PyObject *ChainingIterator_init( BPy_ChainingIterator *self ) {
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static char ChainingIterator_traverse___doc__[] = PyDoc_STRVAR(ChainingIterator_traverse_doc,
".. method:: traverse(it)\n" ".. method:: traverse(it)\n"
"\n" "\n"
" This method iterates over the potential next ViewEdges and returns\n" " This method iterates over the potential next ViewEdges and returns\n"
@@ -113,79 +114,79 @@ static char ChainingIterator_traverse___doc__[] =
" restriction rules by only iterating over the valid ViewEdges.\n" " restriction rules by only iterating over the valid ViewEdges.\n"
" :type it: :class:`AdjacencyIterator`\n" " :type it: :class:`AdjacencyIterator`\n"
" :return: Returns the next ViewEdge to follow, or None if chaining ends.\n" " :return: Returns the next ViewEdge to follow, or None if chaining ends.\n"
" :rtype: :class:`ViewEdge` or None\n"; " :rtype: :class:`ViewEdge` or None");
static PyObject *ChainingIterator_traverse( BPy_ChainingIterator *self, PyObject *args ) { static PyObject *ChainingIterator_traverse(BPy_ChainingIterator *self, PyObject *args)
{
PyObject *py_a_it; PyObject *py_a_it;
if(!( PyArg_ParseTuple(args, "O!", &AdjacencyIterator_Type, &py_a_it) )) if(!(PyArg_ParseTuple(args, "O!", &AdjacencyIterator_Type, &py_a_it)))
return NULL; return NULL;
if( typeid(*(self->c_it)) == typeid(ChainingIterator) ) { if (typeid(*(self->c_it)) == typeid(ChainingIterator)) {
PyErr_SetString(PyExc_TypeError, "traverse() method not properly overridden"); PyErr_SetString(PyExc_TypeError, "traverse() method not properly overridden");
return NULL; return NULL;
} }
if( ((BPy_AdjacencyIterator *) py_a_it)->a_it ) if (((BPy_AdjacencyIterator *)py_a_it)->a_it)
self->c_it->traverse(*( ((BPy_AdjacencyIterator *) py_a_it)->a_it )); self->c_it->traverse(*(((BPy_AdjacencyIterator *)py_a_it)->a_it));
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static char ChainingIterator_getVertex___doc__[] =
".. method:: getVertex()\n"
"\n"
" Returns the vertex which is the next crossing.\n"
"\n"
" :return: The vertex which is the next crossing.\n"
" :rtype: :class:`ViewVertex`\n";
static PyObject *ChainingIterator_getVertex( BPy_ChainingIterator *self ) {
ViewVertex *v = self->c_it->getVertex();
if( v )
return Any_BPy_ViewVertex_from_ViewVertex( *v );
Py_RETURN_NONE;
}
static char ChainingIterator_isIncrementing___doc__[] =
".. method:: isIncrementing()\n"
"\n"
" Returns true if the current iteration is an incrementation.\n"
"\n"
" :return: True if the current iteration is an incrementation.\n"
" :rtype: bool\n";
static PyObject *ChainingIterator_isIncrementing( BPy_ChainingIterator *self ) {
return PyBool_from_bool( self->c_it->isIncrementing() );
}
static char ChainingIterator_getObject___doc__[] =
".. method:: getObject()\n"
"\n"
" Returns the pointed ViewEdge.\n"
"\n"
" :return: The pointed ViewEdge.\n"
" :rtype: :class:`ViewEdge`\n";
static PyObject * ChainingIterator_getObject( BPy_ChainingIterator *self) {
ViewEdge *ve = self->c_it->operator*();
if( ve )
return BPy_ViewEdge_from_ViewEdge( *ve );
Py_RETURN_NONE;
}
/*----------------------ChainingIterator instance definitions ----------------------------*/
static PyMethodDef BPy_ChainingIterator_methods[] = { static PyMethodDef BPy_ChainingIterator_methods[] = {
{"init", ( PyCFunction ) ChainingIterator_init, METH_NOARGS, ChainingIterator_init___doc__}, {"init", (PyCFunction) ChainingIterator_init, METH_NOARGS, ChainingIterator_init_doc},
{"traverse", ( PyCFunction ) ChainingIterator_traverse, METH_VARARGS, ChainingIterator_traverse___doc__}, {"traverse", (PyCFunction) ChainingIterator_traverse, METH_VARARGS, ChainingIterator_traverse_doc},
{"getVertex", ( PyCFunction ) ChainingIterator_getVertex, METH_NOARGS, ChainingIterator_getVertex___doc__},
{"isIncrementing", ( PyCFunction ) ChainingIterator_isIncrementing, METH_NOARGS, ChainingIterator_isIncrementing___doc__},
{"getObject", ( PyCFunction ) ChainingIterator_getObject, METH_NOARGS, ChainingIterator_getObject___doc__},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
/*----------------------ChainingIterator get/setters ----------------------------*/
PyDoc_STRVAR(ChainingIterator_object_doc,
"The ViewEdge object currently pointed by this iterator.\n"
"\n"
":type: :class:`ViewEdge`");
static PyObject *ChainingIterator_object_get(BPy_ChainingIterator *self, void *UNUSED(closure))
{
ViewEdge *ve = self->c_it->operator*();
if (ve)
return BPy_ViewEdge_from_ViewEdge(*ve);
Py_RETURN_NONE;
}
PyDoc_STRVAR(ChainingIterator_next_vertex_doc,
"The ViewVertex that is the next crossing.\n"
"\n"
":type: :class:`ViewVertex`");
static PyObject *ChainingIterator_next_vertex_get(BPy_ChainingIterator *self, void *UNUSED(closure))
{
ViewVertex *v = self->c_it->getVertex();
if (v)
return Any_BPy_ViewVertex_from_ViewVertex(*v);
Py_RETURN_NONE;
}
PyDoc_STRVAR(ChainingIterator_is_incrementing_doc,
"True if the current iteration is an incrementation.\n"
"\n"
":type: bool");
static PyObject *ChainingIterator_is_incrementing_get(BPy_ChainingIterator *self, void *UNUSED(closure))
{
return PyBool_from_bool(self->c_it->isIncrementing());
}
static PyGetSetDef BPy_ChainingIterator_getseters[] = {
{(char *)"object", (getter)ChainingIterator_object_get, (setter)NULL, (char *)ChainingIterator_object_doc, NULL},
{(char *)"next_vertex", (getter)ChainingIterator_next_vertex_get, (setter)NULL, (char *)ChainingIterator_next_vertex_doc, NULL},
{(char *)"is_incrementing", (getter)ChainingIterator_is_incrementing_get, (setter)NULL, (char *)ChainingIterator_is_incrementing_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
/*-----------------------BPy_ChainingIterator type definition ------------------------------*/ /*-----------------------BPy_ChainingIterator type definition ------------------------------*/
PyTypeObject ChainingIterator_Type = { PyTypeObject ChainingIterator_Type = {
@@ -209,7 +210,7 @@ PyTypeObject ChainingIterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
ChainingIterator___doc__, /* tp_doc */ ChainingIterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -218,7 +219,7 @@ PyTypeObject ChainingIterator_Type = {
0, /* tp_iternext */ 0, /* tp_iternext */
BPy_ChainingIterator_methods, /* tp_methods */ BPy_ChainingIterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_ChainingIterator_getseters, /* tp_getset */
&ViewEdgeIterator_Type, /* tp_base */ &ViewEdgeIterator_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */

View File

@@ -11,7 +11,7 @@ extern "C" {
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char CurvePointIterator___doc__[] = PyDoc_STRVAR(CurvePointIterator_doc,
"Class hierarchy: :class:`Iterator` > :class:`CurvePointIterator`\n" "Class hierarchy: :class:`Iterator` > :class:`CurvePointIterator`\n"
"\n" "\n"
"Class representing an iterator on a curve. Allows an iterating\n" "Class representing an iterator on a curve. Allows an iterating\n"
@@ -32,23 +32,23 @@ static char CurvePointIterator___doc__[] =
" Copy constructor.\n" " Copy constructor.\n"
"\n" "\n"
" :arg brother: A CurvePointIterator object.\n" " :arg brother: A CurvePointIterator object.\n"
" :type brother: :class:`CurvePointIterator`\n"; " :type brother: :class:`CurvePointIterator`");
static int CurvePointIterator___init__(BPy_CurvePointIterator *self, PyObject *args ) static int CurvePointIterator_init(BPy_CurvePointIterator *self, PyObject *args)
{ {
PyObject *obj = 0; PyObject *obj = 0;
if (! PyArg_ParseTuple(args, "|O", &obj) ) if (!PyArg_ParseTuple(args, "|O", &obj))
return -1; return -1;
if( !obj ){ if (!obj) {
self->cp_it = new CurveInternal::CurvePointIterator(); self->cp_it = new CurveInternal::CurvePointIterator();
} else if( BPy_CurvePointIterator_Check(obj) ) { } else if (BPy_CurvePointIterator_Check(obj)) {
self->cp_it = new CurveInternal::CurvePointIterator(*( ((BPy_CurvePointIterator *) obj)->cp_it )); self->cp_it = new CurveInternal::CurvePointIterator(*(((BPy_CurvePointIterator *)obj)->cp_it));
} else if( PyFloat_Check(obj) ) { } else if (PyFloat_Check(obj)) {
self->cp_it = new CurveInternal::CurvePointIterator( PyFloat_AsDouble(obj) ); self->cp_it = new CurveInternal::CurvePointIterator(PyFloat_AsDouble(obj));
} else { } else {
PyErr_SetString(PyExc_TypeError, "invalid argument"); PyErr_SetString(PyExc_TypeError, "invalid argument");
@@ -60,32 +60,8 @@ static int CurvePointIterator___init__(BPy_CurvePointIterator *self, PyObject *a
return 0; return 0;
} }
static char CurvePointIterator_t___doc__[] = PyDoc_STRVAR(CurvePointIterator_cast_to_interface0diterator_doc,
".. method:: t()\n" ".. method:: cast_to_interface0diterator()\n"
"\n"
" Returns the curvilinear abscissa.\n"
"\n"
" :return: The curvilinear abscissa.\n"
" :rtype: float\n";
static PyObject * CurvePointIterator_t( BPy_CurvePointIterator *self ) {
return PyFloat_FromDouble( self->cp_it->t() );
}
static char CurvePointIterator_u___doc__[] =
".. method:: u()\n"
"\n"
" Returns the point parameter in the curve (0<=u<=1).\n"
"\n"
" :return: The point parameter.\n"
" :rtype: float\n";
static PyObject * CurvePointIterator_u( BPy_CurvePointIterator *self ) {
return PyFloat_FromDouble( self->cp_it->u() );
}
static char CurvePointIterator_castToInterface0DIterator___doc__[] =
".. method:: castToInterface0DIterator()\n"
"\n" "\n"
" Returns an Interface0DIterator converted from this\n" " Returns an Interface0DIterator converted from this\n"
" CurvePointIterator. Useful for any call to a function of the\n" " CurvePointIterator. Useful for any call to a function of the\n"
@@ -93,34 +69,58 @@ static char CurvePointIterator_castToInterface0DIterator___doc__[] =
"\n" "\n"
" :return: An Interface0DIterator object converted from the\n" " :return: An Interface0DIterator object converted from the\n"
" iterator.\n" " iterator.\n"
" :rtype: :class:`Interface0DIterator`\n"; " :rtype: :class:`Interface0DIterator`");
static PyObject * CurvePointIterator_castToInterface0DIterator( BPy_CurvePointIterator *self ) { static PyObject * CurvePointIterator_cast_to_interface0diterator(BPy_CurvePointIterator *self)
Interface0DIterator it( self->cp_it->castToInterface0DIterator() ); {
return BPy_Interface0DIterator_from_Interface0DIterator( it, 0 ); Interface0DIterator it(self->cp_it->castToInterface0DIterator());
return BPy_Interface0DIterator_from_Interface0DIterator(it, 0);
} }
static char CurvePointIterator_getObject___doc__[] =
".. method:: getObject()\n"
"\n"
" Returns a CurvePoint pointed by the iterator.\n"
"\n"
" :return: \n"
" :rtype: :class:`CurvePoint`\n";
static PyObject * CurvePointIterator_getObject(BPy_CurvePointIterator *self) {
return BPy_CurvePoint_from_CurvePoint( self->cp_it->operator*() );
}
/*----------------------CurvePointIterator instance definitions ----------------------------*/
static PyMethodDef BPy_CurvePointIterator_methods[] = { static PyMethodDef BPy_CurvePointIterator_methods[] = {
{"t", ( PyCFunction ) CurvePointIterator_t, METH_NOARGS, CurvePointIterator_t___doc__}, {"cast_to_interface0diterator", (PyCFunction) CurvePointIterator_cast_to_interface0diterator, METH_NOARGS, CurvePointIterator_cast_to_interface0diterator_doc},
{"u", ( PyCFunction ) CurvePointIterator_u, METH_NOARGS, CurvePointIterator_u___doc__},
{"castToInterface0DIterator", ( PyCFunction ) CurvePointIterator_castToInterface0DIterator, METH_NOARGS, CurvePointIterator_castToInterface0DIterator___doc__},
{"getObject", ( PyCFunction ) CurvePointIterator_getObject, METH_NOARGS, CurvePointIterator_getObject___doc__},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
/*----------------------CurvePointIterator get/setters ----------------------------*/
PyDoc_STRVAR(CurvePointIterator_object_doc,
"The CurvePoint object currently pointed by this iterator.\n"
"\n"
":type: :class:`CurvePoint`");
static PyObject *CurvePointIterator_object_get(BPy_CurvePointIterator *self, void *UNUSED(closure))
{
return BPy_CurvePoint_from_CurvePoint(self->cp_it->operator*());
}
PyDoc_STRVAR(CurvePointIterator_t_doc,
"The curvilinear abscissa of the current point.\n"
"\n"
":type: float");
static PyObject *CurvePointIterator_t_get(BPy_CurvePointIterator *self, void *UNUSED(closure))
{
return PyFloat_FromDouble(self->cp_it->t());
}
PyDoc_STRVAR(CurvePointIterator_u_doc,
"The point parameter at the current point in the stroke (0 <= u <= 1).\n"
"\n"
":type: float");
static PyObject *CurvePointIterator_u_get(BPy_CurvePointIterator *self, void *UNUSED(closure))
{
return PyFloat_FromDouble(self->cp_it->u());
}
static PyGetSetDef BPy_CurvePointIterator_getseters[] = {
{(char *)"object", (getter)CurvePointIterator_object_get, (setter)NULL, (char *)CurvePointIterator_object_doc, NULL},
{(char *)"t", (getter)CurvePointIterator_t_get, (setter)NULL, (char *)CurvePointIterator_t_doc, NULL},
{(char *)"u", (getter)CurvePointIterator_u_get, (setter)NULL, (char *)CurvePointIterator_u_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
/*-----------------------BPy_CurvePointIterator type definition ------------------------------*/ /*-----------------------BPy_CurvePointIterator type definition ------------------------------*/
PyTypeObject CurvePointIterator_Type = { PyTypeObject CurvePointIterator_Type = {
@@ -144,7 +144,7 @@ PyTypeObject CurvePointIterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
CurvePointIterator___doc__, /* tp_doc */ CurvePointIterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -153,13 +153,13 @@ PyTypeObject CurvePointIterator_Type = {
0, /* tp_iternext */ 0, /* tp_iternext */
BPy_CurvePointIterator_methods, /* tp_methods */ BPy_CurvePointIterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_CurvePointIterator_getseters, /* tp_getset */
&Iterator_Type, /* tp_base */ &Iterator_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)CurvePointIterator___init__, /* tp_init */ (initproc)CurvePointIterator_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
0, /* tp_new */ 0, /* tp_new */
}; };

View File

@@ -10,7 +10,7 @@ extern "C" {
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char Interface0DIterator___doc__[] = PyDoc_STRVAR(Interface0DIterator_doc,
"Class hierarchy: :class:`Iterator` > :class:`Interface0DIterator`\n" "Class hierarchy: :class:`Iterator` > :class:`Interface0DIterator`\n"
"\n" "\n"
"Class defining an iterator over Interface0D elements. An instance of\n" "Class defining an iterator over Interface0D elements. An instance of\n"
@@ -21,24 +21,26 @@ static char Interface0DIterator___doc__[] =
" Copy constructor.\n" " Copy constructor.\n"
"\n" "\n"
" :arg it: An Interface0DIterator object.\n" " :arg it: An Interface0DIterator object.\n"
" :type it: :class:`Interface0DIterator`\n"; " :type it: :class:`Interface0DIterator`");
static int Interface0DIterator___init__(BPy_Interface0DIterator *self, PyObject *args ) static int Interface0DIterator_init(BPy_Interface0DIterator *self, PyObject *args)
{ {
PyObject *obj = 0; PyObject *obj = 0;
if (!( PyArg_ParseTuple(args, "O!", &Interface0DIterator_Type, &obj) )) if (!PyArg_ParseTuple(args, "O!", &Interface0DIterator_Type, &obj))
return -1; return -1;
self->if0D_it = new Interface0DIterator(*( ((BPy_Interface0DIterator *) obj)->if0D_it )); self->if0D_it = new Interface0DIterator(*(((BPy_Interface0DIterator *)obj)->if0D_it));
self->py_it.it = self->if0D_it; self->py_it.it = self->if0D_it;
self->reversed = 0; self->reversed = 0;
return 0; return 0;
} }
static PyObject * Interface0DIterator_iternext( BPy_Interface0DIterator *self ) { static PyObject * Interface0DIterator_iternext(BPy_Interface0DIterator *self)
{
Interface0D *if0D; Interface0D *if0D;
if (self->reversed) { if (self->reversed) {
if (self->if0D_it->isBegin()) { if (self->if0D_it->isBegin()) {
PyErr_SetNone(PyExc_StopIteration); PyErr_SetNone(PyExc_StopIteration);
@@ -54,53 +56,52 @@ static PyObject * Interface0DIterator_iternext( BPy_Interface0DIterator *self )
if0D = self->if0D_it->operator->(); if0D = self->if0D_it->operator->();
self->if0D_it->increment(); self->if0D_it->increment();
} }
return Any_BPy_Interface0D_from_Interface0D( *if0D ); return Any_BPy_Interface0D_from_Interface0D(*if0D);
} }
static char Interface0DIterator_t___doc__[] =
".. method:: t()\n"
"\n"
" Returns the curvilinear abscissa.\n"
"\n"
" :return: The curvilinear abscissa.\n"
" :rtype: float\n";
static PyObject * Interface0DIterator_t( BPy_Interface0DIterator *self ) {
return PyFloat_FromDouble( self->if0D_it->t() );
}
static char Interface0DIterator_u___doc__[] =
".. method:: u()\n"
"\n"
" Returns the point parameter in the curve 0<=u<=1.\n"
"\n"
" :return: The point parameter.\n"
" :rtype: float\n";
static PyObject * Interface0DIterator_u( BPy_Interface0DIterator *self ) {
return PyFloat_FromDouble( self->if0D_it->u() );
}
static char Interface0DIterator_getObject___doc__[] =
".. method:: getObject()\n"
"\n"
" Returns the pointed Interface0D.\n"
"\n"
" :return: The pointed Interface0D.\n"
" :rtype: :class:`Interface0D`\n";
static PyObject * Interface0DIterator_getObject(BPy_Interface0DIterator *self) {
return Any_BPy_Interface0D_from_Interface0D( self->if0D_it->operator*() );
}
/*----------------------Interface0DIterator instance definitions ----------------------------*/
static PyMethodDef BPy_Interface0DIterator_methods[] = { static PyMethodDef BPy_Interface0DIterator_methods[] = {
{"t", ( PyCFunction ) Interface0DIterator_t, METH_NOARGS, Interface0DIterator_t___doc__},
{"u", ( PyCFunction ) Interface0DIterator_u, METH_NOARGS, Interface0DIterator_u___doc__},
{"getObject", ( PyCFunction ) Interface0DIterator_getObject, METH_NOARGS, Interface0DIterator_getObject___doc__},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
/*----------------------Interface0DIterator get/setters ----------------------------*/
PyDoc_STRVAR(Interface0DIterator_object_doc,
"The Interface0D object currently pointed by this iterator.\n"
"\n"
":type: :class:`Interface0D`");
static PyObject *Interface0DIterator_object_get(BPy_Interface0DIterator *self, void *UNUSED(closure))
{
return Any_BPy_Interface0D_from_Interface0D(self->if0D_it->operator*());
}
PyDoc_STRVAR(Interface0DIterator_t_doc,
"The curvilinear abscissa of the current point.\n"
"\n"
":type: float");
static PyObject *Interface0DIterator_t_get(BPy_Interface0DIterator *self, void *UNUSED(closure))
{
return PyFloat_FromDouble(self->if0D_it->t());
}
PyDoc_STRVAR(Interface0DIterator_u_doc,
"The point parameter at the current point in the 1D element (0 <= u <= 1).\n"
"\n"
":type: float");
static PyObject *Interface0DIterator_u_get(BPy_Interface0DIterator *self, void *UNUSED(closure))
{
return PyFloat_FromDouble(self->if0D_it->u());
}
static PyGetSetDef BPy_Interface0DIterator_getseters[] = {
{(char *)"object", (getter)Interface0DIterator_object_get, (setter)NULL, (char *)Interface0DIterator_object_doc, NULL},
{(char *)"t", (getter)Interface0DIterator_t_get, (setter)NULL, (char *)Interface0DIterator_t_doc, NULL},
{(char *)"u", (getter)Interface0DIterator_u_get, (setter)NULL, (char *)Interface0DIterator_u_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
/*-----------------------BPy_Interface0DIterator type definition ------------------------------*/ /*-----------------------BPy_Interface0DIterator type definition ------------------------------*/
PyTypeObject Interface0DIterator_Type = { PyTypeObject Interface0DIterator_Type = {
@@ -124,7 +125,7 @@ PyTypeObject Interface0DIterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
Interface0DIterator___doc__, /* tp_doc */ Interface0DIterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -133,13 +134,13 @@ PyTypeObject Interface0DIterator_Type = {
(iternextfunc)Interface0DIterator_iternext, /* tp_iternext */ (iternextfunc)Interface0DIterator_iternext, /* tp_iternext */
BPy_Interface0DIterator_methods, /* tp_methods */ BPy_Interface0DIterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_Interface0DIterator_getseters, /* tp_getset */
&Iterator_Type, /* tp_base */ &Iterator_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)Interface0DIterator___init__, /* tp_init */ (initproc)Interface0DIterator_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
0, /* tp_new */ 0, /* tp_new */
}; };

View File

@@ -12,7 +12,7 @@ extern "C" {
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char SVertexIterator___doc__[] = PyDoc_STRVAR(SVertexIterator_doc,
"Class hierarchy: :class:`Iterator` > :class:`SVertexIterator`\n" "Class hierarchy: :class:`Iterator` > :class:`SVertexIterator`\n"
"\n" "\n"
"Class representing an iterator over :class:`SVertex` of a\n" "Class representing an iterator over :class:`SVertex` of a\n"
@@ -44,33 +44,33 @@ static char SVertexIterator___doc__[] =
" :arg next: The next FEdge going out from v.\n" " :arg next: The next FEdge going out from v.\n"
" :type next: :class:`FEdge`\n" " :type next: :class:`FEdge`\n"
" :arg t: The curvilinear abscissa at v.\n" " :arg t: The curvilinear abscissa at v.\n"
" :type t: float\n"; " :type t: float");
static int SVertexIterator___init__(BPy_SVertexIterator *self, PyObject *args ) static int SVertexIterator_init(BPy_SVertexIterator *self, PyObject *args)
{ {
PyObject *obj1 = 0, *obj2 = 0, *obj3 = 0, *obj4 = 0; PyObject *obj1 = 0, *obj2 = 0, *obj3 = 0, *obj4 = 0;
float f = 0; float f = 0;
if (! PyArg_ParseTuple(args, "|OOOOf", &obj1, &obj2, &obj3, &obj4, f) ) if (!PyArg_ParseTuple(args, "|OOOOf", &obj1, &obj2, &obj3, &obj4, f))
return -1; return -1;
if( !obj1 ){ if (!obj1) {
self->sv_it = new ViewEdgeInternal::SVertexIterator(); self->sv_it = new ViewEdgeInternal::SVertexIterator();
} else if( BPy_SVertexIterator_Check(obj1) ) { } else if (BPy_SVertexIterator_Check(obj1)) {
self->sv_it = new ViewEdgeInternal::SVertexIterator(*( ((BPy_SVertexIterator *) obj1)->sv_it )); self->sv_it = new ViewEdgeInternal::SVertexIterator(*(((BPy_SVertexIterator *)obj1)->sv_it));
} else if( obj1 && BPy_SVertex_Check(obj1) && } else if (obj1 && BPy_SVertex_Check(obj1) &&
obj2 && BPy_SVertex_Check(obj2) && obj2 && BPy_SVertex_Check(obj2) &&
obj3 && BPy_FEdge_Check(obj3) && obj3 && BPy_FEdge_Check(obj3) &&
obj4 && BPy_FEdge_Check(obj4) ) { obj4 && BPy_FEdge_Check(obj4)) {
self->sv_it = new ViewEdgeInternal::SVertexIterator( self->sv_it = new ViewEdgeInternal::SVertexIterator(
((BPy_SVertex *) obj1)->sv, ((BPy_SVertex *)obj1)->sv,
((BPy_SVertex *) obj2)->sv, ((BPy_SVertex *)obj2)->sv,
((BPy_FEdge *) obj3)->fe, ((BPy_FEdge *)obj3)->fe,
((BPy_FEdge *) obj4)->fe, ((BPy_FEdge *)obj4)->fe,
f ); f);
} else { } else {
PyErr_SetString(PyExc_TypeError, "invalid argument(s)"); PyErr_SetString(PyExc_TypeError, "invalid argument(s)");
@@ -82,53 +82,52 @@ static int SVertexIterator___init__(BPy_SVertexIterator *self, PyObject *args )
return 0; return 0;
} }
static char SVertexIterator_t___doc__[] = static PyMethodDef BPy_SVertexIterator_methods[] = {
".. method:: t()\n" {NULL, NULL, 0, NULL}
"\n" };
" Returns the curvilinear abscissa.\n"
"\n"
" :return: The curvilinear abscissa.\n"
" :rtype: float\n";
static PyObject * SVertexIterator_t( BPy_SVertexIterator *self ) { /*----------------------SVertexIterator get/setters ----------------------------*/
return PyFloat_FromDouble( self->sv_it->t() );
}
static char SVertexIterator_u___doc__[] = PyDoc_STRVAR(SVertexIterator_object_doc,
".. method:: u()\n" "The SVertex object currently pointed by this iterator.\n"
"\n" "\n"
" Returns the point parameter (0<=u<=1).\n" ":type: :class:`SVertex`");
"\n"
" :return: The point parameter.\n"
" :rtype: float\n";
static PyObject * SVertexIterator_u( BPy_SVertexIterator *self ) { static PyObject *SVertexIterator_object_get(BPy_SVertexIterator *self, void *UNUSED(closure))
return PyFloat_FromDouble( self->sv_it->u() ); {
}
static char SVertexIterator_getObject___doc__[] =
".. method:: getObject()\n"
"\n"
" Returns the pointed SVertex.\n"
"\n"
" :return: the pointed SVertex.\n"
" :rtype: :class:`SVertex`\n";
static PyObject * SVertexIterator_getObject( BPy_SVertexIterator *self) {
SVertex *sv = self->sv_it->operator->(); SVertex *sv = self->sv_it->operator->();
if( sv ) if (sv)
return BPy_SVertex_from_SVertex( *sv ); return BPy_SVertex_from_SVertex(*sv);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
/*----------------------SVertexIterator instance definitions ----------------------------*/ PyDoc_STRVAR(SVertexIterator_t_doc,
static PyMethodDef BPy_SVertexIterator_methods[] = { "The curvilinear abscissa of the current point.\n"
{"t", ( PyCFunction ) SVertexIterator_t, METH_NOARGS, SVertexIterator_t___doc__}, "\n"
{"u", ( PyCFunction ) SVertexIterator_u, METH_NOARGS, SVertexIterator_u___doc__}, ":type: float");
{"getObject", ( PyCFunction ) SVertexIterator_getObject, METH_NOARGS, SVertexIterator_getObject___doc__},
{NULL, NULL, 0, NULL} static PyObject *SVertexIterator_t_get(BPy_SVertexIterator *self, void *UNUSED(closure))
{
return PyFloat_FromDouble(self->sv_it->t());
}
PyDoc_STRVAR(SVertexIterator_u_doc,
"The point parameter at the current point in the 1D element (0 <= u <= 1).\n"
"\n"
":type: float");
static PyObject *SVertexIterator_u_get(BPy_SVertexIterator *self, void *UNUSED(closure))
{
return PyFloat_FromDouble(self->sv_it->u());
}
static PyGetSetDef BPy_SVertexIterator_getseters[] = {
{(char *)"object", (getter)SVertexIterator_object_get, (setter)NULL, (char *)SVertexIterator_object_doc, NULL},
{(char *)"t", (getter)SVertexIterator_t_get, (setter)NULL, (char *)SVertexIterator_t_doc, NULL},
{(char *)"u", (getter)SVertexIterator_u_get, (setter)NULL, (char *)SVertexIterator_u_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
}; };
/*-----------------------BPy_SVertexIterator type definition ------------------------------*/ /*-----------------------BPy_SVertexIterator type definition ------------------------------*/
@@ -154,7 +153,7 @@ PyTypeObject SVertexIterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
SVertexIterator___doc__, /* tp_doc */ SVertexIterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -163,13 +162,13 @@ PyTypeObject SVertexIterator_Type = {
0, /* tp_iternext */ 0, /* tp_iternext */
BPy_SVertexIterator_methods, /* tp_methods */ BPy_SVertexIterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_SVertexIterator_getseters, /* tp_getset */
&Iterator_Type, /* tp_base */ &Iterator_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)SVertexIterator___init__, /* tp_init */ (initproc)SVertexIterator_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
0, /* tp_new */ 0, /* tp_new */
}; };

View File

@@ -11,7 +11,7 @@ extern "C" {
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char StrokeVertexIterator___doc__[] = PyDoc_STRVAR(StrokeVertexIterator_doc,
"Class hierarchy: :class:`Iterator` > :class:`StrokeVertexIterator`\n" "Class hierarchy: :class:`Iterator` > :class:`StrokeVertexIterator`\n"
"\n" "\n"
"Class defining an iterator designed to iterate over the\n" "Class defining an iterator designed to iterate over the\n"
@@ -35,20 +35,20 @@ static char StrokeVertexIterator___doc__[] =
" Copy constructor.\n" " Copy constructor.\n"
"\n" "\n"
" :arg it: A StrokeVertexIterator object.\n" " :arg it: A StrokeVertexIterator object.\n"
" :type it: :class:`StrokeVertexIterator`\n"; " :type it: :class:`StrokeVertexIterator`");
static int StrokeVertexIterator___init__(BPy_StrokeVertexIterator *self, PyObject *args ) static int StrokeVertexIterator_init(BPy_StrokeVertexIterator *self, PyObject *args)
{ {
PyObject *obj = 0; PyObject *obj = 0;
if (! PyArg_ParseTuple(args, "|O", &obj) ) if (!PyArg_ParseTuple(args, "|O", &obj))
return -1; return -1;
if( !obj ){ if (!obj) {
self->sv_it = new StrokeInternal::StrokeVertexIterator(); self->sv_it = new StrokeInternal::StrokeVertexIterator();
} else if( BPy_StrokeVertexIterator_Check(obj) ) { } else if (BPy_StrokeVertexIterator_Check(obj)) {
self->sv_it = new StrokeInternal::StrokeVertexIterator(*( ((BPy_StrokeVertexIterator *) obj)->sv_it )); self->sv_it = new StrokeInternal::StrokeVertexIterator(*(((BPy_StrokeVertexIterator *)obj)->sv_it));
} else { } else {
PyErr_SetString(PyExc_TypeError, "invalid argument"); PyErr_SetString(PyExc_TypeError, "invalid argument");
@@ -61,8 +61,10 @@ static int StrokeVertexIterator___init__(BPy_StrokeVertexIterator *self, PyObjec
return 0; return 0;
} }
static PyObject * StrokeVertexIterator_iternext( BPy_StrokeVertexIterator *self ) { static PyObject * StrokeVertexIterator_iternext(BPy_StrokeVertexIterator *self)
{
StrokeVertex *sv; StrokeVertex *sv;
if (self->reversed) { if (self->reversed) {
if (self->sv_it->isBegin()) { if (self->sv_it->isBegin()) {
PyErr_SetNone(PyExc_StopIteration); PyErr_SetNone(PyExc_StopIteration);
@@ -78,73 +80,74 @@ static PyObject * StrokeVertexIterator_iternext( BPy_StrokeVertexIterator *self
sv = self->sv_it->operator->(); sv = self->sv_it->operator->();
self->sv_it->increment(); self->sv_it->increment();
} }
return BPy_StrokeVertex_from_StrokeVertex( *sv ); return BPy_StrokeVertex_from_StrokeVertex(*sv);
} }
static char StrokeVertexIterator_t___doc__[] = PyDoc_STRVAR(StrokeVertexIterator_cast_to_interface0diterator_doc,
".. method:: t()\n" ".. method:: cast_to_interface0diterator()\n"
"\n"
" Returns the curvilinear abscissa of the current point.\n"
"\n"
" :return: The curvilinear abscissa of the current point.\n"
" :rtype: float\n";
static PyObject * StrokeVertexIterator_t( BPy_StrokeVertexIterator *self ) {
return PyFloat_FromDouble( self->sv_it->t() );
}
static char StrokeVertexIterator_u___doc__[] =
".. method:: u()\n"
"\n"
" Returns the point parameter in the stroke (0<=u<=1).\n"
"\n"
" :return: The point parameter in the stroke\n"
" :rtype: float\n";
static PyObject * StrokeVertexIterator_u( BPy_StrokeVertexIterator *self ) {
return PyFloat_FromDouble( self->sv_it->u() );
}
static char StrokeVertexIterator_castToInterface0DIterator___doc__[] =
".. method:: castToInterface0DIterator()\n"
"\n" "\n"
" Returns an Interface0DIterator converted from this\n" " Returns an Interface0DIterator converted from this\n"
" StrokeVertexIterator. Useful for any call to a function of the\n" " StrokeVertexIterator. Useful for any call to a function of the\n"
" UnaryFunction0D type.\n" " UnaryFunction0D type.\n"
"\n" "\n"
" :return: An Interface0DIterator converted from the StrokeVertexIterator.\n" " :return: An Interface0DIterator converted from the StrokeVertexIterator.\n"
" :rtype: :class:`Interface0DIterator`\n"; " :rtype: :class:`Interface0DIterator`");
static PyObject * StrokeVertexIterator_castToInterface0DIterator( BPy_StrokeVertexIterator *self ) { static PyObject * StrokeVertexIterator_cast_to_interface0diterator(BPy_StrokeVertexIterator *self)
Interface0DIterator it( self->sv_it->castToInterface0DIterator() ); {
return BPy_Interface0DIterator_from_Interface0DIterator( it, 0 ); Interface0DIterator it(self->sv_it->castToInterface0DIterator());
return BPy_Interface0DIterator_from_Interface0DIterator(it, 0);
} }
static char StrokeVertexIterator_getObject___doc__[] = static PyMethodDef BPy_StrokeVertexIterator_methods[] = {
".. method:: getObject()\n" {"cast_to_interface0diterator", (PyCFunction) StrokeVertexIterator_cast_to_interface0diterator, METH_NOARGS, StrokeVertexIterator_cast_to_interface0diterator_doc},
"\n" {NULL, NULL, 0, NULL}
" Returns the pointed StrokeVertex.\n" };
"\n"
" :return: The pointed StrokeVertex.\n"
" :rtype: :class:`StrokeVertex`\n";
static PyObject * StrokeVertexIterator_getObject( BPy_StrokeVertexIterator *self) { /*----------------------StrokeVertexIterator get/setters ----------------------------*/
PyDoc_STRVAR(StrokeVertexIterator_object_doc,
"The StrokeVertex object currently pointed by this iterator.\n"
"\n"
":type: :class:`StrokeVertex`");
static PyObject *StrokeVertexIterator_object_get(BPy_StrokeVertexIterator *self, void *UNUSED(closure))
{
if (!self->reversed && self->sv_it->isEnd()) if (!self->reversed && self->sv_it->isEnd())
Py_RETURN_NONE; Py_RETURN_NONE;
StrokeVertex *sv = self->sv_it->operator->(); StrokeVertex *sv = self->sv_it->operator->();
if( sv ) if (sv)
return BPy_StrokeVertex_from_StrokeVertex( *sv ); return BPy_StrokeVertex_from_StrokeVertex(*sv);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
/*----------------------StrokeVertexIterator instance definitions ----------------------------*/ PyDoc_STRVAR(StrokeVertexIterator_t_doc,
static PyMethodDef BPy_StrokeVertexIterator_methods[] = { "The curvilinear abscissa of the current point.\n"
{"t", ( PyCFunction ) StrokeVertexIterator_t, METH_NOARGS, StrokeVertexIterator_t___doc__}, "\n"
{"u", ( PyCFunction ) StrokeVertexIterator_u, METH_NOARGS, StrokeVertexIterator_u___doc__}, ":type: float");
{"castToInterface0DIterator", ( PyCFunction ) StrokeVertexIterator_castToInterface0DIterator, METH_NOARGS, StrokeVertexIterator_castToInterface0DIterator___doc__},
{"getObject", ( PyCFunction ) StrokeVertexIterator_getObject, METH_NOARGS, StrokeVertexIterator_getObject___doc__}, static PyObject *StrokeVertexIterator_t_get(BPy_StrokeVertexIterator *self, void *UNUSED(closure))
{NULL, NULL, 0, NULL} {
return PyFloat_FromDouble(self->sv_it->t());
}
PyDoc_STRVAR(StrokeVertexIterator_u_doc,
"The point parameter at the current point in the stroke (0 <= u <= 1).\n"
"\n"
":type: float");
static PyObject *StrokeVertexIterator_u_get(BPy_StrokeVertexIterator *self, void *UNUSED(closure))
{
return PyFloat_FromDouble(self->sv_it->u());
}
static PyGetSetDef BPy_StrokeVertexIterator_getseters[] = {
{(char *)"object", (getter)StrokeVertexIterator_object_get, (setter)NULL, (char *)StrokeVertexIterator_object_doc, NULL},
{(char *)"t", (getter)StrokeVertexIterator_t_get, (setter)NULL, (char *)StrokeVertexIterator_t_doc, NULL},
{(char *)"u", (getter)StrokeVertexIterator_u_get, (setter)NULL, (char *)StrokeVertexIterator_u_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
}; };
/*-----------------------BPy_StrokeVertexIterator type definition ------------------------------*/ /*-----------------------BPy_StrokeVertexIterator type definition ------------------------------*/
@@ -170,7 +173,7 @@ PyTypeObject StrokeVertexIterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
StrokeVertexIterator___doc__, /* tp_doc */ StrokeVertexIterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -179,13 +182,13 @@ PyTypeObject StrokeVertexIterator_Type = {
(iternextfunc)StrokeVertexIterator_iternext, /* tp_iternext */ (iternextfunc)StrokeVertexIterator_iternext, /* tp_iternext */
BPy_StrokeVertexIterator_methods, /* tp_methods */ BPy_StrokeVertexIterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_StrokeVertexIterator_getseters, /* tp_getset */
&Iterator_Type, /* tp_base */ &Iterator_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)StrokeVertexIterator___init__, /* tp_init */ (initproc)StrokeVertexIterator_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
0, /* tp_new */ 0, /* tp_new */
}; };

View File

@@ -12,7 +12,7 @@ extern "C" {
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char ViewEdgeIterator___doc__[] = PyDoc_STRVAR(ViewEdgeIterator_doc,
"Class hierarchy: :class:`Iterator` > :class:`ViewEdgeIterator`\n" "Class hierarchy: :class:`Iterator` > :class:`ViewEdgeIterator`\n"
"\n" "\n"
"Base class for iterators over ViewEdges of the :class:`ViewMap` Graph.\n" "Base class for iterators over ViewEdges of the :class:`ViewMap` Graph.\n"
@@ -38,32 +38,31 @@ static char ViewEdgeIterator___doc__[] =
" Copy constructor.\n" " Copy constructor.\n"
"\n" "\n"
" :arg it: A ViewEdgeIterator object.\n" " :arg it: A ViewEdgeIterator object.\n"
" :type it: :class:`ViewEdgeIterator`\n"; " :type it: :class:`ViewEdgeIterator`");
static int ViewEdgeIterator___init__(BPy_ViewEdgeIterator *self, PyObject *args ) static int ViewEdgeIterator_init(BPy_ViewEdgeIterator *self, PyObject *args)
{ {
PyObject *obj1 = 0, *obj2 = 0; PyObject *obj1 = 0, *obj2 = 0;
if (!( PyArg_ParseTuple(args, "O|O", &obj1, &obj2) )) if (!PyArg_ParseTuple(args, "O|O", &obj1, &obj2))
return -1; return -1;
if( obj1 && BPy_ViewEdgeIterator_Check(obj1) ) { if (BPy_ViewEdgeIterator_Check(obj1)) {
self->ve_it = new ViewEdgeInternal::ViewEdgeIterator(*( ((BPy_ViewEdgeIterator *) obj1)->ve_it )); self->ve_it = new ViewEdgeInternal::ViewEdgeIterator(*(((BPy_ViewEdgeIterator *)obj1)->ve_it));
} else { } else {
ViewEdge *begin; ViewEdge *begin;
if ( !obj1 || obj1 == Py_None ) if (obj1 == Py_None)
begin = NULL; begin = NULL;
else if ( BPy_ViewEdge_Check(obj1) ) else if (BPy_ViewEdge_Check(obj1))
begin = ((BPy_ViewEdge *) obj1)->ve; begin = ((BPy_ViewEdge *)obj1)->ve;
else { else {
PyErr_SetString(PyExc_TypeError, "1st argument must be either a ViewEdge object or None"); PyErr_SetString(PyExc_TypeError, "1st argument must be either a ViewEdge object or None");
return -1; return -1;
} }
bool orientation = ( obj2 ) ? bool_from_PyBool(obj2) : true; bool orientation = (obj2) ? bool_from_PyBool(obj2) : true;
self->ve_it = new ViewEdgeInternal::ViewEdgeIterator( begin, orientation);
self->ve_it = new ViewEdgeInternal::ViewEdgeIterator(begin, orientation);
} }
self->py_it.it = self->ve_it; self->py_it.it = self->ve_it;
@@ -71,149 +70,116 @@ static int ViewEdgeIterator___init__(BPy_ViewEdgeIterator *self, PyObject *args
return 0; return 0;
} }
static char ViewEdgeIterator_getCurrentEdge___doc__[] = PyDoc_STRVAR(ViewEdgeIterator_change_orientation_doc,
".. method:: getCurrentEdge()\n" ".. method:: change_orientation()\n"
"\n" "\n"
" Returns the current pointed ViewEdge.\n" " Changes the current orientation.");
"\n"
" :return: The current pointed ViewEdge.\n"
" :rtype: :class:`ViewEdge`\n";
static PyObject *ViewEdgeIterator_getCurrentEdge( BPy_ViewEdgeIterator *self ) { static PyObject *ViewEdgeIterator_change_orientation(BPy_ViewEdgeIterator *self)
ViewEdge *ve = self->ve_it->getCurrentEdge(); {
if( ve )
return BPy_ViewEdge_from_ViewEdge( *ve );
Py_RETURN_NONE;
}
static char ViewEdgeIterator_setCurrentEdge___doc__[] =
".. method:: setCurrentEdge(edge)\n"
"\n"
" Sets the current pointed ViewEdge.\n"
"\n"
" :arg edge: The current pointed ViewEdge.\n"
" :type edge: :class:`ViewEdge`\n";
static PyObject *ViewEdgeIterator_setCurrentEdge( BPy_ViewEdgeIterator *self, PyObject *args ) {
PyObject *py_ve;
if(!( PyArg_ParseTuple(args, "O!", &ViewEdge_Type, &py_ve) ))
return NULL;
self->ve_it->setCurrentEdge( ((BPy_ViewEdge *) py_ve)->ve );
Py_RETURN_NONE;
}
static char ViewEdgeIterator_getBegin___doc__[] =
".. method:: getBegin()\n"
"\n"
" Returns the first ViewEdge used for the iteration.\n"
"\n"
" :return: The first ViewEdge used for the iteration.\n"
" :rtype: :class:`ViewEdge`\n";
static PyObject *ViewEdgeIterator_getBegin( BPy_ViewEdgeIterator *self ) {
ViewEdge *ve = self->ve_it->getBegin();
if( ve )
return BPy_ViewEdge_from_ViewEdge( *ve );
Py_RETURN_NONE;
}
static char ViewEdgeIterator_setBegin___doc__[] =
".. method:: setBegin(begin)\n"
"\n"
" Sets the first ViewEdge used for the iteration.\n"
"\n"
" :arg begin: The first ViewEdge used for the iteration.\n"
" :type begin: :class:`ViewEdge`\n";
static PyObject *ViewEdgeIterator_setBegin( BPy_ViewEdgeIterator *self, PyObject *args ) {
PyObject *py_ve;
if(!( PyArg_ParseTuple(args, "O!", &ViewEdge_Type, &py_ve) ))
return NULL;
self->ve_it->setBegin( ((BPy_ViewEdge *) py_ve)->ve );
Py_RETURN_NONE;
}
static char ViewEdgeIterator_getOrientation___doc__[] =
".. method:: getOrientation()\n"
"\n"
" Returns the orientation of the pointed ViewEdge in the iteration.\n"
"\n"
" :return: The orientation of the pointed ViewEdge in the iteration.\n"
" :rtype: bool\n";
static PyObject *ViewEdgeIterator_getOrientation( BPy_ViewEdgeIterator *self ) {
return PyBool_from_bool( self->ve_it->getOrientation() );
}
static char ViewEdgeIterator_setOrientation___doc__[] =
".. method:: setOrientation(orientation)\n"
"\n"
" Sets the orientation of the pointed ViewEdge in the iteration.\n"
"\n"
" :arg orientation: If true, we'll look for the next ViewEdge among\n"
" the ViewEdges that surround the ending ViewVertex of begin. If\n"
" false, we'll search over the ViewEdges surrounding the ending\n"
" ViewVertex of begin.\n"
" :type orientation: bool\n";
static PyObject *ViewEdgeIterator_setOrientation( BPy_ViewEdgeIterator *self, PyObject *args ) {
PyObject *py_b;
if(!( PyArg_ParseTuple(args, "O", &py_b) ))
return NULL;
self->ve_it->setOrientation( bool_from_PyBool(py_b) );
Py_RETURN_NONE;
}
static char ViewEdgeIterator_changeOrientation___doc__[] =
".. method:: changeOrientation()\n"
"\n"
" Changes the current orientation.\n";
static PyObject *ViewEdgeIterator_changeOrientation( BPy_ViewEdgeIterator *self ) {
self->ve_it->changeOrientation(); self->ve_it->changeOrientation();
Py_RETURN_NONE; Py_RETURN_NONE;
} }
static char ViewEdgeIterator_getObject___doc__[] = static PyMethodDef BPy_ViewEdgeIterator_methods[] = {
".. method:: getObject()\n" {"change_orientation", (PyCFunction) ViewEdgeIterator_change_orientation, METH_NOARGS, ViewEdgeIterator_change_orientation_doc},
"\n" {NULL, NULL, 0, NULL}
" Returns the pointed ViewEdge.\n" };
"\n"
" :return: The pointed ViewEdge.\n"
" :rtype: :class:`ViewEdge`\n";
static PyObject * ViewEdgeIterator_getObject( BPy_ViewEdgeIterator *self) { /*----------------------ViewEdgeIterator get/setters ----------------------------*/
PyDoc_STRVAR(ViewEdgeIterator_object_doc,
"The ViewEdge object currently pointed by this iterator.\n"
"\n"
":type: :class:`ViewEdge`");
static PyObject *ViewEdgeIterator_object_get(BPy_ViewEdgeIterator *self, void *UNUSED(closure))
{
ViewEdge *ve = self->ve_it->operator*(); ViewEdge *ve = self->ve_it->operator*();
if( ve ) if (ve)
return BPy_ViewEdge_from_ViewEdge( *ve ); return BPy_ViewEdge_from_ViewEdge(*ve);
Py_RETURN_NONE; Py_RETURN_NONE;
} }
/*----------------------ViewEdgeIterator instance definitions ----------------------------*/ PyDoc_STRVAR(ViewEdgeIterator_current_edge_doc,
static PyMethodDef BPy_ViewEdgeIterator_methods[] = { "The ViewEdge object currently pointed by this iterator.\n"
{"getCurrentEdge", ( PyCFunction ) ViewEdgeIterator_getCurrentEdge, METH_NOARGS, ViewEdgeIterator_getCurrentEdge___doc__}, "\n"
{"setCurrentEdge", ( PyCFunction ) ViewEdgeIterator_setCurrentEdge, METH_VARARGS, ViewEdgeIterator_setCurrentEdge___doc__}, ":type: :class:`ViewEdge`");
{"getBegin", ( PyCFunction ) ViewEdgeIterator_getBegin, METH_NOARGS, ViewEdgeIterator_getBegin___doc__},
{"setBegin", ( PyCFunction ) ViewEdgeIterator_setBegin, METH_VARARGS, ViewEdgeIterator_setBegin___doc__}, static PyObject *ViewEdgeIterator_current_edge_get(BPy_ViewEdgeIterator *self, void *UNUSED(closure))
{"getOrientation", ( PyCFunction ) ViewEdgeIterator_getOrientation, METH_NOARGS, ViewEdgeIterator_getOrientation___doc__}, {
{"setOrientation", ( PyCFunction ) ViewEdgeIterator_setOrientation, METH_VARARGS, ViewEdgeIterator_setOrientation___doc__}, ViewEdge *ve = self->ve_it->getCurrentEdge();
{"changeOrientation", ( PyCFunction ) ViewEdgeIterator_changeOrientation, METH_NOARGS, ViewEdgeIterator_changeOrientation___doc__}, if (ve)
{"getObject", ( PyCFunction ) ViewEdgeIterator_getObject, METH_NOARGS, ViewEdgeIterator_getObject___doc__}, return BPy_ViewEdge_from_ViewEdge(*ve);
{NULL, NULL, 0, NULL}
Py_RETURN_NONE;}
static int ViewEdgeIterator_current_edge_set(BPy_ViewEdgeIterator *self, PyObject *value, void *UNUSED(closure))
{
if (!BPy_ViewEdge_Check(value)) {
PyErr_SetString(PyExc_TypeError, "value must be a ViewEdge");
return -1;
}
self->ve_it->setCurrentEdge(((BPy_ViewEdge *)value)->ve);
return 0;
}
PyDoc_STRVAR(ViewEdgeIterator_orientation_doc,
"The orientation of the pointed ViewEdge in the iteration.\n"
"If true, the iterator looks for the next ViewEdge among those ViewEdges\n"
"that surround the ending ViewVertex of the \"begin\" ViewEdge. If false,\n"
"the iterator searches over the ViewEdges surrounding the ending ViewVertex\n"
"of the \"begin\" ViewEdge.\n"
"\n"
":type: bool");
static PyObject *ViewEdgeIterator_orientation_get(BPy_ViewEdgeIterator *self, void *UNUSED(closure))
{
return PyBool_from_bool(self->ve_it->getOrientation());
}
static int ViewEdgeIterator_orientation_set(BPy_ViewEdgeIterator *self, PyObject *value, void *UNUSED(closure))
{
if (!PyBool_Check(value)) {
PyErr_SetString(PyExc_TypeError, "value must be a boolean");
return -1;
}
self->ve_it->setOrientation(bool_from_PyBool(value));
return 0;
}
PyDoc_STRVAR(ViewEdgeIterator_begin_doc,
"The first ViewEdge used for the iteration.\n"
"\n"
":type: :class:`ViewEdge`");
static PyObject *ViewEdgeIterator_begin_get(BPy_ViewEdgeIterator *self, void *UNUSED(closure))
{
ViewEdge *ve = self->ve_it->getBegin();
if (ve)
return BPy_ViewEdge_from_ViewEdge(*ve);
Py_RETURN_NONE;
}
static int ViewEdgeIterator_begin_set(BPy_ViewEdgeIterator *self, PyObject *value, void *UNUSED(closure))
{
if(!BPy_ViewEdge_Check(value)) {
PyErr_SetString(PyExc_TypeError, "value must be a ViewEdge");
return -1;
}
self->ve_it->setBegin(((BPy_ViewEdge *)value)->ve);
return 0;
}
static PyGetSetDef BPy_ViewEdgeIterator_getseters[] = {
{(char *)"object", (getter)ViewEdgeIterator_object_get, (setter)NULL, (char *)ViewEdgeIterator_object_doc, NULL},
{(char *)"current_edge", (getter)ViewEdgeIterator_current_edge_get, (setter)ViewEdgeIterator_current_edge_set, (char *)ViewEdgeIterator_current_edge_doc, NULL},
{(char *)"orientation", (getter)ViewEdgeIterator_orientation_get, (setter)ViewEdgeIterator_orientation_set, (char *)ViewEdgeIterator_orientation_doc, NULL},
{(char *)"begin", (getter)ViewEdgeIterator_begin_get, (setter)ViewEdgeIterator_begin_set, (char *)ViewEdgeIterator_begin_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
}; };
/*-----------------------BPy_ViewEdgeIterator type definition ------------------------------*/ /*-----------------------BPy_ViewEdgeIterator type definition ------------------------------*/
@@ -239,7 +205,7 @@ PyTypeObject ViewEdgeIterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
ViewEdgeIterator___doc__, /* tp_doc */ ViewEdgeIterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -248,13 +214,13 @@ PyTypeObject ViewEdgeIterator_Type = {
0, /* tp_iternext */ 0, /* tp_iternext */
BPy_ViewEdgeIterator_methods, /* tp_methods */ BPy_ViewEdgeIterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_ViewEdgeIterator_getseters, /* tp_getset */
&Iterator_Type, /* tp_base */ &Iterator_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)ViewEdgeIterator___init__, /* tp_init */ (initproc)ViewEdgeIterator_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
0, /* tp_new */ 0, /* tp_new */
}; };

View File

@@ -10,7 +10,7 @@ extern "C" {
//------------------------INSTANCE METHODS ---------------------------------- //------------------------INSTANCE METHODS ----------------------------------
static char orientedViewEdgeIterator___doc__[] = PyDoc_STRVAR(orientedViewEdgeIterator_doc,
"Class hierarchy: :class:`Iterator` > :class:`orientedViewEdgeIterator`\n" "Class hierarchy: :class:`Iterator` > :class:`orientedViewEdgeIterator`\n"
"\n" "\n"
"Class representing an iterator over oriented ViewEdges around a\n" "Class representing an iterator over oriented ViewEdges around a\n"
@@ -27,19 +27,19 @@ static char orientedViewEdgeIterator___doc__[] =
" Copy constructor.\n" " Copy constructor.\n"
"\n" "\n"
" :arg iBrother: An orientedViewEdgeIterator object.\n" " :arg iBrother: An orientedViewEdgeIterator object.\n"
" :type iBrother: :class:`orientedViewEdgeIterator`\n"; " :type iBrother: :class:`orientedViewEdgeIterator`");
static int orientedViewEdgeIterator___init__(BPy_orientedViewEdgeIterator *self, PyObject *args ) static int orientedViewEdgeIterator_init(BPy_orientedViewEdgeIterator *self, PyObject *args)
{ {
PyObject *obj = 0; PyObject *obj = 0;
if (!( PyArg_ParseTuple(args, "|O", &obj) )) if (!PyArg_ParseTuple(args, "|O", &obj))
return -1; return -1;
if( !obj ) if (!obj)
self->ove_it = new ViewVertexInternal::orientedViewEdgeIterator(); self->ove_it = new ViewVertexInternal::orientedViewEdgeIterator();
else if( BPy_orientedViewEdgeIterator_Check(obj) ) else if (BPy_orientedViewEdgeIterator_Check(obj))
self->ove_it = new ViewVertexInternal::orientedViewEdgeIterator(*( ((BPy_orientedViewEdgeIterator *) obj)->ove_it )); self->ove_it = new ViewVertexInternal::orientedViewEdgeIterator(*(((BPy_orientedViewEdgeIterator *)obj)->ove_it));
else { else {
PyErr_SetString(PyExc_TypeError, "invalid argument"); PyErr_SetString(PyExc_TypeError, "invalid argument");
return -1; return -1;
@@ -51,8 +51,10 @@ static int orientedViewEdgeIterator___init__(BPy_orientedViewEdgeIterator *self,
return 0; return 0;
} }
static PyObject * orientedViewEdgeIterator_iternext( BPy_orientedViewEdgeIterator *self ) { static PyObject * orientedViewEdgeIterator_iternext(BPy_orientedViewEdgeIterator *self)
{
ViewVertex::directedViewEdge *dve; ViewVertex::directedViewEdge *dve;
if (self->reversed) { if (self->reversed) {
if (self->ove_it->isBegin()) { if (self->ove_it->isBegin()) {
PyErr_SetNone(PyExc_StopIteration); PyErr_SetNone(PyExc_StopIteration);
@@ -68,28 +70,33 @@ static PyObject * orientedViewEdgeIterator_iternext( BPy_orientedViewEdgeIterato
dve = self->ove_it->operator->(); dve = self->ove_it->operator->();
self->ove_it->increment(); self->ove_it->increment();
} }
return BPy_directedViewEdge_from_directedViewEdge( *dve ); return BPy_directedViewEdge_from_directedViewEdge(*dve);
} }
static char orientedViewEdgeIterator_getObject___doc__[] =
".. method:: getObject()\n"
"\n"
" Returns the pointed oriented ViewEdge.\n"
"\n"
" :return: A tuple of the pointed ViewEdge and a boolean value. If\n"
" the boolean value is true, the ViewEdge is incoming.\n"
" :rtype: (:class:`directedViewEdge`, bool)\n";
static PyObject * orientedViewEdgeIterator_getObject( BPy_orientedViewEdgeIterator *self) {
return BPy_directedViewEdge_from_directedViewEdge( self->ove_it->operator*() );
}
/*----------------------orientedViewEdgeIterator instance definitions ----------------------------*/
static PyMethodDef BPy_orientedViewEdgeIterator_methods[] = { static PyMethodDef BPy_orientedViewEdgeIterator_methods[] = {
{"getObject", ( PyCFunction ) orientedViewEdgeIterator_getObject, METH_NOARGS, orientedViewEdgeIterator_getObject___doc__},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
/*----------------------orientedViewEdgeIterator get/setters ----------------------------*/
PyDoc_STRVAR(orientedViewEdgeIterator_object_doc,
"The oriented ViewEdge (i.e., a tuple of the pointed ViewEdge and a boolean\n"
"value) currently pointed by this iterator. If the boolean value is true,\n"
"the ViewEdge is incoming.\n"
"\n"
":type: (:class:`directedViewEdge`, bool)");
static PyObject *orientedViewEdgeIterator_object_get(BPy_orientedViewEdgeIterator *self, void *UNUSED(closure))
{
return BPy_directedViewEdge_from_directedViewEdge(self->ove_it->operator*());
}
static PyGetSetDef BPy_orientedViewEdgeIterator_getseters[] = {
{(char *)"object", (getter)orientedViewEdgeIterator_object_get, (setter)NULL, (char *)orientedViewEdgeIterator_object_doc, NULL},
{NULL, NULL, NULL, NULL, NULL} /* Sentinel */
};
/*-----------------------BPy_orientedViewEdgeIterator type definition ------------------------------*/ /*-----------------------BPy_orientedViewEdgeIterator type definition ------------------------------*/
PyTypeObject orientedViewEdgeIterator_Type = { PyTypeObject orientedViewEdgeIterator_Type = {
@@ -113,7 +120,7 @@ PyTypeObject orientedViewEdgeIterator_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
orientedViewEdgeIterator___doc__, /* tp_doc */ orientedViewEdgeIterator_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */
@@ -122,13 +129,13 @@ PyTypeObject orientedViewEdgeIterator_Type = {
(iternextfunc)orientedViewEdgeIterator_iternext, /* tp_iternext */ (iternextfunc)orientedViewEdgeIterator_iternext, /* tp_iternext */
BPy_orientedViewEdgeIterator_methods, /* tp_methods */ BPy_orientedViewEdgeIterator_methods, /* tp_methods */
0, /* tp_members */ 0, /* tp_members */
0, /* tp_getset */ BPy_orientedViewEdgeIterator_getseters, /* tp_getset */
&Iterator_Type, /* tp_base */ &Iterator_Type, /* tp_base */
0, /* tp_dict */ 0, /* tp_dict */
0, /* tp_descr_get */ 0, /* tp_descr_get */
0, /* tp_descr_set */ 0, /* tp_descr_set */
0, /* tp_dictoffset */ 0, /* tp_dictoffset */
(initproc)orientedViewEdgeIterator___init__, /* tp_init */ (initproc)orientedViewEdgeIterator_init, /* tp_init */
0, /* tp_alloc */ 0, /* tp_alloc */
0, /* tp_new */ 0, /* tp_new */
}; };