59#ifndef OPENMESH_SUBDIVIDER_UNIFORM_SUDIVIDERT_HH
60#define OPENMESH_SUBDIVIDER_UNIFORM_SUDIVIDERT_HH
64#include <OpenMesh/Core/System/config.hh>
65#include <OpenMesh/Core/Utils/Noncopyable.hh>
66#if defined(_DEBUG) || defined(DEBUG)
69# include <OpenMesh/Tools/Utils/MeshCheckerT.hh>
70# define ASSERT_CONSISTENCY( T, m ) \
71 assert(OpenMesh::Utils::MeshCheckerT<T>(m).check())
73# define ASSERT_CONSISTENCY( T, m )
93template <
typename MeshType,
typename RealType=
float>
98 typedef MeshType mesh_t;
99 typedef RealType real_t;
120 virtual const char *
name(
void )
const = 0;
128 bool operator () ( MeshType& _m,
size_t _n ,
const bool _update_points =
true)
140 if ( attached_ == &_m )
154 bool operator()(
size_t _n ,
const bool _update_points =
true)
156 return attached_ ?
subdivide( *attached_, _n , _update_points) :
false;
179 virtual bool subdivide( MeshType& _m,
size_t _n,
const bool _update_points =
true) = 0;
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:64
This class demonstrates the non copyable idiom.
Definition: Noncopyable.hh:77
Abstract base class for uniform subdivision algorithms.
Definition: SubdividerT.hh:95
virtual bool cleanup(MeshType &_m)=0
Cleanup mesh after usage, e.g. remove added properties.
bool operator()(MeshType &_m, size_t _n, const bool _update_points=true)
Subdivide the mesh _m _n times.
Definition: SubdividerT.hh:128
bool operator()(size_t _n, const bool _update_points=true)
Subdivide the attached _n times.
Definition: SubdividerT.hh:154
bool attach(MeshType &_m)
Attach mesh _m to self.
Definition: SubdividerT.hh:138
void detach(void)
Detach an eventually attached mesh.
Definition: SubdividerT.hh:161
SubdividerT(MeshType &_m)
Constructor to be used with interface 1 (calls attach())
Definition: SubdividerT.hh:111
virtual bool prepare(MeshType &_m)=0
Prepare mesh, e.g. add properties.
SubdividerT(void)
Constructor to be used with interface 2.
Definition: SubdividerT.hh:107
virtual ~SubdividerT()
Descructor (calls detach())
Definition: SubdividerT.hh:116
virtual bool subdivide(MeshType &_m, size_t _n, const bool _update_points=true)=0
Subdivide mesh _m _n times.
virtual const char * name(void) const =0
Return name of subdivision algorithm.