From 4d4eef94a40cdbe1371bce570a96f3f34d723fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mael=20Rouxel-Labb=C3=A9?= Date: Mon, 28 Sep 2020 15:44:29 +0200 Subject: [PATCH] Enable different VPMs in PMP::clip --- .../CGAL/Polygon_mesh_processing/clip.h | 20 ++++++++++++------- .../Generic_clip_output_builder.h | 15 +++++++------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/clip.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/clip.h index ae94faba8e2..311528101f8 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/clip.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/clip.h @@ -33,7 +33,14 @@ #include +#include +#include +#include +#include +#include #include +#include +#include namespace CGAL{ namespace Polygon_mesh_processing { @@ -420,10 +427,9 @@ generic_clip_impl( NamedParameters1>::type Vpm; typedef typename GetVertexPointMap::type Vpm2; - CGAL_USE_TYPE(Vpm2); - CGAL_assertion_code( - static const bool same_vpm = (boost::is_same::value); ) - CGAL_static_assertion(same_vpm); + + CGAL_static_assertion((std::is_same::value_type, + typename boost::property_traits::value_type>::value)); Vpm vpm1 = choose_parameter(get_parameter(np1, internal_np::vertex_point), get_property_map(boost::vertex_point, tm1)); @@ -477,17 +483,17 @@ generic_clip_impl( // surface intersection algorithm call typedef Corefinement::Generic_clip_output_builder Ob; typedef Corefinement::Surface_intersection_visitor_for_corefinement< - TriangleMesh, Vpm, Ob, Ecm_in, User_visitor> Algo_visitor; + TriangleMesh, Vpm, Vpm2, Ob, Ecm_in, User_visitor> Algo_visitor; Ecm_in ecm_in(tm1,tm2,ecm1,ecm2); Ob ob(tm1, tm2, vpm1, vpm2, algo_ecm1, fid_map1, use_compact_clipper); - Corefinement::Intersection_of_triangle_meshes + Corefinement::Intersection_of_triangle_meshes functor(tm1, tm2, vpm1, vpm2, Algo_visitor(uv,ob,ecm_in,&tm2)); functor(CGAL::Emptyset_iterator(), false, true); } diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/Generic_clip_output_builder.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/Generic_clip_output_builder.h index bcc8e75469d..d84788ff868 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/Generic_clip_output_builder.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/internal/Corefinement/Generic_clip_output_builder.h @@ -38,7 +38,8 @@ namespace PMP=Polygon_mesh_processing; namespace params=PMP::parameters; template @@ -48,7 +49,7 @@ class Generic_clip_output_builder typedef typename Default::Get< Kernel_, typename Kernel_traits< - typename boost::property_traits::value_type + typename boost::property_traits::value_type >::Kernel >::type Kernel; // graph_traits typedefs @@ -76,8 +77,8 @@ class Generic_clip_output_builder //Data members TriangleMesh &tm1, &tm2; // property maps of input meshes - const VertexPointMap vpm1; - const VertexPointMap vpm2; + const VertexPointMap1 vpm1; + const VertexPointMap2 vpm2; Ecm1 ecm1; FaceIdMap1 fids1; bool use_compact_clipper; @@ -105,8 +106,8 @@ public: Generic_clip_output_builder(TriangleMesh& tm1, TriangleMesh& tm2, - const VertexPointMap vpm1, - const VertexPointMap vpm2, + const VertexPointMap1 vpm1, + const VertexPointMap2 vpm2, const Ecm1& ecm1, FaceIdMap1 fids1, bool use_compact_clipper) @@ -167,7 +168,7 @@ public: typedef Side_of_triangle_mesh Inside_poly_test; + VertexPointMap2> Inside_poly_test; CGAL::Bounded_side in_tm2 = is_tm2_inside_out ? ON_UNBOUNDED_SIDE : ON_BOUNDED_SIDE;