00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkImageBoundaryCondition_h_
00018 #define __itkImageBoundaryCondition_h_
00019
00020 #include "itkIndex.h"
00021 #include "itkOffset.h"
00022 #include "itkNeighborhood.h"
00023
00024 namespace itk
00025 {
00026
00050 template <class TImageType>
00051 class ITK_EXPORT ImageBoundaryCondition
00052 {
00053 public:
00054
00056 itkStaticConstMacro(ImageDimension, unsigned int,
00057 TImageType::ImageDimension);
00058
00060 typedef ImageBoundaryCondition Self;
00061
00063 typedef typename TImageType::PixelType PixelType;
00064 typedef typename TImageType::InternalPixelType *PixelPointerType;
00065 typedef Index<itkGetStaticConstMacro(ImageDimension)> IndexType;
00066 typedef Offset<itkGetStaticConstMacro(ImageDimension)> OffsetType;
00068
00070 typedef Neighborhood<PixelPointerType,
00071 itkGetStaticConstMacro(ImageDimension)> NeighborhoodType;
00072
00074 typedef typename TImageType::NeighborhoodAccessorFunctorType
00075 NeighborhoodAccessorFunctorType;
00076
00078 ImageBoundaryCondition() {}
00079
00084 virtual PixelType operator()(const OffsetType& point_index,
00085 const OffsetType &boundary_offset,
00086 const NeighborhoodType *data) const = 0;
00087
00090 virtual PixelType operator()(
00091 const OffsetType& point_index,
00092 const OffsetType& boundary_offset,
00093 const NeighborhoodType *data,
00094 const NeighborhoodAccessorFunctorType &neighborhoodAccessorFunctor) const = 0;
00095
00096 virtual ~ImageBoundaryCondition() {}
00097
00104 virtual bool RequiresCompleteNeighborhood() { return true; }
00105 };
00107
00108 }
00109
00110
00111 #endif
00112