mirror of https://github.com/CGAL/cgal
Add a basic visitor to AW3
This commit is contained in:
parent
37390bb6b8
commit
beeae185a7
|
|
@ -103,13 +103,26 @@ struct Wrapping_default_visitor
|
|||
{
|
||||
Wrapping_default_visitor() { }
|
||||
|
||||
template <typename AlphaWrapper>
|
||||
void on_alpha_wrapping_begin(const AlphaWrapper&) { }
|
||||
|
||||
template <typename AlphaWrapper>
|
||||
void on_flood_fill_begin(const AlphaWrapper&) { }
|
||||
|
||||
template <typename AlphaWrapper, typename Gate>
|
||||
void before_facet_treatment(const AlphaWrapper&, const Gate&) { }
|
||||
|
||||
template <typename Wrapper, typename Point>
|
||||
void before_Steiner_point_insertion(const Wrapper&, const Point&) { }
|
||||
|
||||
template <typename Wrapper, typename VertexHandle>
|
||||
void after_Steiner_point_insertion(const Wrapper&, VertexHandle) { }
|
||||
|
||||
void after_alpha_wrapping() { }
|
||||
template <typename AlphaWrapper>
|
||||
void on_flood_fill_end(const AlphaWrapper&) { }
|
||||
|
||||
template <typename AlphaWrapper>
|
||||
void on_alpha_wrapping_end(const AlphaWrapper&) { };
|
||||
};
|
||||
|
||||
template <typename Oracle>
|
||||
|
|
@ -187,6 +200,7 @@ public:
|
|||
const Geom_traits& geom_traits() const { return m_dt.geom_traits(); }
|
||||
Dt& triangulation() { return m_dt; }
|
||||
const Dt& triangulation() const { return m_dt; }
|
||||
const Alpha_PQ& queue() const { return m_queue; }
|
||||
|
||||
double default_alpha() const
|
||||
{
|
||||
|
|
@ -252,6 +266,8 @@ public:
|
|||
t.start();
|
||||
#endif
|
||||
|
||||
visitor.on_alpha_wrapping_begin(*this);
|
||||
|
||||
if(!initialize(alpha, offset, seeds))
|
||||
return;
|
||||
|
||||
|
|
@ -340,7 +356,7 @@ public:
|
|||
#endif
|
||||
#endif
|
||||
|
||||
visitor.after_alpha_wrapping();
|
||||
visitor.on_alpha_wrapping_end(*this);
|
||||
}
|
||||
|
||||
// Convenience overloads
|
||||
|
|
@ -1029,6 +1045,8 @@ private:
|
|||
std::cout << "> Flood fill..." << std::endl;
|
||||
#endif
|
||||
|
||||
visitor.on_flood_fill_begin(*this);
|
||||
|
||||
// Explore all finite cells that are reachable from one of the initial outside cells.
|
||||
while(!m_queue.empty())
|
||||
{
|
||||
|
|
@ -1055,6 +1073,8 @@ private:
|
|||
std::cout << "Priority: " << gate.priority() << std::endl;
|
||||
#endif
|
||||
|
||||
visitor.before_facet_treatment(*this, gate);
|
||||
|
||||
m_queue.pop();
|
||||
|
||||
#ifdef CGAL_AW3_DEBUG_DUMP_EVERY_STEP
|
||||
|
|
@ -1170,6 +1190,8 @@ private:
|
|||
}
|
||||
} // while(!queue.empty())
|
||||
|
||||
visitor.on_flood_fill_end(*this);
|
||||
|
||||
// Check that no useful facet has been ignored
|
||||
CGAL_postcondition_code(for(auto fit=m_dt.finite_facets_begin(), fend=m_dt.finite_facets_end(); fit!=fend; ++fit) {)
|
||||
CGAL_postcondition_code( if(fit->first->info().is_outside == fit->first->neighbor(fit->second)->info().is_outside) continue;)
|
||||
|
|
|
|||
Loading…
Reference in New Issue