remove some Point_set_processing specific helper classes

This commit is contained in:
Sébastien Loriot 2022-01-06 18:53:46 +01:00
parent d1047a7560
commit 821e7b79a2
16 changed files with 53 additions and 114 deletions

View File

@ -355,7 +355,7 @@ CGAL_DEF_GET_INITIALIZED_INDEX_MAP(face, typename boost::graph_traits<Graph>::fa
friend void put(const DummyNormalMap&, const key_type&, const value_type&) { } friend void put(const DummyNormalMap&, const key_type&, const value_type&) { }
}; };
typedef DummyNormalMap NoMap; typedef DummyNormalMap NoMap; // public
typedef typename internal_np::Lookup_named_param_def< typedef typename internal_np::Lookup_named_param_def<
internal_np::normal_t, internal_np::normal_t,
NamedParameters, NamedParameters,
@ -367,6 +367,11 @@ CGAL_DEF_GET_INITIALIZED_INDEX_MAP(face, typename boost::graph_traits<Graph>::fa
return parameters::choose_parameter<Point_map>(parameters::get_parameter(np, internal_np::point_map)); return parameters::choose_parameter<Point_map>(parameters::get_parameter(np, internal_np::point_map));
} }
static Point_map get_point_map(const NamedParameters& np)
{
return parameters::choose_parameter<Point_map>(parameters::get_parameter(np, internal_np::point_map));
}
static Const_point_map get_const_point_map(const PointRange&, const NamedParameters& np) static Const_point_map get_const_point_map(const PointRange&, const NamedParameters& np)
{ {
return parameters::choose_parameter<Const_point_map>(parameters::get_parameter(np, internal_np::point_map)); return parameters::choose_parameter<Const_point_map>(parameters::get_parameter(np, internal_np::point_map));
@ -377,6 +382,11 @@ CGAL_DEF_GET_INITIALIZED_INDEX_MAP(face, typename boost::graph_traits<Graph>::fa
return parameters::choose_parameter<Normal_map>(parameters::get_parameter(np, internal_np::normal_map)); return parameters::choose_parameter<Normal_map>(parameters::get_parameter(np, internal_np::normal_map));
} }
static Normal_map get_normal_map(const NamedParameters& np)
{
return parameters::choose_parameter<Normal_map>(parameters::get_parameter(np, internal_np::normal_map));
}
static Geom_traits get_geom_traits(const PointRange&, const NamedParameters& np) static Geom_traits get_geom_traits(const PointRange&, const NamedParameters& np)
{ {
return parameters::choose_parameter<Geom_traits>(parameters::get_parameter(np, internal_np::geom_traits)); return parameters::choose_parameter<Geom_traits>(parameters::get_parameter(np, internal_np::geom_traits));
@ -397,67 +407,6 @@ CGAL_DEF_GET_INITIALIZED_INDEX_MAP(face, typename boost::graph_traits<Graph>::fa
}; };
}; };
namespace parameters
{
template <typename PointRange>
CGAL::parameters::Default_named_parameters
inline all_default(const PointRange&)
{
return CGAL::parameters::all_default();
}
}
template<typename PointRange>
class GetFT
{
public:
typedef typename Kernel_traits<
typename std::iterator_traits<
typename PointRange::iterator
>::value_type
>::Kernel::FT type;
};
template<typename PointRange, typename NamedParameters>
class GetK
{
typedef typename GetPointMap<PointRange, NamedParameters>::type Vpm;
typedef typename Kernel_traits<
typename boost::property_traits<Vpm>::value_type
>::Kernel Default_kernel;
public:
typedef typename internal_np::Lookup_named_param_def <
internal_np::geom_traits_t,
NamedParameters,
Default_kernel
> ::type Kernel;
};
template<typename PointRange, typename NamedParameters>
class GetNormalMap
{
struct DummyNormalMap
{
typedef typename std::iterator_traits<typename PointRange::iterator>::value_type key_type;
typedef typename GetK<PointRange, NamedParameters>::Kernel::Vector_3 value_type;
typedef value_type reference;
typedef boost::read_write_property_map_tag category;
typedef DummyNormalMap Self;
friend value_type get(const Self&, const key_type&) { return CGAL::NULL_VECTOR; }
friend void put(const Self&, const key_type&, const value_type&) { }
};
public:
typedef DummyNormalMap NoMap;
typedef typename internal_np::Lookup_named_param_def <
internal_np::normal_t,
NamedParameters,
DummyNormalMap//default
> ::type type;
};
template<typename PlaneRange, typename NamedParameters> template<typename PlaneRange, typename NamedParameters>
class GetPlaneMap class GetPlaneMap
{ {

View File

@ -92,16 +92,16 @@ bool read_OFF(std::istream& is,
typedef Point_set_processing_3::Fake_point_range<OutputIteratorValueType> PointRange; typedef Point_set_processing_3::Fake_point_range<OutputIteratorValueType> PointRange;
// basic geometric types // basic geometric types
typedef typename CGAL::GetPointMap<PointRange, CGAL_BGL_NP_CLASS>::type PointMap; typedef Point_set_processing_3_np_helper<PointRange, CGAL_BGL_NP_CLASS> NP_helper;
typedef typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::type NormalMap; typedef typename NP_helper::Point_map PointMap;
typedef typename Point_set_processing_3::GetK<PointRange, CGAL_BGL_NP_CLASS>::Kernel Kernel; typedef typename NP_helper::Normal_map NormalMap;
typedef typename NP_helper::Geom_traits Kernel;
typedef typename Kernel::FT FT; typedef typename Kernel::FT FT;
bool has_normals = !(boost::is_same<NormalMap, bool has_normals = !(boost::is_same<NormalMap, typename NP_helper::NoMap>::value);
typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::NoMap>::value);
PointMap point_map = choose_parameter<PointMap>(get_parameter(np, internal_np::point_map)); PointMap point_map = NP_helper::get_point_map(np);
NormalMap normal_map = choose_parameter<NormalMap>(get_parameter(np, internal_np::normal_map)); NormalMap normal_map = NP_helper::get_normal_map(np);
// value_type_traits is a workaround as back_insert_iterator's value_type is void // value_type_traits is a workaround as back_insert_iterator's value_type is void
// typedef typename value_type_traits<OutputIterator>::type Enriched_point; // typedef typename value_type_traits<OutputIterator>::type Enriched_point;

View File

@ -254,14 +254,14 @@ bool read_PLY(std::istream& is,
typedef Point_set_processing_3::Fake_point_range<OutputIteratorValueType> PointRange; typedef Point_set_processing_3::Fake_point_range<OutputIteratorValueType> PointRange;
// basic geometric types // basic geometric types
typedef typename CGAL::GetPointMap<PointRange, CGAL_BGL_NP_CLASS>::type PointMap; typedef Point_set_processing_3_np_helper<PointRange, CGAL_BGL_NP_CLASS> NP_helper;
typedef typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::type NormalMap; typedef typename NP_helper::Point_map PointMap;
typedef typename NP_helper::Normal_map NormalMap;
bool has_normals = !(boost::is_same<NormalMap, bool has_normals = !(boost::is_same<NormalMap, typename NP_helper::NoMap>::value);
typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::NoMap>::value);
PointMap point_map = choose_parameter<PointMap>(get_parameter(np, internal_np::point_map)); PointMap point_map = NP_helper::get_point_map(np);
NormalMap normal_map = choose_parameter<NormalMap>(get_parameter(np, internal_np::normal_map)); NormalMap normal_map = NP_helper::get_normal_map(np);
if(has_normals) if(has_normals)
return read_PLY_with_properties(is, output, return read_PLY_with_properties(is, output,

View File

@ -85,15 +85,15 @@ bool read_XYZ(std::istream& is,
typedef Point_set_processing_3::Fake_point_range<OutputIteratorValueType> PointRange; typedef Point_set_processing_3::Fake_point_range<OutputIteratorValueType> PointRange;
// basic geometric types // basic geometric types
typedef typename CGAL::GetPointMap<PointRange, CGAL_BGL_NP_CLASS>::type PointMap; typedef Point_set_processing_3_np_helper<PointRange, CGAL_BGL_NP_CLASS> NP_helper;
typedef typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::type NormalMap; typedef typename NP_helper::Point_map PointMap;
typedef typename Point_set_processing_3::GetK<PointRange, CGAL_BGL_NP_CLASS>::Kernel Kernel; typedef typename NP_helper::Normal_map NormalMap;
typedef typename NP_helper::Geom_traits Kernel;
bool has_normals = !(boost::is_same<NormalMap, bool has_normals = !(boost::is_same<NormalMap, typename NP_helper::NoMap>::value);
typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::NoMap>::value);
PointMap point_map = choose_parameter<PointMap>(get_parameter(np, internal_np::point_map)); PointMap point_map = NP_helper::get_point_map(np);
NormalMap normal_map = choose_parameter<NormalMap>(get_parameter(np, internal_np::normal_map)); NormalMap normal_map = NP_helper::get_normal_map(np);
// value_type_traits is a workaround as back_insert_iterator's value_type is void // value_type_traits is a workaround as back_insert_iterator's value_type is void
//typedef typename value_type_traits<OutputIterator>::type Enriched_point; //typedef typename value_type_traits<OutputIterator>::type Enriched_point;

View File

@ -44,13 +44,14 @@ bool write_OFF_PSP(std::ostream& os,
using CGAL::parameters::is_default_parameter; using CGAL::parameters::is_default_parameter;
// basic geometric types // basic geometric types
typedef typename CGAL::GetPointMap<PointRange, CGAL_BGL_NP_CLASS>::type PointMap; typedef Point_set_processing_3_np_helper<PointRange, CGAL_BGL_NP_CLASS> NP_helper;
typedef typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::type NormalMap; typedef typename NP_helper::Const_point_map PointMap;
typedef typename NP_helper::Normal_map NormalMap;
const bool has_normals = !(is_default_parameter(get_parameter(np, internal_np::normal_map))); const bool has_normals = !(is_default_parameter(get_parameter(np, internal_np::normal_map)));
PointMap point_map = choose_parameter<PointMap>(get_parameter(np, internal_np::point_map)); PointMap point_map = NP_helper::get_const_point_map(points, np);
NormalMap normal_map = choose_parameter<NormalMap>(get_parameter(np, internal_np::normal_map)); NormalMap normal_map = NP_helper::get_normal_map(points, np);
CGAL_point_set_processing_precondition(points.begin() != points.end()); CGAL_point_set_processing_precondition(points.begin() != points.end());

View File

@ -201,8 +201,7 @@ bool write_PLY(std::ostream& os,
typedef typename NP_helper::Const_point_map PointMap; typedef typename NP_helper::Const_point_map PointMap;
typedef typename NP_helper::Normal_map NormalMap; typedef typename NP_helper::Normal_map NormalMap;
bool has_normals = !(boost::is_same<NormalMap, bool has_normals = !(boost::is_same<NormalMap, typename NP_helper::NoMap>::value);
typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::NoMap>::value);
PointMap point_map = NP_helper::get_const_point_map(points, np); PointMap point_map = NP_helper::get_const_point_map(points, np);
NormalMap normal_map = NP_helper::get_normal_map(points, np); NormalMap normal_map = NP_helper::get_normal_map(points, np);

View File

@ -43,15 +43,14 @@ bool write_XYZ_PSP(std::ostream& os,
using CGAL::parameters::get_parameter; using CGAL::parameters::get_parameter;
// basic geometric types // basic geometric types
typedef typename CGAL::GetPointMap<PointRange, CGAL_BGL_NP_CLASS>::type PointMap; typedef Point_set_processing_3_np_helper<PointRange, CGAL_BGL_NP_CLASS> NP_helper;
typedef typename Point_set_processing_3::GetNormalMap<PointRange, CGAL_BGL_NP_CLASS>::type NormalMap; typedef typename NP_helper::Const_point_map PointMap;
typedef typename NP_helper::Normal_map NormalMap;
bool has_normals = !(std::is_same<NormalMap, bool has_normals = !(boost::is_same<NormalMap, typename NP_helper::NoMap>::value);
typename Point_set_processing_3::GetNormalMap<
PointRange, CGAL_BGL_NP_CLASS>::NoMap>::value);
PointMap point_map = choose_parameter<PointMap>(get_parameter(np, internal_np::point_map)); PointMap point_map = NP_helper::get_const_point_map(points, np);
NormalMap normal_map = choose_parameter<NormalMap>(get_parameter(np, internal_np::normal_map)); NormalMap normal_map = NP_helper::get_normal_map(points, np);
CGAL_point_set_processing_precondition(points.begin() != points.end()); CGAL_point_set_processing_precondition(points.begin() != points.end());

View File

@ -278,8 +278,7 @@ bilateral_smooth_point_set(
typedef typename Kernel::Point_3 Point_3; typedef typename Kernel::Point_3 Point_3;
typedef typename Kernel::Vector_3 Vector_3; typedef typename Kernel::Vector_3 Vector_3;
CGAL_static_assertion_msg(!(boost::is_same<NormalMap, CGAL_static_assertion_msg(!(boost::is_same<NormalMap, typename NP_helper::NoMap>::value),
typename Point_set_processing_3::GetNormalMap<PointRange, NamedParameters>::NoMap>::value),
"Error: no normal map"); "Error: no normal map");
typedef typename Kernel::FT FT; typedef typename Kernel::FT FT;

View File

@ -367,8 +367,7 @@ edge_aware_upsample_point_set(
typedef typename NP_helper::Geom_traits Kernel; typedef typename NP_helper::Geom_traits Kernel;
CGAL_static_assertion_msg(!(boost::is_same<NormalMap, CGAL_static_assertion_msg(!(boost::is_same<NormalMap, typename NP_helper::NoMap>::value),
typename Point_set_processing_3::GetNormalMap<PointRange, NamedParameters>::NoMap>::value),
"Error: no normal map"); "Error: no normal map");
typedef typename Kernel::Point_3 Point; typedef typename Kernel::Point_3 Point;

View File

@ -196,8 +196,7 @@ jet_estimate_normals(
typedef typename Kernel::FT FT; typedef typename Kernel::FT FT;
typedef typename GetSvdTraits<NamedParameters>::type SvdTraits; typedef typename GetSvdTraits<NamedParameters>::type SvdTraits;
CGAL_static_assertion_msg(!(boost::is_same<NormalMap, CGAL_static_assertion_msg(!(boost::is_same<NormalMap, typename NP_helper::NoMap>::value),
typename Point_set_processing_3::GetNormalMap<PointRange, NamedParameters>::NoMap>::value),
"Error: no normal map"); "Error: no normal map");
CGAL_static_assertion_msg(!(boost::is_same<SvdTraits, CGAL_static_assertion_msg(!(boost::is_same<SvdTraits,
typename GetSvdTraits<NamedParameters>::NoTraits>::value), typename GetSvdTraits<NamedParameters>::NoTraits>::value),

View File

@ -617,8 +617,7 @@ mst_orient_normals(
typedef typename NP_helper::Geom_traits Kernel; typedef typename NP_helper::Geom_traits Kernel;
typedef typename Point_set_processing_3::GetIsConstrainedMap<PointRange, NamedParameters>::type ConstrainedMap; typedef typename Point_set_processing_3::GetIsConstrainedMap<PointRange, NamedParameters>::type ConstrainedMap;
CGAL_static_assertion_msg(!(boost::is_same<NormalMap, CGAL_static_assertion_msg(!(boost::is_same<NormalMap, typename NP_helper::NoMap>::value),
typename Point_set_processing_3::GetNormalMap<PointRange, NamedParameters>::NoMap>::value),
"Error: no normal map"); "Error: no normal map");
PointMap point_map = NP_helper::get_point_map(points, np); PointMap point_map = NP_helper::get_point_map(points, np);

View File

@ -168,8 +168,7 @@ pca_estimate_normals(
typedef typename NP_helper::Geom_traits Kernel; typedef typename NP_helper::Geom_traits Kernel;
typedef typename Kernel::FT FT; typedef typename Kernel::FT FT;
CGAL_static_assertion_msg(!(boost::is_same<NormalMap, CGAL_static_assertion_msg(!(boost::is_same<NormalMap, typename NP_helper::NoMap>::value),
typename Point_set_processing_3::GetNormalMap<PointRange, NamedParameters>::NoMap>::value),
"Error: no normal map"); "Error: no normal map");
PointMap point_map = NP_helper::get_point_map(points, np); PointMap point_map = NP_helper::get_point_map(points, np);

View File

@ -478,9 +478,7 @@ void scanline_orient_normals (PointRange& points, const NamedParameters& np = pa
<internal_np::scanline_id_t, NamedParameters, No_map>::type; <internal_np::scanline_id_t, NamedParameters, No_map>::type;
using Fallback_scanline_ID = Boolean_tag<std::is_same<ScanlineIDMap, No_map>::value>; using Fallback_scanline_ID = Boolean_tag<std::is_same<ScanlineIDMap, No_map>::value>;
CGAL_static_assertion_msg(!(std::is_same<NormalMap, CGAL_static_assertion_msg(!(std::is_same<NormalMap, typename NP_helper::NoMap>::value),
typename Point_set_processing_3::GetNormalMap
<PointRange, NamedParameters>::NoMap>::value),
"Error: no normal map"); "Error: no normal map");
PointMap point_map = NP_helper::get_point_map(points, np); PointMap point_map = NP_helper::get_point_map(points, np);

View File

@ -233,8 +233,7 @@ public:
typedef typename Point_set_processing_3::GetPlaneMap<PlaneRange, NamedParameters>::type PlaneMap; typedef typename Point_set_processing_3::GetPlaneMap<PlaneRange, NamedParameters>::type PlaneMap;
typedef typename Point_set_processing_3::GetPlaneIndexMap<NamedParameters>::type PlaneIndexMap; typedef typename Point_set_processing_3::GetPlaneIndexMap<NamedParameters>::type PlaneIndexMap;
CGAL_static_assertion_msg(!(boost::is_same<NormalMap, CGAL_static_assertion_msg(!(boost::is_same<NormalMap, typename NP_helper::NoMap>::value),
typename Point_set_processing_3::GetNormalMap<PointRange, NamedParameters>::NoMap>::value),
"Error: no normal map"); "Error: no normal map");
CGAL_static_assertion_msg(!(boost::is_same<PlaneIndexMap, CGAL_static_assertion_msg(!(boost::is_same<PlaneIndexMap,
typename Point_set_processing_3::GetPlaneIndexMap<NamedParameters>::NoMap>::value), typename Point_set_processing_3::GetPlaneIndexMap<NamedParameters>::NoMap>::value),

View File

@ -321,8 +321,7 @@ vcm_estimate_normals_internal (PointRange& points,
typedef typename NP_helper::Geom_traits Kernel; typedef typename NP_helper::Geom_traits Kernel;
typedef typename GetDiagonalizeTraits<NamedParameters, double, 3>::type DiagonalizeTraits; typedef typename GetDiagonalizeTraits<NamedParameters, double, 3>::type DiagonalizeTraits;
CGAL_static_assertion_msg(!(boost::is_same<NormalMap, CGAL_static_assertion_msg(!(boost::is_same<NormalMap, typename NP_helper::NoMap>::value),
typename Point_set_processing_3::GetNormalMap<PointRange, NamedParameters>::NoMap>::value),
"Error: no normal map"); "Error: no normal map");
PointMap point_map = NP_helper::get_point_map(points, np); PointMap point_map = NP_helper::get_point_map(points, np);

View File

@ -45,7 +45,7 @@ void simplify_polyline(const PointRangeIn& input,
typedef typename GetPointMap<PointRangeIn, NamedParametersIn>::type Point_map_in; typedef typename GetPointMap<PointRangeIn, NamedParametersIn>::type Point_map_in;
typedef typename GetPointMap<PointRangeOut, NamedParametersOut>::type Point_map_out; typedef typename GetPointMap<PointRangeOut, NamedParametersOut>::type Point_map_out;
typedef typename Point_set_processing_3::GetK<PointRangeIn, NamedParametersIn>::Kernel Kernel; typedef typename Point_set_processing_3_np_helper<PointRangeIn, NamedParametersIn>::Geom_traits Kernel;
Point_map_in in_pm = choose_parameter<Point_map_in>(get_parameter(np_in, internal_np::point_map)); Point_map_in in_pm = choose_parameter<Point_map_in>(get_parameter(np_in, internal_np::point_map));
Point_map_out out_pm = choose_parameter<Point_map_out>(get_parameter(np_out, internal_np::point_map)); Point_map_out out_pm = choose_parameter<Point_map_out>(get_parameter(np_out, internal_np::point_map));