[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54592] branches/soc-2008-mxcurioni: Freestyle Python API improvements - part 4.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Sat Feb 16 15:21:41 CET 2013


Revision: 54592
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54592
Author:   kjym3
Date:     2013-02-16 14:21:40 +0000 (Sat, 16 Feb 2013)
Log Message:
-----------
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.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/ChainingIterators.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/Functions0D.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/PredicatesU0D.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/PredicatesU1D.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/parameter_editor.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/sequentialsplit_sketchy.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/shaders.py
    branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/uniformpruning_zsort.py
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/BPy_Iterator.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Iterator/BPy_AdjacencyIterator.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Iterator/BPy_ChainingIterator.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Iterator/BPy_CurvePointIterator.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Iterator/BPy_Interface0DIterator.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Iterator/BPy_SVertexIterator.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Iterator/BPy_StrokeVertexIterator.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Iterator/BPy_ViewEdgeIterator.cpp
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/python/Iterator/BPy_orientedViewEdgeIterator.cpp

Modified: branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/ChainingIterators.py
===================================================================
--- branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/ChainingIterators.py	2013-02-16 14:01:55 UTC (rev 54591)
+++ branches/soc-2008-mxcurioni/release/scripts/freestyle/style_modules/ChainingIterators.py	2013-02-16 14:21:40 UTC (rev 54592)
@@ -42,11 +42,11 @@
 	def traverse(self, iter):
 		winner = None
 		it = AdjacencyIterator(iter)
-		tvertex = self.getVertex()
+		tvertex = self.next_vertex
 		if type(tvertex) is TVertex:
-			mateVE = tvertex.get_mate(self.getCurrentEdge())
-			while not it.isEnd():
-				ve = it.getObject()
+			mateVE = tvertex.get_mate(self.current_edge)
+			while not it.is_end:
+				ve = it.object
 				if ve.id == mateVE.id:
 					winner = ve
 					break
@@ -55,12 +55,12 @@
 			## case of NonTVertex
 			natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
 			for i in range(len(natures)):
-				currentNature = self.getCurrentEdge().nature
+				currentNature = self.current_edge.nature
 				if (natures[i] & currentNature) != 0:
 					count=0
-					while not it.isEnd():
+					while not it.is_end:
 						visitNext = 0
-						oNature = it.getObject().nature
+						oNature = it.object.nature
 						if (oNature & natures[i]) != 0:
 							if natures[i] != oNature:
 								for j in range(i):
@@ -70,7 +70,7 @@
 								if visitNext != 0:
 									break	 
 							count = count+1
-							winner = it.getObject()
+							winner = it.object
 						it.increment()
 					if count != 1:
 						winner = None
@@ -94,11 +94,11 @@
 	def traverse(self, iter):
 		winner = None
 		it = AdjacencyIterator(iter)
-		tvertex = self.getVertex()
+		tvertex = self.next_vertex
 		if type(tvertex) is TVertex:
-			mateVE = tvertex.get_mate(self.getCurrentEdge())
-			while not it.isEnd():
-				ve = it.getObject()
+			mateVE = tvertex.get_mate(self.current_edge)
+			while not it.is_end:
+				ve = it.object
 				if ve.id == mateVE.id:
 					winner = ve
 					break
@@ -107,14 +107,14 @@
 			## case of NonTVertex
 			natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
 			for i in range(len(natures)):
-				currentNature = self.getCurrentEdge().nature
+				currentNature = self.current_edge.nature
 				if (natures[i] & currentNature) != 0:
 					count=0
-					while not it.isEnd():
+					while not it.is_end:
 						visitNext = 0
-						oNature = it.getObject().nature
-						ve = it.getObject()
-						if ve.id == self.getCurrentEdge().id:
+						oNature = it.object.nature
+						ve = it.object
+						if ve.id == self.current_edge.id:
 							it.increment()
 							continue
 						if (oNature & natures[i]) != 0:
@@ -137,22 +137,19 @@
 	def __init__(self):
 		ChainingIterator.__init__(self, 0, 1,None,1)
 		self._isExternalContour = ExternalContourUP1D()
-		
 	def getExactTypeName(self):
 		return "pyExternalContourIterator"
