BWAPI
Public Types | Public Member Functions | Protected Types | Protected Attributes
Arr_construction_sl_visitor< Helper_ > Class Template Reference

#include <Arr_construction_sl_visitor.h>

Collaboration diagram for Arr_construction_sl_visitor< Helper_ >:
Collaboration graph
[legend]

List of all members.

Public Types

typedef Helper_ Helper
typedef Helper::Traits_2 Traits_2
typedef Helper::Arrangement_2 Arrangement_2
typedef Helper::Base_visitor Base
typedef Helper::Event Event
typedef Helper::Subcurve Subcurve
typedef
Traits_2::X_monotone_curve_2 
X_monotone_curve_2
typedef Traits_2::Point_2 Point_2

Public Member Functions

 Arr_construction_sl_visitor (Arrangement_2 *arr)
virtual ~Arr_construction_sl_visitor ()
Eventlast_event_on_subcurve (Subcurve *sc)
Sweep-line notifications.
void before_sweep ()
void before_handle_event (Event *event)
bool after_handle_event (Event *event, Status_line_iterator iter, bool flag)
void add_subcurve (const X_monotone_curve_2 &cv, Subcurve *sc)
Insertion functions.
virtual Halfedge_handle insert_in_face_interior (const X_monotone_curve_2 &cv, Subcurve *sc)
virtual Halfedge_handle insert_from_left_vertex (const X_monotone_curve_2 &cv, Halfedge_handle he, Subcurve *sc)
virtual Halfedge_handle insert_from_right_vertex (const X_monotone_curve_2 &cv, Halfedge_handle prev, Subcurve *sc)
virtual Halfedge_handle insert_at_vertices (const X_monotone_curve_2 &cv, Halfedge_handle prev1, Halfedge_handle prev2, Subcurve *sc, bool &new_face_created)
virtual Vertex_handle insert_isolated_vertex (const Point_2 &pt, Status_line_iterator iter)
void relocate_in_new_face (Halfedge_handle he)

Protected Types

typedef
Arrangement_2::Topology_traits 
Topology_traits
typedef
Arrangement_2::Vertex_handle 
Vertex_handle
typedef
Arrangement_2::Halfedge_handle 
Halfedge_handle
typedef Arrangement_2::Face_handle Face_handle
typedef
Base::Event_subcurve_iterator 
Event_subcurve_iterator
typedef
Base::Event_subcurve_reverse_iterator 
Event_subcurve_reverse_iterator
typedef Base::Status_line_iterator Status_line_iterator
typedef Helper::Indices_list Indices_list
typedef
Helper::Halfedge_indices_map 
Halfedge_indices_map
typedef Unique_hash_map
< unsigned int, Vertex_handle,
Integer_hash_function
Iso_vertices_map

Protected Attributes

Helper m_helper
Arrangement_2m_arr
Topology_traitsm_top_traits
Arr_accessor< Arrangement_2m_arr_access
unsigned int m_sc_counter
std::vector< Halfedge_handlem_sc_he_table
Iso_vertices_map m_iso_verts_map
Halfedge_indices_map m_he_indices_table
const Vertex_handle m_invalid_vertex

Detailed Description

template<class Helper_>
class Arr_construction_sl_visitor< Helper_ >

A sweep-line visitor for constructing an arrangement embedded on a surface.


Member Typedef Documentation

