#ifndef __CPM__ALGORITHMS__QUADEDGE__DECIMATIONFILTER__H__ #define __CPM__ALGORITHMS__QUADEDGE__DECIMATIONFILTER__H__ #include namespace cpm { namespace Algorithms { namespace QuadEdge { /** */ template< class I, class O, class C > class DecimationFilter : public itk::MeshToMeshFilter< I, O > { public: typedef DecimationFilter Self; typedef itk::MeshToMeshFilter< I, O > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef I TInputMesh; typedef O TOutputMesh; typedef C TCriterion; public: itkTypeMacro( DecimationFilter, itkMeshToMeshFilter ); itkSetObjectMacro( Criterion, C ); protected: DecimationFilter( ); virtual ~DecimationFilter( ); virtual void GenerateData( ); virtual void Initialize( ); virtual void FillPriorityQueue( ) = 0; virtual void Extract( ) = 0; virtual bool ProcessWithoutAnyTopologicalGuarantee( ) = 0; virtual bool ProcessWithTopologicalGuarantee( ) = 0; virtual bool IsCriterionSatisfied( ) = 0; private: // Purposely not implemented DecimationFilter( const Self& ); void operator=( const Self& ); protected: typename C::Pointer m_Criterion; unsigned long m_Iteration; }; } // ecapseman } // ecapseman } // ecapseman #include #endif // __CPM__ALGORITHMS__QUADEDGE__DECIMATIONFILTER__H__ // eof - $RCSfile$