]> Creatis software - clitk.git/blob - itk/clitkInvertVFFilter.h
First Modification for Qt5 & VTK6
[clitk.git] / itk / clitkInvertVFFilter.h
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://www.centreleonberard.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ===========================================================================**/
18 #ifndef __clitkInvertVFFilter_h
19 #define __clitkInvertVFFilter_h
20 #include "clitkImageCommon.h"
21
22 #include "itkImageToImageFilter.h"
23 #include "itkImage.h"
24 #include "itkImageRegionIterator.h"
25 #include "itkImageRegionIteratorWithIndex.h"
26 #include "itkNumericTraits.h"
27
28 namespace clitk
29 {
30   
31   template <class InputImageType, class OutputImageType>  
32   class ITK_EXPORT InvertVFFilter : public itk::ImageToImageFilter<InputImageType, OutputImageType>
33   
34   {
35   public:
36     typedef InvertVFFilter     Self;
37     typedef itk::ImageToImageFilter<InputImageType, OutputImageType>     Superclass;
38     typedef itk::SmartPointer<Self>            Pointer;
39     typedef itk::SmartPointer<const Self>      ConstPointer;
40    
41     /** Method for creation through the object factory. */
42     itkNewMacro(Self);  
43
44     /** Run-time type information (and related methods) */
45     itkTypeMacro( InvertVFFilter, ImageToImageFilter );
46   
47     /** Determine the image dimension. */
48     itkStaticConstMacro(ImageDimension, unsigned int,
49                         InputImageType::ImageDimension );
50     
51     //Some other typedefs
52     typedef double CoordRepType;
53     typedef itk::Image<double, ImageDimension> WeightsImageType;
54     typedef itk::Image<itk::SimpleFastMutexLock, ImageDimension> MutexImageType;
55
56     /** Point type */
57     typedef itk::Point<CoordRepType,itkGetStaticConstMacro(ImageDimension)> PointType;
58
59     /** Inherit some types from the superclass. */
60     typedef typename OutputImageType::IndexType        IndexType;
61     typedef typename OutputImageType::SizeType         SizeType;
62     typedef typename OutputImageType::PixelType        PixelType;
63     typedef typename OutputImageType::SpacingType      SpacingType;
64
65     //Set Methods(inline)
66     itkSetMacro( Verbose, bool);
67     itkSetMacro( EdgePaddingValue, PixelType );
68     void SetNumberOfThreads(unsigned int r )
69     {
70       m_NumberOfThreadsIsGiven=true;
71       m_NumberOfThreads=r;
72     }
73     itkSetMacro(ThreadSafe, bool);
74     itkSetMacro(OutputSpacing, SpacingType);
75     itkSetMacro(OutputSize, SizeType);
76
77   
78   protected:
79     InvertVFFilter();
80     ~InvertVFFilter() {};
81     void GenerateData( );
82     
83     bool m_Verbose;
84     bool m_NumberOfThreadsIsGiven;
85     SpacingType m_OutputSpacing;
86     SizeType m_OutputSize;
87     unsigned int m_NumberOfThreads;
88     PixelType m_EdgePaddingValue;
89     bool m_ThreadSafe;
90   };
91
92
93 } // end namespace clitk
94 #ifndef ITK_MANUAL_INSTANTIATION
95 #include "clitkInvertVFFilter.txx"
96 #endif
97
98 #endif // #define __clitkInvertVFFilter_h