#include <CGAL/Arr_extended_dcel.h>
#include <CGAL/Arr_observer.h>
 
#include "arr_exact_construction_segments.h"
 
 
private:
  size_t n_faces;                       
 
public:
  Face_index_observer(Ex_arrangement& arr) :
    n_faces(0)
  {
    CGAL_precondition(arr.is_empty());
    arr.unbounded_face()->set_data (0);
  }
 
  virtual void after_split_face(Face_handle, Face_handle new_face, bool)
  {
    new_face->set_data(++n_faces);        
  }
};
 
int main() {
  
  Ex_arrangement arr;
  Face_index_observer obs(arr);
  insert_non_intersecting_curve(arr, Segment(Point(4, 1), Point(7, 6)));
  insert_non_intersecting_curve(arr, Segment(Point(1, 6), Point(7, 6)));
  insert_non_intersecting_curve(arr, Segment(Point(4, 1), Point(1, 6)));
  insert(arr, Segment(Point(1, 3), Point(7, 3)));
  insert(arr, Segment(Point(1, 3), Point(4, 8)));
  insert(arr, Segment(Point(4, 8), Point(7, 3)));
 
  
  
  std::cout << arr.number_of_faces() << " faces:\n";
  for (auto fit = arr.faces_begin(); fit != arr.faces_end(); ++fit) {
    std::cout << "Face no. " << fit->data() << ": ";
    if (fit->is_unbounded()) std::cout << "Unbounded.\n";
    else {
      auto curr = fit->outer_ccb();
      std::cout << curr->source()->point();
      do std::cout << " --> " << curr->target()->point();
      while (++curr != fit->outer_ccb());
      std::cout << std::endl;
    }
  }
 
  return 0;
}
The Arr_face_extended_dcel class-template extends the DCEL face-records, making it possible to store ...
Definition: Arr_extended_dcel.h:206
Definition: Arrangement_2.h:57
typename Arrangement_::Observer Arr_observer
Arr_observer<Arrangement_2> is an alias for Aos_observer<Arrangement_on_surface_2>,...
Definition: Arr_observer.h:13