1 #ifndef __FPA__BASE__IMAGESKELETON__H__
2 #define __FPA__BASE__IMAGESKELETON__H__
4 #include <itkSimpleDataObjectDecorator.h>
5 #include <cpExtensions/DataStructures/PolyLineParametricPath.h>
13 template< class _TMST >
15 : public itk::SimpleDataObjectDecorator< std::map< typename _TMST::TVertex, std::map< typename _TMST::TVertex, typename cpExtensions::DataStructures::PolyLineParametricPath< _TMST::TVertex::Dimension >::Pointer, typename _TMST::TVertex::LexicographicCompare >, typename _TMST::TVertex::LexicographicCompare > >
19 typedef _TMST TMinimumSpanningTree;
20 typedef typename _TMST::TVertex TVertex;
21 typedef typename TVertex::LexicographicCompare TVertexCmp;
23 cpExtensions::DataStructures::PolyLineParametricPath< TVertex::Dimension >
26 std::map< TVertex, typename TPath::Pointer, TVertexCmp >
28 typedef std::map< TVertex, TSkeletonRow, TVertexCmp > TSkeleton;
31 typedef ImageSkeleton Self;
32 typedef itk::SimpleDataObjectDecorator< TSkeleton > Superclass;
33 typedef itk::SmartPointer< Self > Pointer;
34 typedef itk::SmartPointer< const Self > ConstPointer;
38 itkTypeMacro( ImageSkeleton, itk::SimpleDataObjectDecorator );
40 itkGetConstObjectMacro( MinimumSpanningTree, _TMST );
41 itkSetConstObjectMacro( MinimumSpanningTree, _TMST );
44 void AddBranch( const TVertex& a, const TVertex& b );
45 const TPath* GetBranch( const TVertex& a, const TVertex& b ) const;
49 virtual ~ImageSkeleton( );
52 // Purposely not implemented
53 ImageSkeleton( const Self& other );
54 Self& operator=( const Self& other );
57 typename _TMST::ConstPointer m_MinimumSpanningTree;
64 #ifndef ITK_MANUAL_INSTANTIATION
65 #include <fpa/Base/ImageSkeleton.hxx>
66 #endif // ITK_MANUAL_INSTANTIATION
68 #endif // __FPA__BASE__IMAGESKELETON__H__