diff --git a/BGL/include/CGAL/boost/graph/property_maps.h b/BGL/include/CGAL/boost/graph/property_maps.h index aab29d9b881..e265d59dd96 100644 --- a/BGL/include/CGAL/boost/graph/property_maps.h +++ b/BGL/include/CGAL/boost/graph/property_maps.h @@ -24,10 +24,10 @@ template < class TriangleMesh, class VertexPointMap = typename boost::property_map::type > struct Triangle_from_face_descriptor_map{ typename std::remove_const_t* m_tm; - VertexPointMap m_vpm; + std::optional m_vpm; Triangle_from_face_descriptor_map() - : m_tm(nullptr) + : m_tm(nullptr), m_vpm() {} Triangle_from_face_descriptor_map(TriangleMesh const* tm) @@ -58,9 +58,9 @@ struct Triangle_from_face_descriptor_map{ std::remove_const_t& tm = *(pmap.m_tm); CGAL_precondition(halfedge(f,tm) == next(next(next(halfedge(f,tm),tm),tm),tm)); - return value_type( get(pmap.m_vpm, target(halfedge(f,tm),tm)), - get(pmap.m_vpm, target(next(halfedge(f,tm),tm),tm)), - get(pmap.m_vpm, source(halfedge(f,tm),tm)) ); + return value_type( get(*pmap.m_vpm, target(halfedge(f,tm),tm)), + get(*pmap.m_vpm, target(next(halfedge(f,tm),tm),tm)), + get(*pmap.m_vpm, source(halfedge(f,tm),tm)) ); } inline friend @@ -71,9 +71,9 @@ struct Triangle_from_face_descriptor_map{ std::remove_const_t & tm = *(pmap.m_tm); CGAL_precondition(halfedge(f.first,tm) == next(next(next(halfedge(f.first,tm),tm),tm),tm)); - return value_type( get(pmap.m_vpm, target(halfedge(f.first,tm),tm)), - get(pmap.m_vpm, target(next(halfedge(f.first,tm),tm),tm)), - get(pmap.m_vpm, source(halfedge(f.first,tm),tm)) ); + return value_type( get(*pmap.m_vpm, target(halfedge(f.first,tm),tm)), + get(*pmap.m_vpm, target(next(halfedge(f.first,tm),tm),tm)), + get(*pmap.m_vpm, source(halfedge(f.first,tm),tm)) ); } }; @@ -132,7 +132,7 @@ template ::type > struct One_point_from_face_descriptor_map{ One_point_from_face_descriptor_map() - : m_pm(nullptr) + : m_pm(nullptr), m_vpm() {} One_point_from_face_descriptor_map(PolygonMesh const * g) @@ -146,7 +146,7 @@ struct One_point_from_face_descriptor_map{ {} std::remove_const_t* m_pm; - VertexPointMap m_vpm; + std::optional m_vpm; //classical typedefs typedef typename boost::graph_traits::face_descriptor key_type; @@ -160,7 +160,7 @@ struct One_point_from_face_descriptor_map{ get(const One_point_from_face_descriptor_map& m, key_type f) { - return get(m.m_vpm, target(halfedge(f, *m.m_pm), *m.m_pm)); + return get(*m.m_vpm, target(halfedge(f, *m.m_pm), *m.m_pm)); } inline friend @@ -168,7 +168,7 @@ struct One_point_from_face_descriptor_map{ get(const One_point_from_face_descriptor_map& m, const std::pair& f) { - return get(m.m_vpm, target(halfedge(f.first, *m.m_pm), *m.m_pm)); + return get(*m.m_vpm, target(halfedge(f.first, *m.m_pm), *m.m_pm)); } }; diff --git a/Polyhedron/demo/Polyhedron/Plugins/PMP/Engrave_text_plugin.cpp b/Polyhedron/demo/Polyhedron/Plugins/PMP/Engrave_text_plugin.cpp index c45bfdc619e..2c56411ec61 100644 --- a/Polyhedron/demo/Polyhedron/Plugins/PMP/Engrave_text_plugin.cpp +++ b/Polyhedron/demo/Polyhedron/Plugins/PMP/Engrave_text_plugin.cpp @@ -151,8 +151,8 @@ public : pen.setWidth(0); painter->setPen(pen); painter->setBrush(brush); - SMesh::Property_map u; - SMesh::Property_map v; + std::optional> u; + std::optional> v; u = graph->add_property_map ("h:u", 0.0f).first; @@ -167,11 +167,11 @@ public : boost::graph_traits::face_descriptor f(*fi); QPointF points[3]; boost::graph_traits::halfedge_descriptor h = halfedge(f, *graph);; - points[0] = QPointF(get(u, h), -get(v, h)); + points[0] = QPointF(get(*u, h), -get(*v, h)); h = next(halfedge(f, *graph), *graph); - points[1] = QPointF(get(u, h), -get(v, h)); + points[1] = QPointF(get(*u, h), -get(*v, h)); h = next(next(halfedge(f, *graph), *graph), *graph); - points[2] = QPointF(get(u, h), -get(v, h)); + points[2] = QPointF(get(*u, h), -get(*v, h)); painter->drawPolygon(points,3); } @@ -515,7 +515,7 @@ public Q_SLOTS: sm->add_property_map("v:uv3").first; for(SMesh::Vertex_index v : sm->vertices()) { - uv_map_3[v] = Point_3(uv_map[v][0], uv_map[v] + uv_map_3.value()[v] = Point_3(uv_map[v][0], uv_map[v] [1], 0); if(uv_map[v][0] > xmax) xmax = uv_map[v][0]; @@ -582,7 +582,7 @@ public Q_SLOTS: } // build AABB-tree for face location queries - Tree aabb_tree(faces(*sm).first, faces(*sm).second, *sm, uv_map_3); + Tree aabb_tree(faces(*sm).first, faces(*sm).second, *sm, uv_map_3.value()); visu_item = new Scene_polylines_item; connect(visu_item, &Scene_polylines_item::aboutToBeDestroyed, this, @@ -609,7 +609,7 @@ public Q_SLOTS: Face_location loc = Surface_mesh_shortest_path::locate( Point_3(p_2.x(), p_2.y(), 0), - aabb_tree, *sm, uv_map_3); + aabb_tree, *sm, uv_map_3.value()); visu_item->polylines.back().push_back( Surface_mesh_shortest_path::point(loc.first, loc.second, *sm, sm->points())); } @@ -630,12 +630,8 @@ public Q_SLOTS: { component->insert(*bfit); } - SMesh::Property_map umap; - SMesh::Property_map vmap; - umap = sm->add_property_map - ("h:u", 0.0f).first; - vmap = sm->add_property_map - ("h:v", 0.0f).first; + auto umap = sm->add_property_map("h:u", 0.0f).first; + auto vmap = sm->add_property_map("h:v", 0.0f).first; SMesh::Halfedge_iterator it; SMesh::Property_map uv_map = sm->property_map("v:uv").first; @@ -886,7 +882,7 @@ private: TriangleMesh& tm) { - Tree aabb_tree(faces(*sm).first, faces(*sm).second, *sm, uv_map_3); + Tree aabb_tree(faces(*sm).first, faces(*sm).second, *sm, uv_map_3.value()); typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; typedef std::map Map; @@ -907,7 +903,7 @@ private: const EPICK::Point_2& pt=fit->vertex(i)->point(); Face_location loc = Surface_mesh_shortest_path::locate( Point_3(pt.x(), pt.y(), 0), - aabb_tree, *sm, uv_map_3); + aabb_tree, *sm, uv_map_3.value()); it->second = add_vertex(Surface_mesh_shortest_path::point(loc.first, loc.second, *sm, sm->points()), tm); } @@ -955,7 +951,7 @@ private: EPICK::Vector_2 translation; EPICK::Aff_transformation_2 transfo; std::vector > polylines; - SMesh::Property_map uv_map_3; + std::optional> uv_map_3; SMesh* sm; float xmin, xmax, ymin, ymax; int pointsize;