\( \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 - Halfedge Data Structures
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
CGAL::HalfedgeDS_items_2 Class Reference

#include <CGAL/HalfedgeDS_items_2.h>

Definition

The class HalfedgeDS_items_2 is a model of the HalfedgeDSItems concept.

It uses the default types for vertices, halfedges, and faces that declare all incidences supported by a HalfedgeDS. The vertex also contains a point of type Traits::Point_2, where Traits is the template argument of the corresponding HalfedgeDS.

Is Model Of:
HalfedgeDSItems
See Also
CGAL::HalfedgeDS_min_items
CGAL::Polyhedron_items_3
HalfedgeDS<Traits,Items,Alloc>
PolyhedronItems_3
CGAL::HalfedgeDS_vertex_base<Refs>
CGAL::HalfedgeDS_halfedge_base<Refs>
CGAL::HalfedgeDS_face_base<Refs>

Example

The following example shows the canonical implementation of the HalfedgeDS_items_2 class. It uses the base classes for the item types that are provided in the library.

struct HalfedgeDS_items_2 {
template < class Refs, class Traits>
struct Vertex_wrapper {
typedef typename Traits::Point_2 Point;
};
template < class Refs, class Traits>
struct Halfedge_wrapper {
};
template < class Refs, class Traits>
struct Face_wrapper {
};
};

The following example shows a class definition for a new items class derived from the HalfedgeDS_items_2 class. It replaces the Face_wrapper with a new definition of a face that contains a member variable for color. The new face makes use of the face base class provided in the library.

// A face type with a color member variable.
template <class Refs>
struct My_face : public CGAL::HalfedgeDS_face_base<Refs> {
CGAL::Color color;
My_face() {}
My_face( CGAL::Color c) : color(c) {}
};
// An items type using my face.
struct My_items : public CGAL::HalfedgeDS_items_2 {
template <class Refs, class Traits>
struct Face_wrapper {
typedef My_face<Refs> Face;
};
};
Examples:
HalfedgeDS/hds_prog_color.cpp, HalfedgeDS/hds_prog_compact.cpp, and HalfedgeDS/hds_prog_compact2.cpp.