// Copyright (c) 2022 GeometryFactory Sarl (France). // All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL$ // $Id$ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s): Guillaume Damiand // Mostafa Ashraf #ifndef CGAL_GRAPHICS_SCENE_OPTIONS_H #define CGAL_GRAPHICS_SCENE_OPTIONS_H #include #include #include namespace CGAL { template struct Graphics_scene_options; // Drawing functor for a 2D combinatorial data structure // (with vertices, edges and faces) template struct Graphics_scene_options { typedef VertexDescriptor vertex_descriptor; typedef EdgeDescriptor edge_descriptor; typedef FaceDescriptor face_descriptor; Graphics_scene_options(): m_enabled_vertices(true), m_enabled_edges(true), m_enabled_faces(true) { draw_vertex=[](const DS &, vertex_descriptor)->bool { return true; }; draw_edge=[](const DS &, edge_descriptor)->bool { return true; }; draw_face=[](const DS &, face_descriptor)->bool { return true; }; colored_vertex=[](const DS &, vertex_descriptor)->bool { return false; }; colored_edge=[](const DS &, edge_descriptor)->bool { return false; }; colored_face=[](const DS &, face_descriptor)->bool { return false; }; face_wireframe=[](const DS &, face_descriptor)->bool { return false; }; } // The seven following functions should not be null std::function draw_vertex; std::function draw_edge; std::function draw_face; std::function colored_vertex; std::function colored_edge; std::function colored_face; std::function face_wireframe; // These functions must be non null if the corresponding colored_XXX function // returns true. std::function vertex_color; std::function edge_color; std::function face_color; void disable_vertices() { m_enabled_vertices=false; } void enable_vertices() { m_enabled_vertices=true; } bool are_vertices_enabled() const { return m_enabled_vertices; } void ignore_all_vertices(bool b) { m_enabled_vertices=!b; } void disable_edges() { m_enabled_edges=false; } void enable_edges() { m_enabled_edges=true; } bool are_edges_enabled() const { return m_enabled_edges; } void ignore_all_edges(bool b) { m_enabled_edges=!b; } void disable_faces() { m_enabled_faces=false; } void enable_faces() { m_enabled_faces=true; } bool are_faces_enabled() const { return m_enabled_faces; } void ignore_all_faces(bool b) { m_enabled_faces=!b; } protected: bool m_enabled_vertices, m_enabled_edges, m_enabled_faces; }; // Drawing functor for a 3D combinatorial data structure // (with vertices, edges, faces and volumes) template struct Graphics_scene_options: public Graphics_scene_options { typedef VertexDescriptor vertex_descriptor; typedef EdgeDescriptor edge_descriptor; typedef FaceDescriptor face_descriptor; typedef VolumeDescriptor volume_descriptor; Graphics_scene_options() : m_enabled_volumes(true) { draw_volume=[](const DS &, volume_descriptor)->bool { return true; }; colored_volume=[](const DS &, volume_descriptor)->bool { return false; }; volume_wireframe=[](const DS &, volume_descriptor)->bool { return false; }; } std::function draw_volume; std::function colored_volume; std::function volume_wireframe; std::function volume_color; void disable_volumes() { m_enabled_volumes=false; } void enable_volumes() { m_enabled_volumes=true; } bool are_volumes_enabled() const { return m_enabled_volumes; } void ignore_all_volumes(bool b) { m_enabled_volumes=!b; } protected: bool m_enabled_volumes; }; } // End namespace CGAL #endif // CGAL_GRAPHICS_SCENE_OPTIONS_H