54 #ifndef OPENMESH_DECIMATER_MODBASET_HH 55 #define OPENMESH_DECIMATER_MODBASET_HH 60 #include <OpenMesh/Core/Utils/Noncopyable.hh> 73 template <
typename Mesh>
class BaseDecimaterT;
82 template <
typename Module>
88 typedef Module module_type;
104 #if defined(OM_CC_MSVC) 110 void clear() { mod_ =
nullptr; }
111 void init(Module* _m) { mod_ = _m; }
112 Module* module() {
return mod_; }
130 #define DECIMATER_MODNAME(_mod_name) \ 131 virtual const std::string& name() const override { \ 132 static std::string _s_modname_(#_mod_name); return _s_modname_; \ 149 #define DECIMATING_MODULE(Classname, MeshT, Name) \ 150 typedef Classname < MeshT > Self; \ 151 typedef OpenMesh::Decimater::ModHandleT< Self > Handle; \ 152 typedef OpenMesh::Decimater::ModBaseT< MeshT > Base; \ 153 typedef typename Base::Mesh Mesh; \ 154 typedef typename Base::CollapseInfo CollapseInfo; \ 155 DECIMATER_MODNAME( Name ) 191 template <
typename MeshT>
199 ILLEGAL_COLLAPSE = -1,
208 : error_tolerance_factor_(1.0), mesh_(_mesh), is_binary_(_is_binary) {}
216 virtual const std::string&
name()
const {
static std::string _s_modname_(
"ModBase");
return _s_modname_; }
246 {
return LEGAL_COLLAPSE; }
269 if (_factor >= 0.0 && _factor <= 1.0)
270 error_tolerance_factor_ = _factor;
277 MeshT&
mesh() {
return mesh_; }
280 double error_tolerance_factor_;
298 #endif // OPENMESH_DECIMATER_MODBASE_HH defined bool is_binary(void) const
Returns true if criteria returns a binary value.
Definition: ModBaseT.hh:220
void set_binary(bool _b)
Set whether module is binary or not.
Definition: ModBaseT.hh:223
ModBaseT(MeshT &_mesh, bool _is_binary)
Default constructor.
Definition: ModBaseT.hh:207
Base class for all decimation modules.
Definition: ModBaseT.hh:192
Definition: BaseDecimaterT.hh:85
virtual void postprocess_collapse(const CollapseInfoT< MeshT > &)
After _from_vh has been collapsed into _to_vh, this method will be called.
Definition: ModBaseT.hh:257
virtual void set_error_tolerance_factor(double _factor)
This provides a function that allows the setting of a percentage of the original contraint.
Definition: ModBaseT.hh:268
virtual const std::string & name() const
Set module's name.
Definition: ModBaseT.hh:216
virtual ~ModBaseT()
Virtual desctructor.
Definition: ModBaseT.hh:213
virtual void initialize()
Initialize module-internal stuff.
Definition: ModBaseT.hh:229
bool is_valid() const
Check handle status.
Definition: ModBaseT.hh:100
virtual void preprocess_collapse(const CollapseInfoT< MeshT > &)
Before _from_vh has been collapsed into _to_vh, this method will be called.
Definition: ModBaseT.hh:251
virtual float collapse_priority(const CollapseInfoT< MeshT > &)
Return collapse priority.
Definition: ModBaseT.hh:245
MeshT & mesh()
Access the mesh associated with the decimater.
Definition: ModBaseT.hh:277
Handle for mesh decimation modules.
Definition: ModBaseT.hh:83
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition: MeshItems.hh:59
Stores information about a halfedge collapse.
Definition: CollapseInfoT.hh:74
This class demonstrates the non copyable idiom.
Definition: Noncopyable.hh:71
~ModHandleT()
Destructor.
Definition: ModBaseT.hh:96
ModHandleT()
Default constructor.
Definition: ModBaseT.hh:93
Provides data class CollapseInfoT for storing all information about a halfedge collapse.