1 #ifndef __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__H__
2 #define __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__H__
5 #include <itkFunctionBase.h>
6 #include <fpa/Base/RegionGrow.h>
13 * Region grow is a front propagation with no costs.
15 template< class V, class R, class VV, class VC, class B >
16 class RegionGrowWithMultipleCriteria
17 : public RegionGrow< V, R, VV, VC, B >
22 typedef VV TVertexValue;
23 typedef B TBaseFilter;
25 /// Standard class typdedefs
26 typedef RegionGrowWithMultipleCriteria Self;
27 typedef RegionGrow< V, R, VV, VC, B > Superclass;
28 typedef itk::SmartPointer< Self > Pointer;
29 typedef itk::SmartPointer< const Self > ConstPointer;
31 typedef typename Superclass::TTraits TTraits;
32 typedef typename Superclass::TCost TCost;
33 typedef itk::FunctionBase< V, TCost > TMembershipFunction;
35 typename TMembershipFunction::Pointer
36 TMembershipFunctionPointer;
37 typedef std::vector< TMembershipFunctionPointer > TFunctions;
40 typedef typename Superclass::_TFrontId _TFrontId;
41 typedef typename Superclass::_TNode _TNode;
42 typedef typename Superclass::_TNodes _TNodes;
43 typedef typename Superclass::_TQueue _TQueue;
46 itkTypeMacro( RegionGrowWithMultipleCriteria, RegionGrow );
49 unsigned int GetNumberOfMembershipFunctions( ) const;
50 void ClearMembershipFunctions( );
51 void AddMembershipFunction( TMembershipFunction* function );
54 RegionGrowWithMultipleCriteria( );
55 virtual ~RegionGrowWithMultipleCriteria( );
57 virtual void _BeforeLoop( );
58 virtual _TNode _QueuePop( );
59 virtual bool _CheckMembership( const _TNode& n ) const;
62 RegionGrowWithMultipleCriteria( const Self& ); // Not impl.
63 void operator=( const Self& ); // Not impl.
66 mutable _TQueue m_AuxiliaryQueue;
67 TFunctions m_Functions;
68 typename TFunctions::iterator m_ActualFunction;
75 #include <fpa/Base/RegionGrowWithMultipleCriteria.hxx>
77 #endif // __FPA__BASE__REGIONGROWWITHMULTIPLECRITERIA__H__