template<typename Graph, typename FIMap = typename boost::property_map<Graph, CGAL::face_index_t>::type, typename VIMap = typename boost::property_map<Graph, boost::vertex_index_t>::type, typename HIMap = typename boost::property_map<Graph, CGAL::halfedge_index_t>::type>
struct CGAL::Face_filtered_graph< Graph, FIMap, VIMap, HIMap >
The class Face_filtered_graph
is an adaptor that creates a filtered view of a graph by restricting it to a subset of faces.
Contrary to boost::filtered_graph
, this class only requires a way to access the selected faces and will automatically select the edges/halfedges and vertices present in the adapted graph. A vertex is selected if it is incident to at least one selected face. A edge is selected if it is incident to at least a selected face. A halfedge is selected if its edge is selected.
Since this class is a model of the FaceGraph
concept, there is a restriction on the set of selected faces: the adapted graph must define a manifold mesh. In order to check that this condition is verified, you can use the function is_selection_valid()
.
There are two different ways to initialize this class. You can directly provide the set of faces selected, or if you have a face patch map, select the patches of faces. The latter option is convenient if you want to access some connected components of a graph after having called CGAL::Polygon_mesh_processing::connected_components()
.
The documented interface of this class is limited on purpose and free functions of the concept this class is a model of must be used to manipulate it.
A BGL-like named parameter mechanism is used in the constructors of this class. Default values are available but if you need to set them, you can pass for np
CGAL::parameters::face_index_map(fim).halfedge_index_map(him).vertex_index_map(vim)
where fim
, him
, and vim
are the respective index maps. The order of the arguments is not important and any of them can be missing if the default is fine.
- Template Parameters
-
- Is Model Of:
FaceListGraph
HalfedgeListGraph
VertexListGraph
- Examples:
- BGL_surface_mesh/surface_mesh_partition.cpp, Polygon_mesh_processing/face_filtered_graph_example.cpp, and Surface_mesh_segmentation/extract_segmentation_into_mesh_example.cpp.
|
template<typename FacePatchIndexMap , class FacePatchIndexRange , class NamedParameters > |
| Face_filtered_graph (const Graph &graph, const FacePatchIndexRange &selected_face_patch_indices, FacePatchIndexMap face_patch_index_map, const NamedParameters &np) |
| Constructor where the set of selected faces is specified as a range of patch ids. More...
|
|
template<typename FacePatchIndexMap , class NamedParameters > |
| Face_filtered_graph (const Graph &graph, typename boost::property_traits< FacePatchIndexMap >::value_type selected_face_patch_index, FacePatchIndexMap face_patch_index_map, const NamedParameters &np) |
| Constructor where the set of selected faces is specified as a patch id. More...
|
|
template<typename FaceRange , class NamedParameters > |
| Face_filtered_graph (const Graph &graph, const FaceRange &selected_faces, const NamedParameters &np) |
| Constructor where the set of selected faces is specified as a range of face descriptors. More...
|
|
const Graph & | graph () const |
| returns a const reference to the underlying graph.
|
|
Graph & | graph () |
| returns a reference to the underlying graph.
|
|
template<class FacePatchIndexMap > |
void | set_selected_faces (typename boost::property_traits< FacePatchIndexMap >::value_type face_patch_id, FacePatchIndexMap face_patch_index_map) |
| change the set of selected faces using a patch id
|
|
template<class FacePatchIndexRange , class FacePatchIndexMap > |
void | set_selected_faces (const FacePatchIndexRange &selected_face_patch_indices, FacePatchIndexMap face_patch_index_map) |
| change the set of selected faces using a range of patch ids
|
|
template<class FaceRange > |
void | set_selected_faces (const FaceRange &selection) |
| change the set of selected faces using a range of face descriptors
|
|
size_type | number_of_faces () const |
| returns the number of selected faces
|
|
size_type | number_of_vertices () const |
| returns the number of selected vertices.
|
|
size_type | number_of_halfedges () const |
| returns the number of selected halfedges.
|
|
bool | is_selection_valid () |
| returns true if around any vertex of a selected face, there is at most one connected set of selected faces. More...
|
|
template<typename Graph , typename FIMap = typename boost::property_map<Graph, CGAL::face_index_t>::type, typename VIMap = typename boost::property_map<Graph, boost::vertex_index_t>::type, typename HIMap = typename boost::property_map<Graph, CGAL::halfedge_index_t>::type>
template<typename FacePatchIndexMap , class FacePatchIndexRange , class NamedParameters >
CGAL::Face_filtered_graph< Graph, FIMap, VIMap, HIMap >::Face_filtered_graph |
( |
const Graph & |
graph, |
|
|
const FacePatchIndexRange & |
selected_face_patch_indices, |
|
|
FacePatchIndexMap |
face_patch_index_map, |
|
|
const NamedParameters & |
np |
|
) |
| |
Constructor where the set of selected faces is specified as a range of patch ids.
- Template Parameters
-
FacePatchIndexMap | a model of ReadablePropertyMap with face_descriptor as key type and graph_traits<Graph>::faces_size_type as value type. |
FacePatchIndexRange | a model of ConstRange with boost::property_traits<FacePatchIndexMap>::value_type as value type. |
NamedParameters | a sequence of named parameters |
- Parameters
-
graph | the underlying graph. |
face_patch_index_map | the property_map that assigns a patch index to each face, with face_descriptor as key type and boost::graph_traits<Graph>::faces_size_type as value type. |
selected_face_patch_indices | a range of the face patch indices to select. |
np | optional sequence of named parameters among the ones listed below |
- Named Parameters
face_index_map | a property map containing an index for each face initialized from 0 to num_vertices(graph) |
vertex_index_map | a property map containing an index for each vertex initialized 0 to num_vertices(vertex) |
halfedge_index_map | a property map containing an index for each halfedge initialized 0 to num_halfedges(graph) |
template<typename Graph , typename FIMap = typename boost::property_map<Graph, CGAL::face_index_t>::type, typename VIMap = typename boost::property_map<Graph, boost::vertex_index_t>::type, typename HIMap = typename boost::property_map<Graph, CGAL::halfedge_index_t>::type>
template<typename FacePatchIndexMap , class NamedParameters >
CGAL::Face_filtered_graph< Graph, FIMap, VIMap, HIMap >::Face_filtered_graph |
( |
const Graph & |
graph, |
|
|
typename boost::property_traits< FacePatchIndexMap >::value_type |
selected_face_patch_index, |
|
|
FacePatchIndexMap |
face_patch_index_map, |
|
|
const NamedParameters & |
np |
|
) |
| |
Constructor where the set of selected faces is specified as a patch id.
- Template Parameters
-
FacePatchIndexMap | a model of ReadablePropertyMap with face_descriptor as key type and graph_traits<Graph>::faces_size_type as value type. |
NamedParameters | a sequence of named parameters |
- Parameters
-
graph | the underlying graph. |
face_patch_index_map | the property_map that assigns a patch index to each face, with face_descriptor as key type and graph_traits<Graph>::faces_size_type as value type. |
selected_face_patch_index | the index of the face patch selected. |
np | optional sequence of named parameters among the ones listed below |
- Named Parameters
face_index_map | a property map containing an index for each face initialized from 0 to num_vertices(graph) |
vertex_index_map | a property map containing an index for each vertex initialized 0 to num_vertices(vertex) |
halfedge_index_map | a property map containing an index for each halfedge initialized 0 to num_halfedges(graph) |
template<typename Graph , typename FIMap = typename boost::property_map<Graph, CGAL::face_index_t>::type, typename VIMap = typename boost::property_map<Graph, boost::vertex_index_t>::type, typename HIMap = typename boost::property_map<Graph, CGAL::halfedge_index_t>::type>
template<typename FaceRange , class NamedParameters >
Constructor where the set of selected faces is specified as a range of face descriptors.
- Template Parameters
-
FaceRange | a model of ConstRange with face_descriptor as value type. |
NamedParameters | a sequence of named parameters |
- Parameters
-
graph | the graph containing the wanted patch. |
selected_faces | the set of selected faces. |
np | optional sequence of named parameters among the ones listed below |
- Named Parameters
face_index_map | a property map containing an index for each face initialized from 0 to num_vertices(graph) |
vertex_index_map | a property map containing an index for each vertex initialized 0 to num_vertices(vertex) |
halfedge_index_map | a property map containing an index for each halfedge initialized 0 to num_halfedges(graph) |
template<typename Graph , typename FIMap = typename boost::property_map<Graph, CGAL::face_index_t>::type, typename VIMap = typename boost::property_map<Graph, boost::vertex_index_t>::type, typename HIMap = typename boost::property_map<Graph, CGAL::halfedge_index_t>::type>
returns true
if around any vertex of a selected face, there is at most one connected set of selected faces.