Skip to content

Commit

Permalink
Stream_support: Add read_VTK() (#7826)
Browse files Browse the repository at this point in the history
## Summary of Changes

Add `read_VTK()` so that we can also read non-xml   *.vtk files.

- [x] Document it correctly

## Release Management

* Affected package(s): Stream_support 
* Feature/Small Feature (if any):
* Link to compiled documentation:
[overview](https://cgal.github.io/7826/v0/Stream_support/IOStreamSupportedFileFormats.html#IOStreamVTK)
and
[function](https://cgal.github.io/7826/v0/Stream_support/group__PkgStreamSupportIoFuncsVTK.html#gaad7f1c5c10e8700a4a6de88294c5a620)

* License and copyright ownership:
  • Loading branch information
sloriot authored Dec 18, 2023
2 parents be9c8c8 + b119523 commit 1787da4
Show file tree
Hide file tree
Showing 5 changed files with 182 additions and 124 deletions.
7 changes: 3 additions & 4 deletions Polyhedron/doc/Polyhedron/CGAL/IO/Polyhedron_iostream.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,23 +75,22 @@ This function overloads the generic function \link PkgBGLIoFuncsOFF `write_OFF(s
\sa \link PkgPolyhedronIOFunc `operator>>(std::istream& in, Polyhedron_3<Traits>& P)` \endlink
*/
template <class Traits>
bool write_OFF( std::ostream& out, Polyhedron_3<Traits>& P);
bool write_OFF( std::ostream& out, const Polyhedron_3<Traits>& P);

/*!
\relates Polyhedron_3
\deprecated This function is deprecated since \cgal 5.3,
\link PkgPolyhedronIOFunc `CGAL::IO::write_OFF(std::ostream&, Polyhedron_3<Traits>&)` \endlink should be used instead.
*/
template <class Traits>
bool write_off( std::ostream& out, Polyhedron_3<Traits>& P);
bool write_off( std::ostream& out, const Polyhedron_3<Traits>& P);

/*!
\relates Polyhedron_3
\ingroup PkgPolyhedronIOFunc
calls \link write_OFF() `write_OFF(out, P)` \endlink.
*/
template <class Traits>
std::ostream& operator<<( std::ostream& out, Polyhedron_3<Traits>& P);
std::ostream& operator<<( std::ostream& out, const Polyhedron_3<Traits>& P);

} /* namespace CGAL */

Original file line number Diff line number Diff line change
Expand Up @@ -43,57 +43,57 @@ The following table lists some \cgal data structures that have I/O functions com
<td rowspan="6" width="75">Input</td>
<td rowspan="3" width="175">Polygon Mesh</td>
<td width="250">`CGAL::Surface_mesh`</td>
<td width="500">\link PkgSurfaceMeshIOFuncOFF CGAL::IO::read_OFF(const char*, CGAL::Surface_mesh&)\endlink</td>
<td width="500">\link PkgSurfaceMeshIOFuncOFF CGAL::IO::read_OFF(const std::string&, CGAL::Surface_mesh&)\endlink</td>
</tr>
<tr>
<td>`CGAL::Polyhedron_3`</td>
<td>\link PkgPolyhedronIOFunc CGAL::IO::read_OFF(const char*, CGAL::Polyhedron_3&)\endlink</td>
<td>\link PkgPolyhedronIOFunc CGAL::IO::read_OFF(const std::string&, CGAL::Polyhedron_3&)\endlink</td>
</tr>
<tr>
<td>Any model of `MutableFaceGraph`</td>
<td>\link PkgBGLIoFuncsOFF CGAL::IO::read_OFF(const char*, Graph&)\endlink</td>
<td>\link PkgBGLIoFuncsOFF CGAL::IO::read_OFF(const std::string&, Graph&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Point Set</td>
<td>`CGAL::Point_set_3`</td>
<td>\link PkgPointSet3IOOFF CGAL::IO::read_OFF(const char*, CGAL::Point_set_3&)\endlink</td>
<td>\link PkgPointSet3IOOFF CGAL::IO::read_OFF(const std::string&, CGAL::Point_set_3&)\endlink</td>
</tr>
<tr>
<td>Any point range</td>
<td>\link PkgPointSetProcessing3IOOff CGAL::IO::read_OFF(const char*, PointRange&)\endlink</td>
<td>\link PkgPointSetProcessing3IOOff CGAL::IO::read_OFF(const std::string&, PointOutputIterator)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsOFF CGAL::IO::read_OFF(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsOFF CGAL::IO::read_OFF(const std::string&, PointRange&, PolygonRange&)\endlink</td>
</tr>
<tr>
<td rowspan="6">Output</td>
<td rowspan="3">Polygon Mesh</td>
<td>`CGAL::Surface_mesh`</td>
<td>\link PkgSurfaceMeshIOFuncOFF CGAL::IO::write_OFF(const char*, CGAL::Surface_mesh&)\endlink</td>
<td>\link PkgSurfaceMeshIOFuncOFF CGAL::IO::write_OFF(const std::string, CGAL::Surface_mesh&)\endlink</td>
</tr>
<tr>
<td>`CGAL::Polyhedron_3`</td>
<td>\link PkgPolyhedronIOFunc CGAL::IO::write_OFF(const char*, CGAL::Polyhedron_3&)\endlink</td>
<td>\link PkgPolyhedronIOFunc CGAL::IO::write_OFF(const std::string&, const CGAL::Polyhedron_3&)\endlink</td>
</tr>
<tr>
<td>Any model of `FaceGraph`</td>
<td>\link PkgBGLIoFuncsOFF CGAL::IO::write_OFF(const char*, Graph&)\endlink</td>
<td>\link PkgBGLIoFuncsOFF CGAL::IO::write_OFF(const std::string&, const Graph&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Point Set</td>
<td>`CGAL::Point_set_3`</td>
<td>\link PkgPointSet3IOOFF CGAL::IO::write_OFF(const char*, CGAL::Point_set_3&)\endlink</td>
<td>\link PkgPointSet3IOOFF CGAL::IO::write_OFF(const std::string&, const CGAL::Point_set_3&)\endlink</td>
</tr>
<tr>
<td>Any point range</td>
<td>\link PkgPointSetProcessing3IOOff CGAL::IO::write_OFF(const char*, PointRange&)\endlink</td>
<td>\link PkgPointSetProcessing3IOOff CGAL::IO::write_OFF(const std::string&, const PointRange&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsOFF CGAL::IO::write_OFF(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsOFF CGAL::IO::write_OFF(const std::string&, const PointRange&, const PolygonRange&)\endlink</td>
</tr>
</table>

Expand All @@ -117,23 +117,23 @@ A precise specification of the format is available <a href="https://www.martinre
<td rowspan="2" width="75">Input</td>
<td rowspan="1" width="175">Polygon Mesh</td>
<td width="250">Any model of `MutableFaceGraph`</td>
<td width="500">\link PkgBGLIoFuncsOBJ CGAL::IO::read_OBJ(const char*, Graph&)\endlink</td>
<td width="500">\link PkgBGLIoFuncsOBJ CGAL::IO::read_OBJ(const std::string&, Graph&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsOBJ CGAL::IO::read_OBJ(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsOBJ CGAL::IO::read_OBJ(const std::string&, PointRange&, PolygonRange&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Output</td>
<td rowspan="1">Polygon Mesh</td>
<td>Any model of `FaceGraph`</td>
<td>\link PkgBGLIoFuncsOBJ CGAL::IO::write_OBJ(const char*, Graph&)\endlink</td>
<td>\link PkgBGLIoFuncsOBJ CGAL::IO::write_OBJ(const std::string&, const Graph&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsOBJ CGAL::IO::write_OBJ(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsOBJ CGAL::IO::write_OBJ(const std::string&, const PointRange&, const PolygonRange&)\endlink</td>
</tr>
</table>

Expand All @@ -158,23 +158,23 @@ A precise specification of those formats is available <a href="https://www.fabbe
<td rowspan="2" width="75">Input</td>
<td rowspan="1" width="175">Polygon Mesh</td>
<td width="250">Any model of `MutableFaceGraph`</td>
<td width="500">\link PkgBGLIoFuncsSTL CGAL::IO::read_STL(const char*, Graph&)\endlink</td>
<td width="500">\link PkgBGLIoFuncsSTL CGAL::IO::read_STL(const std::string&, Graph&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsSTL CGAL::IO::read_STL(const char*, PointRange&, TriangleRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsSTL CGAL::IO::read_STL(const std::string&, PointRange&, TriangleRange&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Output</td>
<td rowspan="1">Polygon Mesh</td>
<td>Any model of `FaceGraph`</td>
<td>\link PkgBGLIoFuncsSTL CGAL::IO::write_STL(const char*, Graph&)\endlink</td>
<td>\link PkgBGLIoFuncsSTL CGAL::IO::write_STL(const std::string&, const Graph&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsSTL CGAL::IO::write_STL(const char*, PointRange&, TriangleRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsSTL CGAL::IO::write_STL(const std::string&, const PointRange&, const TriangleRange&)\endlink</td>
</tr>
</table>

Expand Down Expand Up @@ -202,49 +202,49 @@ A precise specification of those formats is available <a href="https://paulbourk
<td rowspan="5" width="75">Input</td>
<td rowspan="2" width="175">Polygon Mesh</td>
<td width="250">`CGAL::Surface_mesh`</td>
<td width="500">\link PkgSurfaceMeshIOFuncPLY CGAL::IO::read_PLY(const char*, CGAL::Surface_mesh&)\endlink</td>
<td width="500">\link PkgSurfaceMeshIOFuncPLY CGAL::IO::read_PLY(const std::string&, CGAL::Surface_mesh&)\endlink</td>
</tr>
<tr>
<td>Any model of `MutableFaceGraph`</td>
<td>\link PkgBGLIoFuncsPLY CGAL::IO::read_PLY(const char*, Graph&)\endlink</td>
<td>\link PkgBGLIoFuncsPLY CGAL::IO::read_PLY(const std::string&, Graph&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Point Set</td>
<td>`CGAL::Point_set_3`</td>
<td>\link PkgPointSet3IOPLY CGAL::IO::read_PLY(const char*, CGAL::Point_set_3&)\endlink</td>
<td>\link PkgPointSet3IOPLY CGAL::IO::read_PLY(const std::string&, CGAL::Point_set_3&)\endlink</td>
</tr>
<tr>
<td>Any point range</td>
<td>\link PkgPointSetProcessing3IOPly CGAL::IO::read_PLY(const char*, PointRange&)\endlink</td>
<td>\link PkgPointSetProcessing3IOPly CGAL::IO::read_PLY(const std::string&, PointRange&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsPLY CGAL::IO::read_PLY(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsPLY CGAL::IO::read_PLY(const std::string&, PointRange&, PolygonRange&)\endlink</td>
</tr>
<tr>
<td rowspan="5">Output</td>
<td rowspan="2">Polygon Mesh</td>
<td>`CGAL::Surface_mesh`</td>
<td>\link PkgSurfaceMeshIOFuncPLY CGAL::IO::write_PLY(const char*, CGAL::Surface_mesh&)\endlink</td>
<td>\link PkgSurfaceMeshIOFuncPLY CGAL::IO::write_PLY(const std::string&, const CGAL::Surface_mesh&)\endlink</td>
</tr>
<tr>
<td>Any model of `FaceGraph`</td>
<td>\link PkgBGLIoFuncsPLY CGAL::IO::write_PLY(const char*, Graph&)\endlink</td>
<td>\link PkgBGLIoFuncsPLY CGAL::IO::write_PLY(const std::string&, const Graph&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Point Set</td>
<td>`CGAL::Point_set_3`</td>
<td>\link PkgPointSet3IOPLY CGAL::IO::write_PLY(const char*, CGAL::Point_set_3&)\endlink</td>
<td>\link PkgPointSet3IOPLY CGAL::IO::write_PLY(const std::string&, const CGAL::Point_set_3&)\endlink</td>
</tr>
<tr>
<td>Any point range</td>
<td>\link PkgPointSetProcessing3IOPly CGAL::IO::write_PLY(const char*, PointRange&)\endlink</td>
<td>\link PkgPointSetProcessing3IOPly CGAL::IO::write_PLY(const std::string&, const PointRange&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsPLY CGAL::IO::write_PLY(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsPLY CGAL::IO::write_PLY(const std::string&, const PointRange&, PolygonRange&)\endlink</td>
</tr>
</table>

Expand All @@ -270,21 +270,21 @@ A precise specification of those formats is available
<td rowspan="2" width="75">Input</td>
<td rowspan="2" width="175">Point Set</td>
<td width="250">`CGAL::Point_set_3`</td>
<td width="500">\link PkgPointSet3IOLAS CGAL::IO::read_LAS(const char*, CGAL::Point_set_3&)\endlink</td>
<td width="500">\link PkgPointSet3IOLAS CGAL::IO::read_LAS(const std::string&, CGAL::Point_set_3&)\endlink</td>
</tr>
<tr>
<td>Any point range</td>
<td>\link PkgPointSetProcessing3IOLas CGAL::IO::read_LAS(const char*, PointRange&)\endlink</td>
<td>\link PkgPointSetProcessing3IOLas CGAL::IO::read_LAS(const std::string&, PointRange&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Output</td>
<td rowspan="2">Point Set</td>
<td>`CGAL::Point_set_3`</td>
<td>\link PkgPointSet3IOLAS CGAL::IO::write_LAS(const char*, CGAL::Point_set_3&)\endlink</td>
<td>\link PkgPointSet3IOLAS CGAL::IO::write_LAS(const std::string&, const CGAL::Point_set_3&)\endlink</td>
</tr>
<tr>
<td>Any point range</td>
<td>\link PkgPointSetProcessing3IOLas CGAL::IO::write_LAS(const char*, PointRange&)\endlink</td>
<td>\link PkgPointSetProcessing3IOLas CGAL::IO::write_LAS(const std::string&, const PointRange&)\endlink</td>
</tr>
</table>

Expand All @@ -303,21 +303,21 @@ of its coordinates and other properties. Only coordinates and normals are curren
<td rowspan="2" width="75">Input</td>
<td rowspan="2" width="175">Point Set</td>
<td width="250">`CGAL::Point_set_3`</td>
<td width="500">\link PkgPointSet3IOXYZ CGAL::IO::read_XYZ(const char*, CGAL::Point_set_3&)\endlink</td>
<td width="500">\link PkgPointSet3IOXYZ CGAL::IO::read_XYZ(const std::string&, CGAL::Point_set_3&)\endlink</td>
</tr>
<tr>
<td>Any point range</td>
<td>\link PkgPointSetProcessing3IOXyz CGAL::IO::read_XYZ(const char*, PointRange&)\endlink</td>
<td>\link PkgPointSetProcessing3IOXyz CGAL::IO::read_XYZ(const std::string&, PointRange&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Output</td>
<td rowspan="2">Point Set</td>
<td>`CGAL::Point_set_3`</td>
<td>\link PkgPointSet3IOXYZ CGAL::IO::write_XYZ(const char*, CGAL::Point_set_3&)\endlink</td>
<td>\link PkgPointSet3IOXYZ CGAL::IO::write_XYZ(const std::string&, const CGAL::Point_set_3&)\endlink</td>
</tr>
<tr>
<td>Any point range</td>
<td>\link PkgPointSetProcessing3IOXyz CGAL::IO::write_XYZ(const char*, PointRange&)\endlink</td>
<td>\link PkgPointSetProcessing3IOXyz CGAL::IO::write_XYZ(const std::string&, const PointRange&)\endlink</td>
</tr>
</table>

Expand All @@ -337,23 +337,23 @@ A precise specification of the format is available <a href="https://paulbourke.n
<td rowspan="2" width="75">Input</td>
<td rowspan="1" width="175">Polygon Mesh</td>
<td width="250">Any model of `MutableFaceGraph`</td>
<td width="500">\link PkgBGLIoFuncsGOCAD CGAL::IO::read_GOCAD(const char*, Graph&)\endlink</td>
<td width="500">\link PkgBGLIoFuncsGOCAD CGAL::IO::read_GOCAD(const std::string&, Graph&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsGOCAD CGAL::IO::read_GOCAD(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsGOCAD CGAL::IO::read_GOCAD(const std::string&, PointRange&, PolygonRange&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Output</td>
<td rowspan="1">Polygon Mesh</td>
<td>Any model of `FaceGraph`</td>
<td>\link PkgBGLIoFuncsGOCAD CGAL::IO::write_GOCAD(const char*, Graph&)\endlink</td>
<td>\link PkgBGLIoFuncsGOCAD CGAL::IO::write_GOCAD(const std::string&, const Graph&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsGOCAD CGAL::IO::write_GOCAD(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsGOCAD CGAL::IO::write_GOCAD(const std::string&, const PointRange&, const PolygonRange&)\endlink</td>
</tr>
</table>

Expand Down Expand Up @@ -381,23 +381,23 @@ note that only versions `1.x` are currently supported in \cgal.
<td rowspan="2" width="75">Input</td>
<td rowspan="1" width="175">Polygon Mesh</td>
<td width="250">`CGAL::Surface_mesh`</td>
<td width="500">\link PkgSurfaceMeshIOFunc3MF CGAL::IO::read_3MF(const char*, Surface_meshRange&)\endlink</td>
<td width="500">\link PkgSurfaceMeshIOFunc3MF CGAL::IO::read_3MF(const std::string&, Surface_meshRange&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncs3MF CGAL::IO::read_3MF(const char*, PointRanges&, PolygonRanges&)\endlink</td>
<td>\link PkgStreamSupportIoFuncs3MF CGAL::IO::read_3MF(const std::string&, PointRanges&, PolygonRanges&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Output</td>
<td rowspan="1">Polygon Mesh</td>
<td>Any model of `FaceGraph`</td>
<td>\link PkgBGLIoFuncs3MF CGAL::IO::write_3MF(const char*, GraphRange&)\endlink</td>
<td>\link PkgBGLIoFuncs3MF CGAL::IO::write_3MF(const std::string&, const GraphRange&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncs3MF CGAL::IO::write_3MF(const char*, PointRanges&, PolygonRanges&)\endlink</td>
<td>\link PkgStreamSupportIoFuncs3MF CGAL::IO::write_3MF(const std::string&, const PointRanges&, const PolygonRanges&)\endlink</td>
</tr>
</table>

Expand All @@ -416,17 +416,17 @@ A precise specification of the format is available <a href="http://gun.teipir.gr

<table class="iotable">
<tr>
<th colspan="4">3D Manufacturing Format (3MF)</th>
<th colspan="4">3D VRML Format (WRL)</th>
</tr>
<tr>
<td rowspan="1" width="75">Output</td>
<td rowspan="1" width="175">Polygon Mesh</td>
<td width="250">Any model of `FaceGraph`</td>
<td width="500">\link PkgBGLIoFuncsWRL CGAL::IO::write_WRL(const char*, Graph&)\endlink</td>
<td width="500">\link PkgBGLIoFuncsWRL CGAL::IO::write_WRL(const std::string&, const Graph&)\endlink</td>
</tr>
</table>

\section IOStreamVTK VTK (VTU / VTP) File Formats
\section IOStreamVTK VTK (VTU / VTP / legacy) File Formats

\attention \cgal needs to be configured with the VTK Libraries for this function to be available.

Expand All @@ -440,36 +440,38 @@ The VTK libraries use different file formats to handle data structures, but we o

- The `VTP` format can be used to store collections of points, lines, and triangles.
In the <a href="https://vtk.org/"> VTK Libraries</a>, it is the format
reserved to store `PolyData`, and in \cgal, we use it to store Polygon Meshes.
reserved to store `PolyData`, and in \cgal, we use it to store polygon meshes.

We additionally provide a read function for the legacy non-XML `VTK` file format for polygon meshes.

A precise specification of those formats is available at
<a href="https://vtk.org/wp-content/uploads/2015/04/file-formats.pdf">vtk.org</a>.

<table class="iotable">
<tr>
<th colspan="4">VTK (VTU / VTP) File Formats</th>
<th colspan="4">VTK (VTU / VTP / legacy) File Formats</th>
</tr>
<tr>
<td rowspan="2" width="75">Input</td>
<td rowspan="1" width="175">Polygon Mesh</td>
<td width="250">Any model of `MutableFaceGraph`</td>
<td width="500">\link PkgBGLIoFuncsVTP CGAL::IO::read_VTP(const char*, Graph&)\endlink</td>
<td width="800">\link PkgBGLIoFuncsVTP CGAL::IO::read_VTP(const std::string&, Graph&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsVTP CGAL::IO::read_VTP(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsVTK CGAL::IO::read_VTP(const std::string&, PointRange&, PolygonRange&)\endlink, <BR> \link PkgStreamSupportIoFuncsVTK CGAL::IO::read_VTK(const std::string&, PointRange&, PolygonRange&)\endlink</td>
</tr>
<tr>
<td rowspan="2">Output</td>
<td rowspan="1">Polygon Mesh</td>
<td>Any model of `FaceGraph`</td>
<td>\link PkgBGLIoFuncsVTP CGAL::IO::write_VTP(const char*, Graph&)\endlink</td>
<td>\link PkgBGLIoFuncsVTP CGAL::IO::write_VTP(const std::string&, const Graph&)\endlink</td>
</tr>
<tr>
<td>Polygon Soup</td>
<td>Any point + polygon range</td>
<td>\link PkgStreamSupportIoFuncsVTP CGAL::IO::write_VTP(const char*, PointRange&, PolygonRange&)\endlink</td>
<td>\link PkgStreamSupportIoFuncsVTK CGAL::IO::write_VTP(const std::string&, const PointRange&, const PolygonRange&)\endlink</td>
</tr>
</table>

Expand Down
Loading

0 comments on commit 1787da4

Please sign in to comment.