54 #ifndef OPENMESH_SUBDIVIDER_UNIFORM_SUDIVIDERT_HH 55 #define OPENMESH_SUBDIVIDER_UNIFORM_SUDIVIDERT_HH 59 #include <OpenMesh/Core/System/config.hh> 60 #include <OpenMesh/Core/Utils/Noncopyable.hh> 61 #if defined(_DEBUG) || defined(DEBUG) 64 # include <OpenMesh/Tools/Utils/MeshCheckerT.hh> 65 # define ASSERT_CONSISTENCY( T, m ) \ 66 assert(OpenMesh::Utils::MeshCheckerT<T>(m).check()) 68 # define ASSERT_CONSISTENCY( T, m ) 74 namespace Subdivider {
87 template <
typename MeshType,
typename RealType =
double>
92 typedef MeshType mesh_t;
93 typedef RealType real_t;
114 virtual const char *
name(
void )
const = 0;
120 bool operator () ( MeshType& _m,
size_t _n ,
const bool _update_points =
true)
130 bool attach( MeshType& _m )
134 if ( attached_ == &_m )
148 bool operator()(
size_t _n ,
const bool _update_points =
true)
150 return attached_ ?
subdivide( *attached_, _n , _update_points) :
false;
169 virtual bool prepare( MeshType& _m ) = 0;
173 virtual bool subdivide( MeshType& _m,
size_t _n,
const bool _update_points =
true) = 0;
176 virtual bool cleanup( MeshType& _m ) = 0;
190 #endif // OPENMESH_SUBDIVIDER_UNIFORM_SUBDIVIDERT_HH virtual const char * name(void) const =0
Return name of subdivision algorithm.
bool operator()(MeshType &_m, size_t _n, const bool _update_points=true)
virtual bool subdivide(MeshType &_m, size_t _n, const bool _update_points=true)=0
Subdivide mesh _m _n times.
virtual bool cleanup(MeshType &_m)=0
Cleanup mesh after usage, e.g. remove added properties.
virtual bool prepare(MeshType &_m)=0
Prepare mesh, e.g. add properties.
SubdividerT(MeshType &_m)
bool attach(MeshType &_m)
bool operator()(size_t _n, const bool _update_points=true)
virtual ~SubdividerT()
Destructor (calls detach())