diff --git a/Packages/Arrangement/demo/Arrangement_2/Polyline_arr_from_file.C b/Packages/Arrangement/demo/Arrangement_2/Polyline_arr_from_file.C index baf65757d04..1e56f89712c 100644 --- a/Packages/Arrangement/demo/Arrangement_2/Polyline_arr_from_file.C +++ b/Packages/Arrangement/demo/Arrangement_2/Polyline_arr_from_file.C @@ -8,10 +8,9 @@ // We use the leda traits (therefore we use leda functions). #include - +#include #include #include -#include #include #ifndef CGAL_USE_LEDA @@ -29,61 +28,56 @@ int main() #include #include -typedef leda_real NT; -typedef CGAL::Cartesian Rep; +typedef leda_real NT; +typedef CGAL::Cartesian Kernel; +typedef CGAL::Arr_polyline_traits Traits; -typedef CGAL::Arr_polyline_traits Traits; +typedef Traits::Point_2 Point; +typedef Traits::X_curve_2 X_curve; +typedef Traits::Curve_2 Curve; -typedef Traits::Point Point; -typedef Traits::X_curve X_curve; -typedef Traits::Curve Curve; +typedef CGAL::Arr_base_node Base_node; +typedef CGAL::Arr_2_default_dcel Dcel; -typedef CGAL::Arr_base_node Base_node; -typedef CGAL::Arr_2_default_dcel Dcel; - -typedef CGAL::Arrangement_2 Arr_2; +typedef CGAL::Arrangement_2 Arr_2; // global variables are used so that the redraw function for the LEDA window // can be defined to draw information found in these variables. -static Arr_2 arr; -static CGAL::Window_stream W(400, 400, "CGAL - Polyline Arrangement Demo"); +static Arr_2 Arr; leda_point to_leda_pnt(Point p) { return leda_point(p.x().to_double(), p.y().to_double()); } -CGAL::Window_stream& operator<<(CGAL::Window_stream& os, - const Point& p) + +CGAL_BEGIN_NAMESPACE +Window_stream & operator<<(Window_stream & os, const Point & p) { // conversion to leda_point in order to show it on screen return os << to_leda_pnt(p); } // draw a polyline, with points as 'x's -CGAL::Window_stream& operator<<(CGAL::Window_stream& os, - const X_curve &c) +Window_stream & operator<<(Window_stream & os, const X_curve & c) { X_curve::const_iterator sit, tit; sit = c.begin(); tit = sit; tit++; - W.draw_point(to_leda_pnt(*sit), leda_green); // draw first point - for (; tit != c.end(); tit++, sit++) - { + os.draw_point(to_leda_pnt(*sit), leda_green); // draw first point + for (; tit != c.end(); tit++, sit++) { // conversion to screen drawble segment os << leda_segment(to_leda_pnt(*sit), to_leda_pnt(*tit)); - W.draw_point(to_leda_pnt(*tit), leda_green); - } + os.draw_point(to_leda_pnt(*tit), leda_green); + } return os; } -CGAL_BEGIN_NAMESPACE -Window_stream& operator<<(Window_stream& os, Arr_2 &A) +Window_stream & operator<<(Window_stream & os, Arr_2 & arr) { My_Arr_drawer< Arr_2, Arr_2::Ccb_halfedge_circulator, Arr_2::Holes_iterator> drawer(os); - draw_pm(arr, drawer, os); return os; @@ -115,10 +109,11 @@ void read_arr(Arr_2 & arr, char * filename) // redraw function for the LEDA window. used automatically when window reappears void redraw(CGAL::Window_stream * wp) -{ wp->start_buffering(); +{ + wp->start_buffering(); wp->clear(); // draw arragnement - *wp << arr; + *wp << Arr; wp->flush_buffer(); wp->stop_buffering(); } @@ -130,9 +125,10 @@ int main(int argc, char* argv[]) exit(1); } - double x0=-20,x1=300,y0=-20; + double x0 = -20, x1 = 300, y0 = -20; enum { THE_BUTTON = 10 }; - W.init(x0,x1,y0); + CGAL::Window_stream W(400, 400, "CGAL - Polyline Arrangement Demo"); + W.init(x0, x1, y0); W.set_redraw(redraw); W.set_mode(leda_src_mode); W.set_node_width(3); @@ -141,8 +137,8 @@ int main(int argc, char* argv[]) W.display(leda_window::center,leda_window::center); // read arrangement from file - read_arr(arr, argv[1]); - W << arr; + read_arr(Arr, argv[1]); + W << Arr; // (3) Point Location part Arr_2::Halfedge_handle e; @@ -153,23 +149,23 @@ int main(int argc, char* argv[]) W.set_button_label(THE_BUTTON, " Quit "); while (W.read_mouse(x,y) != THE_BUTTON) { pnt = Point(x,y); - W << arr; + W << Arr; Arr_2::Locate_type lt; - e = arr.locate(pnt ,lt); + e = Arr.locate(pnt ,lt); //color the face on the screen W << CGAL::GREEN; Arr_2::Face_handle f=e->face(); if (f->does_outer_ccb_exist()) { - Arr_2::Ccb_halfedge_circulator cc=f->outer_ccb(); + Arr_2::Ccb_halfedge_circulator cc = f->outer_ccb(); do { W << cc->curve(); } while (++cc != f->outer_ccb()); } - for (Arr_2::Holes_iterator ho=f->holes_begin(),hoe=f->holes_end(); - ho!=hoe; ++ho) { - Arr_2::Ccb_halfedge_circulator cc=*ho; + for (Arr_2::Holes_iterator ho = f->holes_begin(), hoe = f->holes_end(); + ho != hoe; ++ho) { + Arr_2::Ccb_halfedge_circulator cc = *ho; do { W << cc->curve(); } while (++cc != *ho); @@ -179,4 +175,4 @@ int main(int argc, char* argv[]) return 0; } -#endif // CGAL_USE_LEDA +#endif diff --git a/Packages/Arrangement/demo/Arrangement_2/Polyline_arr_from_mouse.C b/Packages/Arrangement/demo/Arrangement_2/Polyline_arr_from_mouse.C index de8eb02c546..22be0a41bb7 100644 --- a/Packages/Arrangement/demo/Arrangement_2/Polyline_arr_from_mouse.C +++ b/Packages/Arrangement/demo/Arrangement_2/Polyline_arr_from_mouse.C @@ -8,10 +8,9 @@ // We use the leda traits (therefore we use leda functions). #include #include - +#include #include #include -#include #include #ifndef CGAL_USE_LEDA @@ -31,24 +30,22 @@ int main() #include -typedef leda_real NT; -typedef CGAL::Cartesian R; +typedef leda_real NT; +typedef CGAL::Cartesian Kernel; +typedef CGAL::Arr_polyline_traits Traits; -typedef CGAL::Arr_polyline_traits Traits; +typedef Traits::Point_2 Point; +typedef Traits::X_curve_2 X_curve; +typedef Traits::Curve_2 Curve; -typedef Traits::Point Point; -typedef Traits::X_curve X_curve; -typedef Traits::Curve Curve; +typedef CGAL::Arr_base_node Base_node; +typedef CGAL::Arr_2_default_dcel Dcel; -typedef CGAL::Arr_base_node Base_node; -typedef CGAL::Arr_2_default_dcel Dcel; - -typedef CGAL::Arrangement_2 Arr_2; +typedef CGAL::Arrangement_2 Arr_2; // global variables are used so that the redraw function for the LEDA window // can be defined to draw information found in these variables. -static Arr_2 arr; -static CGAL::Window_stream W(400, 400, "CGAL - 2D Polyline Arrangement Demo"); +static Arr_2 Arr; static leda_string text(""); static Curve cv1; @@ -57,46 +54,41 @@ leda_point to_leda_pnt(Point p) return leda_point(p.x().to_double(), p.y().to_double()); } +CGAL_BEGIN_NAMESPACE // drawing functions -CGAL::Window_stream& operator<<(CGAL::Window_stream& os, - const Point& p) +Window_stream & operator<<(Window_stream & os, const Point & p) { // conversion to leda_point in order to show it on screen return os << to_leda_pnt(p); } // draw a polyline, with points as 'x's -CGAL::Window_stream& operator<<(CGAL::Window_stream& os, - const X_curve &c) +Window_stream & operator<<(Window_stream & os, const X_curve & c) { X_curve::const_iterator sit, tit; sit = c.begin(); tit = sit; tit++; - W.draw_point(to_leda_pnt(*sit), leda_green); // draw first point - for (; tit != c.end(); tit++, sit++) - { + os.draw_point(to_leda_pnt(*sit), leda_green); // draw first point + for (; tit != c.end(); tit++, sit++) { // conversion to screen drawble segment os << leda_segment(to_leda_pnt(*sit), to_leda_pnt(*tit)); - W.draw_point(to_leda_pnt(*tit), leda_green); - } + os.draw_point(to_leda_pnt(*tit), leda_green); + } return os; } -CGAL_BEGIN_NAMESPACE -Window_stream& operator<<(Window_stream& os, Arr_2 &A) +Window_stream & operator<<(Window_stream & os, Arr_2 & arr) { My_Arr_drawer< Arr_2, Arr_2::Ccb_halfedge_circulator, Arr_2::Holes_iterator> drawer(os); - draw_pm(arr, drawer, os); - return os; } CGAL_END_NAMESPACE -void show_welcome_message() +void show_welcome_message(CGAL::Window_stream & os) { text += "\\black "; text += "Click left button for polyline points.\\n "; @@ -105,23 +97,24 @@ void show_welcome_message() text += "Clicking close to a point, assumes the location is at the point.\\n "; text += "Lonely points will be discarded.\\n "; - W.set_status_string("Press Begin to enter polylines."); - W.redraw(); + os.set_status_string("Press Begin to enter polylines."); + os.redraw(); // wait for button } // redraw function for the LEDA window. used automatically when window reappears void redraw(CGAL::Window_stream * wp) -{ wp->start_buffering(); +{ + wp->start_buffering(); wp->clear(); // display message if one exists - if (text) W.text_box(text); + if (text) wp->text_box(text); // draw currently inserted polyline *wp << CGAL::BLACK; if (cv1.size() > 1) *wp << cv1; if (cv1.size() == 1) *wp << cv1[0]; // draw arragnement - *wp << arr; + *wp << Arr; wp->flush_buffer(); wp->stop_buffering(); } @@ -131,6 +124,7 @@ int main() // window settings double x0=-400,x1=400,y0=-400; enum { THE_BUTTON = 10 }; + CGAL::Window_stream W(400, 400, "CGAL - 2D Polyline Arrangement Demo"); W.init(x0,x1,y0); W.set_redraw(redraw); W.set_mode(leda_src_mode); @@ -140,7 +134,7 @@ int main() W.display(leda_window::center,leda_window::center); // (1) welcome part - show_welcome_message(); + show_welcome_message(W); while (W.read_mouse() != THE_BUTTON); text = ""; // empty message for redraw W.clear(); @@ -161,61 +155,56 @@ int main() last_pnt = pnt; pnt = Point(x,y); - if (b == THE_BUTTON) + if (b == THE_BUTTON) should_exit = true; - else if (b == MOUSE_BUTTON(1) || MOUSE_BUTTON(3)) - { + else if (b == MOUSE_BUTTON(1) || MOUSE_BUTTON(3)) { // looking for points in the vicinity of the click - bool vicinity_point = false, - last_in_polyline = false; + bool vicinity_point = false, + last_in_polyline = false; // first, looking in the points of this polyline Arr_2::Curve::iterator cit = cv1.begin(); - for(; ! vicinity_point && cit != cv1.end(); cit++) - { - if ( CGAL::squared_distance(pnt, *cit) < ((x1-x0)/50)*((x1-x0)/50) ) - { - pnt=*cit; - vicinity_point = true; - } - } + for(; ! vicinity_point && cit != cv1.end(); cit++) { + if ( CGAL::squared_distance(pnt, *cit) < ((x1-x0)/50)*((x1-x0)/50) ) { + pnt =* cit; + vicinity_point = true; + } + } // check if last point was re-clicked - if ( vicinity_point && last_pnt == pnt ) - { - last_in_polyline = true; - } + if ( vicinity_point && last_pnt == pnt ) { + last_in_polyline = true; + } // second, looking in other points of the arrangement - for(Arr_2::Vertex_iterator vi = arr.vertices_begin(); - ! vicinity_point && vi != arr.vertices_end(); ++vi) { - if ( CGAL::squared_distance(pnt, vi->point()) < ((x1-x0)/50)*((x1-x0)/50) ) - { - pnt=vi->point(); - vicinity_point = true; - } + for(Arr_2::Vertex_iterator vi = Arr.vertices_begin(); + ! vicinity_point && vi != Arr.vertices_end(); ++vi) { + if ( CGAL::squared_distance(pnt, vi->point()) < + ((x1-x0)/50)*((x1-x0)/50) ) + { + pnt = vi->point(); + vicinity_point = true; + } } // if last point was re-clicked ignore to avoid invalidity of polyline. if ( ! last_in_polyline ) cv1.push_back(pnt); W << CGAL::BLACK; W << pnt; - if ( ! first_point ) - { - W << leda_segment(last_pnt.x().to_double(), last_pnt.y().to_double(), - pnt.x().to_double(), pnt.y().to_double()); - } + if ( ! first_point ) { + W << leda_segment(last_pnt.x().to_double(), last_pnt.y().to_double(), + pnt.x().to_double(), pnt.y().to_double()); + } first_point = false; } - // end of polyline - // on right click, or on "Continue" - if (b == MOUSE_BUTTON(3) || - (should_exit && cv1.size() > 1)) - { - if ( cv1.size() > 1) arr.insert(cv1); //(at least 2 points, otherwise ignore) + // end of polyline + // on right click, or on "Continue" + if (b == MOUSE_BUTTON(3) || (should_exit && cv1.size() > 1)) { + if ( cv1.size() > 1) Arr.insert(cv1); + //(at least 2 points, otherwise ignore) cv1.clear(); - W << arr; + W << Arr; first_point = true; } - } // while + } W.redraw(); @@ -223,28 +212,26 @@ int main() Arr_2::Halfedge_handle e; bool map_is_empty = false; - if (arr.halfedges_begin() == arr.halfedges_end()) + if (Arr.halfedges_begin() == Arr.halfedges_end()) map_is_empty = true; if (map_is_empty) { W.set_status_string("Arrangement is empty. Press Quit to quit."); } else { - W.set_status_string( - "Enter a point with left button. Press Quit to quit."); + W.set_status_string("Enter a point with left button. Press Quit to quit."); } W.set_button_label(THE_BUTTON, " Quit "); //enable_button(THE_BUTTON); while (W.read_mouse(x,y) != THE_BUTTON) { - pnt = Point(x,y); - W << arr; + pnt = Point(x, y); + W << Arr; - if ( ! map_is_empty ) - { + if ( ! map_is_empty ) { Arr_2::Locate_type lt; - e = arr.locate(pnt ,lt); + e = Arr.locate(pnt ,lt); - //color the face on the screen + // color the face on the screen W << CGAL::GREEN; Arr_2::Face_handle f=e->face(); if (f->does_outer_ccb_exist()) { @@ -253,9 +240,9 @@ int main() W << cc->curve(); } while (++cc != f->outer_ccb()); } - for (Arr_2::Holes_iterator ho=f->holes_begin(),hoe=f->holes_end(); - ho!=hoe; ++ho) { - Arr_2::Ccb_halfedge_circulator cc=*ho; + for (Arr_2::Holes_iterator ho=f->holes_begin(),hoe = f->holes_end(); + ho != hoe; ++ho) { + Arr_2::Ccb_halfedge_circulator cc = *ho; do { W << cc->curve(); } while (++cc != *ho); @@ -266,4 +253,4 @@ int main() return 0; } -#endif // CGAL_USE_LEDA +#endif