Do not use deprecated functions

This commit is contained in:
Andreas Fabri 2022-12-06 12:34:26 +00:00
parent 2a2e319061
commit 1adb13edc8
6 changed files with 78 additions and 51 deletions

View File

@ -473,8 +473,7 @@ int main (int argc, char** argv)
// Fill all holes except the bigest (which is the outer hull of the mesh)
for (Mesh::Halfedge_index hi : holes)
if (hi != outer_hull)
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole
(dtm_mesh, hi, CGAL::Emptyset_iterator(), CGAL::Emptyset_iterator());
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole (dtm_mesh, hi);
// Save DTM with holes filled
std::ofstream dtm_filled_ofile ("dtm_filled.ply", std::ios_base::binary);

View File

@ -390,7 +390,7 @@ namespace Polygon_mesh_processing {
Vertex_output_iterator vertex_out = choose_parameter<Emptyset_iterator>(get_parameter(np, internal_np::vertex_output_iterator));
std::vector<typename boost::graph_traits<PolygonMesh>::face_descriptor> patch;
triangulate_hole(pmesh, border_halfedge, std::back_inserter(patch), np);
triangulate_hole(pmesh, border_halfedge, np.face_output_iterator(std::back_inserter(patch)));
face_out = std::copy(patch.begin(), patch.end(), face_out);
Hole_filling::Default_visitor default_visitor;
@ -584,7 +584,7 @@ namespace Polygon_mesh_processing {
std::vector<typename boost::graph_traits<PolygonMesh>::vertex_descriptor> patch;
face_out = triangulate_and_refine_hole
(pmesh, border_halfedge, face_out, std::back_inserter(patch), np).first;
(pmesh, border_halfedge, np.face_output_iterator(face_out).vertex_output_iterator(std::back_inserter(patch))).first;
CGAL_postcondition(CGAL::is_triangle_mesh(pmesh));

View File

@ -112,7 +112,7 @@ void test_triangulate_hole_weight(const std::string file_name, std::size_t nb_re
for(typename std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it) {
std::vector<Facet_handle> patch;
CGAL::Polygon_mesh_processing::triangulate_hole(
poly, *it, back_inserter(patch),CGAL::parameters::use_delaunay_triangulation(true));
poly, *it, CGAL::parameters::use_delaunay_triangulation(true).face_output_iterator(back_inserter(patch)));
if(patch.empty()) { continue; }
}
@ -161,15 +161,15 @@ void test_triangulate_hole_should_be_no_output(const std::string file_name) {
for(typename std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it) {
std::vector<Facet_handle> patch;
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it, back_inserter(patch),
CGAL::parameters::use_delaunay_triangulation(false));
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it,
CGAL::parameters::use_delaunay_triangulation(false).face_output_iterator(back_inserter(patch)));
if(!patch.empty()) {
std::cerr << " Error: patch should be empty" << std::endl;
assert(false);
}
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it, back_inserter(patch),
CGAL::parameters::use_delaunay_triangulation(true));
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it,
CGAL::parameters::use_delaunay_triangulation(true).face_output_iterator(back_inserter(patch)));
if(!patch.empty()) {
std::cerr << " Error: patch should be empty" << std::endl;
assert(false);
@ -258,11 +258,11 @@ void test_ouput_iterators_triangulate_hole(const std::string file_name) {
typename std::vector<Halfedge_handle>::iterator it_2 = border_reps_2.begin();
for(typename std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it, ++it_2) {
std::vector<Facet_handle> patch;
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it, back_inserter(patch));
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it, CGAL::parameters::face_output_iterator(back_inserter(patch)));
std::vector<Facet_handle> patch_2 = patch;
Facet_handle* output_it =
CGAL::Polygon_mesh_processing::triangulate_hole(poly_2, *it_2, &*patch_2.begin());
CGAL::Polygon_mesh_processing::triangulate_hole(poly_2, *it_2, CGAL::parameters::face_output_iterator(& *patch_2.begin()));
if(patch.size() != (std::size_t)(output_it - &*patch_2.begin())) {
std::cerr << " Error: returned facet output iterator is not valid!" << std::endl;
@ -291,8 +291,8 @@ void test_ouput_iterators_triangulate_and_refine_hole(const std::string file_nam
for(typename std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it, ++it_2) {
std::vector<Facet_handle> patch_facets;
std::vector<Vertex_handle> patch_vertices;
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly,
*it, back_inserter(patch_facets), back_inserter(patch_vertices));
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly, *it,
CGAL::parameters::face_output_iterator(back_inserter(patch_facets)).vertex_output_iterator(back_inserter(patch_vertices)));
// create enough space to hold outputs
std::vector<Facet_handle> patch_facets_2 = patch_facets;
std::vector<Vertex_handle> patch_vertices_2 = patch_vertices;
@ -300,7 +300,7 @@ void test_ouput_iterators_triangulate_and_refine_hole(const std::string file_nam
std::pair<Facet_handle*, Vertex_handle*> output_its =
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly_2,
*it_2, &*patch_facets_2.begin(), &*patch_vertices_2.begin());
*it_2, CGAL::parameters::face_output_iterator(& *patch_facets_2.begin()).vertex_output_iterator(& *patch_vertices_2.begin()));
if(patch_facets.size() != (std::size_t) (output_its.first - &*patch_facets_2.begin())) {
std::cout << " Error: returned facet output iterator is not valid!" << std::endl;
@ -337,22 +337,29 @@ void test_triangulate_refine_and_fair_hole_compile() {
// use all param
read_poly_with_borders("elephant_quad_hole.off", poly, border_reps);
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole
(poly, border_reps[0], back_inserter(patch_facets), back_inserter(patch_vertices),
(poly, border_reps[0],
CGAL::parameters::
face_output_iterator(back_inserter(patch_facets)).
vertex_output_iterator(back_inserter(patch_vertices)).
weight_calculator(CGAL::Weights::Uniform_weight<Polyhedron>()).
sparse_linear_solver(Default_solver()));
// default solver
read_poly_with_borders("elephant_quad_hole.off", poly, border_reps);
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole
(poly, border_reps[0], back_inserter(patch_facets), back_inserter(patch_vertices),
(poly, border_reps[0],
CGAL::parameters::
face_output_iterator(back_inserter(patch_facets)).
vertex_output_iterator(back_inserter(patch_vertices)).
weight_calculator(CGAL::Weights::Uniform_weight<Polyhedron>()));
// default solver and weight
read_poly_with_borders("elephant_quad_hole.off", poly, border_reps);
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole
(poly, border_reps[0], back_inserter(patch_facets), back_inserter(patch_vertices));
(poly, border_reps[0],
CGAL::parameters::
face_output_iterator(back_inserter(patch_facets)).
vertex_output_iterator(back_inserter(patch_vertices)));
}
template <class Polyhedron>

View File

@ -138,8 +138,10 @@ void test_triangulate_hole(const std::string file_name, bool use_cdt) {
for(std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it) {
std::vector<Facet_handle> patch;
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it, back_inserter(patch),
CGAL::parameters::use_2d_constrained_delaunay_triangulation(use_cdt));
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it,
CGAL::parameters::
face_output_iterator(std::back_inserter(patch)).
use_2d_constrained_delaunay_triangulation(use_cdt));
if(patch.empty()) {
std::cerr << " Error: empty patch created." << std::endl;
assert(false);
@ -163,16 +165,17 @@ void test_triangulate_hole_should_be_no_output(const std::string file_name, bool
for(std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it) {
std::vector<Facet_handle> patch;
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it, back_inserter(patch),
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it,
CGAL::parameters::use_delaunay_triangulation(false)
.face_output_iterator(back_inserter(patch))
.use_2d_constrained_delaunay_triangulation(use_cdt));
if(!patch.empty()) {
std::cerr << " Error: patch should be empty" << std::endl;
assert(false);
}
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it, back_inserter(patch),
CGAL::parameters::use_delaunay_triangulation(true));
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it,
CGAL::parameters::use_delaunay_triangulation(true).face_output_iterator(back_inserter(patch)));
if(!patch.empty()) {
std::cerr << " Error: patch should be empty" << std::endl;
assert(false);
@ -193,8 +196,10 @@ void test_triangulate_and_refine_hole(const std::string file_name, bool use_cdt)
std::vector<Facet_handle> patch_facets;
std::vector<Vertex_handle> patch_vertices;
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly, *it,
back_inserter(patch_facets), back_inserter(patch_vertices),
CGAL::parameters::use_2d_constrained_delaunay_triangulation(use_cdt));
CGAL::parameters::
face_output_iterator(std::back_inserter(patch_facets)).
vertex_output_iterator(std::back_inserter(patch_vertices)).
use_2d_constrained_delaunay_triangulation(use_cdt));
if(patch_facets.empty()) {
std::cerr << " Error: empty patch created." << std::endl;
@ -220,9 +225,11 @@ void test_triangulate_refine_and_fair_hole(const std::string file_name, bool use
for(std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it) {
std::vector<Facet_handle> patch_facets;
std::vector<Vertex_handle> patch_vertices;
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole(poly,
*it, back_inserter(patch_facets), back_inserter(patch_vertices),
CGAL::parameters::use_2d_constrained_delaunay_triangulation(use_cdt));
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole(poly, *it,
CGAL::parameters::
face_output_iterator(std::back_inserter(patch_facets)).
vertex_output_iterator(std::back_inserter(patch_vertices)).
use_2d_constrained_delaunay_triangulation(use_cdt));
if(patch_facets.empty()) {
std::cerr << " Error: empty patch created." << std::endl;
@ -251,12 +258,14 @@ void test_ouput_iterators_triangulate_hole(const std::string file_name, bool use
std::vector<Halfedge_handle>::iterator it_2 = border_reps_2.begin();
for(std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it, ++it_2) {
std::vector<Facet_handle> patch;
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it, back_inserter(patch),
CGAL::parameters::use_2d_constrained_delaunay_triangulation(use_cdt));
CGAL::Polygon_mesh_processing::triangulate_hole(poly, *it,
CGAL::parameters::
face_output_iterator(std::back_inserter(patch)).
use_2d_constrained_delaunay_triangulation(use_cdt));
std::vector<Facet_handle> patch_2 = patch;
Facet_handle* output_it =
CGAL::Polygon_mesh_processing::triangulate_hole(poly_2, *it_2, &*patch_2.begin());
CGAL::Polygon_mesh_processing::triangulate_hole(poly_2, *it_2, CGAL::parameters::face_output_iterator(& *patch_2.begin()));
if(patch.size() != (std::size_t)(output_it - &*patch_2.begin())) {
std::cerr << " Error: returned facet output iterator is not valid!" << std::endl;
@ -282,18 +291,22 @@ void test_ouput_iterators_triangulate_and_refine_hole(const std::string file_nam
for(std::vector<Halfedge_handle>::iterator it = border_reps.begin(); it != border_reps.end(); ++it, ++it_2) {
std::vector<Facet_handle> patch_facets;
std::vector<Vertex_handle> patch_vertices;
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly,
*it, back_inserter(patch_facets), back_inserter(patch_vertices),
CGAL::parameters::use_2d_constrained_delaunay_triangulation(use_cdt));
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly, *it,
CGAL::parameters::
face_output_iterator(std::back_inserter(patch_facets)).
vertex_output_iterator(std::back_inserter(patch_vertices)).
use_2d_constrained_delaunay_triangulation(use_cdt));
// create enough space to hold outputs
std::vector<Facet_handle> patch_facets_2 = patch_facets;
std::vector<Vertex_handle> patch_vertices_2 = patch_vertices;
if(patch_vertices_2.empty()) { patch_vertices_2.push_back(Vertex_handle()); } //just allocate space for dereferencing
std::pair<Facet_handle*, Vertex_handle*> output_its =
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly_2,
*it_2, &*patch_facets_2.begin(), &*patch_vertices_2.begin(),
CGAL::parameters::use_2d_constrained_delaunay_triangulation(use_cdt));
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly_2, *it_2,
CGAL::parameters::
face_output_iterator(&*patch_facets_2.begin()).
vertex_output_iterator(&*patch_vertices_2.begin()).
use_2d_constrained_delaunay_triangulation(use_cdt));
if(patch_facets.size() != (std::size_t) (output_its.first - &*patch_facets_2.begin())) {
std::cout << " Error: returned facet output iterator is not valid!" << std::endl;
@ -327,23 +340,30 @@ void test_triangulate_refine_and_fair_hole_compile() {
// use all param
read_poly_with_borders("elephant_quad_hole.off", poly, border_reps);
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole
(poly, border_reps[0], back_inserter(patch_facets), back_inserter(patch_vertices),
CGAL::parameters::
weight_calculator(CGAL::Weights::Uniform_weight<Polyhedron>()).
sparse_linear_solver(Default_solver()).
use_2d_constrained_delaunay_triangulation(false));
(poly, border_reps[0],
CGAL::parameters::
face_output_iterator(back_inserter(patch_facets)).
vertex_output_iterator(back_inserter(patch_vertices)).
weight_calculator(CGAL::Weights::Uniform_weight<Polyhedron>()).
sparse_linear_solver(Default_solver()).
use_2d_constrained_delaunay_triangulation(false));
// default solver
read_poly_with_borders("elephant_quad_hole.off", poly, border_reps);
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole
(poly, border_reps[0], back_inserter(patch_facets), back_inserter(patch_vertices),
CGAL::parameters::
weight_calculator(CGAL::Weights::Uniform_weight<Polyhedron>()));
(poly, border_reps[0],
CGAL::parameters::
face_output_iterator(back_inserter(patch_facets)).
vertex_output_iterator(back_inserter(patch_vertices)).
weight_calculator(CGAL::Weights::Uniform_weight<Polyhedron>()));
// default solver and weight
read_poly_with_borders("elephant_quad_hole.off", poly, border_reps);
CGAL::Polygon_mesh_processing::triangulate_refine_and_fair_hole
(poly, border_reps[0], back_inserter(patch_facets), back_inserter(patch_vertices));
(poly, border_reps[0],
CGAL::parameters::
face_output_iterator(back_inserter(patch_facets)).
vertex_output_iterator(back_inserter(patch_vertices)));
}
void generate_elephant_with_hole()

View File

@ -86,9 +86,9 @@ void test_triangulate_hole_with_cdt_2(
CGAL::Polygon_mesh_processing::triangulate_hole(
pmesh,
h,
std::back_inserter(patch_faces),
CGAL::parameters::vertex_point_map(
get(CGAL::vertex_point, pmesh)).
CGAL::parameters::
face_output_iterator(std::back_inserter(patch_faces)).
vertex_point_map(get(CGAL::vertex_point, pmesh)).
use_2d_constrained_delaunay_triangulation(true).
geom_traits(GeomTraits()));

View File

@ -701,9 +701,10 @@ bool Polyhedron_demo_hole_filling_plugin::fill
CGAL::Timer timer; timer.start();
std::vector<fg_face_descriptor> patch;
if(action_index == 0) {
CGAL::Polygon_mesh_processing::triangulate_hole(poly,
it, std::back_inserter(patch),
CGAL::parameters::use_delaunay_triangulation(use_DT));
CGAL::Polygon_mesh_processing::triangulate_hole(poly, it,
CGAL::parameters::
face_output_iterator(std::back_inserter(patch)).
use_delaunay_triangulation(use_DT));
}
else if(action_index == 1) {
CGAL::Polygon_mesh_processing::triangulate_and_refine_hole(poly, it,