This commit is contained in:
Guillaume Damiand 2023-12-01 09:53:27 +01:00
parent f70a2d30cd
commit 2c3428335b
2 changed files with 39 additions and 44 deletions

View File

@ -1,8 +1,6 @@
#ifndef DRAW_FACEWIDTH_H #ifndef DRAW_FACEWIDTH_H
#define DRAW_FACEWIDTH_H #define DRAW_FACEWIDTH_H
#include <iostream>
#ifdef CGAL_USE_BASIC_VIEWER #ifdef CGAL_USE_BASIC_VIEWER
#include <CGAL/draw_linear_cell_complex.h> #include <CGAL/draw_linear_cell_complex.h>

View File

@ -184,42 +184,10 @@ template <typename Mesh, class GSOptions>
void compute_edge(const Mesh &mesh, void compute_edge(const Mesh &mesh,
const typename Get_map<Mesh, Mesh>::storage_type& lcc, const typename Get_map<Mesh, Mesh>::storage_type& lcc,
typename Get_map<Mesh, Mesh>::type::Dart_const_descriptor dh, typename Get_map<Mesh, Mesh>::type::Dart_const_descriptor dh,
typename Get_map<Mesh, Mesh>::type::size_type amark,
CGAL::Graphics_scene& graphics_scene, CGAL::Graphics_scene& graphics_scene,
GSOptions& gso) GSOptions& gso,
{ bool colored=false,
if(!gso.are_edges_enabled() || !gso.draw_edge(mesh, dh)) const CGAL::IO::Color& color=CGAL::IO::black())
{ return; }
typedef typename Get_map<Mesh, Mesh>::type LCC;
typedef typename LCC::Dart_const_descriptor Dart_const_descriptor;
typedef typename CGAL::Get_traits<Mesh>::Point Point;
Point p1=get_point(mesh, dh);
Dart_const_descriptor d2 = lcc.other_extremity(dh);
if (d2!=LCC::null_descriptor)
{
if (amark!=LCC::INVALID_MARK &&
(lcc.is_marked(dh, amark) || lcc.is_marked(lcc.opposite2(dh), amark)))
{ graphics_scene.add_segment(p1, get_point(mesh, d2), gso.color_of_marked_edges()); }
else
{
if(gso.colored_edge(mesh, dh))
{ graphics_scene.add_segment(p1, get_point(mesh, d2),
gso.edge_color(mesh, dh)); }
else
{ graphics_scene.add_segment(p1, get_point(mesh, d2)); }
}
}
}
template <typename Mesh, class GSOptions>
void compute_edge(const Mesh &mesh,
const typename Get_map<Mesh, Mesh>::storage_type& lcc,
typename Get_map<Mesh, Mesh>::type::Dart_const_descriptor dh,
const CGAL::IO::Color& color,
CGAL::Graphics_scene& graphics_scene,
GSOptions& gso)
{ {
if(!gso.are_edges_enabled() || !gso.draw_edge(mesh, dh)) if(!gso.are_edges_enabled() || !gso.draw_edge(mesh, dh))
{ return; } { return; }
@ -231,7 +199,36 @@ void compute_edge(const Mesh &mesh,
Point p1=get_point(mesh, dh); Point p1=get_point(mesh, dh);
Dart_const_descriptor d2=lcc.other_extremity(dh); Dart_const_descriptor d2=lcc.other_extremity(dh);
if (d2!=LCC::null_descriptor) if (d2!=LCC::null_descriptor)
{ graphics_scene.add_segment(p1, get_point(mesh, d2), color); } {
if(colored)
{ graphics_scene.add_segment(p1, get_point(mesh, d2), color); }
else
{ graphics_scene.add_segment(p1, get_point(mesh, d2)); }
}
}
template <typename Mesh, class GSOptions>
void compute_edge(const Mesh &mesh,
const typename Get_map<Mesh, Mesh>::storage_type& lcc,
typename Get_map<Mesh, Mesh>::type::Dart_const_descriptor dh,
CGAL::Graphics_scene& graphics_scene,
GSOptions& gso,
typename Get_map<Mesh, Mesh>::type::size_type amark)
{
if(!gso.are_edges_enabled() || !gso.draw_edge(mesh, dh))
{ return; }
if (amark!=Get_map<Mesh, Mesh>::type::INVALID_MARK &&
(lcc.is_marked(dh, amark) || lcc.is_marked(lcc.opposite2(dh), amark)))
{ compute_edge(mesh, lcc, dh, graphics_scene, gso, true, gso.color_of_marked_edges()); }
else
{
if(gso.colored_edge(mesh, dh))
{ compute_edge(mesh, lcc, dh, graphics_scene, gso, true,
gso.edge_color(mesh, dh)); }
else
{ compute_edge(mesh, lcc, dh, graphics_scene, gso, false); }
}
} }
template <typename Mesh, class GSOptions> template <typename Mesh, class GSOptions>
@ -271,7 +268,7 @@ void compute_path(const Mesh &mesh,
{ {
if (!lcc.is_marked( (*paths)[i].get_ith_dart(j), amark)) if (!lcc.is_marked( (*paths)[i].get_ith_dart(j), amark))
{ {
compute_edge(mesh, lcc, (*paths)[i].get_ith_dart(j), color, graphics_scene, gso); compute_edge(mesh, lcc, (*paths)[i].get_ith_dart(j), graphics_scene, gso, true, color);
lcc.template mark_cell<1>((*paths)[i].get_ith_dart(j), amark); lcc.template mark_cell<1>((*paths)[i].get_ith_dart(j), amark);
} }
} }
@ -324,7 +321,7 @@ void compute_elements(const Mesh &mesh,
if ( !lcc.is_marked(it, markedges) ) if ( !lcc.is_marked(it, markedges) )
{ {
compute_edge(mesh, lcc, it, amark, graphics_scene, gso); compute_edge(mesh, lcc, it, graphics_scene, gso, amark);
lcc.template mark_cell<1>(it, markedges); lcc.template mark_cell<1>(it, markedges);
} }
@ -347,8 +344,8 @@ void add_to_graphics_scene(const Mesh& mesh,
CGAL::Graphics_scene& graphics_scene, CGAL::Graphics_scene& graphics_scene,
const GSOptions& gso, const GSOptions& gso,
const std::vector<Surface_mesh_topology::Path_on_surface<Mesh>>* paths, const std::vector<Surface_mesh_topology::Path_on_surface<Mesh>>* paths,
typename Get_map<Mesh, Mesh>::type::size_type amark=0) typename Get_map<Mesh, Mesh>::type::size_type amark=
//TODO typename Get_map<Mesh, Mesh>::type::INVALID_MARK) Get_map<Mesh, Mesh>::type::INVALID_MARK)
{ {
draw_function_for_face_graph_with_paths::compute_elements(mesh, graphics_scene, draw_function_for_face_graph_with_paths::compute_elements(mesh, graphics_scene,
gso, paths, amark); gso, paths, amark);
@ -358,8 +355,8 @@ template <class Mesh>
void add_to_graphics_scene(const Mesh& mesh, void add_to_graphics_scene(const Mesh& mesh,
CGAL::Graphics_scene& graphics_scene, CGAL::Graphics_scene& graphics_scene,
const std::vector<Surface_mesh_topology::Path_on_surface<Mesh>>* paths, const std::vector<Surface_mesh_topology::Path_on_surface<Mesh>>* paths,
typename Get_map<Mesh, Mesh>::type::size_type amark=0) typename Get_map<Mesh, Mesh>::type::size_type amark=
// TODO typename Get_map<Mesh, Mesh>::type::INVALID_MARK) Get_map<Mesh, Mesh>::type::INVALID_MARK)
{ {
// Default graphics view options. // Default graphics view options.
Graphics_scene_options_face_graph_with_paths<Mesh, Graphics_scene_options_face_graph_with_paths<Mesh,