template<class Helper_>
typedef Helper::Arrangement_2 Arr_construction_sl_visitor< Helper_ >::Arrangement_2
template<class Helper_>
typedef Helper::Base_visitor Arr_construction_sl_visitor< Helper_ >::Base
template<class Helper_>
typedef Helper::Event Arr_construction_sl_visitor< Helper_ >::Event
template<class Helper_>
typedef Base::Event_subcurve_iterator Arr_construction_sl_visitor< Helper_ >::Event_subcurve_iterator [protected]
template<class Helper_>
typedef Base::Event_subcurve_reverse_iterator Arr_construction_sl_visitor< Helper_ >::Event_subcurve_reverse_iterator [protected]
template<class Helper_>
typedef Arrangement_2::Face_handle Arr_construction_sl_visitor< Helper_ >::Face_handle [protected]
template<class Helper_>
typedef Arrangement_2::Halfedge_handle Arr_construction_sl_visitor< Helper_ >::Halfedge_handle [protected]
template<class Helper_>
typedef Helper::Halfedge_indices_map Arr_construction_sl_visitor< Helper_ >::Halfedge_indices_map [protected]
template<class Helper_>
typedef Helper_ Arr_construction_sl_visitor< Helper_ >::Helper
template<class Helper_>
typedef Helper::Indices_list Arr_construction_sl_visitor< Helper_ >::Indices_list [protected]
template<class Helper_>
typedef Unique_hash_map<unsigned int, Vertex_handle, Integer_hash_function> Arr_construction_sl_visitor< Helper_ >::Iso_vertices_map [protected]
template<class Helper_>
typedef Traits_2::Point_2 Arr_construction_sl_visitor< Helper_ >::Point_2
template<class Helper_>
typedef Base::Status_line_iterator Arr_construction_sl_visitor< Helper_ >::Status_line_iterator [protected]
template<class Helper_>
typedef Helper::Subcurve Arr_construction_sl_visitor< Helper_ >::Subcurve
template<class Helper_>
typedef Arrangement_2::Topology_traits Arr_construction_sl_visitor< Helper_ >::Topology_traits [protected]
template<class Helper_>
typedef Helper::Traits_2 Arr_construction_sl_visitor< Helper_ >::Traits_2
template<class Helper_>
typedef Arrangement_2::Vertex_handle Arr_construction_sl_visitor< Helper_ >::Vertex_handle [protected]
template<class Helper_>
typedef Traits_2::X_monotone_curve_2 Arr_construction_sl_visitor< Helper_ >::X_monotone_curve_2

Constructor & Destructor Documentation

template<class Helper_>
Arr_construction_sl_visitor< Helper_ >::Arr_construction_sl_visitor ( Arrangement_2 arr) [inline]

Constructor.

template<class Helper_>
virtual Arr_construction_sl_visitor< Helper_ >::~Arr_construction_sl_visitor ( ) [inline, virtual]

Destructor.


Member Function Documentation

template<class Hlpr >
void Arr_construction_sl_visitor< Hlpr >::add_subcurve ( const X_monotone_curve_2 cv,
Subcurve sc 
)

A notification invoked when a new subcurve is created.

Here is the call graph for this function:

template<class Hlpr >
bool Arr_construction_sl_visitor< Hlpr >::after_handle_event ( Event event,
Status_line_iterator  iter,
bool  flag 
)
template<class Hlpr >
void Arr_construction_sl_visitor< Hlpr >::before_handle_event ( Event event) [inline]
template<class Hlpr >
void Arr_construction_sl_visitor< Hlpr >::before_sweep ( ) [inline]
template<class Hlpr >
Arr_construction_sl_visitor< Hlpr >::Halfedge_handle Arr_construction_sl_visitor< Hlpr >::insert_at_vertices ( const X_monotone_curve_2 cv,
Halfedge_handle  prev1,
Halfedge_handle  prev2,
Subcurve sc,
bool &  new_face_created 
) [virtual]

Insert the given subcurve given its two end-vertices.

Parameters:
cvThe geometric subcurve.
prev1The predecessor halfedge around the left vertex.
prev2The predecessor halfedge around the right vertex.
scThe sweep-line subcurve information.
new_face_createdOutput: Whether a new face has been created.
Returns:
A handle to the inserted halfedge.

Reimplemented in Arr_overlay_sl_visitor< _Overlay_helper< Arr_overlay_traits_2< Arr_traits_basic_adaptor_2< Geometry_traits_2 >, ArrangementA_, ArrangementB_ >, ArrangementA_, ArrangementB_ >, OverlayTraits_ >, and Arr_overlay_sl_visitor< _Overlay_helper< Arr_overlay_traits_2< Geometry_traits_2, ArrangementA_, ArrangementB_ >, ArrangementA_, ArrangementB_ >, OverlayTraits_ >.

Here is the call graph for this function:

Here is the caller graph for this function:

template<class Hlpr >
Arr_construction_sl_visitor< Hlpr >::Halfedge_handle Arr_construction_sl_visitor< Hlpr >::insert_from_left_vertex ( const X_monotone_curve_2 cv,
Halfedge_handle  he,
Subcurve sc 
) [virtual]

Insert the given subcurve given its left end-vertex.

Parameters:
cvThe geometric entity.
prevThe predecessor halfedge around the left vertex.
scThe sweep-line subcurve information.
Returns:
A handle to the inserted halfedge.

