From 91ecafd004127305a1553e7beab08d155c1818b0 Mon Sep 17 00:00:00 2001 From: Guillaume Damiand Date: Mon, 4 Dec 2023 08:40:28 +0100 Subject: [PATCH] draw voronoi 2 --- .../draw_voronoi_diagram_2.cpp | 16 ++-- .../include/CGAL/draw_voronoi_diagram_2.h | 88 +++++++++++-------- 2 files changed, 58 insertions(+), 46 deletions(-) diff --git a/Voronoi_diagram_2/examples/Voronoi_diagram_2/draw_voronoi_diagram_2.cpp b/Voronoi_diagram_2/examples/Voronoi_diagram_2/draw_voronoi_diagram_2.cpp index 2cd8f4a7ef3..54c1e8c9b54 100644 --- a/Voronoi_diagram_2/examples/Voronoi_diagram_2/draw_voronoi_diagram_2.cpp +++ b/Voronoi_diagram_2/examples/Voronoi_diagram_2/draw_voronoi_diagram_2.cpp @@ -23,15 +23,15 @@ int main(int argc, char* argv[]) { VD vd; std::ifstream ifs((argc>1)?argv[1]:"data/data4.dt.cin"); - assert(ifs); + if(ifs) + { + Site_2 t; + while ( ifs >> t ) { vd.insert(t); } + ifs.close(); + assert( vd.is_valid() ); - Site_2 t; - while ( ifs >> t ) { vd.insert(t); } - ifs.close(); - - assert( vd.is_valid() ); - - CGAL::draw(vd); + CGAL::draw(vd); + } return EXIT_SUCCESS; } diff --git a/Voronoi_diagram_2/include/CGAL/draw_voronoi_diagram_2.h b/Voronoi_diagram_2/include/CGAL/draw_voronoi_diagram_2.h index 79c3501bf81..afe34cd5855 100644 --- a/Voronoi_diagram_2/include/CGAL/draw_voronoi_diagram_2.h +++ b/Voronoi_diagram_2/include/CGAL/draw_voronoi_diagram_2.h @@ -33,16 +33,30 @@ template -struct Graphics_scene_options_voronoi : +struct Graphics_scene_options_voronoi_2 : public CGAL::Graphics_scene_options { - Graphics_scene_options_voronoi() : m_draw_voronoi_vertices(true), - m_draw_dual_vertices(true), - dual_vertex_color(CGAL::IO::Color(50, 100, 180)), - ray_color(CGAL::IO::Color(100, 0, 0)), - bisector_color(CGAL::IO::Color(0, 100, 0)) + Graphics_scene_options_voronoi_2() : m_dual_vertex_color(50, 100, 180), + m_ray_color(100, 0, 0), + m_bisector_color(0, 100, 0), + m_draw_voronoi_vertices(true), + m_draw_dual_vertices(true) {} + const CGAL::IO::Color& dual_vertex_color() const + { return m_dual_vertex_color; } + const CGAL::IO::Color& ray_color() const + { return m_ray_color; } + const CGAL::IO::Color& bisector_color() const + { return m_bisector_color; } + + void dual_vertex_color(const CGAL::IO::Color& c) + { m_dual_vertex_color=c; } + void ray_color(const CGAL::IO::Color& c) + { m_ray_color=c; } + void bisector_color(const CGAL::IO::Color& c) + { m_bisector_color=c; } + void disable_voronoi_vertices() { m_draw_voronoi_vertices=false; } void enable_voronoi_vertices() { m_draw_voronoi_vertices=true; } bool are_voronoi_vertices_enabled() const { return m_draw_voronoi_vertices; } @@ -53,11 +67,10 @@ struct Graphics_scene_options_voronoi : bool are_dual_vertices_enabled() const { return m_draw_dual_vertices; } void toggle_draw_dual_vertices() { m_draw_dual_vertices=!m_draw_dual_vertices; } - CGAL::IO::Color dual_vertex_color; - CGAL::IO::Color ray_color; - CGAL::IO::Color bisector_color; - protected: + CGAL::IO::Color m_dual_vertex_color; + CGAL::IO::Color m_ray_color; + CGAL::IO::Color m_bisector_color; bool m_draw_voronoi_vertices; bool m_draw_dual_vertices; }; @@ -89,7 +102,7 @@ void compute_dual_vertex(const V2& /*v2*/, typename V2::Delaunay_graph::Finite_vertices_iterator vi, CGAL::Graphics_scene &graphics_scene, const GSOptions& gs_options) -{ graphics_scene.add_point(vi->point(), gs_options.dual_vertex_color); } +{ graphics_scene.add_point(vi->point(), gs_options.dual_vertex_color()); } template void add_segments_and_update_bounding_box(const V2& v2, @@ -102,14 +115,17 @@ void add_segments_and_update_bounding_box(const V2& v2, if (he->is_segment()) { - if(gs_options.colored_edge(v2, he)) + if(gs_options.draw_edge(v2, he)) { - graphics_scene.add_segment(he->source()->point(), he->target()->point(), - gs_options.edge_color(v2, he)); - } - else - { - graphics_scene.add_segment(he->source()->point(), he->target()->point()); + if(gs_options.colored_edge(v2, he)) + { + graphics_scene.add_segment(he->source()->point(), he->target()->point(), + gs_options.edge_color(v2, he)); + } + else + { + graphics_scene.add_segment(he->source()->point(), he->target()->point()); + } } } else @@ -240,14 +256,14 @@ void compute_rays_and_bisectors(const V2&, if (he->has_source()) { // add_ray_segment(he->source()->point(), get_second_point(he, graphics_scene.get_bounding_box())); - graphics_scene.add_ray(he->source()->point(), direction, gs_options.ray_color); + graphics_scene.add_ray(he->source()->point(), direction, gs_options.ray_color()); } } else if (he->is_bisector()) { Kernel::Point_2 pointOnLine((v1->point().x() + v2->point().x()) / 2, (v1->point().y() + v2->point().y()) / 2); - graphics_scene.add_line(pointOnLine, direction, gs_options.bisector_color); + graphics_scene.add_line(pointOnLine, direction, gs_options.bisector_color()); } } @@ -348,7 +364,7 @@ void add_to_graphics_scene(const CGAL_VORONOI_TYPE& v2, CGAL::Graphics_scene& graphics_scene) { // Default graphics view options. - CGAL::Graphics_scene_options_voronoi @@ -362,27 +378,11 @@ void add_to_graphics_scene(const CGAL_VORONOI_TYPE& v2, // Specialization of draw function. template void draw(const CGAL_VORONOI_TYPE& av2, - const GSOptions& gs_options, + GSOptions& gs_options, const char *title="2D Voronoi Diagram Basic Viewer") { CGAL::Graphics_scene buffer; add_to_graphics_scene(av2, buffer, gs_options); - draw_graphics_scene(buffer, title); -} - -template -void draw(const CGAL_VORONOI_TYPE& av2, - const char *title="2D Voronoi Diagram Basic Viewer") -{ - CGAL::Graphics_scene buffer; - - CGAL::Graphics_scene_options_voronoi - gs_options; - - add_to_graphics_scene(av2, buffer, gs_options); CGAL::Qt::QApplication_and_basic_viewer app(buffer, title); if(app) @@ -445,6 +445,18 @@ void draw(const CGAL_VORONOI_TYPE& av2, } } +template +void draw(const CGAL_VORONOI_TYPE& av2, + const char *title="2D Voronoi Diagram Basic Viewer") +{ + CGAL::Graphics_scene_options_voronoi_2 + gs_options; + draw(av2, gs_options, title); +} + #endif // CGAL_USE_BASIC_VIEWER #undef CGAL_VORONOI_TYPE