]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Image/Dijkstra.h
...
[FrontAlgorithms.git] / lib / fpa / Image / Dijkstra.h
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5
6 #ifndef __fpa__Image__Dijkstra__h__
7 #define __fpa__Image__Dijkstra__h__
8
9 #include <fpa/Base/Dijkstra.h>
10 #include <fpa/Base/MarksInterfaceWithCollisions.h>
11 #include <fpa/Base/SeedsInterface.h>
12 #include <fpa/Image/Algorithm.h>
13 #include <fpa/Image/DefaultTraits.h>
14 #include <fpa/Image/MinimumSpanningTree.h>
15 #include <fpa/Image/Functors/Dijkstra/Function.h>
16
17 namespace fpa
18 {
19   namespace Image
20   {
21     /**
22      */
23     template< class _TInputImage, class _TOutputImage, class _TFrontId = unsigned char, class _TTraits = fpa::Image::DefaultTraits< _TInputImage, _TOutputImage, _TFrontId > >
24     class Dijkstra
25       : public fpa::Base::Dijkstra< fpa::Image::Algorithm< _TTraits, fpa::Base::MarksInterfaceWithCollisions< _TTraits >, fpa::Base::SeedsInterface< _TTraits > >, fpa::Image::MinimumSpanningTree< _TInputImage::ImageDimension > >
26     {
27     public:
28       typedef _TInputImage  TInputImage;
29       typedef _TOutputImage TOutputImage;
30       typedef _TTraits      TTraits;
31       typedef fpa::Base::MarksInterfaceWithCollisions< TTraits > TMarksInterface;
32       typedef fpa::Base::SeedsInterface< TTraits > TSeedsInterface;
33       typedef fpa::Image::MinimumSpanningTree< _TInputImage::ImageDimension > TMST;
34
35       typedef fpa::Image::Algorithm< TTraits, TMarksInterface, TSeedsInterface > TAlgorithm;
36       typedef fpa::Base::Dijkstra< TAlgorithm, TMST > Superclass;
37       typedef Dijkstra                                Self;
38       typedef itk::SmartPointer< Self >               Pointer;
39       typedef itk::SmartPointer< const Self >         ConstPointer;
40
41       fpa_Base_TraitTypes( typename TTraits );
42
43       typedef fpa::Image::Functors::Dijkstra::Function< TInputImage, TOutputValue > TWeightFunction;
44
45     public:
46       itkNewMacro( Self );
47       itkTypeMacro( fpa::Image::Dijkstra, fpa::Base::Dijkstra );
48
49     protected:
50       Dijkstra( );
51       virtual ~Dijkstra( );
52
53       virtual void _BeforeGenerateData( ) override;
54       virtual void _ConfigureOutput( const TOutputValue& v ) override;
55
56     private:
57       // Purposely not implemented.
58       Dijkstra( const Self& other );
59       Self& operator=( const Self& other );
60     };
61
62   } // ecapseman
63
64 } // ecapseman
65
66 #ifndef ITK_MANUAL_INSTANTIATION
67 #  include <fpa/Image/Dijkstra.hxx>
68 #endif // ITK_MANUAL_INSTANTIATION
69
70 #endif // __fpa__Image__Dijkstra__h__
71
72 // eof - $RCSfile$