/* SPDX-License-Identifier: GPL-2.0-or-later */ /** \file * \ingroup freestyle * \brief Class to fill in a grid from a SceneGraph (uses only the WingedEdge structures) */ #include "WFillGrid.h" #include "WEdge.h" namespace Freestyle { void WFillGrid::fillGrid() { if (!_winged_edge || !_grid) { return; } vector wshapes = _winged_edge->getWShapes(); vector fvertices; vector vectors; vector faces; for (vector::const_iterator it = wshapes.begin(); it != wshapes.end(); ++it) { faces = (*it)->GetFaceList(); for (vector::const_iterator f = faces.begin(); f != faces.end(); ++f) { (*f)->RetrieveVertexList(fvertices); for (vector::const_iterator wv = fvertices.begin(); wv != fvertices.end(); ++wv) { vectors.emplace_back((*wv)->GetVertex()); } // occluder will be deleted by the grid Polygon3r *occluder = new Polygon3r(vectors, (*f)->GetNormal()); occluder->setId(_polygon_id++); occluder->userdata = (void *)(*f); _grid->insertOccluder(occluder); vectors.clear(); fvertices.clear(); } faces.clear(); } } } /* namespace Freestyle */