1 // -------------------------------------------------------------------------
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // -------------------------------------------------------------------------
5 #ifndef __cpExtensions__Algorithms__ImageFunctorFilter__hxx__
6 #define __cpExtensions__Algorithms__ImageFunctorFilter__hxx__
8 #include <itkImageScanlineConstIterator.h>
9 #include <itkImageScanlineIterator.h>
10 #include <itkProgressReporter.h>
12 // -------------------------------------------------------------------------
13 template< class _TInputImage, class _TOutputImage >
14 cpExtensions::Algorithms::ImageFunctorFilter< _TInputImage, _TOutputImage >::
20 // -------------------------------------------------------------------------
21 template< class _TInputImage, class _TOutputImage >
22 cpExtensions::Algorithms::ImageFunctorFilter< _TInputImage, _TOutputImage >::
23 ~ImageFunctorFilter( )
27 // -------------------------------------------------------------------------
28 template< class _TInputImage, class _TOutputImage >
30 cpExtensions::Algorithms::ImageFunctorFilter< _TInputImage, _TOutputImage >::
31 ThreadedGenerateData( const TRegion& region, itk::ThreadIdType threadId )
33 // Configure data for this thread
34 const typename TRegion::SizeType& regionSize = region.GetSize( );
35 if( regionSize[ 0 ] == 0 )
37 const TInputImage* in = this->GetInput( );
38 TOutputImage* out = this->GetOutput( 0 );
39 const size_t nLines = region.GetNumberOfPixels( ) / regionSize[ 0 ];
40 itk::ProgressReporter progress( this, threadId, nLines );
42 // Iterate over this region
43 itk::ImageScanlineConstIterator< TInputImage > iIt( in, region );
44 itk::ImageScanlineIterator< TOutputImage > oIt( out, region );
47 while( !iIt.IsAtEnd( ) )
49 while( !iIt.IsAtEndOfLine( ) )
51 oIt.Set( this->m_Functor->Evaluate( iIt.Get( ) ) );
58 progress.CompletedPixel( );
63 #endif // __cpExtensions__Algorithms__ImageFunctorFilter__hxx__