51 #ifndef OPENMESH_BASE_DECIMATER_DECIMATERT_HH
52 #define OPENMESH_BASE_DECIMATER_DECIMATERT_HH
59 #include <OpenMesh/Core/Utils/Property.hh>
61 #include <OpenMesh/Core/Utils/Noncopyable.hh>
81 template <
typename MeshT >
90 typedef std::vector< Module* > ModuleList;
91 typedef typename ModuleList::iterator ModuleListIterator;
112 void info( std::ostream& _os );
120 template <
typename _Module >
126 _mh.init(
new _Module(
mesh()) );
127 all_modules_.push_back( _mh.module() );
136 template <
typename _Module >
142 typename ModuleList::iterator it = std::find(all_modules_.begin(),
146 if ( it == all_modules_.end() )
150 all_modules_.erase( it );
159 template <
typename Module >
163 return *_mh.module();
170 void set_uninitialized() {
171 initialized_ =
false;
176 void update_modules(CollapseInfo& _ci)
178 typename ModuleList::iterator m_it, m_end = bmodules_.end();
179 for (m_it = bmodules_.begin(); m_it != m_end; ++m_it)
180 (*m_it)->postprocess_collapse(_ci);
191 bool is_collapse_legal(
const CollapseInfo& _ci);
194 float collapse_priority(
const CollapseInfo& _ci);
197 void preprocess_collapse(CollapseInfo& _ci);
200 void postprocess_collapse(CollapseInfo& _ci);
210 void set_error_tolerance_factor(
double _factor);
216 void reset(){ initialized_ =
false; };
226 ModuleList bmodules_;
232 ModuleList all_modules_;
244 #if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_BASE_DECIMATER_DECIMATERT_CC)
245 #define OPENMESH_BASE_DECIMATER_TEMPLATES
246 #include "BaseDecimaterT.cc"
249 #endif // OPENMESH_BASE_DECIMATER_DECIMATERT_HH defined