LinearIterator::LinearIterator(const Geometry* linear, const LinearLocation& start): vertexIndex(segmentEndVertexIndex(start)), componentIndex(start.getComponentIndex()), linear(linear), numLines(static_cast<unsigned int>(linear->getNumGeometries())) { loadCurrentLine(); }
LinearIterator::LinearIterator(const Geometry* linear, unsigned int componentIndex, unsigned int vertexIndex) : vertexIndex(vertexIndex), componentIndex(componentIndex), linear(linear), numLines(static_cast<unsigned int>(linear->getNumGeometries())) { loadCurrentLine(); }
LinearIterator::LinearIterator(const Geometry* linear) : vertexIndex(0), componentIndex(0), linear(linear), numLines(linear->getNumGeometries()) { loadCurrentLine(); }
void LinearIterator::next() { if (! hasNext()) return; vertexIndex++; if (vertexIndex >= currentLine->getNumPoints()) { componentIndex++; loadCurrentLine(); vertexIndex = 0; } }