\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 5.0 - CGAL and the Boost Graph Library

The algorithms of the Bgl often have many parameters with default values that are appropriate for most cases.

In general, when no special treatment is applied, the values of such parameters are passed as a sequence. Deviating from the default for a certain parameter requires the user to explicitly pass values for all preceding parameters. The solution to this problem is to first write a tag and then the parameter, which for Dijkstra's shortest path algorithm might look as follows:

std::vector<vertex_descriptor> p(num_vertices(g));
std::vector<int> d(num_vertices(g));
vertex_descriptor s = vertex(A, g);
dijkstra_shortest_paths(g, s, predecessor_map(&p[0]).distance_map(&d[0]));

In the Bgl manual, this is called named parameters. The named parameters in the example use the tags predecessor_map and distance_map and they are concatenated with the dot operator.

In the following, we assume that PolygonMesh is a model of the concept FaceGraph. Note that for some functions, the type might be more specific:

Here is the list of the named parameters available in this package:

vertex_point_map

is the property map with the points associated to the vertices of the polygon mesh.
Type: a class model of ReadablePropertyMap with boost::graph_traits<PolygonMesh>::vertex_descriptor as key type and a CGAL point type as value type.
Default:

boost::get(CGAL::vertex_point, pmesh)

vertex_index_map

is the property map containing the index of each vertex of the input polygon mesh.
Type: a class model of ReadablePropertyMap with boost::graph_traits<PolygonMesh>::vertex_descriptor as key type and the value type

typename boost::property_traits<typename boost::property_map<PolygonMesh, CGAL::vertex_index_t>::type>::value_type

Default:

boost::get(CGAL::vertex_index, pmesh)

halfedge_index_map

is the property map containing the index of each halfedge of the input polygon mesh.
Type: a class model of ReadablePropertyMap with boost::graph_traits<PolygonMesh>::halfedge_descriptor as key type and the value type:

typename boost::property_traits<typename boost::property_map<PolygonMesh, CGAL::halfedge_index_t>::type>::value_type

Default:

boost::get(CGAL::halfedge_index, pmesh)

If this internal property map exists, its values should be initialized.

edge_index_map

is the property map containing the index of each edge of the input polygon mesh.
Type: a class model of ReadablePropertyMap with boost::graph_traits<PolygonMesh>::edge_descriptor as key type and the value type:

typename boost::property_traits<typename boost::property_map<PolygonMesh, CGAL::edge_index_t>::type>::value_type

Default:

boost::get(CGAL::edge_index, pmesh)

If this internal property map exists, its values should be initialized.

face_index_map

is the property map containing the index of each face of the input polygon mesh.
Type: a class model of ReadablePropertyMap with boost::graph_traits<PolygonMesh>::face_descriptor as key type and the value type:

typename boost::property_traits<typename boost::property_map<PolygonMesh, CGAL::face_index_t>::type>::value_type

Default:

boost::get(CGAL::face_index, pmesh)

If this internal property map exists, its values should be initialized.

edge_is_constrained_map

is the property map containing information about edges of the input polygon mesh being marked or not.
Type: a class model of ReadWritePropertyMap with boost::graph_traits<PolygonMesh>::edge_descriptor as key type and bool as value type. It should be default constructible.
Default: a default property map where no edge is constrained

use_binary_mode

is a Boolean indicating whether the binary mode or the ASCII mode should be used when writing data into a stream.
Type: bool
Default: Function specific.

METIS_options

is a parameter used in partition_graph() and partition_dual_graph() to pass options to the METIS graph partitioner. The many options of METIS are not described here. Instead, users should refer to METIS' documentation.
Type: an array of size METIS_NOPTIONS with value type idx_t (an integer type defined by METIS).
Default: an array of size METIS_NOPTIONS with value type idx_t, initialized using the function METIS_SetDefaultOptions().

vertex_partition_id_map

is the property map storing for each vertex of the mesh the id of the subpart of the partition that has been assigned to this vertex.
Type: a class model of ReadWritePropertyMap with boost::graph_traits<PolygonMesh>::vertex_descriptor as key type and int as value type.
Default: None: this property map is used to store the partition IDs of the vertices as result of a partition algorithm; if it is not provided, this information is simply inaccessible.

face_partition_id_map

is the property map storing for each face of the mesh the id of the subpart of the partition that has been assigned to this face.
Type: a class model of ReadWritePropertyMap with boost::graph_traits<PolygonMesh>::face_descriptor as key type and int as value type.
Default: None: this property map is used to store the partition IDs of the faces as result of a partition algorithm; if it is not provided, this information is simply inaccessible.

vertex_to_vertex_output_iterator

is a model of OutputIterator accepting std::pair<vertex_descriptor, vertex_descriptor> A typical use case is mapping the vertices from a source mesh to its copy's after a copy_face_graph() operation.
Type:a class model of OutputIterator accepting std::pair<boost::graph_traits<PolygonMesh>::vertex_descriptor, boost::graph_traits<PolygonMesh>::vertex_descriptor>.
Default: Emptyset_iterator

halfedge_to_halfedge_output_iterator

is a model of OutputIterator accepting std::pair<halfedge_descriptor, halfedge_descriptor> A typical use case is mapping the halfedges from a source mesh to its copy's after a copy_face_graph() operation.
Type:a class model of OutputIterator accepting std::pair<boost::graph_traits<PolygonMesh>::halfedge_descriptor, boost::graph_traits<PolygonMesh>::halfedge_descriptor>.
Default: Emptyset_iterator

face_to_face_output_iterator

is a model of OutputIterator accepting std::pair<face_descriptor, face_descriptor> A typical use case is mapping the faces from a source mesh to its copy's after a copy_face_graph() operation.
Type:a class model of OutputIterator accepting std::pair<boost::graph_traits<PolygonMesh>::face_descriptor, boost::graph_traits<PolygonMesh>::face_descriptor>.
Default: Emptyset_iterator

vertex_to_vertex_map

is a property map storing for each vertex of a source mesh the corresponding vertex of another mesh.
A typical use case is mapping the vertices from a source mesh to its copy's after a copy_face_graph() operation.
Type:a class model of ReadWritePropertyMap with boost::graph_traits<PolygonMesh1>::vertex_descriptor as key type and boost::graph_traits<PolygonMesh2>::vertex_descriptor as value type.
Default: None.

halfedge_to_halfedge_map

is a property map storing for each halfedge of a source mesh the corresponding halfedge of another mesh.
A typical use case is mapping the vertices from a source mesh to its copy's after a copy_face_graph() operation.
Type:a class model of ReadWritePropertyMap with boost::graph_traits<PolygonMesh1>::halfedge_descriptor as key type and boost::graph_traits<PolygonMesh2>::halfedge_descriptor as value type.
Default: None.

face_to_face_map

is a property map storing for each face of a source mesh the corresponding face of another mesh.
A typical use case is mapping the vertices from a source mesh to its copy's after a copy_face_graph() operation.
Type:a class model of ReadWritePropertyMap with boost::graph_traits<PolygonMesh1>::face_descriptor as key type and boost::graph_traits<PolygonMesh2>::face_descriptor as value type.
Default: None.