mirror of https://github.com/CGAL/cgal
Update API with review (remove PLY/LAS namespaces)
This commit is contained in:
parent
ab2524450e
commit
61f1276a07
|
|
@ -42,11 +42,8 @@
|
|||
namespace CGAL {
|
||||
|
||||
|
||||
namespace LAS
|
||||
{
|
||||
|
||||
/// \cond SKIP_IN_MANUAL
|
||||
namespace Property
|
||||
namespace LAS_property
|
||||
{
|
||||
|
||||
struct X { typedef double type; };
|
||||
|
|
@ -79,7 +76,7 @@ namespace LAS
|
|||
|
||||
Generates a %LAS property handler to read 3D points. Points are
|
||||
constructed from the input the using 3 %LAS properties
|
||||
`LAS::Property::X`, `LAS::Property::Y` and `LAS::Property::Z`.
|
||||
`LAS_property::X`, `LAS_property::Y` and `LAS_property::Z`.
|
||||
|
||||
\sa `read_las_points_with_properties()`
|
||||
|
||||
|
|
@ -88,58 +85,60 @@ namespace LAS
|
|||
template <typename PointMap>
|
||||
cpp11::tuple<PointMap,
|
||||
typename Kernel_traits<typename PointMap::value_type>::Kernel::Construct_point_3,
|
||||
Property::X, Property::Y, Property::Z >
|
||||
make_point_reader(PointMap point_map)
|
||||
LAS_property::X, LAS_property::Y, LAS_property::Z >
|
||||
make_las_point_reader(PointMap point_map)
|
||||
{
|
||||
return cpp11::make_tuple (point_map, typename Kernel_traits<typename PointMap::value_type>::Kernel::Construct_point_3(),
|
||||
Property::X(), Property::Y(), Property::Z());
|
||||
LAS_property::X(), LAS_property::Y(), LAS_property::Z());
|
||||
}
|
||||
|
||||
/// \cond SKIP_IN_MANUAL
|
||||
|
||||
namespace internal {
|
||||
|
||||
void get_value(const LASpoint& r, double& v, LAS::Property::X&)
|
||||
namespace LAS {
|
||||
|
||||
void get_value(const LASpoint& r, double& v, LAS_property::X&)
|
||||
{ v = r.get_x(); }
|
||||
void get_value(const LASpoint& r, double& v, LAS::Property::Y&)
|
||||
void get_value(const LASpoint& r, double& v, LAS_property::Y&)
|
||||
{ v = r.get_y(); }
|
||||
void get_value(const LASpoint& r, double& v, LAS::Property::Z&)
|
||||
void get_value(const LASpoint& r, double& v, LAS_property::Z&)
|
||||
{ v = r.get_z(); }
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS::Property::Intensity&)
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS_property::Intensity&)
|
||||
{ v = r.get_intensity(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::Return_number&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::Return_number&)
|
||||
{ v = r.get_return_number(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::Number_of_returns&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::Number_of_returns&)
|
||||
{ v = r.get_number_of_returns(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::Scan_direction_flag&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::Scan_direction_flag&)
|
||||
{ v = r.get_scan_direction_flag(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::Edge_of_flight_line&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::Edge_of_flight_line&)
|
||||
{ v = r.get_edge_of_flight_line(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::Classification&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::Classification&)
|
||||
{ v = r.get_classification(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::Synthetic_flag&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::Synthetic_flag&)
|
||||
{ v = r.get_synthetic_flag(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::Keypoint_flag&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::Keypoint_flag&)
|
||||
{ v = r.get_keypoint_flag(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::Withheld_flag&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::Withheld_flag&)
|
||||
{ v = r.get_withheld_flag(); }
|
||||
void get_value(const LASpoint& r, float& v, LAS::Property::Scan_angle&)
|
||||
void get_value(const LASpoint& r, float& v, LAS_property::Scan_angle&)
|
||||
{ v = r.get_scan_angle(); }
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS::Property::User_data&)
|
||||
void get_value(const LASpoint& r, unsigned char& v, LAS_property::User_data&)
|
||||
{ v = r.get_user_data(); }
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS::Property::Point_source_ID&)
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS_property::Point_source_ID&)
|
||||
{ v = r.get_point_source_ID(); }
|
||||
void get_value(const LASpoint& r, unsigned int& v, LAS::Property::Deleted_flag&)
|
||||
void get_value(const LASpoint& r, unsigned int& v, LAS_property::Deleted_flag&)
|
||||
{ v = r.get_deleted_flag(); }
|
||||
void get_value(const LASpoint& r, double& v, LAS::Property::GPS_time&)
|
||||
void get_value(const LASpoint& r, double& v, LAS_property::GPS_time&)
|
||||
{ v = r.get_gps_time(); }
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS::Property::R&)
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS_property::R&)
|
||||
{ v = r.get_R(); }
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS::Property::G&)
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS_property::G&)
|
||||
{ v = r.get_G(); }
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS::Property::B&)
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS_property::B&)
|
||||
{ v = r.get_B(); }
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS::Property::I&)
|
||||
void get_value(const LASpoint& r, unsigned short& v, LAS_property::I&)
|
||||
{ v = r.get_I(); }
|
||||
|
||||
|
||||
|
|
@ -254,12 +253,13 @@ namespace internal {
|
|||
process_properties (reader, new_element, next, properties...);
|
||||
}
|
||||
|
||||
} // namespace LAS
|
||||
|
||||
} // namespace internal
|
||||
|
||||
|
||||
/// \endcond
|
||||
|
||||
}
|
||||
|
||||
//===================================================================================
|
||||
/// \ingroup PkgPointSetProcessing
|
||||
|
|
@ -270,45 +270,45 @@ namespace internal {
|
|||
/// Properties are handled through a variadic list of property
|
||||
/// handlers. A `PropertyHandler` can either be:
|
||||
///
|
||||
/// - A `std::pair<PropertyMap, LAS::Property::Tag >` if the user wants to
|
||||
/// read a %LAS property as a scalar value `LAS::Property::Tag::type` (for
|
||||
/// - A `std::pair<PropertyMap, LAS_property::Tag >` if the user wants to
|
||||
/// read a %LAS property as a scalar value `LAS_property::Tag::type` (for
|
||||
/// example, storing an `int` %LAS property into an `int` variable).
|
||||
///
|
||||
/// - A `CGAL::cpp11::tuple<PropertyMap, Constructor,
|
||||
/// LAS::Property::Tag...>` if the user wants to use one or several
|
||||
/// LAS_property::Tag...>` if the user wants to use one or several
|
||||
/// %LAS properties to construct a complex object (for example,
|
||||
/// storing 4 `unsigned short` %LAS properties into a %Color object
|
||||
/// that can for example be a `CGAL::cpp11::array<unsigned short,
|
||||
/// 4>`). In that case, the second element of the tuple should be a
|
||||
/// functor that constructs the value type of `PropertyMap` from N
|
||||
/// objects of of type `LAS::Property::Tag::type`.
|
||||
/// objects of of type `LAS_property::Tag::type`.
|
||||
///
|
||||
/// The %LAS standard defines a fixed set of properties accessible
|
||||
/// through the following tag classes:
|
||||
///
|
||||
/// - `LAS::Property::X` with type `double`
|
||||
/// - `LAS::Property::Y` with type `double`
|
||||
/// - `LAS::Property::Z` with type `double`
|
||||
/// - `LAS::Property::Intensity` with type `unsigned short`
|
||||
/// - `LAS::Property::Return_number` with type `unsigned char`
|
||||
/// - `LAS::Property::Number_of_returns` with type `unsigned char`
|
||||
/// - `LAS::Property::Scan_direction_flag` with type `unsigned char`
|
||||
/// - `LAS::Property::Edge_of_flight_line` with type `unsigned char`
|
||||
/// - `LAS::Property::Classification` with type `unsigned char`
|
||||
/// - `LAS::Property::Synthetic_flag` with type `unsigned char`
|
||||
/// - `LAS::Property::Keypoint_flag` with type `unsigned char`
|
||||
/// - `LAS::Property::Withheld_flag` with type `unsigned char`
|
||||
/// - `LAS::Property::Scan_angle` with type `double`
|
||||
/// - `LAS::Property::User_data` with type `unsigned char`
|
||||
/// - `LAS::Property::Point_source_ID` with type `unsigned short`
|
||||
/// - `LAS::Property::Deleted_flag` with type `unsigned int`
|
||||
/// - `LAS::Property::GPS_time` with type `double`
|
||||
/// - `LAS::Property::R` with type `unsigned short`
|
||||
/// - `LAS::Property::G` with type `unsigned short`
|
||||
/// - `LAS::Property::B` with type `unsigned short`
|
||||
/// - `LAS::Property::I` with type `unsigned short`
|
||||
/// - `LAS_property::X` with type `double`
|
||||
/// - `LAS_property::Y` with type `double`
|
||||
/// - `LAS_property::Z` with type `double`
|
||||
/// - `LAS_property::Intensity` with type `unsigned short`
|
||||
/// - `LAS_property::Return_number` with type `unsigned char`
|
||||
/// - `LAS_property::Number_of_returns` with type `unsigned char`
|
||||
/// - `LAS_property::Scan_direction_flag` with type `unsigned char`
|
||||
/// - `LAS_property::Edge_of_flight_line` with type `unsigned char`
|
||||
/// - `LAS_property::Classification` with type `unsigned char`
|
||||
/// - `LAS_property::Synthetic_flag` with type `unsigned char`
|
||||
/// - `LAS_property::Keypoint_flag` with type `unsigned char`
|
||||
/// - `LAS_property::Withheld_flag` with type `unsigned char`
|
||||
/// - `LAS_property::Scan_angle` with type `double`
|
||||
/// - `LAS_property::User_data` with type `unsigned char`
|
||||
/// - `LAS_property::Point_source_ID` with type `unsigned short`
|
||||
/// - `LAS_property::Deleted_flag` with type `unsigned int`
|
||||
/// - `LAS_property::GPS_time` with type `double`
|
||||
/// - `LAS_property::R` with type `unsigned short`
|
||||
/// - `LAS_property::G` with type `unsigned short`
|
||||
/// - `LAS_property::B` with type `unsigned short`
|
||||
/// - `LAS_property::I` with type `unsigned short`
|
||||
///
|
||||
/// @sa `LAS::make_point_reader()`
|
||||
/// @sa `make_las_point_reader()`
|
||||
///
|
||||
/// @tparam OutputIteratorValueType type of objects that can be put in `OutputIterator`.
|
||||
/// It is default to `value_type_traits<OutputIterator>::%type` and can be omitted when the default is fine.
|
||||
|
|
@ -336,7 +336,7 @@ bool read_las_points_with_properties (std::istream& stream,
|
|||
const LASpoint& laspoint = lasreader.point;
|
||||
Enriched_point new_point;
|
||||
|
||||
LAS::internal::process_properties (laspoint, new_point, properties...);
|
||||
internal::LAS::process_properties (laspoint, new_point, properties...);
|
||||
|
||||
*(output ++) = new_point;
|
||||
}
|
||||
|
|
@ -385,7 +385,7 @@ bool read_las_points(std::istream& stream, ///< input stream.
|
|||
PointPMap point_pmap) ///< property map: value_type of OutputIterator -> Point_3.
|
||||
{
|
||||
return read_las_points_with_properties (stream, output,
|
||||
LAS::make_point_reader(point_pmap));
|
||||
make_las_point_reader(point_pmap));
|
||||
}
|
||||
|
||||
/// @cond SKIP_IN_MANUAL
|
||||
|
|
|
|||
|
|
@ -51,8 +51,6 @@ namespace CGAL {
|
|||
// float single-precision float 4
|
||||
// double double-precision float 8
|
||||
|
||||
namespace PLY
|
||||
{
|
||||
/**
|
||||
\ingroup PkgPointSetProcessing
|
||||
|
||||
|
|
@ -61,11 +59,11 @@ namespace PLY
|
|||
\sa `read_ply_points_with_properties()`
|
||||
*/
|
||||
template <typename T>
|
||||
struct Property
|
||||
struct PLY_property
|
||||
{
|
||||
typedef T type;
|
||||
const char* name;
|
||||
Property (const char* name) : name (name) { }
|
||||
PLY_property (const char* name) : name (name) { }
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -82,11 +80,11 @@ namespace PLY
|
|||
template <typename PointMap>
|
||||
cpp11::tuple<PointMap,
|
||||
typename Kernel_traits<typename PointMap::value_type>::Kernel::Construct_point_3,
|
||||
Property<double>, Property<double>, Property<double> >
|
||||
make_point_reader(PointMap point_map)
|
||||
PLY_property<double>, PLY_property<double>, PLY_property<double> >
|
||||
make_ply_point_reader(PointMap point_map)
|
||||
{
|
||||
return cpp11::make_tuple (point_map, typename Kernel_traits<typename PointMap::value_type>::Kernel::Construct_point_3(),
|
||||
Property<double>("x"), Property<double>("y"), Property<double>("z"));
|
||||
PLY_property<double>("x"), PLY_property<double>("y"), PLY_property<double>("z"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -103,17 +101,19 @@ namespace PLY
|
|||
template <typename VectorMap>
|
||||
cpp11::tuple<VectorMap,
|
||||
typename Kernel_traits<typename VectorMap::value_type>::Kernel::Construct_vector_3,
|
||||
Property<double>, Property<double>, Property<double> >
|
||||
make_normal_reader(VectorMap normal_map)
|
||||
PLY_property<double>, PLY_property<double>, PLY_property<double> >
|
||||
make_ply_normal_reader(VectorMap normal_map)
|
||||
{
|
||||
return cpp11::make_tuple (normal_map, typename Kernel_traits<typename VectorMap::value_type>::Kernel::Construct_vector_3(),
|
||||
Property<double>("nx"), Property<double>("ny"), Property<double>("nz"));
|
||||
PLY_property<double>("nx"), PLY_property<double>("ny"), PLY_property<double>("nz"));
|
||||
}
|
||||
|
||||
/// \cond SKIP_IN_MANUAL
|
||||
|
||||
namespace internal {
|
||||
|
||||
namespace PLY {
|
||||
|
||||
class PLY_read_number
|
||||
{
|
||||
protected:
|
||||
|
|
@ -417,7 +417,7 @@ namespace internal {
|
|||
};
|
||||
|
||||
template <class Reader, class T>
|
||||
void get_value(Reader& r, T& v, PLY::Property<T>& wrapper)
|
||||
void get_value(Reader& r, T& v, PLY_property<T>& wrapper)
|
||||
{
|
||||
return r.assign(v, wrapper.name);
|
||||
}
|
||||
|
|
@ -471,7 +471,7 @@ namespace internal {
|
|||
typename Constructor,
|
||||
typename ... T>
|
||||
void process_properties (PLY_reader& reader, OutputValueType& new_element,
|
||||
cpp11::tuple<PropertyMap, Constructor, PLY::Property<T>...>& current)
|
||||
cpp11::tuple<PropertyMap, Constructor, PLY_property<T>...>& current)
|
||||
{
|
||||
typedef typename PropertyMap::value_type PmapValueType;
|
||||
cpp11::tuple<T...> values;
|
||||
|
|
@ -487,7 +487,7 @@ namespace internal {
|
|||
typename NextPropertyBinder,
|
||||
typename ... PropertyMapBinders>
|
||||
void process_properties (PLY_reader& reader, OutputValueType& new_element,
|
||||
cpp11::tuple<PropertyMap, Constructor, PLY::Property<T>...>& current,
|
||||
cpp11::tuple<PropertyMap, Constructor, PLY_property<T>...>& current,
|
||||
NextPropertyBinder& next,
|
||||
PropertyMapBinders&& ... properties)
|
||||
{
|
||||
|
|
@ -503,7 +503,7 @@ namespace internal {
|
|||
|
||||
template <typename OutputValueType, typename PropertyMap, typename T>
|
||||
void process_properties (PLY_reader& reader, OutputValueType& new_element,
|
||||
std::pair<PropertyMap, PLY::Property<T> >& current)
|
||||
std::pair<PropertyMap, PLY_property<T> >& current)
|
||||
{
|
||||
T new_value = T();
|
||||
reader.assign (new_value, current.second.name);
|
||||
|
|
@ -513,7 +513,7 @@ namespace internal {
|
|||
template <typename OutputValueType, typename PropertyMap, typename T,
|
||||
typename NextPropertyBinder, typename ... PropertyMapBinders>
|
||||
void process_properties (PLY_reader& reader, OutputValueType& new_element,
|
||||
std::pair<PropertyMap, PLY::Property<T> >& current,
|
||||
std::pair<PropertyMap, PLY_property<T> >& current,
|
||||
NextPropertyBinder& next,
|
||||
PropertyMapBinders&& ... properties)
|
||||
{
|
||||
|
|
@ -523,13 +523,13 @@ namespace internal {
|
|||
process_properties (reader, new_element, next, properties...);
|
||||
}
|
||||
|
||||
} // namespace PLY
|
||||
|
||||
} // namespace internal
|
||||
|
||||
|
||||
/// \endcond
|
||||
|
||||
};
|
||||
|
||||
|
||||
//===================================================================================
|
||||
/// \ingroup PkgPointSetProcessing
|
||||
|
|
@ -541,20 +541,20 @@ namespace internal {
|
|||
/// Properties are handled through a variadic list of property
|
||||
/// handlers. A `PropertyHandler` can either be:
|
||||
///
|
||||
/// - A `std::pair<PropertyMap, PLY::Property<T> >` if the user wants
|
||||
/// - A `std::pair<PropertyMap, PLY_property<T> >` if the user wants
|
||||
/// to read a %PLY property as a scalar value T (for example, storing
|
||||
/// an `int` %PLY property into an `int` variable).
|
||||
///
|
||||
/// - A `CGAL::cpp11::tuple<PropertyMap, Constructor,
|
||||
/// PLY::Property<T>...>` if the user wants to use one or several PLY
|
||||
/// PLY_property<T>...>` if the user wants to use one or several PLY
|
||||
/// properties to construct a complex object (for example, storing 3
|
||||
/// `uchar` %PLY properties into a %Color object that can for example
|
||||
/// be a `CGAL::cpp11::array<unsigned char, 3>`). In that case, the
|
||||
/// second element of the tuple should be a functor that constructs
|
||||
/// the value type of `PropertyMap` from N objects of types `T`.
|
||||
///
|
||||
/// @sa `PLY::make_point_reader()`
|
||||
/// @sa `PLY::make_normal_reader()`
|
||||
/// @sa `make_ply_point_reader()`
|
||||
/// @sa `make_ply_normal_reader()`
|
||||
///
|
||||
/// @tparam OutputIteratorValueType type of objects that can be put in `OutputIterator`.
|
||||
/// It is default to `value_type_traits<OutputIterator>::%type` and can be omitted when the default is fine.
|
||||
|
|
@ -580,7 +580,7 @@ bool read_ply_points_with_properties (std::istream& stream,
|
|||
return false;
|
||||
}
|
||||
|
||||
PLY::internal::PLY_reader reader;
|
||||
internal::PLY::PLY_reader reader;
|
||||
|
||||
if (!(reader.init (stream)))
|
||||
return false;
|
||||
|
|
@ -594,7 +594,7 @@ bool read_ply_points_with_properties (std::istream& stream,
|
|||
|
||||
OutputValueType new_element;
|
||||
|
||||
PLY::internal::process_properties (reader, new_element, properties...);
|
||||
internal::PLY::process_properties (reader, new_element, properties...);
|
||||
|
||||
*(output ++) = new_element;
|
||||
|
||||
|
|
@ -646,8 +646,8 @@ bool read_ply_points_and_normals(std::istream& stream, ///< input stream.
|
|||
{
|
||||
|
||||
return read_ply_points_with_properties (stream, output,
|
||||
PLY::make_point_reader (point_pmap),
|
||||
PLY::make_normal_reader (normal_pmap));
|
||||
make_ply_point_reader (point_pmap),
|
||||
make_ply_normal_reader (normal_pmap));
|
||||
}
|
||||
|
||||
/// @cond SKIP_IN_MANUAL
|
||||
|
|
@ -726,7 +726,7 @@ bool read_ply_points(std::istream& stream, ///< input stream.
|
|||
PointPMap point_pmap) ///< property map: value_type of OutputIterator -> Point_3.
|
||||
{
|
||||
return read_ply_points_with_properties (stream, output,
|
||||
PLY::make_point_reader (point_pmap));
|
||||
make_ply_point_reader (point_pmap));
|
||||
}
|
||||
|
||||
/// @cond SKIP_IN_MANUAL
|
||||
|
|
|
|||
|
|
@ -42,9 +42,6 @@
|
|||
namespace CGAL {
|
||||
|
||||
|
||||
namespace LAS
|
||||
{
|
||||
|
||||
/**
|
||||
\ingroup PkgPointSetProcessing
|
||||
|
||||
|
|
@ -56,7 +53,7 @@ namespace LAS
|
|||
*/
|
||||
template <typename PointMap>
|
||||
cpp11::tuple<PointMap, Property::X, Property::Y, Property::Z >
|
||||
make_point_writer(PointMap point_map)
|
||||
make_las_point_writer(PointMap point_map)
|
||||
{
|
||||
return cpp11::make_tuple (point_map, Property::X(), Property::Y(), Property::Z());
|
||||
}
|
||||
|
|
@ -65,41 +62,43 @@ namespace LAS
|
|||
|
||||
namespace internal {
|
||||
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS::Property::Intensity&)
|
||||
namespace LAS {
|
||||
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS_property::Intensity&)
|
||||
{ r.set_intensity(v); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::Return_number&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::Return_number&)
|
||||
{ r.set_return_number(v); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::Number_of_returns&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::Number_of_returns&)
|
||||
{ r.set_number_of_returns(v); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::Scan_direction_flag&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::Scan_direction_flag&)
|
||||
{ r.set_scan_direction_flag(v); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::Edge_of_flight_line&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::Edge_of_flight_line&)
|
||||
{ r.set_edge_of_flight_line(v); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::Classification&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::Classification&)
|
||||
{ r.set_classification(v); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::Synthetic_flag&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::Synthetic_flag&)
|
||||
{ r.set_synthetic_flag(v); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::Keypoint_flag&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::Keypoint_flag&)
|
||||
{ r.set_keypoint_flag(v); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::Withheld_flag&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::Withheld_flag&)
|
||||
{ r.set_withheld_flag(v); }
|
||||
void output_value(LASpoint& r, float& v, LAS::Property::Scan_angle&)
|
||||
void output_value(LASpoint& r, float& v, LAS_property::Scan_angle&)
|
||||
{ r.set_scan_angle_rank(char(v)); }
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS::Property::User_data&)
|
||||
void output_value(LASpoint& r, unsigned char& v, LAS_property::User_data&)
|
||||
{ r.set_user_data(v); }
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS::Property::Point_source_ID&)
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS_property::Point_source_ID&)
|
||||
{ r.set_point_source_ID(v); }
|
||||
void output_value(LASpoint& r, unsigned int& v, LAS::Property::Deleted_flag&)
|
||||
void output_value(LASpoint& r, unsigned int& v, LAS_property::Deleted_flag&)
|
||||
{ r.set_deleted_flag(v); }
|
||||
void output_value(LASpoint& r, double& v, LAS::Property::GPS_time&)
|
||||
void output_value(LASpoint& r, double& v, LAS_property::GPS_time&)
|
||||
{ r.set_gps_time(v); }
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS::Property::R&)
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS_property::R&)
|
||||
{ r.set_R(v); }
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS::Property::G&)
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS_property::G&)
|
||||
{ r.set_G(v); }
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS::Property::B&)
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS_property::B&)
|
||||
{ r.set_B(v); }
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS::Property::I&)
|
||||
void output_value(LASpoint& r, unsigned short& v, LAS_property::I&)
|
||||
{ r.set_I(v); }
|
||||
|
||||
template <typename ForwardIterator>
|
||||
|
|
@ -133,13 +132,13 @@ namespace internal {
|
|||
output_properties (point, it, next, properties...);
|
||||
}
|
||||
|
||||
} // namespace LAS
|
||||
|
||||
} // namespace internal
|
||||
|
||||
|
||||
/// \endcond
|
||||
|
||||
}
|
||||
|
||||
//===================================================================================
|
||||
/// \ingroup PkgPointSetProcessing
|
||||
|
|
@ -148,15 +147,15 @@ namespace internal {
|
|||
///
|
||||
/// Properties are handled through a variadic list of property
|
||||
/// handlers. A `PropertyHandle` is a `std::pair<PropertyMap,
|
||||
/// LAS::Property::Tag >` used to write a scalar value
|
||||
/// `LAS::Property::Tag::type` as a %LAS property (for example,
|
||||
/// LAS_property::Tag >` used to write a scalar value
|
||||
/// `LAS_property::Tag::type` as a %LAS property (for example,
|
||||
/// writing an `int` vairable as an `int` %LAS property). An exception
|
||||
/// is used for points that are written using a `cpp11::tuple` object.
|
||||
///
|
||||
/// See documentation of `read_las_points_with_properties()` for the
|
||||
/// list of available `LAS::Property::Tag` classes.
|
||||
/// list of available `LAS_property::Tag` classes.
|
||||
///
|
||||
/// @sa `LAS::make_point_writer()`
|
||||
/// @sa `make_las_point_writer()`
|
||||
///
|
||||
/// @tparam ForwardIterator iterator over input points.
|
||||
/// @tparam PointMap is a model of `ReadablePropertyMap` with a value_type = `CGAL::Point_3`.
|
||||
|
|
@ -170,9 +169,9 @@ bool write_las_points_with_properties (std::ostream& stream, ///< output stream
|
|||
ForwardIterator first, ///< iterator over the first input point.
|
||||
ForwardIterator beyond, ///< past-the-end iterator over the input points.
|
||||
cpp11::tuple<PointMap,
|
||||
LAS::Property::X,
|
||||
LAS::Property::Y,
|
||||
LAS::Property::Z> point_property, ///< property handler for points
|
||||
LAS_property::X,
|
||||
LAS_property::Y,
|
||||
LAS_property::Z> point_property, ///< property handler for points
|
||||
PropertyHandler&& ... properties) ///< parameter pack of property handlers
|
||||
{
|
||||
CGAL_point_set_processing_precondition(first != beyond);
|
||||
|
|
@ -210,7 +209,7 @@ bool write_las_points_with_properties (std::ostream& stream, ///< output stream
|
|||
laspoint.set_X ((unsigned int)((p.x() - header.x_offset) / header.x_scale_factor));
|
||||
laspoint.set_Y ((unsigned int)((p.y() - header.y_offset) / header.y_scale_factor));
|
||||
laspoint.set_Z ((unsigned int)((p.z() - header.z_offset) / header.z_scale_factor));
|
||||
LAS::internal::output_properties (laspoint, it, properties...);
|
||||
internal::LAS::output_properties (laspoint, it, properties...);
|
||||
|
||||
laswriter.write_point (&laspoint);
|
||||
laswriter.update_inventory(&laspoint);
|
||||
|
|
@ -244,7 +243,7 @@ write_las_points(
|
|||
ForwardIterator beyond, ///< past-the-end input point.
|
||||
PointMap point_map) ///< property map: value_type of OutputIterator -> Point_3.
|
||||
{
|
||||
return write_las_points_with_properties (stream, first, beyond, LAS::make_point_writer(point_map));
|
||||
return write_las_points_with_properties (stream, first, beyond, make_las_point_writer(point_map));
|
||||
}
|
||||
|
||||
/// @cond SKIP_IN_MANUAL
|
||||
|
|
|
|||
|
|
@ -34,8 +34,6 @@
|
|||
|
||||
namespace CGAL {
|
||||
|
||||
namespace PLY {
|
||||
|
||||
/**
|
||||
\ingroup PkgPointSetProcessing
|
||||
|
||||
|
|
@ -48,10 +46,10 @@ namespace PLY {
|
|||
\tparam PointMap the property map used to store points.
|
||||
*/
|
||||
template <typename PointMap>
|
||||
cpp11::tuple<PointMap, Property<double>, Property<double>, Property<double> >
|
||||
make_point_writer(PointMap point_map)
|
||||
cpp11::tuple<PointMap, PLY_property<double>, PLY_property<double>, PLY_property<double> >
|
||||
make_ply_point_writer(PointMap point_map)
|
||||
{
|
||||
return cpp11::make_tuple (point_map, Property<double>("x"), Property<double>("y"), Property<double>("z"));
|
||||
return cpp11::make_tuple (point_map, PLY_property<double>("x"), PLY_property<double>("y"), PLY_property<double>("z"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -66,16 +64,18 @@ namespace PLY {
|
|||
\tparam VectorMap the property map used to store vectors.
|
||||
*/
|
||||
template <typename VectorMap>
|
||||
cpp11::tuple<VectorMap, Property<double>, Property<double>, Property<double> >
|
||||
make_normal_writer(VectorMap normal_map)
|
||||
cpp11::tuple<VectorMap, PLY_property<double>, PLY_property<double>, PLY_property<double> >
|
||||
make_ply_normal_writer(VectorMap normal_map)
|
||||
{
|
||||
return cpp11::make_tuple (normal_map, Property<double>("nx"), Property<double>("ny"), Property<double>("nz"));
|
||||
return cpp11::make_tuple (normal_map, PLY_property<double>("nx"), PLY_property<double>("ny"), PLY_property<double>("nz"));
|
||||
}
|
||||
|
||||
/// \cond SKIP_IN_MANUAL
|
||||
|
||||
namespace internal {
|
||||
|
||||
namespace PLY {
|
||||
|
||||
template <typename T> void property_header_type (std::ostream& stream) { stream << "undefined_type"; }
|
||||
|
||||
template <> void property_header_type<char> (std::ostream& stream) { stream << "char"; }
|
||||
|
|
@ -90,7 +90,7 @@ namespace internal {
|
|||
|
||||
|
||||
template <typename T>
|
||||
void property_header (std::ostream& stream, const PLY::Property<T>& prop)
|
||||
void property_header (std::ostream& stream, const PLY_property<T>& prop)
|
||||
{
|
||||
stream << "property ";
|
||||
property_header_type<T>(stream);
|
||||
|
|
@ -121,7 +121,7 @@ namespace internal {
|
|||
template <typename PropertyMap,
|
||||
typename ... T>
|
||||
void output_property_header (std::ostream& stream,
|
||||
cpp11::tuple<PropertyMap, PLY::Property<T>... >& current)
|
||||
cpp11::tuple<PropertyMap, PLY_property<T>... >& current)
|
||||
{
|
||||
Properties_header<sizeof...(T)-1>::write(stream, current);
|
||||
}
|
||||
|
|
@ -130,7 +130,7 @@ namespace internal {
|
|||
template <typename PropertyMap,
|
||||
typename T>
|
||||
void output_property_header (std::ostream& stream,
|
||||
std::pair<PropertyMap, PLY::Property<T> >& current)
|
||||
std::pair<PropertyMap, PLY_property<T> >& current)
|
||||
{
|
||||
property_header (stream, current.second);
|
||||
}
|
||||
|
|
@ -140,7 +140,7 @@ namespace internal {
|
|||
typename NextPropertyHandler,
|
||||
typename ... PropertyHandler>
|
||||
void output_property_header (std::ostream& stream,
|
||||
std::pair<PropertyMap, PLY::Property<T> >& current,
|
||||
std::pair<PropertyMap, PLY_property<T> >& current,
|
||||
NextPropertyHandler& next,
|
||||
PropertyHandler&& ... properties)
|
||||
{
|
||||
|
|
@ -152,7 +152,7 @@ namespace internal {
|
|||
typename NextPropertyHandler,
|
||||
typename ... PropertyHandler>
|
||||
void output_property_header (std::ostream& stream,
|
||||
cpp11::tuple<PropertyMap, PLY::Property<T>... >& current,
|
||||
cpp11::tuple<PropertyMap, PLY_property<T>... >& current,
|
||||
NextPropertyHandler& next,
|
||||
PropertyHandler&& ... properties)
|
||||
{
|
||||
|
|
@ -186,7 +186,7 @@ namespace internal {
|
|||
typename ... T>
|
||||
void output_properties (std::ostream& stream,
|
||||
ForwardIterator it,
|
||||
cpp11::tuple<PropertyMap, PLY::Property<T>... >& current)
|
||||
cpp11::tuple<PropertyMap, PLY_property<T>... >& current)
|
||||
{
|
||||
property_write (stream, it, std::get<0>(current));
|
||||
if (get_mode(stream) == IO::ASCII)
|
||||
|
|
@ -199,7 +199,7 @@ namespace internal {
|
|||
typename T>
|
||||
void output_properties (std::ostream& stream,
|
||||
ForwardIterator it,
|
||||
std::pair<PropertyMap, PLY::Property<T> >& current)
|
||||
std::pair<PropertyMap, PLY_property<T> >& current)
|
||||
{
|
||||
simple_property_write (stream, it, current.first);
|
||||
if (get_mode(stream) == IO::ASCII)
|
||||
|
|
@ -213,7 +213,7 @@ namespace internal {
|
|||
typename ... PropertyHandler>
|
||||
void output_properties (std::ostream& stream,
|
||||
ForwardIterator it,
|
||||
std::pair<PropertyMap, PLY::Property<T> >& current,
|
||||
std::pair<PropertyMap, PLY_property<T> >& current,
|
||||
NextPropertyHandler& next,
|
||||
PropertyHandler&& ... properties)
|
||||
{
|
||||
|
|
@ -230,7 +230,7 @@ namespace internal {
|
|||
typename ... PropertyHandler>
|
||||
void output_properties (std::ostream& stream,
|
||||
ForwardIterator it,
|
||||
cpp11::tuple<PropertyMap, PLY::Property<T>... >& current,
|
||||
cpp11::tuple<PropertyMap, PLY_property<T>... >& current,
|
||||
NextPropertyHandler& next,
|
||||
PropertyHandler&& ... properties)
|
||||
{
|
||||
|
|
@ -239,11 +239,12 @@ namespace internal {
|
|||
stream << " ";
|
||||
output_properties (stream, it, next, properties...);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace PLY
|
||||
|
||||
} // namespace internal
|
||||
|
||||
/// \endcond
|
||||
}
|
||||
|
||||
|
||||
|
||||
//===================================================================================
|
||||
|
|
@ -255,19 +256,19 @@ namespace internal {
|
|||
/// Properties are handled through a variadic list of property
|
||||
/// handlers. A `PropertyHandler` can either be:
|
||||
///
|
||||
/// - A `std::pair<PropertyMap, PLY::Property<T> >` if the user wants
|
||||
/// - A `std::pair<PropertyMap, PLY_property<T> >` if the user wants
|
||||
/// to write a scalar value T as a %PLY property (for example, writing
|
||||
/// an `int` variable as an `int` %PLY property).
|
||||
///
|
||||
/// - A `CGAL::cpp11::tuple<PropertyMap, PLY::Property<T>...>` if the
|
||||
/// - A `CGAL::cpp11::tuple<PropertyMap, PLY_property<T>...>` if the
|
||||
/// user wants to write a complex object as several %PLY
|
||||
/// properties. In that case, and overload of the stream operator
|
||||
/// `std::operator<<()` must be provided for
|
||||
/// `PropertyMap::value_type` that handles both ASCII and binary
|
||||
/// output (see `CGAL::get_mode()`).
|
||||
///
|
||||
/// @sa `PLY::make_point_writer()`
|
||||
/// @sa `PLY::make_normal_writer()`
|
||||
/// @sa `make_ply_point_writer()`
|
||||
/// @sa `make_ply_normal_writer()`
|
||||
///
|
||||
/// @tparam ForwardIterator iterator over input points.
|
||||
/// @tparam PropertyHandler handlers to recover properties.
|
||||
|
|
@ -296,7 +297,7 @@ write_ply_points_with_properties(
|
|||
<< "comment Generated by the CGAL library" << std::endl
|
||||
<< "element vertex " << std::distance (first, beyond) << std::endl;
|
||||
|
||||
PLY::internal::output_property_header (stream, properties...);
|
||||
internal::PLY::output_property_header (stream, properties...);
|
||||
|
||||
stream << "end_header" << std::endl;
|
||||
|
||||
|
|
@ -304,7 +305,7 @@ write_ply_points_with_properties(
|
|||
// Write positions + normals
|
||||
for(ForwardIterator it = first; it != beyond; it++)
|
||||
{
|
||||
PLY::internal::output_properties (stream, it, properties...);
|
||||
internal::PLY::output_properties (stream, it, properties...);
|
||||
}
|
||||
|
||||
return ! stream.fail();
|
||||
|
|
@ -341,8 +342,8 @@ write_ply_points_and_normals(
|
|||
return write_ply_points_with_properties(
|
||||
stream,
|
||||
first, beyond,
|
||||
PLY::make_point_writer(point_map),
|
||||
PLY::make_normal_writer(normal_map));
|
||||
make_ply_point_writer(point_map),
|
||||
make_ply_normal_writer(normal_map));
|
||||
}
|
||||
|
||||
/// @cond SKIP_IN_MANUAL
|
||||
|
|
@ -389,7 +390,7 @@ write_ply_points(
|
|||
ForwardIterator beyond, ///< past-the-end input point.
|
||||
PointMap point_map) ///< property map: value_type of OutputIterator -> Point_3.
|
||||
{
|
||||
return write_ply_points_with_properties (stream, first, beyond, PLY::make_point_writer(point_map));
|
||||
return write_ply_points_with_properties (stream, first, beyond, make_ply_point_writer(point_map));
|
||||
}
|
||||
|
||||
/// @cond SKIP_IN_MANUAL
|
||||
|
|
|
|||
Loading…
Reference in New Issue