60#ifndef OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH
61#define OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_HH
66#include <OpenMesh/Core/System/config.hh>
67#include <OpenMesh/Tools/Subdivider/Adaptive/Composite/RuleInterfaceT.hh>
72#if defined(OM_CC_MIPS)
73# define MIPS_WARN_WA( Item ) \
74 void raise(typename M:: ## Item ## Handle &_h, state_t _target_state ) \
75 { Inherited::raise(_h, _target_state); }
77# define MIPS_WARN_WA( Item )
99 COMPOSITE_RULE( Tvv3, M );
109 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
110 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
122 COMPOSITE_RULE( Tvv4, M );
127 typedef typename M::HalfedgeHandle HEH;
128 typedef typename M::VertexHandle VH;
134 void raise(
typename M::FaceHandle& _fh,
state_t _target_state);
135 void raise(
typename M::VertexHandle& _vh,
state_t _target_state);
136 void raise(
typename M::EdgeHandle& _eh,
state_t _target_state);
140 void split_edge(HEH& _hh, VH& _vh,
state_t _target_state);
141 void check_edge(
const typename M::HalfedgeHandle& _hh,
153 COMPOSITE_RULE( VF, M );
160 VF(M& _mesh) : Inherited(_mesh) {}
175 COMPOSITE_RULE( FF, M );
182 FF(M& _mesh) : Inherited(_mesh) {}
197 COMPOSITE_RULE( FFc, M );
204 FFc(M& _mesh) : Inherited(_mesh) {}
219 COMPOSITE_RULE( FV, M );
226 FV(M& _mesh) : Inherited(_mesh) {}
241 COMPOSITE_RULE( FVc, M );
248 FVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
254 static void init_coeffs(
size_t _max_valence);
255 static const std::vector<double>& coeffs() {
return coeffs_; }
257 double coeff(
size_t _valence )
259 assert(_valence < coeffs_.size());
260 return coeffs_[_valence];
265 static std::vector<double> coeffs_;
277 COMPOSITE_RULE( VV, M );
285 VV(M& _mesh) : Inherited(_mesh) {}
300 COMPOSITE_RULE( VVc, M );
307 VVc(M& _mesh) : Inherited(_mesh) {}
322 COMPOSITE_RULE( VE, M );
329 VE(M& _mesh) : Inherited(_mesh) {}
344 COMPOSITE_RULE( VdE, M );
351 VdE(M& _mesh) : Inherited(_mesh) {}
366 COMPOSITE_RULE( VdEc, M );
373 VdEc(M& _mesh) : Inherited(_mesh) {}
388 COMPOSITE_RULE( EV, M );
395 EV(M& _mesh) : Inherited(_mesh) {}
410 COMPOSITE_RULE( EVc, M );
418 EVc(M& _mesh) : Inherited(_mesh) { init_coeffs(50); }
424 static void init_coeffs(
size_t _max_valence);
425 static const std::vector<double>& coeffs() {
return coeffs_; }
427 double coeff(
size_t _valence )
429 assert(_valence < coeffs_.size());
430 return coeffs_[_valence];
435 static std::vector<double> coeffs_;
447 COMPOSITE_RULE( EF, M );
454 EF(M& _mesh) : Inherited(_mesh) {}
469 COMPOSITE_RULE( FE, M );
476 FE(M& _mesh) : Inherited(_mesh) {}
491 COMPOSITE_RULE( EdE, M );
498 EdE(M& _mesh) : Inherited(_mesh) {}
513 COMPOSITE_RULE( EdEc, M );
520 EdEc(M& _mesh) : Inherited(_mesh) {}
536#if defined(OM_INCLUDE_TEMPLATES) && !defined(OPENMESH_SUBDIVIDER_ADAPTIVE_RULEST_CC)
537# define OPENMESH_SUBDIVIDER_TEMPLATES
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition MeshItems.hh:64
Software related to adaptive subdivision of meshes.
CompositeTraits::state_t state_t
Adaptive Composite Subdivision framework.
Definition CompositeTraits.hh:255
void set_subdiv_type(int _n)
Set coefficient - ignored by non-parameterized rules.
Definition RuleInterfaceT.hh:373
scalar_t coeff() const
Get coefficient - ignored by non-parameterized rules.
Definition RuleInterfaceT.hh:356
RuleInterfaceT(Mesh &_mesh)
Default constructor.
Definition RuleInterfaceT.hh:126
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
Definition RulesT.cc:104
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
Definition RulesT.cc:343
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::VertexHandle &_vh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::FaceHandle &_fh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.
void raise(typename M::EdgeHandle &_eh, state_t _target_state)
Raise item to target state _target_state.