The main function gets as a parameter a planar map composed of one bounded face
with possibly many holes, and splits that face in the following manner:
We animate from the left vertex and the right vertex of each hole two vertical rays
going upward and downward.
We need to indicate each edge whether it is an original edge or a vertical spliting edge.
We also indicate for each face, whether it is a face associated with a hole.
We provide the following boolean operations on two polygons:
1. intersection.
2. union.
3. symmeteric diff
4. diff
the funcitons are templated with the polygon type and traits.
The CGAL polygon is a model of our polygon.
The traits is used for the sweep line algorithm.
Each function has three (optional) parameters representing the resulting features.
1. a list of points.
2. a list of segments.
3. a list of polygons.
The latter is a list of simple polygons (from the polygon type).
Hence if the we polygon with holes we split it to simple polygons.
Not all halfedges and vertices got the right face above.
When updating the halfedges and vertices a long a face, we also considered the holes of that face.
updating all the faces features.
This was added since the Map overlay should use from now on the Post precessing notifier,
rather then the In processing notifier, since the former is more efficient than the latter.
If we deal with an overlapping curve, we do not insert it to the planar map.
However, we have to invoke the add_edge function of the notifier in order
to update the current halfedge attributes.