-	
 	def init(self):
 		self._nEdges = 0
 		self._isInSelection = 1
-
 	def checkViewEdge(self, ve, orientation):
 		if orientation != 0:
 			vertex = ve.second_svertex()
 		else:
 			vertex = ve.first_svertex()
 		it = AdjacencyIterator(vertex,1,1)
-		while not it.isEnd():
-			ave = it.getObject()
+		while not it.is_end:
+			ave = it.object
 			if self._isExternalContour(ave):
 				return 1
 			it.increment()
@@ -161,8 +158,8 @@
 	def traverse(self, iter):
 		winner = None
 		it = AdjacencyIterator(iter)
-		while not it.isEnd():
-			ve = it.getObject()
+		while not it.is_end:
+			ve = it.object
 			if self._isExternalContour(ve):
 				if ve.time_stamp == GetTimeStampCF():
 					winner = ve
@@ -172,9 +169,9 @@
 		if winner is None:
 			orient = 1
 			it = AdjacencyIterator(iter)
-			while not it.isEnd():
-				ve = it.getObject()
-				if it.isIncoming() != 0: # FIXME
+			while not it.is_end:
+				ve = it.object
+				if it.is_incoming:
 					orient = 0
 				good = self.checkViewEdge(ve,orient)
 				if good != 0:
@@ -196,11 +193,11 @@
 	def traverse(self, iter):
 		winner = None
 		it = AdjacencyIterator(iter)
-		tvertex = self.getVertex()
+		tvertex = self.next_vertex
 		if type(tvertex) is TVertex:
-			mateVE = tvertex.get_mate(self.getCurrentEdge())
-			while not it.isEnd():
-				ve = it.getObject()
+			mateVE = tvertex.get_mate(self.current_edge)
+			while not it.is_end:
+				ve = it.object
 				if ve.id == mateVE.id:
 					winner = ve
 					break
@@ -209,14 +206,14 @@
 			## case of NonTVertex
 			natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
 			for i in range(len(natures)):
-				currentNature = self.getCurrentEdge().nature
+				currentNature = self.current_edge.nature
 				if (natures[i] & currentNature) != 0:
 					count=0
-					while not it.isEnd():
+					while not it.is_end:
 						visitNext = 0
-						oNature = it.getObject().nature
-						ve = it.getObject()
-						if ve.id == self.getCurrentEdge().id:
+						oNature = it.object.nature
+						ve = it.object
+						if ve.id == self.current_edge.id:
 							it.increment()
 							continue
 						if (oNature & natures[i]) != 0:
@@ -234,7 +231,7 @@
 						winner = None
 					break
 		if winner is None:
-			winner = self.getCurrentEdge()
+			winner = self.current_edge
 		if winner.chaining_time_stamp == self._timeStamp:
 			winner = None
 		return winner
@@ -250,22 +247,20 @@
 		self._nRounds = nRounds
 	def getExactTypeName(self):
 		return "pySketchyChainingIterator"
-
 	def init(self):
 		self._timeStamp = GetTimeStampCF()+self._nRounds
-
 	def traverse(self, iter):
 		winner = None
 		it = AdjacencyIterator(iter)
-		while not it.isEnd():
-			ve = it.getObject()
-			if ve.id == self.getCurrentEdge().id:
+		while not it.is_end:
+			ve = it.object
+			if ve.id == self.current_edge.id:
 				it.increment()
 				continue
 			winner = ve
 			it.increment()
 		if winner is None:
-			winner = self.getCurrentEdge()
+			winner = self.current_edge
 		if winner.chaining_time_stamp == self._timeStamp:
 			return None
 		return winner
@@ -290,16 +285,16 @@
 	def traverse(self, iter):
 		winner = None
 		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)
-		tvertex = self.getVertex()
+		tvertex = self.next_vertex
 		if type(tvertex) is TVertex:
-			mateVE = tvertex.get_mate(self.getCurrentEdge())
-			while not it.isEnd():
-				ve = it.getObject()
+			mateVE = tvertex.get_mate(self.current_edge)
+			while not it.is_end:
+				ve = it.object
 				if ve.id == mateVE.id:
 					winner = ve
