// Copyright (c) 2020 Geometry Factory // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL$ // $Id$ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Maxime Gimeno #ifndef CGAL_READ_POINTS_H #define CGAL_READ_POINTS_H #ifdef CGAL_LINKED_WITH_LASLIB #include #endif #include #include #include namespace CGAL { /** \ingroup PkgPointSetProcessing3IO Reads the point set from an input file that can be either: - XYZ - OFF - PLY - LAS \tparam OutputIteratorValueType type of objects that can be put in `OutputIterator`. It is default to `value_type_traits::%type` and can be omitted when the default is fine. \tparam OutputIterator iterator over output points. \param fname the name of the input file. \param output output iterator over points. \param np optional sequence of \ref psp_namedparameters "Named Parameters" among the ones listed below. \cgalNamedParamsBegin \cgalParamBegin{point_map} a model of `WritablePropertyMap` with value type `geom_traits::Point_3`. If this parameter is omitted, `CGAL::Identity_property_map` is used.\cgalParamEnd \cgalParamBegin{normal_map} a model of `ReadWritePropertyMap` with value type `geom_traits::Vector_3`. If this parameter is omitted, normals in the input stream are ignored.\cgalParamEnd \cgalParamBegin{geom_traits} an instance of a geometric traits class, model of `Kernel`\cgalParamEnd \cgalNamedParamsEnd \return true on success. */ template bool read_points(const std::string& fname, OutputIterator output, const NamedParameters& np) { const std::string ext = IO::internal::get_file_extension(fname); if (ext == "xyz") { return read_XYZ(fname, output, np); } if (ext == "off") { return read_OFF(fname, output, np); } if (ext == "ply") { return read_PLY(fname, output, np); } #ifdef CGAL_LINKED_WITH_LASLIB if (ext == "las") { return read_LAS(fname, output, np); } #endif return false; } //variant with default OutputIteratorType template bool read_points(const std::string& fname, OutputIterator output, const NamedParameters& np) { return read_points::type>(fname, output, np); } //variant with default np template bool read_points(const std::string& fname, OutputIterator output) { return read_points(fname, output, parameters::all_default()); } //variant with all default template bool read_points(const std::string& fname, OutputIterator output) { return read_points::type>(fname, output, parameters::all_default()); } //variants with char* template bool read_points(const char* fname, OutputIterator output, const NamedParameters& np) { return read_points(std::string(fname), output, np); } template bool read_points(const char* fname, OutputIterator output, const NamedParameters& np) { return read_points::type>(fname, output, np); } template bool read_points(const char* fname, OutputIterator output) { return read_points(fname, output, parameters::all_default()); } template bool read_points(const char* fname, OutputIterator output) { return read_points::type>(fname, output, parameters::all_default()); } }//end CGAL #endif // CGAL_READ_POINTS_H