fix default point property map used in BGL primitives

This commit is contained in:
Sébastien Loriot 2015-01-19 11:57:43 +01:00
parent 4d0b730f62
commit 67414ef0c8
3 changed files with 17 additions and 22 deletions

View File

@ -54,31 +54,21 @@ namespace CGAL {
*\sa `AABB_halfedge_graph_segment_primitive<HalfedgeGraph,OneHalfedgeGraphPerTree,CacheDatum>` *\sa `AABB_halfedge_graph_segment_primitive<HalfedgeGraph,OneHalfedgeGraphPerTree,CacheDatum>`
*/ */
template < class FaceGraph, template < class FaceGraph,
class VertexPointPMap = Default, class VertexPointPMap = typename boost::property_map< FaceGraph, vertex_point_t>::type,
class OneFaceGraphPerTree = Tag_true, class OneFaceGraphPerTree = Tag_true,
class CacheDatum=Tag_false > class CacheDatum=Tag_false >
class AABB_face_graph_triangle_primitive class AABB_face_graph_triangle_primitive
#ifndef DOXYGEN_RUNNING #ifndef DOXYGEN_RUNNING
: public AABB_primitive<typename boost::graph_traits<FaceGraph>::face_descriptor, : public AABB_primitive<typename boost::graph_traits<FaceGraph>::face_descriptor,
Triangle_from_face_descriptor_property_map< Triangle_from_face_descriptor_property_map<FaceGraph, VertexPointPMap>,
FaceGraph, One_point_from_face_descriptor_property_map<FaceGraph, VertexPointPMap>,
typename Default::Get<VertexPointPMap,
typename boost::property_map< FaceGraph,
vertex_point_t>::type >::type>,
One_point_from_face_descriptor_property_map<
FaceGraph,
typename Default::Get<VertexPointPMap,
typename boost::property_map< FaceGraph,
vertex_point_t>::type >::type>,
OneFaceGraphPerTree, OneFaceGraphPerTree,
CacheDatum > CacheDatum >
#endif #endif
{ {
typedef typename Default::Get<VertexPointPMap, typename boost::property_map< FaceGraph, vertex_point_t>::type >::type VertexPointPMap_;
typedef typename boost::graph_traits<FaceGraph>::face_descriptor Id_; typedef typename boost::graph_traits<FaceGraph>::face_descriptor Id_;
typedef Triangle_from_face_descriptor_property_map<FaceGraph,VertexPointPMap_> Triangle_property_map; typedef Triangle_from_face_descriptor_property_map<FaceGraph,VertexPointPMap> Triangle_property_map;
typedef One_point_from_face_descriptor_property_map<FaceGraph,VertexPointPMap_> Point_property_map; typedef One_point_from_face_descriptor_property_map<FaceGraph,VertexPointPMap> Point_property_map;
typedef AABB_primitive< Id_, typedef AABB_primitive< Id_,
Triangle_property_map, Triangle_property_map,

View File

@ -84,7 +84,7 @@ template < class HalfedgeGraph,
class VertexPointPMap > class VertexPointPMap >
struct Segment_from_edge_descriptor_property_map{ struct Segment_from_edge_descriptor_property_map{
Segment_from_edge_descriptor_property_map() Segment_from_edge_descriptor_property_map() : m_graph(NULL)
{} {}
Segment_from_edge_descriptor_property_map(HalfedgeGraph* g) Segment_from_edge_descriptor_property_map(HalfedgeGraph* g)
@ -126,9 +126,12 @@ Segment_from_edge_descriptor_property_map(HalfedgeGraph* g)
template <class FaceGraph, template <class FaceGraph,
class VertexPointPMap> class VertexPointPMap>
struct One_point_from_face_descriptor_property_map{ struct One_point_from_face_descriptor_property_map{
One_point_from_face_descriptor_property_map() : m_graph(NULL)
{}
One_point_from_face_descriptor_property_map(FaceGraph* g = NULL) One_point_from_face_descriptor_property_map(FaceGraph* g)
: m_graph( const_cast<typename boost::remove_const<FaceGraph>::type*>(g) ) : m_graph( const_cast<typename boost::remove_const<FaceGraph>::type*>(g) )
, m_vppm( get(vertex_point, *m_graph) )
{} {}
One_point_from_face_descriptor_property_map(FaceGraph* g, VertexPointPMap vppm ) One_point_from_face_descriptor_property_map(FaceGraph* g, VertexPointPMap vppm )
@ -159,10 +162,12 @@ struct One_point_from_face_descriptor_property_map{
template < class HalfedgeGraph, template < class HalfedgeGraph,
class VertexPointPMap > class VertexPointPMap >
struct Source_point_from_edge_descriptor{ struct Source_point_from_edge_descriptor{
Source_point_from_edge_descriptor( Source_point_from_edge_descriptor() : m_graph(NULL)
HalfedgeGraph* g = NULL ) : {}
m_graph( const_cast<typename boost::remove_const<HalfedgeGraph>::type*>(g) ),
m_vppm( get(vertex_point, *m_graph) ) Source_point_from_edge_descriptor(HalfedgeGraph* g)
: m_graph( const_cast<typename boost::remove_const<HalfedgeGraph>::type*>(g) )
, m_vppm( get(vertex_point, *m_graph) )
{} {}
Source_point_from_edge_descriptor( Source_point_from_edge_descriptor(

View File

@ -34,7 +34,7 @@ int main()
CGAL::Euler::make_tetrahedron(m, p, q, r, s); CGAL::Euler::make_tetrahedron(m, p, q, r, s);
// constructs AABB tree // constructs AABB tree
Tree tree(m.faces_begin(),m.faces_end(),m); Tree tree(faces(m).first, faces(m).second, m);
// constructs segment query // constructs segment query
Point a(-0.2, 0.2, -0.2); Point a(-0.2, 0.2, -0.2);