Reimplemented in Arr_overlay_sl_visitor< _Overlay_helper< Arr_overlay_traits_2< Arr_traits_basic_adaptor_2< Geometry_traits_2 >, ArrangementA_, ArrangementB_ >, ArrangementA_, ArrangementB_ >, OverlayTraits_ >, and Arr_overlay_sl_visitor< _Overlay_helper< Arr_overlay_traits_2< Geometry_traits_2, ArrangementA_, ArrangementB_ >, ArrangementA_, ArrangementB_ >, OverlayTraits_ >.

Here is the caller graph for this function:

template<class Hlpr >
Arr_construction_sl_visitor< Hlpr >::Halfedge_handle Arr_construction_sl_visitor< Hlpr >::insert_from_right_vertex ( const X_monotone_curve_2 cv,
Halfedge_handle  prev,
Subcurve sc 
) [virtual]

Insert the given subcurve given its right end-vertex.

Parameters:
cvThe geometric entity.
prevThe predecessor halfedge around the right vertex.
scThe sweep-line subcurve information.
Returns:
A handle to the inserted halfedge.

Reimplemented in Arr_overlay_sl_visitor< _Overlay_helper< Arr_overlay_traits_2< Arr_traits_basic_adaptor_2< Geometry_traits_2 >, ArrangementA_, ArrangementB_ >, ArrangementA_, ArrangementB_ >, OverlayTraits_ >, and Arr_overlay_sl_visitor< _Overlay_helper< Arr_overlay_traits_2< Geometry_traits_2, ArrangementA_, ArrangementB_ >, ArrangementA_, ArrangementB_ >, OverlayTraits_ >.

Here is the call graph for this function:

Here is the caller graph for this function:

template<class Hlpr >
Arr_construction_sl_visitor< Hlpr >::Halfedge_handle Arr_construction_sl_visitor< Hlpr >::insert_in_face_interior ( const X_monotone_curve_2 cv,
Subcurve sc 
) [virtual]

Insert the given subcurve in the interior of a face.

Parameters:
cvThe geometric subcurve.
scThe sweep-line subcurve information.
Returns:
A handle to the inserted halfedge.

Reimplemented in Arr_overlay_sl_visitor< _Overlay_helper< Arr_overlay_traits_2< Arr_traits_basic_adaptor_2< Geometry_traits_2 >, ArrangementA_, ArrangementB_ >, ArrangementA_, ArrangementB_ >, OverlayTraits_ >, and Arr_overlay_sl_visitor< _Overlay_helper< Arr_overlay_traits_2< Geometry_traits_2, ArrangementA_, ArrangementB_ >, ArrangementA_, ArrangementB_ >, OverlayTraits_ >.

Here is the call graph for this function:

Here is the caller graph for this function:

template<class Hlpr >
Arr_construction_sl_visitor< Hlpr >::Vertex_handle Arr_construction_sl_visitor< Hlpr >::insert_isolated_vertex ( const Point_2 pt,
Status_line_iterator  iter 
) [virtual]
template<class Helper_>
Event* Arr_construction_sl_visitor< Helper_ >::last_event_on_subcurve ( Subcurve sc) [inline]

Get the last event associated with the given subcurve.

template<class Hlpr >
void Arr_construction_sl_visitor< Hlpr >::relocate_in_new_face ( Halfedge_handle  he)

Relocate holes and isolated vertices inside a newly created face f2, that was split from f1 after the insertion of a new edge.

Parameters:
heThe halfedge that caused the face split. Its incident face is the new face f2, and the incident face of its twin is f1.

Member Data Documentation

template<class Helper_>
Arrangement_2* Arr_construction_sl_visitor< Helper_ >::m_arr [protected]
template<class Helper_>
Arr_accessor<Arrangement_2> Arr_construction_sl_visitor< Helper_ >::m_arr_access [protected]
template<class Helper_>
Halfedge_indices_map Arr_construction_sl_visitor< Helper_ >::m_he_indices_table [protected]
template<class Helper_>
Helper Arr_construction_sl_visitor< Helper_ >::m_helper [protected]
template<class Helper_>
const Vertex_handle Arr_construction_sl_visitor< Helper_ >::m_invalid_vertex [protected]
template<class Helper_>
Iso_vertices_map Arr_construction_sl_visitor< Helper_ >::m_iso_verts_map [protected]
template<class Helper_>
unsigned int Arr_construction_sl_visitor< Helper_ >::m_sc_counter [protected]
template<class Helper_>
std::vector<Halfedge_handle> Arr_construction_sl_visitor< Helper_ >::m_sc_he_table [protected]
template<class Helper_>
Topology_traits* Arr_construction_sl_visitor< Helper_ >::m_top_traits [protected]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines