diff options
Diffstat (limited to 'source/blender/freestyle/intern/stroke/ChainingIterators.cpp')
-rw-r--r-- | source/blender/freestyle/intern/stroke/ChainingIterators.cpp | 274 |
1 files changed, 137 insertions, 137 deletions
diff --git a/source/blender/freestyle/intern/stroke/ChainingIterators.cpp b/source/blender/freestyle/intern/stroke/ChainingIterators.cpp index 08bdeb61713..de6c50fe571 100644 --- a/source/blender/freestyle/intern/stroke/ChainingIterators.cpp +++ b/source/blender/freestyle/intern/stroke/ChainingIterators.cpp @@ -29,93 +29,93 @@ namespace Freestyle { ViewEdge *AdjacencyIterator::operator*() { - return (*_internalIterator).first; + return (*_internalIterator).first; } bool AdjacencyIterator::isIncoming() const { - return (*_internalIterator).second; + return (*_internalIterator).second; } int AdjacencyIterator::increment() { - ++_internalIterator; - while ((!_internalIterator.isEnd()) && (!isValid((*_internalIterator).first))) - ++_internalIterator; - return 0; + ++_internalIterator; + while ((!_internalIterator.isEnd()) && (!isValid((*_internalIterator).first))) + ++_internalIterator; + return 0; } bool AdjacencyIterator::isValid(ViewEdge *edge) { - if (_restrictToSelection) { - if (edge->getTimeStamp() != TimeStamp::instance()->getTimeStamp()) - return false; - } - if (_restrictToUnvisited) { - if (edge->getChainingTimeStamp() > TimeStamp::instance()->getTimeStamp()) - return false; - } - return true; + if (_restrictToSelection) { + if (edge->getTimeStamp() != TimeStamp::instance()->getTimeStamp()) + return false; + } + if (_restrictToUnvisited) { + if (edge->getChainingTimeStamp() > TimeStamp::instance()->getTimeStamp()) + return false; + } + return true; } int ChainingIterator::init() { - return Director_BPy_ChainingIterator_init(this); + return Director_BPy_ChainingIterator_init(this); } int ChainingIterator::traverse(const AdjacencyIterator &it) { - return Director_BPy_ChainingIterator_traverse(this, const_cast<AdjacencyIterator &>(it)); + return Director_BPy_ChainingIterator_traverse(this, const_cast<AdjacencyIterator &>(it)); } int ChainingIterator::increment() { - _increment = true; - ViewVertex *vertex = getVertex(); - if (!vertex) { - _edge = 0; - return 0; - } - AdjacencyIterator it = AdjacencyIterator(vertex, _restrictToSelection, _restrictToUnvisited); - if (it.isEnd()) { - _edge = 0; - return 0; - } - if (traverse(it) < 0) - return -1; - _edge = result; - if (_edge == 0) - return 0; - if (_edge->A() == vertex) - _orientation = true; - else - _orientation = false; - return 0; + _increment = true; + ViewVertex *vertex = getVertex(); + if (!vertex) { + _edge = 0; + return 0; + } + AdjacencyIterator it = AdjacencyIterator(vertex, _restrictToSelection, _restrictToUnvisited); + if (it.isEnd()) { + _edge = 0; + return 0; + } + if (traverse(it) < 0) + return -1; + _edge = result; + if (_edge == 0) + return 0; + if (_edge->A() == vertex) + _orientation = true; + else + _orientation = false; + return 0; } int ChainingIterator::decrement() { - _increment = false; - ViewVertex *vertex = getVertex(); - if (!vertex) { - _edge = 0; - return 0; - } - AdjacencyIterator it = AdjacencyIterator(vertex, _restrictToSelection, _restrictToUnvisited); - if (it.isEnd()) { - _edge = 0; - return 0; - } - if (traverse(it) < 0) - return -1; - _edge = result; - if (_edge == 0) - return 0; - if (_edge->B() == vertex) - _orientation = true; - else - _orientation = false; - return 0; + _increment = false; + ViewVertex *vertex = getVertex(); + if (!vertex) { + _edge = 0; + return 0; + } + AdjacencyIterator it = AdjacencyIterator(vertex, _restrictToSelection, _restrictToUnvisited); + if (it.isEnd()) { + _edge = 0; + return 0; + } + if (traverse(it) < 0) + return -1; + _edge = result; + if (_edge == 0) + return 0; + if (_edge->B() == vertex) + _orientation = true; + else + _orientation = false; + return 0; } // @@ -123,88 +123,88 @@ int ChainingIterator::decrement() // /////////////////////////////////////////////////////////// -int ChainSilhouetteIterator::traverse(const AdjacencyIterator& ait) +int ChainSilhouetteIterator::traverse(const AdjacencyIterator &ait) { - AdjacencyIterator it(ait); - ViewVertex *nextVertex = getVertex(); - // we can't get a NULL nextVertex here, it was intercepted before - if (nextVertex->getNature() & Nature::T_VERTEX) { - TVertex *tvertex = (TVertex *)nextVertex; - ViewEdge *mate = (tvertex)->mate(getCurrentEdge()); - while (!it.isEnd()) { - ViewEdge *ve = *it; - if (ve == mate) { - result = ve; - return 0; - } - ++it; - } - result = 0; - return 0; - } - if (nextVertex->getNature() & Nature::NON_T_VERTEX) { - //soc NonTVertex *nontvertex = (NonTVertex*)nextVertex; - ViewEdge *newEdge(0); - // we'll try to chain the edges by keeping the same nature... - // the preseance order is : SILHOUETTE, BORDER, CREASE, MATERIAL_BOUNDARY, EDGE_MARK, SUGGESTIVE, VALLEY, RIDGE - Nature::EdgeNature natures[8] = { - Nature::SILHOUETTE, - Nature::BORDER, - Nature::CREASE, - Nature::MATERIAL_BOUNDARY, - Nature::EDGE_MARK, - Nature::SUGGESTIVE_CONTOUR, - Nature::VALLEY, - Nature::RIDGE, - }; - int numNatures = sizeof(natures) / sizeof(Nature::EdgeNature); - for (int i = 0; i < numNatures; ++i) { - if (getCurrentEdge()->getNature() & natures[i]) { - int n = 0; - while (!it.isEnd()) { - ViewEdge *ve = *it; - if (ve->getNature() & natures[i]) { - ++n; - newEdge = ve; - } - ++it; - } - if (n == 1) { - result = newEdge; - } - else { - result = 0; - } - return 0; - } - } - } - result = 0; - return 0; + AdjacencyIterator it(ait); + ViewVertex *nextVertex = getVertex(); + // we can't get a NULL nextVertex here, it was intercepted before + if (nextVertex->getNature() & Nature::T_VERTEX) { + TVertex *tvertex = (TVertex *)nextVertex; + ViewEdge *mate = (tvertex)->mate(getCurrentEdge()); + while (!it.isEnd()) { + ViewEdge *ve = *it; + if (ve == mate) { + result = ve; + return 0; + } + ++it; + } + result = 0; + return 0; + } + if (nextVertex->getNature() & Nature::NON_T_VERTEX) { + //soc NonTVertex *nontvertex = (NonTVertex*)nextVertex; + ViewEdge *newEdge(0); + // we'll try to chain the edges by keeping the same nature... + // the preseance order is : SILHOUETTE, BORDER, CREASE, MATERIAL_BOUNDARY, EDGE_MARK, SUGGESTIVE, VALLEY, RIDGE + Nature::EdgeNature natures[8] = { + Nature::SILHOUETTE, + Nature::BORDER, + Nature::CREASE, + Nature::MATERIAL_BOUNDARY, + Nature::EDGE_MARK, + Nature::SUGGESTIVE_CONTOUR, + Nature::VALLEY, + Nature::RIDGE, + }; + int numNatures = sizeof(natures) / sizeof(Nature::EdgeNature); + for (int i = 0; i < numNatures; ++i) { + if (getCurrentEdge()->getNature() & natures[i]) { + int n = 0; + while (!it.isEnd()) { + ViewEdge *ve = *it; + if (ve->getNature() & natures[i]) { + ++n; + newEdge = ve; + } + ++it; + } + if (n == 1) { + result = newEdge; + } + else { + result = 0; + } + return 0; + } + } + } + result = 0; + return 0; } -int ChainPredicateIterator::traverse(const AdjacencyIterator& ait) +int ChainPredicateIterator::traverse(const AdjacencyIterator &ait) { - if (!_unary_predicate || !_binary_predicate) - return -1; - AdjacencyIterator it(ait); - // Iterates over next edges to see if one of them respects the predicate: - while (!it.isEnd()) { - ViewEdge *ve = *it; - if (_unary_predicate->operator()(*ve) < 0) - return -1; - if (_unary_predicate->result) { - if (_binary_predicate->operator()(*(getCurrentEdge()), *(ve)) < 0) - return -1; - if (_binary_predicate->result) { - result = ve; - return 0; - } - } - ++it; - } - result = 0; - return 0; + if (!_unary_predicate || !_binary_predicate) + return -1; + AdjacencyIterator it(ait); + // Iterates over next edges to see if one of them respects the predicate: + while (!it.isEnd()) { + ViewEdge *ve = *it; + if (_unary_predicate->operator()(*ve) < 0) + return -1; + if (_unary_predicate->result) { + if (_binary_predicate->operator()(*(getCurrentEdge()), *(ve)) < 0) + return -1; + if (_binary_predicate->result) { + result = ve; + return 0; + } + } + ++it; + } + result = 0; + return 0; } } /* namespace Freestyle */ |