diff --git a/BGL/doc/BGL/PackageDescription.txt b/BGL/doc/BGL/PackageDescription.txt index d258161d36d..d6444bf0c02 100644 --- a/BGL/doc/BGL/PackageDescription.txt +++ b/BGL/doc/BGL/PackageDescription.txt @@ -495,7 +495,7 @@ the requirement for traversal of all faces in a graph. /// I/O Functions for \ref IOStreamWRL /// \ingroup PkgBGLIOFct -/// \defgroup PkgBGLIOFuncs3MF 3MF I/O Functions +/// \defgroup PkgBGLIoFuncs3MF 3MF I/O Functions /// I/O Functions for \ref IOStream3MF /// \ingroup PkgBGLIOFct diff --git a/BGL/include/CGAL/boost/graph/IO/3MF.h b/BGL/include/CGAL/boost/graph/IO/3MF.h index acbd1180b93..1fc0831a501 100644 --- a/BGL/include/CGAL/boost/graph/IO/3MF.h +++ b/BGL/include/CGAL/boost/graph/IO/3MF.h @@ -13,10 +13,12 @@ #define CGAL_BGL_IO_3MF_H #include +#include #include #include +#include #include #include @@ -31,7 +33,7 @@ namespace CGAL { // Write /*! - * \ingroup PkgBGLIOFuncs3MF + * \ingroup PkgBGLIoFuncs3MF * * \brief writes the triangle meshes contained in `gs` into the 3mf file `filename`. * @@ -53,9 +55,15 @@ namespace CGAL { template bool write_3MF(const std::string& filename, const GraphRange& gs, - const std::vector& names) + const std::vector& names +#ifndef DOXYGEN_RUNNING + , typename boost::disable_if< + IO::internal::is_Point_set_or_Range_or_Iterator< + typename boost::range_value::type> >::type* = nullptr +#endif + ) { - typedef typename GraphRange::value_type FaceGraph; + typedef typename boost::range_value::type FaceGraph; typedef typename boost::property_map::type VPM; typedef typename boost::property_traits::value_type Point; @@ -99,7 +107,7 @@ bool write_3MF(const std::string& filename, all_polygons.push_back(triangles); } - return write_triangle_soups_to_3mf(filename, all_points, all_polygons, names); + return write_3MF(filename, all_points, all_polygons, names); } } // namespace CGAL diff --git a/BGL/include/CGAL/boost/graph/IO/GOCAD.h b/BGL/include/CGAL/boost/graph/IO/GOCAD.h index 09bc85bd9c4..f1793d120ef 100644 --- a/BGL/include/CGAL/boost/graph/IO/GOCAD.h +++ b/BGL/include/CGAL/boost/graph/IO/GOCAD.h @@ -131,6 +131,8 @@ bool read_GOCAD(std::istream& is, return true; } +/// \cond SKIP_IN_MANUAL + template bool read_GOCAD(std::istream& is, Graph& g, const CGAL_BGL_NP_CLASS& np, bool verbose = true) { @@ -144,6 +146,8 @@ bool read_GOCAD(std::istream& is, std::pair& name_and_ return read_GOCAD(is, name_and_color, g, parameters::all_default()); } +/// \endcond + /// \ingroup PkgBGLIoFuncsGOCAD /// /// \brief reads the graph `g` from the file `fname`, using the \ref IOStreamGocad. @@ -186,6 +190,8 @@ bool read_GOCAD(const char* fname, return read_GOCAD(is, name_and_color, g, np, verbose); } +/// \cond SKIP_IN_MANUAL + template bool read_GOCAD(const char* fname, Graph& g, const CGAL_BGL_NP_CLASS& np, bool verbose = true) { @@ -206,6 +212,8 @@ bool read_GOCAD(const char* fname, Graph& g) { return read_GOCAD(fname, g, param template bool read_GOCAD(const std::string& fname, Graph& g) { return read_GOCAD(fname, g, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -349,12 +357,16 @@ bool write_GOCAD(const char* fname, return write_GOCAD(os, fname, g, np); } +/// \cond SKIP_IN_MANUAL + template bool write_GOCAD(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS& np) { return write_GOCAD(fname.c_str(), g, np); } +/// \endcond + /// \ingroup PkgBGLIoFuncsGOCAD /// /// \brief writes the graph `g` in the \ref IOStreamGocad into `os`. @@ -393,6 +405,9 @@ bool write_GOCAD(std::ostream& os, { return write_GOCAD(os, "anonymous", g, np); } + +/// \cond SKIP_IN_MANUAL + template bool write_GOCAD(std::ostream& os, const Graph& g) { @@ -404,6 +419,8 @@ bool write_GOCAD(const char* fname, const Graph& g) { return write_GOCAD(fname, template bool write_GOCAD(const std::string& fname, const Graph& g) { return write_GOCAD(fname, g, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_BGL_IO_GOCAD_H diff --git a/BGL/include/CGAL/boost/graph/IO/INP.h b/BGL/include/CGAL/boost/graph/IO/INP.h index a0c22fb9de6..7eb28ea62ad 100644 --- a/BGL/include/CGAL/boost/graph/IO/INP.h +++ b/BGL/include/CGAL/boost/graph/IO/INP.h @@ -23,6 +23,8 @@ namespace CGAL { +/// \cond SKIP_IN_MANUAL + template bool write_INP(std::ostream& os, const std::string& name, @@ -94,6 +96,8 @@ bool write_INP(const char* fname, const std::string& type, const Graph& g) return write_INP(fname, type, g, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_BGL_IO_INP_H diff --git a/BGL/include/CGAL/boost/graph/IO/OBJ.h b/BGL/include/CGAL/boost/graph/IO/OBJ.h index a0646387089..8de1467692b 100644 --- a/BGL/include/CGAL/boost/graph/IO/OBJ.h +++ b/BGL/include/CGAL/boost/graph/IO/OBJ.h @@ -164,11 +164,10 @@ bool read_OBJ(const char* fname, return read_OBJ(in, g, np, verbose); } +/// \cond SKIP_IN_MANUAL + template -bool read_OBJ(const std::string& fname, - Graph& g, - const CGAL_BGL_NP_CLASS& np, - bool verbose = true) +bool read_OBJ(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np, bool verbose = true) { return read_OBJ(fname.c_str(), g, np, verbose); } @@ -180,6 +179,8 @@ bool read_OBJ(const char* fname, Graph& g) { return read_OBJ(fname, g, parameter template bool read_OBJ(const std::string& fname, Graph& g) { return read_OBJ(fname, g, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -264,6 +265,8 @@ bool write_OBJ(const char* fname, return write_OBJ(os, g, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OBJ(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS& np) { @@ -277,6 +280,8 @@ bool write_OBJ(const char* fname, const Graph& g) { return write_OBJ(fname, g, p template bool write_OBJ(const std::string& fname, const Graph& g) { return write_OBJ(fname, g, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_BGL_IO_OBJ_H diff --git a/BGL/include/CGAL/boost/graph/IO/OFF.h b/BGL/include/CGAL/boost/graph/IO/OFF.h index 63b116a644e..16c6474ff06 100644 --- a/BGL/include/CGAL/boost/graph/IO/OFF.h +++ b/BGL/include/CGAL/boost/graph/IO/OFF.h @@ -161,6 +161,8 @@ bool read_OFF(std::istream& is, return IO::internal::read_OFF_BGL(is, g, np, verbose); } +/// \cond SKIP_IN_MANUAL + template bool read_OFF(std::istream& is, Graph& g, typename boost::disable_if >::type* = nullptr) @@ -168,6 +170,8 @@ bool read_OFF(std::istream& is, Graph& g, return read_OFF(is, g, parameters::all_default()); } +/// \endcond + /*! \ingroup PkgBGLIoFuncsOFF @@ -245,6 +249,8 @@ bool read_OFF(const char* fname, return read_OFF(is, g, np, verbose); } +/// \cond SKIP_IN_MANUAL + template bool read_OFF(const char* fname, Graph& g, typename boost::disable_if >::type* = nullptr) @@ -266,6 +272,8 @@ bool read_OFF(const std::string& fname, Graph& g, return read_OFF(fname, g, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -385,6 +393,8 @@ bool write_OFF(std::ostream& os, return IO::internal::write_OFF_BGL(os, g, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OFF(std::ostream& os, const Graph& g, typename boost::disable_if >::type* = nullptr) @@ -392,6 +402,8 @@ bool write_OFF(std::ostream& os, const Graph& g, return write_OFF(os, g, parameters::all_default()); } +/// \endcond + /*! \ingroup PkgBGLIoFuncsOFF @@ -472,6 +484,8 @@ bool write_OFF(const char* fname, return write_OFF(os, g, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OFF(const char* fname, const Graph& g, typename boost::disable_if >::type* = nullptr) @@ -493,6 +507,8 @@ bool write_OFF(const std::string& fname, const Graph& g, return write_OFF(fname.c_str(), g, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! diff --git a/BGL/include/CGAL/boost/graph/IO/PLY.h b/BGL/include/CGAL/boost/graph/IO/PLY.h index 05a73ef4938..da29a2bdd09 100644 --- a/BGL/include/CGAL/boost/graph/IO/PLY.h +++ b/BGL/include/CGAL/boost/graph/IO/PLY.h @@ -145,6 +145,8 @@ bool read_PLY(std::istream& is, return IO::internal::read_PLY_BGL(is, g, np, verbose); } +/// \cond SKIP_IN_MANUAL + template bool read_PLY(std::istream& is, Graph& g, typename boost::disable_if >::type* = nullptr) @@ -152,6 +154,8 @@ bool read_PLY(std::istream& is, Graph& g, return IO::internal::read_PLY_BGL(is, g, parameters::all_default()); } +/// \endcond + /*! \ingroup PkgBGLIoFuncsPLY @@ -233,6 +237,8 @@ bool read_PLY(const char* fname, } } +/// \cond SKIP_IN_MANUAL + template bool read_PLY(const char* fname, Graph& g, typename boost::disable_if >::type* = nullptr) @@ -254,6 +260,8 @@ bool read_PLY(const std::string& fname, Graph& g, return read_PLY(fname.c_str(), g, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -437,6 +445,8 @@ bool write_PLY(std::ostream& os, return os.good(); } +/// \cond SKIP_IN_MANUAL + template bool write_PLY(std::ostream& os, const Graph& g, const std::string& comments, typename boost::disable_if >::type* = nullptr) @@ -458,6 +468,8 @@ bool write_PLY(std::ostream& os, const Graph& g, return write_PLY(os, g, std::string(), parameters::all_default()); } +/// \endcond + /*! \ingroup PkgBGLIoFuncsPLY @@ -542,6 +554,8 @@ bool write_PLY(const char* fname, } } +/// \cond SKIP_IN_MANUAL + template bool write_PLY(const char* fname, const Graph& g, const std::string comments, typename boost::disable_if >::type* = nullptr) @@ -591,6 +605,8 @@ bool write_PLY(const std::string& fname, const Graph& g, return write_PLY(fname.c_str(), g, std::string(), parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_BGL_IO_PLY_H diff --git a/BGL/include/CGAL/boost/graph/IO/STL.h b/BGL/include/CGAL/boost/graph/IO/STL.h index f1f6d45324d..6304b8488bb 100644 --- a/BGL/include/CGAL/boost/graph/IO/STL.h +++ b/BGL/include/CGAL/boost/graph/IO/STL.h @@ -151,6 +151,8 @@ bool read_STL(const char* fname, Graph& g, const CGAL_BGL_NP_CLASS& np, return read_STL(is, g, np, verbose); } +/// \cond SKIP_IN_MANUAL + template bool read_STL(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np, bool verbose = true) @@ -165,6 +167,8 @@ bool read_STL(const char* fname, Graph& g) { return read_STL(fname, g, parameter template bool read_STL(const std::string& fname, Graph& g) { return read_STL(fname, g, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -327,6 +331,8 @@ bool write_STL(const char* fname, const Graph& g, const CGAL_BGL_NP_CLASS& np) return write_STL(os, g, np); } +/// \cond SKIP_IN_MANUAL + template bool write_STL(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS& np) { @@ -340,6 +346,8 @@ bool write_STL(const char* fname, const Graph& g) { return write_STL(fname, g, p template bool write_STL(const std::string& fname, const Graph& g) { return write_STL(fname, g, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_BGL_IO_STL_H diff --git a/BGL/include/CGAL/boost/graph/IO/VTK.h b/BGL/include/CGAL/boost/graph/IO/VTK.h index eb84d9b0993..44ed7969d4f 100644 --- a/BGL/include/CGAL/boost/graph/IO/VTK.h +++ b/BGL/include/CGAL/boost/graph/IO/VTK.h @@ -164,6 +164,8 @@ bool read_VTP(const char* fname, return IO::internal::vtkPointSet_to_polygon_mesh(data, g, np); } +/// \cond SKIP_IN_MANUAL + template bool read_VTP(const std::string& fname, Graph& g, const CGAL_BGL_NP_CLASS& np) { @@ -174,6 +176,8 @@ bool read_VTP(const char* fname, Graph& g) { return read_VTP(fname, g, parameter template bool read_VTP(const std::string& fname, Graph& g) { return read_VTP(fname, g, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -529,6 +533,8 @@ bool write_VTP(const char* fname, const Graph& g, const CGAL_BGL_NP_CLASS& np) return write_VTP(os, g, np); } +/// \cond SKIP_IN_MANUAL + template bool write_VTP(std::ostream& os, const Graph& g) { return write_VTP(os, g, CGAL::parameters::all_default()); } template @@ -538,6 +544,8 @@ bool write_VTP(const std::string& fname, const Graph& g, const CGAL_BGL_NP_CLASS template bool write_VTP(const std::string& fname, const Graph& g) { return write_VTP(fname, g, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! diff --git a/BGL/include/CGAL/boost/graph/IO/polygon_mesh_io.h b/BGL/include/CGAL/boost/graph/IO/polygon_mesh_io.h index 623d287b42c..0265f381fce 100644 --- a/BGL/include/CGAL/boost/graph/IO/polygon_mesh_io.h +++ b/BGL/include/CGAL/boost/graph/IO/polygon_mesh_io.h @@ -160,6 +160,8 @@ bool read_polygon_mesh(const std::string& fname, return false; } +/// \cond SKIP_IN_MANUAL + template bool read_polygon_mesh(const std::string& fname, Graph& g) { @@ -178,6 +180,8 @@ bool read_polygon_mesh(const char* fname, Graph& g) return read_polygon_mesh(fname, g, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -269,6 +273,8 @@ bool write_polygon_mesh(const std::string& fname, return false; } +/// \cond SKIP_IN_MANUAL + template bool write_polygon_mesh(const std::string& fname, Graph& g) { @@ -287,6 +293,8 @@ bool write_polygon_mesh(const char* fname, Graph& g) return write_polygon_mesh(fname, g, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_BOOST_GRAPH_POLYGON_MESH_IO_H diff --git a/BGL/test/BGL/test_3mf_to_sm.cpp b/BGL/test/BGL/test_3mf_to_sm.cpp index 69dc8e968e4..d09bed28bd9 100644 --- a/BGL/test/BGL/test_3mf_to_sm.cpp +++ b/BGL/test/BGL/test_3mf_to_sm.cpp @@ -38,7 +38,7 @@ int main(int argc, char** argv) std::vector meshes; //testing reading functions. - int nb_meshes = CGAL::read_3mf(filename, meshes); + int nb_meshes = CGAL::read_3MF(filename, meshes); if(nb_meshes <0) return 1; diff --git a/Mesh_3/doc/Mesh_3/Mesh_3.txt b/Mesh_3/doc/Mesh_3/Mesh_3.txt index 666e8839787..3b91217c5c3 100644 --- a/Mesh_3/doc/Mesh_3/Mesh_3.txt +++ b/Mesh_3/doc/Mesh_3/Mesh_3.txt @@ -550,11 +550,9 @@ for more details. \section Mesh_3_section_io Input/Output Several formats are supported for writing a mesh: - VTU, with `CGAL::output_to_vtu()` - - Avizo with `CGAL::output_to_avizo()` - - Medit with `CGAL::output_to_medit()` - - Tetgen with `CGAL::output_to_tetgen()` - - + - Avizo, with `CGAL::output_to_avizo()` + - Medit, with `CGAL::output_to_medit()` + - Tetgen, with `CGAL::output_to_tetgen()` \section Mesh_3_section_examples Examples diff --git a/Point_set_3/include/CGAL/Point_set_3/IO.h b/Point_set_3/include/CGAL/Point_set_3/IO.h index 24a1eb10a4f..6a072c706c8 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO.h @@ -124,12 +124,16 @@ bool read_point_set(const std::string& filename, return false; } +/// \cond SKIP_IN_MANUAL + template bool read_point_set(const char* filename, CGAL::Point_set_3& ps) { return read_point_set(std::string(filename), ps); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -209,6 +213,8 @@ bool write_point_set(const std::string& filename, return false; } +/// \cond SKIP_IN_MANUAL + template bool write_point_set(const char* filename, CGAL::Point_set_3& ps, @@ -229,6 +235,8 @@ bool write_point_set(const std::string& filename, CGAL::Point_set_3& point_set) return read_LAS(is, point_set); } +/// \cond SKIP_IN_MANUAL + template bool read_LAS(const std::string& fname, CGAL::Point_set_3& point_set) { return read_LAS(fname.c_str(), point_set); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -395,12 +399,16 @@ bool write_LAS(std::ostream& os, return okay; } +/// \cond SKIP_IN_MANUAL + template bool write_LAS(std::ostream& os, CGAL::Point_set_3& point_set) { return write_LAS(os, point_set, parameters::all_default()); } +/// \endcond + /*! \ingroup PkgPointSet3IOLAS @@ -431,6 +439,8 @@ bool write_LAS(const char* fname, CGAL::Point_set_3& point_set, c return write_LAS(os, point_set, np); } +/// \cond SKIP_IN_MANUAL + template bool write_LAS(const char* fname, CGAL::Point_set_3& point_set) { @@ -450,6 +460,8 @@ bool write_LAS(const std::string& fname, CGAL::Point_set_3& point return write_LAS(fname.c_str(), point_set, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h b/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h index 570b0f0d1e5..63ccc5edb1e 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/OFF.h @@ -97,12 +97,16 @@ bool read_OFF(const char* fname, CGAL::Point_set_3& point_set) return read_OFF(is, point_set); } +/// \cond SKIP_IN_MANUAL + template bool read_OFF(const std::string& fname, CGAL::Point_set_3& point_set) { return read_OFF(fname.c_str(), point_set); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -161,12 +165,16 @@ bool write_OFF(std::ostream& os, np.point_map(point_set.point_map())); } +/// \cond SKIP_IN_MANUAL + template bool write_OFF(std::ostream& os, const CGAL::Point_set_3& point_set) { return write_OFF(os, point_set, parameters::all_default()); } +/// \endcond + /*! \ingroup PkgPointSet3IOOFF @@ -197,6 +205,8 @@ bool write_OFF(const char* fname, const CGAL::Point_set_3& point_ return write_OFF(os, point_set, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OFF(const char* fname, const CGAL::Point_set_3& point_set) { @@ -216,6 +226,8 @@ bool write_OFF(const std::string& fname, const CGAL::Point_set_3& return write_OFF(fname.c_str(), point_set, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h index bdf187124a7..31a77935a28 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/PLY.h @@ -299,6 +299,8 @@ bool read_PLY(std::istream& is, return !is.bad(); } +/// \cond SKIP_IN_MANUAL + template bool read_PLY(std::istream& is, CGAL::Point_set_3& point_set) { @@ -306,6 +308,8 @@ bool read_PLY(std::istream& is, CGAL::Point_set_3& point_set) return read_PLY(is, point_set, dummy); } +/// \endcond + /*! \ingroup PkgPointSet3IOPLY @@ -362,6 +366,8 @@ bool read_PLY(const char* fname, } } +/// \cond SKIP_IN_MANUAL + template bool read_PLY(const char* fname, CGAL::Point_set_3& point_set, std::string& comments) { @@ -402,6 +408,8 @@ bool read_PLY(const std::string& fname, CGAL::Point_set_3& point_ return read_PLY(fname.c_str(), point_set, unused_comments, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -694,6 +702,8 @@ bool write_PLY(std::ostream& os, return true; } +/// \cond SKIP_IN_MANUAL + template bool write_PLY(std::ostream& os, const CGAL::Point_set_3& point_set, const CGAL_BGL_NP_CLASS& np) { @@ -712,6 +722,8 @@ bool write_PLY(std::ostream& os, const CGAL::Point_set_3& point_s return write_PLY(os, point_set, std::string(), parameters::all_default()); } +/// \endcond + /*! \ingroup PkgPointSet3IOPLY @@ -770,6 +782,8 @@ bool write_PLY(const char* fname, } } +/// \cond SKIP_IN_MANUAL + template bool write_PLY(const char* fname, const CGAL::Point_set_3& point_set, const std::string& comments) { @@ -813,6 +827,8 @@ bool write_PLY(const std::string& fname, const CGAL::Point_set_3& return write_PLY(fname.c_str(), point_set, std::string(), parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! diff --git a/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h b/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h index 9e495e8b6dc..421089bf280 100644 --- a/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h +++ b/Point_set_3/include/CGAL/Point_set_3/IO/XYZ.h @@ -96,12 +96,16 @@ bool read_XYZ(const char* fname, CGAL::Point_set_3& point_set) return read_XYZ(is, point_set); } +/// \cond SKIP_IN_MANUAL + template bool read_XYZ(const std::string& fname, CGAL::Point_set_3& point_set) { return read_XYZ(fname.c_str(), point_set); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! @@ -158,12 +162,16 @@ bool write_XYZ(std::ostream& os, return Point_set_processing_3::internal::write_XYZ_PSP(os, point_set, np.point_map(point_set.point_map())); } +/// \cond SKIP_IN_MANUAL + template bool write_XYZ(std::ostream& os, const CGAL::Point_set_3& point_set) { return write_XYZ(os, point_set, parameters::all_default()); } +/// \endcond + /*! \ingroup PkgPointSet3IOXYZ @@ -194,6 +202,8 @@ bool write_XYZ(const char* fname, const CGAL::Point_set_3& point_ return write_XYZ(os, point_set, np); } +/// \cond SKIP_IN_MANUAL + template bool write_XYZ(const char* fname, const CGAL::Point_set_3& point_set) { @@ -213,6 +223,8 @@ bool write_XYZ(const std::string& fname, const CGAL::Point_set_3& return write_XYZ(fname.c_str(), point_set, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! diff --git a/Point_set_processing_3/include/CGAL/IO/read_las_points.h b/Point_set_processing_3/include/CGAL/IO/read_las_points.h index de8e00052f5..96fb477d64e 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_las_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_las_points.h @@ -403,6 +403,8 @@ bool read_LAS_with_properties(std::istream& is, } +/// \cond SKIP_IN_MANUAL + template bool read_LAS_with_properties(std::istream& is, @@ -414,6 +416,8 @@ bool read_LAS_with_properties(std::istream& is, return read_LAS_with_properties(is, output, std::forward(properties)...); } +/// \endcond + /** \ingroup PkgPointSetProcessing3IOLas @@ -466,6 +470,8 @@ bool read_LAS(std::istream& is, return read_LAS_with_properties(is, output, make_las_point_reader(point_map)); } +/// \cond SKIP_IN_MANUAL + template bool read_LAS(std::istream& is, OutputIterator output, const CGAL_BGL_NP_CLASS& np, typename std::enable_if::value>::type* = nullptr) @@ -487,6 +493,8 @@ bool read_LAS(std::istream& is, OutputIterator output, return read_LAS::type>(is, output, parameters::all_default()); } +/// \endcond + /** \ingroup PkgPointSetProcessing3IOLas @@ -531,6 +539,8 @@ bool read_LAS(const char* filename, return read_LAS(filename, output, np); } +/// \cond SKIP_IN_MANUAL + template bool read_LAS(const char* fname, OutputIterator output, const CGAL_BGL_NP_CLASS& np) { @@ -574,8 +584,12 @@ bool read_LAS(const std::string& fname, OutputIterator output) return read_LAS::type>(fname, output, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE +/// \cond SKIP_IN_MANUAL + template @@ -598,9 +612,8 @@ bool read_las_points(std::istream& is, ///< input stream. CGAL::parameters::point_map(point_map)); } -#endif //CGAL_NO_DEPRECATED_CODE +/// \endcond -#ifndef CGAL_NO_DEPRECATED_CODE /** \ingroup PkgPointSetProcessing3IODeprecated @@ -617,6 +630,7 @@ CGAL_DEPRECATED bool read_las_points_with_properties(std::istream& is, } /// \cond SKIP_IN_MANUAL + template CGAL_DEPRECATED bool read_las_points_with_properties(std::istream& is, @@ -627,6 +641,7 @@ CGAL_DEPRECATED bool read_las_points_with_properties(std::istream& is, return read_LAS(is, output, std::forward(properties)...); } + /// \endcond /** @@ -652,6 +667,8 @@ CGAL_DEPRECATED bool read_las_points(std::istream& is, return read_LAS(is, output, make_las_point_reader(point_map)); } +/// \cond SKIP_IN_MANUAL + // variant with default NP template CGAL_DEPRECATED bool read_las_points(std::istream& is, OutputIterator output) @@ -673,6 +690,8 @@ CGAL_DEPRECATED bool read_las_points(std::istream& is, OutputIterator output) return read_LAS::type>(is, output, CGAL::parameters::all_default()); } +/// \endcond + #endif // CGAL_NO_DEPRECATED_CODE } // namespace CGAL diff --git a/Point_set_processing_3/include/CGAL/IO/read_off_points.h b/Point_set_processing_3/include/CGAL/IO/read_off_points.h index cd473647ba4..0ffc2dae24b 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_off_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_off_points.h @@ -254,6 +254,8 @@ bool read_OFF(const char* fname, return read_OFF(is, output, np); } +/// \cond SKIP_IN_MANUAL + template bool read_OFF(const std::string& fname, OutputIterator output, const CGAL_BGL_NP_CLASS& np, typename std::enable_if::value>::type* = nullptr) @@ -330,8 +332,12 @@ bool read_OFF(const char* fname, OutputIterator output, return read_OFF::type>(fname, output, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE +/// \cond SKIP_IN_MANUAL + template ::type>(is, output, parameters::point_map(point_map)); } -#endif // CGAL_NO_DEPRECATED_CODE +/// \endcond -#ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgPointSetProcessing3IODeprecated @@ -484,6 +489,8 @@ CGAL_DEPRECATED bool read_off_points(std::istream& is, return read_OFF(is, output, np); } +/// \cond SKIP_IN_MANUAL + template CGAL_DEPRECATED bool read_off_points(std::istream& is, OutputIterator output) { @@ -504,6 +511,8 @@ CGAL_DEPRECATED bool read_off_points(std::istream& is, OutputIterator output) return read_OFF(is, output, CGAL::parameters::all_default()); } +/// \endcond + #endif //CGAL_NO_DEPRECATED_CODE } // namespace CGAL diff --git a/Point_set_processing_3/include/CGAL/IO/read_ply_points.h b/Point_set_processing_3/include/CGAL/IO/read_ply_points.h index 2e15c1150ed..7bc5224f650 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_ply_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_ply_points.h @@ -100,7 +100,7 @@ make_ply_normal_reader(VectorMap normal_map); #endif // DOXYGEN_RUNNING /** - \ingroup PkgPointSetProcessingIOPly + \ingroup PkgPointSetProcessing3IOPly \brief reads user-selected points properties from a .ply stream (ASCII or binary). @@ -179,6 +179,8 @@ bool read_PLY_with_properties(std::istream& is, return true; } +/// \cond SKIP_IN_MANUAL + template bool read_PLY_with_properties(std::istream& is, @@ -190,6 +192,8 @@ bool read_PLY_with_properties(std::istream& is, return read_PLY_with_properties(is, output, std::forward(properties)...); } +/// \endcond + /** \ingroup PkgPointSetProcessing3IOPly @@ -336,6 +340,8 @@ bool read_PLY(const char* fname, } } +/// \cond SKIP_IN_MANUAL + template bool read_PLY(const std::string& fname, OutputIterator output, const CGAL_BGL_NP_CLASS& np, typename std::enable_if::value>::type* = nullptr) @@ -409,8 +415,12 @@ bool read_PLY(const char* fname, OutputIterator output, return read_PLY::type>(fname, output, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE +/// \cond SKIP_IN_MANUAL + template ::type>(is, output, parameters::point_map(point_map)); } +/// \endcond + /** \ingroup PkgPointSetProcessing3IODeprecated diff --git a/Point_set_processing_3/include/CGAL/IO/read_points.h b/Point_set_processing_3/include/CGAL/IO/read_points.h index 945fed0f288..8dc12eed474 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_points.h @@ -92,6 +92,8 @@ bool read_points(const std::string& fname, return false; } +/// \cond SKIP_IN_MANUAL + // variant with default OutputIteratorType template bool read_points(const std::string& fname, OutputIterator output, const NamedParameters& np) @@ -139,6 +141,8 @@ bool read_points(const char* fname, OutputIterator output) return read_points::type>(fname, output, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_POINT_SET_PROCESSING_READ_POINTS_H diff --git a/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h b/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h index 82efda0d6e1..ca97990e1e9 100644 --- a/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h +++ b/Point_set_processing_3/include/CGAL/IO/read_xyz_points.h @@ -306,8 +306,12 @@ bool read_XYZ(const char* fname, OutputIterator output) return read_XYZ::type>(fname, output, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE +/// \cond SKIP_IN_MANUAL + template bool write_LAS(const std::string& filename, const PointRange& points, const CGAL_BGL_NP_CLASS& np, typename boost::enable_if >::type* = nullptr) @@ -388,8 +390,12 @@ bool write_LAS(const std::string& filename, const PointRange& points, return write_LAS(filename, points, CGAL::Point_set_processing_3::parameters::all_default(points)); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE +/// \cond SKIP_IN_MANUAL + template CGAL_DEPRECATED_MSG("you are using the deprecated V1 API of CGAL::write_las_points(), please update your code") @@ -412,9 +418,7 @@ bool write_las_points(std::ostream& os, ///< output stream. return write_LAS(os, points); } -#endif // CGAL_NO_DEPRECATED_CODE - -#ifndef CGAL_NO_DEPRECATED_CODE +/// \endcond /** \ingroup PkgPointSetProcessing3IODeprecated diff --git a/Point_set_processing_3/include/CGAL/IO/write_off_points.h b/Point_set_processing_3/include/CGAL/IO/write_off_points.h index f2fe902e4f0..1de24fe026e 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_off_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_off_points.h @@ -149,6 +149,8 @@ bool write_OFF(std::ostream& os, return Point_set_processing_3::internal::write_OFF_PSP(os, points, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OFF(std::ostream& os, const PointRange& points, typename boost::enable_if >::type* = nullptr) @@ -156,6 +158,8 @@ bool write_OFF(std::ostream& os, const PointRange& points, return write_OFF(os, points, parameters::all_default()); } +/// \endcond + /** \ingroup PkgPointSetProcessing3IOOff @@ -219,6 +223,8 @@ bool write_OFF(const char* filename, return write_OFF(os, points, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OFF(const char* filename, const PointRange& points, typename boost::enable_if >::type* = nullptr) @@ -241,8 +247,12 @@ bool write_OFF(const std::string& filename, const PointRange& points, return write_OFF(filename, points, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE +/// \cond SKIP_IN_MANUAL + template bool write_PLY(std::ostream& os, const PointRange& points, typename boost::enable_if >::type* = nullptr) @@ -229,6 +231,7 @@ bool write_PLY(std::ostream& os, const PointRange& points, return write_PLY(os, points, parameters::all_default()); } +/// \endcond /** \ingroup PkgPointSetProcessing3IOPly @@ -305,6 +308,8 @@ bool write_PLY(const char* filename, } } +/// \cond SKIP_IN_MANUAL + template bool write_PLY(const char* filename, const PointRange& points, typename boost::enable_if >::type* = nullptr) @@ -326,8 +331,12 @@ bool write_PLY(const std::string& filename, const PointRange& points, return write_PLY(filename.c_str(), points, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE +/// \cond SKIP_IN_MANUAL + template @@ -377,9 +386,7 @@ bool write_ply_points(std::ostream& os, ///< output stream. return write_PLY(os, points); } -#endif // CGAL_NO_DEPRECATED_CODE - -#ifndef CGAL_NO_DEPRECATED_CODE +/// \endcond /** \ingroup PkgPointSetProcessing3IODeprecated diff --git a/Point_set_processing_3/include/CGAL/IO/write_points.h b/Point_set_processing_3/include/CGAL/IO/write_points.h index 5ccd61bbfd1..f53a4aff8e0 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_points.h @@ -104,6 +104,8 @@ bool write_points(const std::string& fname, return false; } +/// \cond SKIP_IN_MANUAL + template bool write_points(const char* fname, const PointRange& points, const CGAL_BGL_NP_CLASS& np, typename boost::enable_if >::type* = nullptr) @@ -125,6 +127,8 @@ bool write_points(const char* fname,const PointRange& points, return write_points(fname, points, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_POINT_SET_PROCESSING_WRITE_POINTS_H diff --git a/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h b/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h index dd01d434201..73757e7b299 100644 --- a/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h +++ b/Point_set_processing_3/include/CGAL/IO/write_xyz_points.h @@ -141,6 +141,8 @@ bool write_XYZ(std::ostream& os, return Point_set_processing_3::internal::write_XYZ_PSP(os, points, np); } +/// \cond SKIP_IN_MANUAL + template bool write_XYZ(std::ostream& os, const PointRange& points, typename boost::enable_if >::type* = nullptr) @@ -148,6 +150,8 @@ bool write_XYZ(std::ostream& os, const PointRange& points, return write_XYZ(os, points, parameters::all_default()); } +/// \endcond + /** \ingroup PkgPointSetProcessing3IOXyz @@ -207,6 +211,8 @@ bool write_XYZ(const char* filename, return write_XYZ(os, points, np); } +/// \cond SKIP_IN_MANUAL + template bool write_XYZ(const char* filename, const PointRange& points, typename boost::enable_if >::type* = nullptr) @@ -215,8 +221,6 @@ bool write_XYZ(const char* filename, const PointRange& points, return write_XYZ(os, points, parameters::all_default()); } -/// \cond SKIP_IN_MANUAL - template bool write_XYZ(const std::string& filename, const PointRange& points, const CGAL_BGL_NP_CLASS& np, typename boost::enable_if >::type* = nullptr) @@ -231,8 +235,12 @@ bool write_XYZ(const std::string& filename, const PointRange& points, return write_XYZ(filename, points, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE +/// \cond SKIP_IN_MANUAL + template CGAL_DEPRECATED bool write_xyz_points(std::ostream& os, const PointRange& points) { diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/IO/polygon_mesh_io.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/IO/polygon_mesh_io.h index 01150f4b854..dbd2f878658 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/IO/polygon_mesh_io.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/IO/polygon_mesh_io.h @@ -139,6 +139,8 @@ bool read_polygon_mesh(const char* fname, return true; } +/// \cond SKIP_IN_MANUAL + template bool read_polygon_mesh(const char* fname, Graph& g) { @@ -157,6 +159,8 @@ bool read_polygon_mesh(const std::string& fname, Graph& g) return CGAL::Polygon_mesh_processing::read_polygon_mesh(fname, g, parameters::all_default()); } +/// \endcond + } // namespace Polygon_mesh_processing } // namespace CGAL diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/polygon_mesh_to_polygon_soup.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/polygon_mesh_to_polygon_soup.h index 468adf46e95..6a12be02e1e 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/polygon_mesh_to_polygon_soup.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/polygon_mesh_to_polygon_soup.h @@ -116,6 +116,8 @@ void polygon_mesh_to_polygon_soup(const PolygonMesh& mesh, } } +/// \cond SKIP_IN_MANUAL + template void polygon_mesh_to_polygon_soup(const PolygonMesh& mesh, PointRange& points, @@ -124,6 +126,8 @@ void polygon_mesh_to_polygon_soup(const PolygonMesh& mesh, return polygon_mesh_to_polygon_soup(mesh, points, polygons, CGAL::parameters::all_default()); } +/// \endcond + } // namespace Polygon_mesh_processing } // namespace CGAL diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/polygon_soup_to_polygon_mesh.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/polygon_soup_to_polygon_mesh.h index f13ab6bf29e..b64d4d52a8a 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/polygon_soup_to_polygon_mesh.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/polygon_soup_to_polygon_mesh.h @@ -278,6 +278,8 @@ void polygon_soup_to_polygon_mesh(const PointRange& points, converter(out, vpm); } +/// \cond SKIP_IN_MANUAL + template void polygon_soup_to_polygon_mesh(const PointRange& points, const PolygonRange& polygons, @@ -286,6 +288,8 @@ void polygon_soup_to_polygon_mesh(const PointRange& points, return polygon_soup_to_polygon_mesh(points, polygons, out, parameters::all_default(), parameters::all_default()); } +/// \endcond + } // namespace Polygon_mesh_processing } // namespace CGAL diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_mesh.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_mesh.h index 522b83f55ab..9797bfc014d 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_mesh.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_mesh.h @@ -328,6 +328,7 @@ void smooth_mesh(const FaceRange& faces, } } +///\cond SKIP_IN_MANUAL template void smooth_mesh(const FaceRange& face_range, TriangleMesh& tmesh) { @@ -346,8 +347,6 @@ void smooth_mesh(TriangleMesh& tmesh) smooth_mesh(faces(tmesh), tmesh, parameters::all_default()); } - -///\cond SKIP_IN_MANUAL template void angles_evaluation(TriangleMesh& tmesh, GeomTraits traits, Stream& output) { diff --git a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_shape.h b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_shape.h index 6575aae6ef4..6693d4dace2 100644 --- a/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_shape.h +++ b/Polygon_mesh_processing/include/CGAL/Polygon_mesh_processing/smooth_shape.h @@ -201,6 +201,7 @@ void smooth_shape(const FaceRange& faces, } } +/// \cond SKIP_IN_MANUAL template void smooth_shape(const FaceRange& faces, TriangleMesh& tmesh, @@ -223,6 +224,7 @@ void smooth_shape(TriangleMesh& tmesh, { smooth_shape(faces(tmesh), tmesh, time, parameters::all_default()); } +/// \endcond } // Polygon_mesh_processing } // CGAL diff --git a/Polyhedron/demo/Polyhedron/Plugins/IO/3mf_io_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/IO/3mf_io_plugin.cpp index f13769809b2..401834f0a0f 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/IO/3mf_io_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/IO/3mf_io_plugin.cpp @@ -78,8 +78,8 @@ class Io_3mf_plugin: QList result; std::vector > all_colors; int nb_meshes = - CGAL::read_triangle_soups_from_3mf(fileinfo.filePath().toUtf8().toStdString(), - all_points, all_polygons, all_colors, names); + CGAL::read_3MF(fileinfo.filePath().toUtf8().toStdString(), + all_points, all_polygons, all_colors, names); if(nb_meshes <0 ) { ok = false; diff --git a/Stream_support/doc/Stream_support/File_formats/Supported_file_formats.txt b/Stream_support/doc/Stream_support/File_formats/Supported_file_formats.txt index eac672bf485..cafab5c807d 100644 --- a/Stream_support/doc/Stream_support/File_formats/Supported_file_formats.txt +++ b/Stream_support/doc/Stream_support/File_formats/Supported_file_formats.txt @@ -9,216 +9,397 @@ this specific format. - \ref IOStreamOFF - \ref IOStreamOBJ -- \ref IOStreamPLY - \ref IOStreamSTL +- \ref IOStreamPLY - \ref IOStreamXYZ - \ref IOStreamVTK +- \ref IOStreamGocad +- \ref IOStream3MF +- \ref IOStreamWRL +- \ref IOStreamLAS - \ref IOStreamAvizo - \ref IOStreamMedit - \ref IOStreamTetgen -- \ref IOStreamGocad -- \ref IOStreamWRL -- \ref IOStreamLAS +- \ref IOStreamWKT \section IOStreamOFF Object File Format (OFF) -The `OFF` file format can be used to represent collections of planar polygons with possibly shared vertices. + +The `Object File Format (OFF)` file format can be used to represent collections of planar polygons with possibly shared vertices. Although it can be as light as providing points and faces described by IDs, the format also allows users to provide more properties such as associating normals or colors to vertices. + A precise specification of the format is available at geomview.org. -\subsection IOStreamOFFInput Reading OFF files -Objects represented in the `.OFF` format can be imported into \cgal's working environment -using the following data structures and functions: +The following table lists some \cgal data structures that have I/O functions compatible with this file format. -- `CGAL::Surface_mesh` (\link PkgSurfaceMeshIOFunc read_OFF(std::istream&, Surface_mesh& sm, const NamedParameters&)\endlink), a halfedge data structure allowing to represent polyhedral surfaces + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Object File Format (OFF)
InputPolygon Mesh`CGAL::Surface_mesh`\link PkgSurfaceMeshIOFuncOFF CGAL::read_OFF(const char*, CGAL::Surface_mesh&)\endlink
`CGAL::Polyhedron_3`\link PkgPolyhedronIOFunc CGAL::read_OFF(const char*, CGAL::Polyhedron_3&)\endlink
Any model of `FaceGraph`\link PkgBGLIoFuncsOFF CGAL::read_OFF(const char*, Graph&)\endlink
Point Set`CGAL::Point_set_3`\link PkgPointSet3IOOFF CGAL::read_OFF(const char*, CGAL::Point_set_3&)\endlink
Any point range\link PkgPointSetProcessing3IOOff CGAL::read_OFF(const char*, PointRange&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsOFF CGAL::read_OFF(const char*, PointRange&, PolygonRange&)\endlink
OutputPolygon Mesh`CGAL::Surface_mesh`\link PkgSurfaceMeshIOFuncOFF CGAL::write_OFF(const char*, CGAL::Surface_mesh&)\endlink
`CGAL::Polyhedron_3`\link PkgPolyhedronIOFunc CGAL::write_OFF(const char*, CGAL::Polyhedron_3&)\endlink
Any model of `FaceGraph`\link PkgBGLIoFuncsOFF CGAL::write_OFF(const char*, Graph&)\endlink
Point Set`CGAL::Point_set_3`\link PkgPointSet3IOOFF CGAL::write_OFF(const char*, CGAL::Point_set_3&)\endlink
Any point range\link PkgPointSetProcessing3IOOff CGAL::write_OFF(const char*, PointRange&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsOFF CGAL::write_OFF(const char*, PointRange&, PolygonRange&)\endlink
-- CGAL::Polyhedron_3 (\ref read_OFF( std::istream&, Polyhedron_3&)), a halfedge data structure, which restricts the class of representable surfaces - to orientable 2-manifolds. - -- Any structure that is a model of the concept `FaceGraph` ( \link PkgBGLIOFct read_OFF(std::istream&,FaceGraph&,NamedParameters)\endlink) - -- `CGAL::Point_set_3` (operator>>(std::istream&,CGAL::Point_set_3&) - -Polygon soups can also be imported using the function read_OFF(). - -As documented in the functions above, the only property that we support is the color, -and it is only supported for the CGAL::Surface_mesh. - -\subsection IOStreamOFFOutput Writing OFF files -The following \cgal data structures can be exported into the `OFF` file format: - -- `CGAL::Surface_mesh` (\link PkgSurfaceMeshIOFunc write_OFF(std::ostream&, const Surface_mesh

&, const NamedParameters&)\endlink) -- Any structure that is a model of the concept `FaceGraph` (\link PkgBGLIOFct write_OFF(std::ostream&, const FaceGraph&,const NamedParameters&)\endlink) -- `CGAL::Point_set_3` (\ref write_OFF()) - -Polygon soups can also be exported using the function write_OFF(). -Note that we only support OFF, and COFF for CGAL::Surface_mesh. +If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +which offers combinatorial reparation while reading bad inputs. \section IOStreamOBJ Wavefront Advanced Visualizer Object Format (OBJ) + The OBJ file format is a simple data-format that represents 3D geometry. Vertices are stored in a counter-clockwise order by default, making explicit declaration of face normals unnecessary. + A precise specification of the format is available here. -\subsection IOStreamOBJInput Reading OBJ files -Objects represented in the `.OBJ` format can be imported into \cgal's working environment -using any structure that is a model of the concept `FaceGraph`, and the function `read_OBJ()`. + + + + + + + + + + + + + + + + + + + + + + + + + + +
Wavefront Advanced Visualizer Object Format (OBJ)
InputPolygon MeshAny model of `FaceGraph`\link PkgBGLIoFuncsOBJ CGAL::read_OBJ(const char*, Graph&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsOBJ CGAL::read_OBJ(const char*, PointRange&, PolygonRange&)\endlink
OutputPolygon MeshAny model of `FaceGraph`\link PkgBGLIoFuncsOBJ CGAL::write_OBJ(const char*, Graph&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsOBJ CGAL::write_OBJ(const char*, PointRange&, PolygonRange&)\endlink
-Polygon soups can also be imported using the function \ref IOstreamFunctions "read_OBJ()". - -\subsection IOStreamOBJOutput Writing OBJ files -Any structure that is a model of the concept `FaceGraph` can be exported into the `OBJ` file format -using the function `write_OBJ()`. +If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +which offers combinatorial reparation while reading bad inputs. \section IOStreamSTL Standard Triangle Language (STL) File Format - STL is a file format native to the stereolithography CAD software created by - 3D Systems.STL files describe the surface geometry of a three-dimensional object. - A precise specification of those formats is available at - fabbers.com. -\subsection IOStreamSTLInput Reading STL files -Objects represented in the `.STL` format can be imported into \cgal's working environment -using any data structure that is a model of the `FaceGraph` concept, using \ref CGAL::read_STL(); +STL is a file format native to the stereolithography CAD software created by 3D Systems. +STL files describe the surface geometry of a three-dimensional object. -In addition, if the data cannot be read in a `FaceGraph` because of bad orientation or -manifoldness, the function \link IOstreamFunctions `CGAL::read_STL(std::istream&,PointRange&,TriangleRange&,bool)` \endlink -allows to load data directly in a soup of triangles. From there, you can use \ref PMPRepairing -functions to construct a valid PolygonMesh. +A precise specification of those formats is available +here. -\subsection IOStreamSTLOutput Writing STL files -Similarly, any data structure that is a model of the `FaceGraph` concept can be exported -as a `.STL` file using \link PkgBGLIOFct CGAL::write_STL(std::ostream&, const TriangleMesh&, const NamedParameters&)\endlink. - -Polygon soups can also be exported using the function \link IOstreamFunctions `CGAL::write_STL(std::ostream&, const PointRange&,const TriangleRange&)`. \endlink + + + + + + + + + + + + + + + + + + + + + + + + + + +
Standard Triangle Language (STL)
InputPolygon MeshAny model of `FaceGraph`\link PkgBGLIoFuncsSTL CGAL::read_STL(const char*, Graph&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsSTL CGAL::read_STL(const char*, PointRange&, TriangleRange&)\endlink
OutputPolygon MeshAny model of `FaceGraph`\link PkgBGLIoFuncsSTL CGAL::write_STL(const char*, Graph&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsSTL CGAL::write_STL(const char*, PointRange&, TriangleRange&)\endlink
Note that the STL file format exports triangular faces as geometric triangles and thus -lose combinatorial information. +combinatorial information is lost. + +If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +which offers combinatorial reparation while reading bad inputs. \section IOStreamPLY Polygon File Format (PLY) + Conceived to store the data obtained during 3D scans, the `PLY` file format stores objects -as a simple list of polygons, etc. -A precise specification of those formats is available at - paulbourke.net. +as a simple list of polygons and is capable of storing external properties. -\subsection IOStreamPLYInput Reading PLY files -Objects represented in the `.PLY` format can be imported into \cgal's working environment -using the following data structures and functions: -- `CGAL::Surface_mesh` (`CGAL::read_PLY()`) -- `CGAL::Point_set_3` (`operator>>(std::istream&,CGAL::Point_set_3&)`) a collection of points with dynamically associated properties +A precise specification of those formats is available +here. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Polygon File Format (PLY)
InputPolygon Mesh`CGAL::Surface_mesh`\link PkgSurfaceMeshIOFuncPLY CGAL::read_PLY(const char*, CGAL::Surface_mesh&)\endlink
Any model of `FaceGraph`\link PkgBGLIoFuncsPLY CGAL::read_PLY(const char*, Graph&)\endlink
Point Set`CGAL::Point_set_3`\link PkgPointSet3IOPLY CGAL::read_PLY(const char*, CGAL::Point_set_3&)\endlink
Any point range\link PkgPointSetProcessing3IOPly CGAL::read_PLY(const char*, PointRange&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsPLY CGAL::read_PLY(const char*, PointRange&, PolygonRange&)\endlink
OutputPolygon Mesh`CGAL::Surface_mesh`\link PkgSurfaceMeshIOFuncPLY CGAL::write_PLY(const char*, CGAL::Surface_mesh&)\endlink
Any model of `FaceGraph`\link PkgBGLIoFuncsPLY CGAL::write_PLY(const char*, Graph&)\endlink
Point Set`CGAL::Point_set_3`\link PkgPointSet3IOPLY CGAL::write_PLY(const char*, CGAL::Point_set_3&)\endlink
Any point range\link PkgPointSetProcessing3IOPly CGAL::write_PLY(const char*, PointRange&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsPLY CGAL::write_PLY(const char*, PointRange&, PolygonRange&)\endlink
+ +If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +which offers combinatorial reparation while reading bad inputs. -\subsection IOStreamPLYOutput Writing PLY files -The following \cgal data structures can be exported into the `PLY` file format: -- `CGAL::Surface_mesh` (write_PLY()) -- `CGAL::Point_set_3` (operator<<(std::ostream&,const CGAL::Point_set_3&)) \section IOStreamLAS LAS (Lidar) File Format -https://www.loc.gov/preservation/digital/formats/fdd/fdd000418.shtml + Similar to the \ref IOStreamPLY, but this format does not handle normals and requires the \ref thirdpartyLASlib library. -\subsection IOStreamLASInput Reading LAS files -Objects represented in the `.LAS` format can be imported into \cgal's working environment -using the following data structures and functions: -- `CGAL::Point_set_3 (`CGAL::read_LAS`) a collection of points with dynamically associated properties -- Point ranges +A precise specification of those formats is available at +here. + + + + + + + + + + + + + + + + + + + + + + + + + +
LAS (Lidar) File Format
InputPoint Set`CGAL::Point_set_3`\link PkgPointSet3IOLAS CGAL::read_LAS(const char*, CGAL::Point_set_3&)\endlink
Any point range\link PkgPointSetProcessing3IOLas CGAL::read_LAS(const char*, PointRange&)\endlink
OutputPoint Set`CGAL::Point_set_3`\link PkgPointSet3IOLAS CGAL::write_LAS(const char*, CGAL::Point_set_3&)\endlink
Any point range\link PkgPointSetProcessing3IOLas CGAL::write_LAS(const char*, PointRange&)\endlink
-\subsection IOStreamLASOutput Writing LAS files -@todo also add to data structures --> formats -The following \cgal data structures can be exported into the `LAS` file format: -- `CGAL::Point_set_3 (`CGAL::write_LAS`) a collection of points with dynamically associated properties -- Point ranges \section IOStreamXYZ XYZ (or PWN) File Format -The `XYZ` format is a non standard format regularly used to described point sets. -each line represent a point, and is composed of its coordinates and other properties. -We only support coordinates and normals (in that case the standard extension in CGAL -is .pwn for points with normals.) -\subsection IOStreamZYZInput Reading XYZ files -Objects represented in the `.XYZ` or `.PWN` format can be imported into \cgal's working environment -using the `CGAL::Point_set_3` and the function `CGAL::read_point_set()`. +The `XYZ` format is a non-standard format regularly used to described point sets. +Each line represent a point, and is composed of its coordinates and other properties. +We only support coordinates and normals (in that case the standard extension in \cgal +is `.pwn` for points with normals.) -\subsection IOStreamXYZOutput Writing XYZ files -The CGAL::Point_set_3 can be exported into a `XYZ` or a `PWN` file using the function -write_xyz_point_set(). - - -\section IOStreamVTK VTK (VTU / VTP) File Formats -The VTK libraries use different file formats to handle data structures, but we only support two: -- The `VTU` format can be used to store am unordered collection of 3D cells, like tetrahedra, - but also points, triangles, lines, etc. In the VTK Libraries, - it is the format reserved to store `Unstructured Grids`, and in \cgal, - we use it to store triangulations(2D and 3D). - -- The `VTP` format can be used to store collections of points, lines and triangles. - In the VTK Libraries, it is the format - reserved to store `PolyData`., and in CGAL, we use it to store Polygon Meshes. - -A precise specification of those formats is available at - vtk.org. - -\subsection IOStreamVTKInput Reading VTK files -Objects represented in the `VTP` format can be imported into \cgal's working environment -using the following data structures and functions: -- CGAL::Surface_mesh -- CGAL::Polyhedron_3 - -using the function \link PkgBGLIOFct CGAL::read_VTP()\endlink, in the condition that CGAL has been configured -with the VTK libraries. - -\subsection IOStreamVTKOutput Writing VTK files -The following \cgal data structures can be exported into the `.VTP` file format: -- CGAL::Surface_mesh -- CGAL::Polyhedron_3 - -using the function \link PkgBGLIOFct CGAL::write_VTP()\endlink. - -The following \cgal data structures can be exported into the `.VTU` file format: -- CGAL::Mesh_complex_3_in_triangulation_3 using \ref CGAL::output_to_vtu()`. -- CGAL::Constrained_Delaunay_triangulation_2 using the function \ref CGAL::write_vtu() - - -\section IOStreamAvizo Avizo File Format -The `.am` files are used by Avizo to read 3D geometry. - -\subsection IOStreamtAvizoOutput Writing Avizo files -Only the `CGAL::Mesh_complex_3_in_triangulation_3` \cgal data structure can be exported into `.am` -This can be done using the function \ref CGAL::output_to_avizo() - - -\section IOStreamMedit Medit File Format -The `.mesh` Medit file format is a format used by the Medit software. In CGAL, -it is mostly used to represent 3D meshes. -A precise specification of the format is available in this report, -in the appendices (section 7.2.1, page 36). - -\subsection IOStreamtMeditOutput Writing Medit files -Only the `CGAL::Mesh_complex_3_in_triangulation_3` \cgal data structure can be exported into `.mesh` -This can be done using the function \ref CGAL::output_to_medit() - - -\section IOStreamTetgen Tetgen File Format -The `Tetgen` file formatscan be used to represent lists of nodes, edges, faces, ... -A precise specification of the format is available at wias-berlin.de. - -\subsection IOStreamTetgenOutput Writing Tetgen files -Only the `CGAL::Mesh_complex_3_in_triangulation_3` \cgal data structure can be exported into some of the Tetgen file formats, -naming `.node`, `.ele` and `.face` -This can be done using the function \ref CGAL::output_to_tetgen() + + + + + + + + + + + + + + + + + + + + + + + + +
LAS (Lidar) File Format
InputPoint Set`CGAL::Point_set_3`\link PkgPointSet3IOXYZ CGAL::read_XYZ(const char*, CGAL::Point_set_3&)\endlink
Any point range\link PkgPointSetProcessing3IOXyz CGAL::read_XYZ(const char*, PointRange&)\endlink
OutputPoint Set`CGAL::Point_set_3`\link PkgPointSet3IOXYZ CGAL::write_XYZ(const char*, CGAL::Point_set_3&)\endlink
Any point range\link PkgPointSetProcessing3IOXyz CGAL::write_XYZ(const char*, PointRange&)\endlink
\section IOStreamGocad GOCAD (TS) File Format + The `.ts` format is an ASCII file format that allows a range of primitive types to be imported into the GOCAD package. + A precise specification of the format is available here. -\subsection IOStreamGocadInput Reading Gocad files -Objects represented in the `.ts` format can be imported into \cgal's working environment -using any structure that is a model of the concept `FaceGraph`, and the function `read_GOCAD()`. + + + + + + + + + + + + + + + + + + + + + + + + + + +
GOCAD (TS) File Format
InputPolygon MeshAny model of `FaceGraph`\link PkgBGLIoFuncsOBJ CGAL::read_OBJ(const char*, Graph&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsOBJ CGAL::read_OBJ(const char*, PointRange&, PolygonRange&)\endlink
OutputPolygon MeshAny model of `FaceGraph`\link PkgBGLIoFuncsOBJ CGAL::write_OBJ(const char*, Graph&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsOBJ CGAL::write_OBJ(const char*, PointRange&, PolygonRange&)\endlink
-\subsection IOStreamGocadOutput Writing Gocad files - Any structure that is a model of the concept `FaceGraph` can be exported into the `.ts` file format - using the function `write_GOCAD()` +If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +which offers combinatorial reparation while reading bad inputs. + + +\section IOStream3MF 3D Manufacturing Format (3MF) + +The `3D Manufacturing Format (3MF)` is an open source file format created by the 3MF Consortium. +It is an XML-based format that aims to enhance the \ref IOStreamSTL by adding means to include +extra information such as colors. + +A precise specification of the format is available on 3mf.io. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
3D Manufacturing Format (3MF)
InputPolygon Mesh`CGAL::Surface_mesh`\link PkgSurfaceMeshIOFunc3MF CGAL::read_3MF(const char*, CGAL::Surface_mesh&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncs3MF CGAL::read_3MF(const char*, PointRanges&, PolygonRanges&)\endlink
OutputPolygon Mesh`CGAL::Surface_mesh`\link PkgSurfaceMeshIOFunc3MF CGAL::read_3MF(const char*, CGAL::Surface_mesh&)\endlink
Any model of `FaceGraph`\link PkgBGLIoFuncs3MF CGAL::write_3MF(const char*, GraphRange&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncs3MF CGAL::write_3MF(const char*, PointRanges&, PolygonRanges&)\endlink
+ +If the data of a polygon mesh cannot be read in a `FaceGraph` due to bad orientation or +manifoldness issues, consider using \link PMP_IO_grp `CGAL::Polygon_mesh_processing::read_polygon_mesh()` \endlink, +which offers combinatorial reparation while reading bad inputs. \section IOStreamWRL Virtual Reality Modeling Language (VRML) File Format @@ -228,11 +409,95 @@ VRML files are known as “worlds,” which is what WRL stands for. WRL files are plain ASCII text files. A WRL file includes data specifying 3-D details such as vertices, edges for a 3-D polygon, surface color, ... + A precise specification of the format is available here. -\subsection IOStreamtWRLOutput Writing WRL files Any structure that is a model of the concept `FaceGraph` can be exported into the `.wrl` file format -using the `write_WRL()` function. +using the function \link PkgBGLIoFuncsWRL `CGAL::write_WRL()` \endlink. + +\section IOStreamVTK VTK (VTU / VTP) File Formats + +The VTK libraries use different file formats to handle data structures, but we only support two: +- The `VTU` format can be used to store am unordered collection of 3D cells, like tetrahedra, + but also points, triangles, lines, etc. In the VTK Libraries, + it is the format reserved to store `Unstructured Grids`, and in \cgal, + we use it to store triangulations(2D and 3D). + +- The `VTP` format can be used to store collections of points, lines and triangles. + In the VTK Libraries, it is the format + reserved to store `PolyData`, and in \cgal, we use it to store Polygon Meshes. + +A precise specification of those formats is available at +vtk.org. + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VTK (VTU / VTP) File Formats
InputPolygon MeshAny model of `FaceGraph`\link PkgBGLIoFuncsVTP CGAL::read_VTP(const char*, Graph&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsVTP CGAL::read_VTP(const char*, PointRange&, PolygonRange&)\endlink
OutputPolygon MeshAny model of `FaceGraph`\link PkgBGLIoFuncsVTP CGAL::write_VTP(const char*, Graph&)\endlink
Polygon SoupAny point + polygon range\link PkgStreamSupportIoFuncsVTP CGAL::write_VTP(const char*, PointRange&, PolygonRange&)\endlink
+ +The following \cgal data structures can be exported into the `.VTU` file format: + +- `CGAL::Mesh_complex_3_in_triangulation_3`, using \link PkgMesh3IOFunctions `CGAL::output_to_vtu()` \endlink +- `CGAL::Constrained_Delaunay_triangulation_2`, using the function \link PkgMesh2IO `CGAL::write_vtu()` \endlink +\section IOStreamAvizo Avizo File Format + +The `.am` files are used by Avizo to read 3D geometry. + +Only the `CGAL::Mesh_complex_3_in_triangulation_3` \cgal data structure can be exported into `.am` files. +This can be done using the function \ref CGAL::output_to_avizo(). + + +\section IOStreamMedit Medit File Format + +The `.mesh` Medit file format is a format used by the Medit software. In \cgal, +it is mostly used to represent 3D meshes. +A precise specification of the format is available in this report, +in the appendices (section 7.2.1, page 36). + +Only the `CGAL::Mesh_complex_3_in_triangulation_3` \cgal data structure can be exported into `.mesh` +This can be done using the function \ref CGAL::output_to_medit() + + +\section IOStreamTetgen Tetgen File Format + +The `Tetgen` file formats can be used to represent lists of nodes, edges, faces, ... +A precise specification of the format is available at wias-berlin.de. + +Only the `CGAL::Mesh_complex_3_in_triangulation_3` \cgal data structure can be exported into +some of the Tetgen file formats, namely `.node`, `.ele` and `.face`. +This can be done using the function \ref CGAL::output_to_tetgen() + + +\section IOStreamWKT Well-Known Text (WKT) File Format + +`WKT` stands for Well-Known Text. It is a text markup language for representing +vector geometry objects on a geographical map. See the +wikipedia page for details. + +See Section \ref IOstreamWKT for a list of available structures. */ diff --git a/Stream_support/doc/Stream_support/IOstream.txt b/Stream_support/doc/Stream_support/IOstream.txt index c899d7a0638..c7012c767b1 100644 --- a/Stream_support/doc/Stream_support/IOstream.txt +++ b/Stream_support/doc/Stream_support/IOstream.txt @@ -252,7 +252,7 @@ output is active or not. If the state is active, the stream output operator `<<` uses the internal stream to output its argument. If the state is inactive, nothing happens. -\section IOstreamSupportedFormats Importing and Exporting Data using Standard Formats +\section IOstreamSupportedFormats Importing and Exporting Data using Standard File Formats Although there is a large number of different types of input data structures in \cgal algorithms, some common data structures such as point sets or polygon meshes appear often. These @@ -276,7 +276,7 @@ can be read from and written to for basic point ranges. Input - read_points() + `read_points()` \link PkgPointSetProcessing3IOOff `read_OFF()` \endlink \link PkgPointSetProcessing3IOXyz `read_XYZ()` \endlink \link PkgPointSetProcessing3IOPly `read_PLY()` \endlink @@ -284,7 +284,7 @@ can be read from and written to for basic point ranges. Output - write_points() + `write_points()` \link PkgPointSetProcessing3IOOff `write_OFF()` \endlink \link PkgPointSetProcessing3IOXyz `write_XYZ()` \endlink \link PkgPointSetProcessing3IOPly `write_PLY()` \endlink @@ -293,8 +293,8 @@ can be read from and written to for basic point ranges. -The class `CGAL::Point_set_3` is the data structure used in \cgal. -It is a vector-based data structure that contains a default property (named point) +The class `CGAL::Point_set_3` is the data structure used in \cgal to represent point sets. +It is a vector-based data structure that contains a default property (named point) for the coordinates of the points, and is able to work with dynamic properties. The file formats supported for `CGAL::Point_set_3` are detailed in the table below. @@ -309,7 +309,7 @@ The file formats supported for `CGAL::Point_set_3` are detailed in the table bel Input - read_point_set() + `read_point_set()` \link PkgPointSet3IOOFF `read_OFF()` \endlink \link PkgPointSet3IOXYZ `read_XYZ()` \endlink \link PkgPointSet3IOPLY `read_PLY()` \endlink @@ -317,7 +317,7 @@ The file formats supported for `CGAL::Point_set_3` are detailed in the table bel Output - write_point_set() + `write_point_set()` \link PkgPointSet3IOOFF `write_OFF()` \endlink \link PkgPointSet3IOXYZ `write_XYZ()` \endlink \link PkgPointSet3IOPLY `write_PLY()` \endlink @@ -338,14 +338,14 @@ their indices per face (i.e a vector of 3 integers represent a triangle face). \ref IOStreamOBJ "OBJ" \ref IOStreamSTL "STL" \ref IOStreamPLY "PLY" - \ref IOStreamVTP "VTP" - \ref IOStreamGOCAD "GOCAD" + \ref IOStreamVTK "VTP" + \ref IOStreamGocad "GOCAD" \ref IOStreamWKT "WKT" \ref IOStream3MF "3MF" Input - read_polygon_soup() + `read_polygon_soup()` \link PkgStreamSupportIoFuncsOFF `read_OFF()` \endlink \link PkgStreamSupportIoFuncsOBJ `read_OBJ()` \endlink \link PkgStreamSupportIoFuncsSTL `read_STL()` \endlink @@ -353,11 +353,11 @@ their indices per face (i.e a vector of 3 integers represent a triangle face). \link PkgStreamSupportIoFuncsVTP `read_VTP()` \endlink \link PkgStreamSupportIoFuncsGOCAD `read_GOCAD()` \endlink \link PkgStreamSupportIoFuncsWKT `read_WKT()` \endlink - \link PkgStreamSupportIoFuncs3MF `read_triangle_soups_from_3mf()` \endlink + \link PkgStreamSupportIoFuncs3MF `read_3MF()` \endlink Output - write_polygon_soup() + `write_polygon_soup()` \link PkgStreamSupportIoFuncsOFF `write_OFF()` \endlink \link PkgStreamSupportIoFuncsOBJ `write_OBJ()` \endlink \link PkgStreamSupportIoFuncsSTL `write_STL()` \endlink @@ -365,13 +365,14 @@ their indices per face (i.e a vector of 3 integers represent a triangle face). \link PkgStreamSupportIoFuncsVTP `write_VTP()` \endlink \link PkgStreamSupportIoFuncsGOCAD `write_GOCAD()` \endlink \link PkgStreamSupportIoFuncsWKT `write_WKT()` \endlink - \link PkgStreamSupportIoFuncs3MF `write_triangle_soups_to_3mf()` \endlink + \link PkgStreamSupportIoFuncs3MF `write_3MF()` \endlink \subsection IOstreamPolygonMeshIO Polygon Mesh IO A Polygon Mesh is a 3D structure that refines the concept of `FaceGraph` with some additional restrictions; a more precise definition can be found \ref PMPDef "here". +The table above only lists the functions that work with any Polygon Mesh. @@ -379,7 +380,7 @@ with some additional restrictions; a more precise definition can be found \ref P - + @@ -390,7 +391,6 @@ with some additional restrictions; a more precise definition can be found \ref P - @@ -401,20 +401,24 @@ with some additional restrictions; a more precise definition can be found \ref P -
Generic \ref IOStreamOFF "OFF" \ref IOStreamSTL "STL"\ref IOStreamVTK "VTP"\ref IOStreamVTK "VTP" \ref IOStreamOBJ "OBJ" \ref IOStreamGocad "GOCAD" \ref IOStreamWRL "WRL"`read_OFF()` `read_STL()` `read_VTP()``read_VTP()` `read_OBJ()` `read_GOCAD()` - `write_OFF()` `write_STL()` `write_VTP()``write_VTP()` `write_OBJ()` `write_GOCAD()` `write_WRL()`
-The table above only lists the functions that work with any Polygon Mesh. -More functions are available for more specific classes, and they can be found -\link IOStreamSupportedFileFormats here\endlink. +Some particular polygon mesh data structures such as `CGAL::Surface_mesh` have specific overloads +of these functions, enabling reading and writing of dynamic information for some file format. +See the reference manual of each data structure for more information. + +The functions above require the input to represent a 2-manifold surface (possibly with boundaries). +If this is not the case, the package \ref PkgPolygonMeshProcessing offers the function +\link PMP_IO_grp `CGAL::Polgyon_mesh_processing::read_polygon_mesh()` \endlink +which can perform some combinatorial repairing to ensure the input data is a 2-manifold. \subsection IOstreamWKT Simple 2D Geometry IO -`WKT` stands for Well Known Text and it is a text markup language for representing +`WKT` stands for Well-Known Text and it is a text markup language for representing vector geometry objects on a geographical map. See the wikipedia page for details. CGAL supports a subset of WKT types: point, multipoint, linestring, multilinestring, polygon and multipolygon. @@ -429,36 +433,39 @@ here is a table to summarize the most useful functions : + - + - + -
Generic Points Polylines PolygonsEverything
Inputread_WKT() read_multi_point_WKT() read_multi_linestring_WKT() read_multi_polygon_WKT()read_WKT()
Output - write_multi_point_WKT() write_multi_linestring_WKT() write_multi_polygon_WKT()n/a
\subsection IOstreamOtherIO Other Data Structures -- \ref AlphaShape3DIO "3D Alpha Shapes". +Other data structures of \cgal have their own I/O functions, detailed in their respective manuals, +for example: + +- \ref AlphaShape3DIO "3D Alpha Shapes" - \ref arr_secio "2D Arrangements" +- \ref Nef_3File "3D Boolean Operations on Nef Polyhedra" - \ref secMesh_2_IO "2D Conforming Triangulations and Meshes" - \ref Mesh_3_section_io "3D Mesh Generation" -- \ref Nef_3File "3D Boolean Operations on Nef Polyhedra" -- \ref Surface_mesherIO "3D Surface Mesh" -- \ref TriangulationSecIO "Triangulation" +- \ref Surface_mesherIO "Surface Mesh Generation" +- ... \subsection IOstreamOther Reading Unsupported Formats diff --git a/Stream_support/include/CGAL/IO/3MF.h b/Stream_support/include/CGAL/IO/3MF.h index e7108cfbb78..ca7d3b2c30d 100644 --- a/Stream_support/include/CGAL/IO/3MF.h +++ b/Stream_support/include/CGAL/IO/3MF.h @@ -11,18 +11,20 @@ #ifndef CGAL_IO_3MF_H #define CGAL_IO_3MF_H -#include #include #include +#include +#include #include -#include - #ifdef CGAL_LINKED_WITH_3MF #include #endif +#include +#include + #include #include #include @@ -36,19 +38,21 @@ namespace CGAL { //////////////////////////////////////////////////////////////////////////////////////////////////// // Read +/// \cond SKIP_IN_MANUAL + template -int read_from_3mf(const std::string& fname, - PointRanges& all_points, - PolygonRanges& all_polygons, - ColorRanges& all_colors, - std::vector& names, - std::function func) +int read_3MF(const std::string& fname, + PointRanges& all_points, + PolygonRanges& all_polygons, + ColorRanges& all_colors, + std::vector& names, + std::function func) { DWORD nInterfaceVersionMajor, nInterfaceVersionMinor, nInterfaceVersionMicro, nbVertices, nbPolygons; HRESULT hResult; @@ -371,6 +375,8 @@ int read_from_3mf(const std::string& fname, return all_points.size(); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncs3MF * @@ -402,20 +408,19 @@ int read_from_3mf(const std::string& fname, * \return the number of soups read. */ template -int read_triangle_soups_from_3mf(const std::string& fname, - PointRanges& all_points, - PolygonRanges& all_polygons, - ColorRanges& all_colors, - std::vector& names) +int read_3MF(const std::string& fname, + PointRanges& all_points, + PolygonRanges& all_polygons, + ColorRanges& all_colors, + std::vector& names) { typedef typename boost::range_value::type PointRange; typedef typename boost::range_value::type PolygonRange; typedef typename boost::range_value::type ColorRange; - return read_from_3mf - (fname, all_points, all_polygons, all_colors, names, - extract_soups); + return read_3MF(fname, all_points, all_polygons, all_colors, names, + extract_soups); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -445,10 +450,10 @@ int read_triangle_soups_from_3mf(const std::string& fname, * \return `true` if the writing is successful, `false` otherwise. */ template -bool write_triangle_soups_to_3mf(const std::string& fname, - const PointRanges& all_points, - const PolygonRanges& all_polygons, - const std::vector& names) +bool write_3MF(const std::string& fname, + const PointRanges& all_points, + const PolygonRanges& all_polygons, + const std::vector& names) { // Create Model Instance NMR::PLib3MFModel * pModel; @@ -479,28 +484,31 @@ bool write_triangle_soups_to_3mf(const std::string& fname, return IO::export_model_to_file(fname, pModel); } +/// \cond SKIP_IN_MANUAL + // convenience template -bool write_triangle_soup_to_3mf(const std::string& fname, - const PointRange& points, - const PolygonRange& polygons, - const std::string& name) +bool write_3MF(const std::string& fname, + const PointRange& points, + const PolygonRange& polygons, + const std::string& name) { std::vector all_points(1, points); std::vector all_polygons(1, polygons); std::vector names(1, name); - return write_triangle_soups_to_3mf(fname, all_points, all_polygons, names); + return write_3MF(fname, all_points, all_polygons, names); } template -bool write_3MF(const std::string& fname, - const PointRange& points, - const PolygonRange& polygons) +bool write_3MF(const std::string& fname, const PointRange& points, const PolygonRange& polygons, + typename boost::enable_if >::type* = nullptr) { return write_triangle_soup_to_3mf(fname, points, polygons, "anonymous"); } +/// \endcond + } // namespace CGAL #endif // defined(CGAL_LINKED_WITH_3MF) || defined(DOXYGEN_RUNNING) diff --git a/Stream_support/include/CGAL/IO/GOCAD.h b/Stream_support/include/CGAL/IO/GOCAD.h index d7789b81249..1afc072a1d0 100644 --- a/Stream_support/include/CGAL/IO/GOCAD.h +++ b/Stream_support/include/CGAL/IO/GOCAD.h @@ -35,6 +35,8 @@ namespace CGAL { //////////////////////////////////////////////////////////////////////////////////////////////////// // Read +/// \cond SKIP_IN_MANUAL + template bool read_GOCAD(std::istream& is, std::pair& name_and_color, @@ -181,6 +183,8 @@ bool read_GOCAD(const std::string& fname, return read_GOCAD(fname.c_str(), points, polygons, np); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsGOCAD * @@ -228,12 +232,16 @@ bool read_GOCAD(const char* fname, PointRange& points, PolygonRange& polygons) return read_GOCAD(fname, points, polygons, parameters::all_default()); } +/// \cond SKIP_IN_MANUAL + template bool read_GOCAD(const std::string& fname, PointRange& points, PolygonRange& polygons) { return read_GOCAD(fname, points, polygons, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -338,12 +346,16 @@ bool write_GOCAD(std::ostream& os, return IO::internal::write_GOCAD(os, "anonymous", points, polygons, np); } +/// \cond SKIP_IN_MANUAL + template bool write_GOCAD(std::ostream& os, const PointRange& points, const PolygonRange& polygons) { return IO::internal::write_GOCAD(os, "anonymous", points, polygons, parameters::all_default()); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsGOCAD * @@ -383,19 +395,16 @@ bool write_GOCAD(const char* fname, return IO::internal::write_GOCAD(os, fname, points, polygons, np); } +/// \cond SKIP_IN_MANUAL + template bool write_GOCAD(const char* fname, const PointRange& points, const PolygonRange& polygons) { return write_GOCAD(fname, points, polygons, parameters::all_default()); } -template -bool write_GOCAD(const std::string& fname, - const PointRange& points, - const PolygonRange& polygons, - const CGAL_BGL_NP_CLASS& np) +template +bool write_GOCAD(const std::string& fname, const PointRange& points, const PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np) { return IO::internal::write_GOCAD(fname.c_str(), fname.c_str(), points, polygons, np); } @@ -406,6 +415,8 @@ bool write_GOCAD(const std::string& fname, const PointRange& points, const Polyg return write_GOCAD(fname.c_str(), points, polygons, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_IO_GOCAD_H diff --git a/Stream_support/include/CGAL/IO/OBJ.h b/Stream_support/include/CGAL/IO/OBJ.h index 244849b496a..f412aeeef34 100644 --- a/Stream_support/include/CGAL/IO/OBJ.h +++ b/Stream_support/include/CGAL/IO/OBJ.h @@ -178,6 +178,8 @@ bool read_OBJ(std::istream& is, } // namespace internal } // namespace IO +/// \cond SKIP_IN_MANUAL + template bool read_OBJ(std::istream& is, PointRange& points, @@ -185,11 +187,9 @@ bool read_OBJ(std::istream& is, const CGAL_BGL_NP_CLASS&, bool verbose = true) { - using parameters::choose_parameter; - using parameters::get_parameter; - - return IO::internal::read_OBJ(is, points, faces, CGAL::Emptyset_iterator(), - CGAL::Emptyset_iterator(), verbose); + return IO::internal::read_OBJ(is, points, faces, + CGAL::Emptyset_iterator(), CGAL::Emptyset_iterator(), + verbose); } template @@ -207,6 +207,8 @@ bool read_OBJ(const std::string& fname, PointRange& points, PolygonRange& polygo return read_OBJ(fname.c_str(), points, polygons, np, verbose); } +/// \endcond + /// \ingroup PkgStreamSupportIoFuncsOBJ /// /// \brief reads the content of `is` into `points` and `polygons`, using the \ref IOStreamOBJ. @@ -249,12 +251,16 @@ bool read_OBJ(const char* fname, PointRange& points, PolygonRange& polygons) return read_OBJ(fname, points, polygons, parameters::all_default()); } +/// \cond SKIP_IN_MANUAL + template bool read_OBJ(const std::string& fname, PointRange& points, PolygonRange& polygons) { return read_OBJ(fname, points, polygons, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -299,12 +305,16 @@ bool write_OBJ(std::ostream& os, return writer(points, polygons, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OBJ(std::ostream& os, const PointRange& points, const PolygonRange& polygons) { return write_OBJ(os, points, polygons, parameters::all_default()); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsOBJ * @@ -342,6 +352,8 @@ bool write_OBJ(const char* fname, const PointRange& points, const PolygonRange& return write_OBJ(out, points, polygons, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OBJ(const char* fname, const PointRange& points, const PolygonRange& polygons) { @@ -360,6 +372,8 @@ bool write_OBJ(const std::string& fname, const PointRange& points, const Polygon return write_OBJ(fname.c_str(), points, polygons, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_IO_OBJ_H diff --git a/Stream_support/include/CGAL/IO/OFF.h b/Stream_support/include/CGAL/IO/OFF.h index 16cabfba1dc..0c560ee6f6e 100644 --- a/Stream_support/include/CGAL/IO/OFF.h +++ b/Stream_support/include/CGAL/IO/OFF.h @@ -160,6 +160,8 @@ bool read_OFF(std::istream& is, } // namespace internal } // namespace IO +/// \cond SKIP_IN_MANUAL + template bool read_OFF(std::istream& is, PointRange& points, @@ -183,11 +185,7 @@ bool read_OFF(std::istream& is, } template -bool read_OFF(const char* fname, - PointRange& points, - PolygonRange& polygons, - const CGAL_BGL_NP_CLASS& np, - bool verbose = true) +bool read_OFF(const char* fname, PointRange& points, PolygonRange& polygons, const CGAL_BGL_NP_CLASS& np, bool verbose = true) { std::ifstream in(fname); return read_OFF(in, points, polygons, np, verbose); @@ -200,6 +198,8 @@ bool read_OFF(const std::string& fname, PointRange& points, PolygonRange& polygo return read_OFF(fname.c_str(), points, polygons, np, verbose); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsOFF * @@ -246,12 +246,16 @@ bool read_OFF(const char* fname, PointRange& points, PolygonRange& polygons) return read_OFF(fname, points, polygons, parameters::all_default()); } +/// \cond SKIP_IN_MANUAL + template bool read_OFF(const std::string& fname, PointRange& points, PolygonRange& polygons) { return read_OFF(fname, points, polygons, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -293,6 +297,8 @@ bool write_OFF(std::ostream& os, return writer(points, polygons, np); } +/// \cond SKIP_IN_MANUAL + template bool write_OFF(std::ostream& os, const PointRange& points, const PolygonRange& polygons , typename boost::enable_if >::type* = nullptr) @@ -300,6 +306,8 @@ bool write_OFF(std::ostream& os, const PointRange& points, const PolygonRange& p return write_OFF(os, points, polygons, parameters::all_default()); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsOFF * @@ -338,14 +346,11 @@ bool write_OFF(const char* fname, return writer(points, polygons, np); } +/// \cond SKIP_IN_MANUAL + template -bool write_OFF(const char* fname, - const PointRange& points, - const PolygonRange& polygons -#ifndef DOXYGEN_RUNNING - , typename boost::enable_if >::type* = nullptr -#endif - ) +bool write_OFF(const char* fname, const PointRange& points, const PolygonRange& polygons, + typename boost::enable_if >::type* = nullptr) { return write_OFF(fname, points, polygons, parameters::all_default()); } @@ -363,6 +368,8 @@ bool write_OFF(const std::string& fname, const PointRange& points, const Polygon return write_OFF(fname, points, polygons, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_IO_OFF_H diff --git a/Stream_support/include/CGAL/IO/PLY.h b/Stream_support/include/CGAL/IO/PLY.h index f43fbab287d..977778b041b 100644 --- a/Stream_support/include/CGAL/IO/PLY.h +++ b/Stream_support/include/CGAL/IO/PLY.h @@ -222,6 +222,8 @@ bool read_PLY(std::istream& is, } // namespace internal } // namespace IO +/// \cond SKIP_IN_MANUAL + template bool read_PLY(std::istream& is, PointRange& points, @@ -278,6 +280,8 @@ bool read_PLY(std::istream& is, PointRange& points, PolygonRange& polygons, std::back_inserter(dummy_pf), verbose); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsPLY * @@ -365,6 +369,8 @@ bool read_PLY(const char* fname, } } +/// \cond SKIP_IN_MANUAL + template bool read_PLY(const char* fname, PointRange& points, PolygonRange& polygons, const bool verbose = true, typename boost::enable_if >::type* = nullptr) @@ -386,6 +392,8 @@ bool read_PLY(const std::string& fname, PointRange& points, PolygonRange& polygo return read_PLY(fname.c_str(), points, polygons, parameters::all_default(), verbose); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -467,6 +475,8 @@ bool write_PLY(std::ostream& out, return out.good(); } +/// \cond SKIP_IN_MANUAL + template bool write_PLY(std::ostream& out, const PointRange& points, const PolygonRange& polygons, typename boost::enable_if >::type* = nullptr) @@ -474,6 +484,8 @@ bool write_PLY(std::ostream& out, const PointRange& points, const PolygonRange& return write_PLY(out, points, polygons, parameters::all_default()); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsPLY * @@ -532,6 +544,8 @@ bool write_PLY(const char* fname, } } +/// \cond SKIP_IN_MANUAL + template bool write_PLY(const char* fname, const PointRange& points, const PolygonRange& polygons, typename boost::enable_if >::type* = nullptr) @@ -553,6 +567,8 @@ bool write_PLY(const std::string& fname, const PointRange& points, const Polygon return write_PLY(fname.c_str(), points, polygons, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_IO_PLY_H diff --git a/Stream_support/include/CGAL/IO/STL.h b/Stream_support/include/CGAL/IO/STL.h index 549c430c646..eb56d80549e 100644 --- a/Stream_support/include/CGAL/IO/STL.h +++ b/Stream_support/include/CGAL/IO/STL.h @@ -145,6 +145,8 @@ bool read_STL(std::istream& is, PointRange& points, TriangleRange& facets) return read_STL(is, points, facets, parameters::all_default()); } +/// \cond SKIP_IN_MANUAL + template bool read_STL(const char* fname, PointRange& points, TriangleRange& facets, const CGAL_BGL_NP_CLASS& np) @@ -159,6 +161,8 @@ bool read_STL(const std::string& fname, PointRange& points, TriangleRange& facet return read_STL(fname.c_str(), points, facets, np); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsSTL * @@ -182,12 +186,16 @@ bool read_STL(const char* fname, PointRange& points, TriangleRange& facets) return read_STL(fname, points, facets, parameters::all_default()); } +/// \cond SKIP_IN_MANUAL + template bool read_STL(const std::string& fname, PointRange& points, TriangleRange& facets) { return read_STL(fname, points, facets, parameters::all_default()); } +/// \endcond + //////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// // Write @@ -290,12 +298,16 @@ bool write_STL(std::ostream& os, return !os.fail(); } +/// \cond SKIP_IN_MANUAL + template bool write_STL(std::ostream& os, const PointRange& points, const TriangleRange& facets) { return write_STL(os, points, facets, parameters::all_default()); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsSTL * @@ -331,6 +343,8 @@ bool write_STL(const char* fname, const PointRange& points, const TriangleRange& return write_STL(os, points, facets, np); } +/// \cond SKIP_IN_MANUAL + template bool write_STL(const char* fname, const PointRange& points, const TriangleRange& facets) { @@ -350,6 +364,8 @@ bool write_STL(const std::string& fname, const PointRange& points, const Triangl return write_STL(fname.c_str(), points, facets, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // CGAL_IO_STL_H diff --git a/Stream_support/include/CGAL/IO/VTK.h b/Stream_support/include/CGAL/IO/VTK.h index 06d7ca21bed..1c44865ccf4 100644 --- a/Stream_support/include/CGAL/IO/VTK.h +++ b/Stream_support/include/CGAL/IO/VTK.h @@ -444,12 +444,16 @@ bool write_VTP(std::ostream& os, os << "\n"; } +/// \cond SKIP_IN_MANUAL + template bool write_VTP(std::ostream& os, const PointRange& points, const PolygonRange& polygons) { return write_VTP(os, points, polygons, parameters::all_default()); } +/// \endcond + /*! * \ingroup PkgStreamSupportIoFuncsVTP * @@ -504,6 +508,8 @@ bool write_VTP(const char* fname, } } +/// \cond SKIP_IN_MANUAL + template bool write_VTP(const char* fname, const PointRange& points, const PolygonRange& polygons) { @@ -522,6 +528,8 @@ bool write_VTP(const std::string& fname, const PointRange& points, const Polygon return write_VTP(fname.c_str(), points, polygons, parameters::all_default()); } +/// \endcond + } // namespace CGAL #endif // defined(CGAL_USE_VTK) || defined(DOXYGEN_RUNNING) diff --git a/Stream_support/include/CGAL/IO/io.h b/Stream_support/include/CGAL/IO/io.h index f074cdef86e..80de620f4ea 100644 --- a/Stream_support/include/CGAL/IO/io.h +++ b/Stream_support/include/CGAL/IO/io.h @@ -388,7 +388,7 @@ Benchmark_rep bmformat( const T& t, F) { return Benchmark_rep(t); } returns the printing mode of the %IO stream `s`. -\sa `CGAL::IO::Mode` +\link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink \sa `CGAL::set_mode()` \sa `CGAL::set_ascii_mode()` \sa `CGAL::set_binary_mode()` @@ -408,7 +408,7 @@ inline IO::Mode get_mode(std::ios& i) sets the mode of the %IO stream `s` to be the `IO::ASCII` mode. Returns the previous mode of `s`. -\sa `CGAL::IO::Mode` +\link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink \sa `CGAL::set_mode()` \sa `CGAL::set_binary_mode()` \sa `CGAL::set_pretty_mode()` @@ -430,7 +430,7 @@ inline IO::Mode set_ascii_mode(std::ios& i) sets the mode of the %IO stream `s` to be the `IO::BINARY` mode. Returns the previous mode of `s`. -\sa `CGAL::IO::Mode` +\link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink \sa `CGAL::set_mode()` \sa `CGAL::set_ascii_mode()` \sa `CGAL::set_pretty_mode()` @@ -452,7 +452,7 @@ inline IO::Mode set_binary_mode(std::ios& i) sets the mode of the %IO stream `s` to be the `IO::PRETTY` mode. Returns the previous mode of `s`. -\sa `CGAL::IO::Mode` +\link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink \sa `CGAL::set_mode()` \sa `CGAL::set_ascii_mode()` \sa `CGAL::set_binary_mode()` @@ -473,7 +473,7 @@ inline IO::Mode set_pretty_mode(std::ios& i) sets the printing mode of the %IO stream `s`. -\sa `CGAL::IO::Mode` +\link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink \sa `CGAL::set_ascii_mode()` \sa `CGAL::set_binary_mode()` \sa `CGAL::set_pretty_mode()` @@ -494,7 +494,7 @@ inline IO::Mode set_mode(std::ios& i, IO::Mode m) checks if the %IO stream `s` is in `IO::PRETTY` mode. -\sa `CGAL::IO::Mode` +\link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink \sa `CGAL::set_mode()` \sa `CGAL::set_ascii_mode()` \sa `CGAL::set_binary_mode()` @@ -510,7 +510,7 @@ inline bool is_pretty(std::ios& i) { return i.iword(IO::Static::get_mode()) == I checks if the %IO stream `s` is in `IO::ASCII` mode. -\sa `CGAL::IO::Mode` +\link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink \sa `CGAL::set_mode()` \sa `CGAL::set_ascii_mode()` \sa `CGAL::set_binary_mode()` @@ -526,7 +526,7 @@ inline bool is_ascii(std::ios& i) { return i.iword(IO::Static::get_mode()) == IO checks if the %IO stream `s` is in `IO::BINARY` mode. -\sa `CGAL::IO::Mode` +\link PkgStreamSupportEnumRef `CGAL::IO::Mode`\endlink \sa `CGAL::set_mode()` \sa `CGAL::set_ascii_mode()` \sa `CGAL::set_binary_mode()` diff --git a/Stream_support/include/CGAL/IO/polygon_soup_io.h b/Stream_support/include/CGAL/IO/polygon_soup_io.h index f6247f75d30..b454035197a 100644 --- a/Stream_support/include/CGAL/IO/polygon_soup_io.h +++ b/Stream_support/include/CGAL/IO/polygon_soup_io.h @@ -15,7 +15,7 @@ #ifndef CGAL_IO_READ_POLYGON_SOUP_H #define CGAL_IO_READ_POLYGON_SOUP_H -// #include +#include #include #include // #include diff --git a/Surface_mesh/doc/Surface_mesh/PackageDescription.txt b/Surface_mesh/doc/Surface_mesh/PackageDescription.txt index f882bb15535..939c4dd0311 100644 --- a/Surface_mesh/doc/Surface_mesh/PackageDescription.txt +++ b/Surface_mesh/doc/Surface_mesh/PackageDescription.txt @@ -19,6 +19,10 @@ /// I/O Functions for \ref IOStreamPLY /// \ingroup PkgSurfaceMeshIOFunc +/// \defgroup PkgSurfaceMeshIOFunc3MF I/O Functions (3MF) +/// I/O Functions for \ref IOStream3MF +/// \ingroup PkgSurfaceMeshIOFunc + /// \defgroup PkgSurfaceMeshIOFuncDeprecated I/O Functions (Deprecated) /// \ingroup PkgSurfaceMeshIOFunc diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h index 9839411b611..d05326c1376 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/3MF.h @@ -29,7 +29,7 @@ namespace CGAL { // @todo generalize it to any model of `FaceGraph` and put it in BGL/IO (see read_OFF for the face color map) /*! - * \ingroup PkgSurfaceMeshIOFunc + * \ingroup PkgSurfaceMeshIOFunc3MF * * \brief extracts the surface meshes from an input 3mf file and appends it to `output`. * @@ -59,7 +59,7 @@ int read_3MF(const std::string& filename, std::vector > all_colors; int result = 0; - int nb_meshes = CGAL::read_triangle_soups_from_3mf(filename, all_points, all_polygons, all_colors, names); + int nb_meshes = CGAL::read_3MF(filename, all_points, all_polygons, all_colors, names); if(nb_meshes < 0) { std::cerr << "Error in reading meshes." << std::endl; diff --git a/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h b/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h index 302e5dc47b2..f6be2ad04b6 100644 --- a/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h +++ b/Surface_mesh/include/CGAL/Surface_mesh/IO/PLY.h @@ -840,6 +840,8 @@ bool read_PLY(std::istream& is, return true; } +/// \cond SKIP_IN_MANUAL + template bool read_PLY(std::istream& is, Surface_mesh

& sm) { @@ -847,13 +849,14 @@ bool read_PLY(std::istream& is, Surface_mesh

& sm) return read_PLY(is, sm, dummy); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! \ingroup PkgSurfaceMeshIOFuncDeprecated \deprecated This function is deprecated since \cgal 5.2, `CGAL::read_PLY(std::ostream&, const Surface_mesh&)` should be used instead. */ - template CGAL_DEPRECATED bool read_ply(std::istream& is, Surface_mesh

& sm, std::string& comments) { @@ -1098,6 +1101,8 @@ bool write_PLY(std::ostream& os, return true; } +/// \cond SKIP_IN_MANUAL + template bool write_PLY(std::ostream& os, const Surface_mesh

& sm, const std::string& comments) { @@ -1118,6 +1123,8 @@ bool write_PLY(std::ostream& os, const Surface_mesh

& sm) return write_PLY(os, sm, unused_comment, parameters::all_default()); } +/// \endcond + #ifndef CGAL_NO_DEPRECATED_CODE /*! diff --git a/Triangulation/doc/Triangulation/Triangulation.txt b/Triangulation/doc/Triangulation/Triangulation.txt index c5216aa5c9e..c992f6d7cd3 100644 --- a/Triangulation/doc/Triangulation/Triangulation.txt +++ b/Triangulation/doc/Triangulation/Triangulation.txt @@ -566,11 +566,6 @@ Performance of the insertion of 1000 points in a Delaunay triangulation. Running time wrt. number of maximal simplices, for dimensions for 2 to 12. \cgalFigureEnd -\section TriangulationSecIO Input/Output - -It is possible to export a Triangulation to the OFF format with the function -`CGAL::export_triangulation_to_off()`. - \section TriangulationSecDesign Design and Implementation History Starting with the version 2.3 of \cgal, a package written by Susan Hert and Michael Seel