Use "integer type" and not "std::size_t" for 3MF I/O

This commit is contained in:
Mael Rouxel-Labbé 2020-07-24 10:49:56 +02:00
parent 47955af9b4
commit 2bdb63b1ae
2 changed files with 36 additions and 33 deletions

View File

@ -35,18 +35,18 @@ namespace CGAL {
/*!
* \ingroup PkgBGLIoFuncs3MF
*
* \brief writes the triangle meshes contained in `gs` into the 3mf file `filename`.
* \brief writes the triangle meshes contained in `gs` into the file `filename`, using the \ref IOStream3MF.
*
* \tparam GraphRange a model of the concepts `RandomAccessContainer`
* and `BackInsertionSequence` whose `value_type` is
* a model of the concepts `FaceGraph` and `HalfedgeListGraph`
* that has only triangle faces.
*
* \param filename the name of the 3mf file to write.
* \param filename the name of the 3mf file to write
* \param gs a container of triangle meshes to write. An internal property map for `CGAL::vertex_point_t`
* must be available for each mesh.
* \param names a range of `std::string` associating a name to each mesh to be written out, which
* will appear in the output.
* will appear in the output
*
* \return `true` if the writing is successful, `false` otherwise.
*
@ -70,7 +70,8 @@ bool write_3MF(const std::string& filename,
typedef typename boost::graph_traits<FaceGraph>::vertex_descriptor vertex_descriptor;
typedef typename boost::graph_traits<FaceGraph>::face_descriptor face_descriptor;
typedef std::vector<std::size_t> Triangle;
// @todo `Triangle` ought to be just array<int, 3>
typedef std::vector<int> Triangle;
typedef std::vector<Triangle> TriangleRange;
typedef std::vector<Point> PointRange;
@ -85,9 +86,11 @@ bool write_3MF(const std::string& filename,
triangles.reserve(num_faces(g));
VPM vpm = get(boost::vertex_point, g);
std::unordered_map<typename boost::graph_traits<FaceGraph>::vertex_descriptor, std::size_t> vertex_id_map;
std::size_t i = 0;
// @todo dynamic pmap
std::unordered_map<typename boost::graph_traits<FaceGraph>::vertex_descriptor, int> vertex_id_map;
int i = 0;
for(const vertex_descriptor v : vertices(g))
{
points.push_back(get(vpm, v));
@ -101,6 +104,7 @@ bool write_3MF(const std::string& filename,
for(vertex_descriptor vert : CGAL::vertices_around_face(halfedge(f, g), g))
triangle.push_back(vertex_id_map[vert]);
CGAL_assertion(triangle.size() == 3);
triangles.push_back(triangle);
}

View File

@ -380,30 +380,30 @@ bool read_3MF(const std::string& fname,
/*!
* \ingroup PkgStreamSupportIoFuncs3MF
*
* \brief extracts ranges of points and triangles from a 3mf file.
* \brief reads ranges of points and triangles from an input file, using the \ref IOStream3MF.
*
* \tparam PointRanges a model of the concepts `RandomAccessContainer` and
* `BackInsertionSequence` whose `value_type` is
* a model of the concepts `RandomAccessContainer` and `BackInsertionSequence`
* whose `value_type` is the point type.
* `BackInsertionSequence` whose `value_type` is
* a model of the concepts `RandomAccessContainer` and `BackInsertionSequence`
* whose `value_type` is the point type.
* \tparam TriangleRanges a model of the concept `RandomAccessContainer` whose
* `value_type` is a model of the concept `RandomAccessContainer`
* whose `value_type` is a model of the concept `RandomAccessContainer` whose
* `value_type` is std::size_t.
* `value_type` is a model of the concept `RandomAccessContainer`
* whose `value_type` is a model of the concept `RandomAccessContainer` whose
* `value_type` is an integer type.
* \tparam ColorRanges a model of the concepts `RandomAccessContainer` and
* `BackInsertionSequence` whose `value_type` is
* a model of the concepts `RandomAccessContainer` and `BackInsertionSequence`
* whose `value_type` is `CGAL::Color`.
* `BackInsertionSequence` whose `value_type` is
* a model of the concepts `RandomAccessContainer` and `BackInsertionSequence`
* whose `value_type` is `CGAL::Color`.
*
* \param fname the name of the 3mf file to read.
* \param fname the name of the 3mf file to read
* \param all_points a `PointRanges` that will contain the points of the meshes in `fname`.
* Each of these meshes will add a range of its points.
* Each of these meshes will add a range of its points.
* \param all_triangles a `TriangleRanges` that will contain the triangles of the meshes in `fname`.
* Each of these meshes will add a range of its triangles. A `triangle` of
* `all_triangles[i]` contains the indices of its points in `all_points[i]`.
* Each of these meshes will add a range of its triangles. A `triangle` of
* `all_triangles[i]` contains the indices of its points in `all_points[i]`.
* \param all_colors will contain the color of each triangle for each soup.
* \param names will contain the name of each mesh in `fname` if any.
* If the i'th mesh has no name, it will be called "Unknown Mesh" in names.
* If the i-th mesh has no name, it will be called "Unknown Mesh" in `names`.
*
* \returns `true` if reading was successful, `false` otherwise.
*/
@ -430,22 +430,21 @@ int read_3MF(const std::string& fname,
/*!
* \ingroup PkgStreamSupportIoFuncs3MF
*
* \brief writes the triangle soups contained in `all_points` and
* `all_triangles` into the 3mf file `fname`.
* \brief writes the triangle soups contained in `all_points` and `all_triangles` into the file `fname`, using the \ref IOStream3MF.
*
* \tparam PointRanges a model of the concepts `RandomAccessContainer` and
* `BackInsertionSequence` whose `value_type` is
* a model of the concepts `RandomAccessContainer` and `BackInsertionSequence`
* whose `value_type` is the point type.
* `BackInsertionSequence` whose `value_type` is
* a model of the concepts `RandomAccessContainer` and `BackInsertionSequence`
* whose `value_type` is the point type.
* \tparam TriangleRanges a model of the concept `RandomAccessContainer` whose
* `value_type` is a model of the concept `RandomAccessContainer`
* whose `value_type` is a model of the concept `RandomAccessContainer` whose
* `value_type` is std::size_t.
* `value_type` is a model of the concept `RandomAccessContainer`
* whose `value_type` is a model of the concept `RandomAccessContainer` whose
* `value_type` is an integer type.
*
* \param fname the name of the 3mf file to write.
* \param all_points a `PointRanges` that contains the points of the soups to write.
* \param all_triangles a `TriangleRanges` that contains the triangles of the soups in `fname`.
* \param names contains the name of each mesh to be output.
* \param fname the name of the 3mf file to write
* \param all_points a `PointRanges` that contains the points of the soups to write
* \param all_triangles a `TriangleRanges` that contains the triangles of the soups in `fname`
* \param names a range of std::string` associating a name to each soup, which will appear in the output
*
* \return `true` if the writing is successful, `false` otherwise.
*/