From f6b4b1296125d43e94968709bc52d5f7a062734e Mon Sep 17 00:00:00 2001 From: Tamito Kajiyama Date: Tue, 2 Sep 2014 21:24:41 +0900 Subject: Better fix for T41464: Material Boundary bug in Freestyle. The problem addressed here is that there was no mean to check if an iterator points the last of the elements being iterated over. Such checking is necessary to reliably dereference the iterator (i.e., calling the operator*() method of the underlying C++ iterator object). Now Interface0DIterator and StrokeVertexIterator have an .at_last property to check if an iterator points the last element. Using this new API feature, the present commit partly reverts the previous commit rBeb8964fb7f19 to better address T41464. Differential revision: https://developer.blender.org/D752 Author: flokkievids (Folkert de Vries) Reviewed by: kjym3 (Tamito Kajiyama) --- release/scripts/freestyle/modules/parameter_editor.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'release/scripts/freestyle/modules/parameter_editor.py') diff --git a/release/scripts/freestyle/modules/parameter_editor.py b/release/scripts/freestyle/modules/parameter_editor.py index 6ab4184651a..ebd09bd0181 100644 --- a/release/scripts/freestyle/modules/parameter_editor.py +++ b/release/scripts/freestyle/modules/parameter_editor.py @@ -814,17 +814,14 @@ class FaceMarkOneUP1D(UnaryPredicate1D): class MaterialBoundaryUP0D(UnaryPredicate0D): def __call__(self, it): - if it.is_begin: + # can't use only it.is_end here, see commit rBeb8964fb7f19 + if it.is_begin or it.at_last or it.is_end: return False - it_prev = Interface0DIterator(it) - it_prev.decrement() - v = it.object - it.increment() - if it.is_end: - return False - fe = v.get_fedge(it_prev.object) + it.decrement() + prev, v, succ = next(it), next(it), next(it) + fe = v.get_fedge(prev) idx1 = fe.material_index if fe.is_smooth else fe.material_index_left - fe = v.get_fedge(it.object) + fe = v.get_fedge(succ) idx2 = fe.material_index if fe.is_smooth else fe.material_index_left return idx1 != idx2 -- cgit v1.2.3