-					if it.isIncoming() == 0: # FIXME
+					if not it.is_incoming:
 						winnerOrientation = 1
 					else:
 						winnerOrientation = 0
@@ -309,14 +304,14 @@
 			## case of NonTVertex
 			natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
 			for nat in natures:
-				if (self.getCurrentEdge().nature & nat) != 0:
+				if (self.current_edge.nature & nat) != 0:
 					count=0
-					while not it.isEnd():
-						ve = it.getObject()
+					while not it.is_end:
+						ve = it.object
 						if (ve.nature & nat) != 0:
 							count = count+1
 							winner = ve
-							if it.isIncoming() == 0: # FIXME
+							if not it.is_incoming:
 								winnerOrientation = 1
 							else:
 								winnerOrientation = 0
@@ -335,24 +330,24 @@
 				if self._length == 0:
 					#if not, let's do it
 					_it = pyChainSilhouetteGenericIterator(0,0)
-					_it.setBegin(winner)
-					_it.setCurrentEdge(winner)
-					_it.setOrientation(winnerOrientation)
+					_it.begin = winner
+					_it.current_edge = winner
+					_it.orientation = winnerOrientation
 					_it.init()
-					while not _it.isEnd():
-						ve = _it.getObject()
+					while not _it.is_end:
+						ve = _it.object
 						#print("--------", ve.id.first, ve.id.second)
 						self._length = self._length + ve.length_2d
 						_it.increment()
-						if _it.isBegin():
+						if _it.is_begin:
 							break;
-					_it.setBegin(winner)
-					_it.setCurrentEdge(winner)
-					_it.setOrientation(winnerOrientation)
-					if not _it.isBegin():
+					_it.begin = winner
+					_it.current_edge = winner
+					_it.orientation = winnerOrientation
+					if not _it.is_begin:
 						_it.decrement()
-						while (not _it.isEnd()) and (not _it.isBegin()):
-							ve = _it.getObject()
+						while (not _it.is_end) and (not _it.is_begin):
+							ve = _it.object
 							#print("--------", ve.id.first, ve.id.second)
 							self._length = self._length + ve.length_2d
 							_it.decrement()
@@ -361,12 +356,12 @@
 				# nw let's compute the length of this connex non selected part:
 				connexl = 0
 				_cit = pyChainSilhouetteGenericIterator(0,0)
-				_cit.setBegin(winner)
-				_cit.setCurrentEdge(winner)
-				_cit.setOrientation(winnerOrientation)
+				_cit.begin = winner
+				_cit.current_edge = winner
+				_cit.orientation = winnerOrientation
 				_cit.init()
-				while _cit.isEnd() == 0 and _cit.getObject().time_stamp != GetTimeStampCF():
-					ve = _cit.getObject()
+				while _cit.is_end == 0 and _cit.object.time_stamp != GetTimeStampCF():
+					ve = _cit.object
 					#print("-------- --------", ve.id.first, ve.id.second)
 					connexl = connexl + ve.length_2d
 					_cit.increment()
@@ -389,16 +384,16 @@
 	def traverse(self, iter):
 		winner = None
 		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)
-		tvertex = self.getVertex()
+		tvertex = self.next_vertex
 		if type(tvertex) is TVertex:
-			mateVE = tvertex.get_mate(self.getCurrentEdge())
-			while not it.isEnd():
-				ve = it.getObject()
+			mateVE = tvertex.get_mate(self.current_edge)
+			while not it.is_end:
+				ve = it.object
 				if ve.id == mateVE.id:
 					winner = ve
-					if it.isIncoming() == 0: # FIXME
+					if not it.is_incoming:
 						winnerOrientation = 1
 					else:
 						winnerOrientation = 0
@@ -408,14 +403,14 @@
 			## case of NonTVertex
 			natures = [Nature.SILHOUETTE,Nature.BORDER,Nature.CREASE,Nature.SUGGESTIVE_CONTOUR,Nature.VALLEY,Nature.RIDGE]
 			for nat in natures:
-				if (self.getCurrentEdge().nature & nat) != 0:
+				if (self.current_edge.nature & nat) != 0:
 					count=0
-					while not it.isEnd():
-						ve = it.getObject()
+					while not it.is_end:

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list