52 #ifndef OPENMESH_SUBDIVIDER_UNIFORM_COMPOSITE_HH
53 #define OPENMESH_SUBDIVIDER_UNIFORM_COMPOSITE_HH
66 namespace Subdivider {
86 template <
typename MeshType,
typename RealType=
float >
91 typedef RealType real_t;
92 typedef MeshType mesh_t;
103 virtual const char *
name(
void )
const = 0;
109 bool subdivide( MeshType& _m,
size_t _n,
const bool _update_points =
true )
111 assert( p_mesh_ == &_m );
123 bool cleanup( MeshType& )
128 assert( p_mesh_ == &_m );
137 virtual void apply_rules(
void) = 0;
145 typename MeshType::VertexIter v_it;
147 for (v_it=_m.vertices_begin(); v_it != _m.vertices_end(); ++v_it)
148 _m.set_point(v_it.handle(), _m.data(v_it).position());
158 virtual double operator() (
size_t _valence) = 0;
164 typedef typename MeshType::Scalar scalar_t;
165 typedef typename MeshType::VertexHandle VertexHandle;
166 typedef typename MeshType::FaceHandle FaceHandle;
167 typedef typename MeshType::EdgeHandle EdgeHandle;
168 typedef typename MeshType::HalfedgeHandle HalfedgeHandle;
180 void FFc(scalar_t _c);
184 void FVc(scalar_t _c);
190 void VFa(scalar_t _alpha);
194 void VVc(scalar_t _c);
200 void VdEc(scalar_t _c);
207 void VdEg(scalar_t _gamma);
213 void EVc(scalar_t _c);
216 void EdEc(scalar_t _c);
237 #if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_SUBDIVIDER_UNIFORM_COMPOSITE_CC)
238 #define OPENMESH_SUBDIVIDER_TEMPLATES
239 #include "CompositeT.cc"
242 #endif // COMPOSITET_HH defined