00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkBinaryCrossStructuringElement_h
00018 #define __itkBinaryCrossStructuringElement_h
00019
00020 #include "itkNeighborhood.h"
00021
00022 namespace itk {
00023
00042 template<class TPixel, unsigned int VDimension = 2,
00043 class TAllocator = NeighborhoodAllocator<TPixel> >
00044 class ITK_EXPORT BinaryCrossStructuringElement
00045 : public Neighborhood<TPixel, VDimension, TAllocator>
00046 {
00047 public:
00049 typedef BinaryCrossStructuringElement Self;
00050 typedef Neighborhood<TPixel, VDimension, TAllocator> Superclass;
00051
00053 typedef TAllocator AllocatorType;
00054
00056 itkStaticConstMacro(NeighborhoodDimension, unsigned int, VDimension);
00057
00059 typedef TPixel PixelType;
00060
00064 typedef typename AllocatorType::iterator Iterator;
00065 typedef typename AllocatorType::const_iterator ConstIterator;
00066
00068 typedef typename Superclass::SizeType SizeType;
00069 typedef typename Superclass::SizeValueType SizeValueType;
00070
00072 typedef typename Superclass::OffsetType OffsetType;
00073 typedef typename OffsetType::OffsetValueType OffsetValueType;
00074
00076 typedef typename Superclass::RadiusType RadiusType;
00077
00079 typedef SliceIterator<TPixel, Self> SliceIteratorType;
00080
00082 BinaryCrossStructuringElement() {}
00083
00085 virtual ~BinaryCrossStructuringElement() {}
00086
00088 BinaryCrossStructuringElement(const Self& other)
00089 : Neighborhood<TPixel, VDimension, TAllocator>(other)
00090 {
00091 }
00092
00094 Self &operator=(const Self& other)
00095 {
00096 Superclass::operator=(other);
00097 return *this;
00098 }
00100
00102 void CreateStructuringElement();
00103
00104 protected:
00105
00106 private:
00107
00108 };
00109
00110 }
00111
00112
00113 #define ITK_TEMPLATE_BinaryCrossStructuringElement(_, EXPORT, x, y) namespace itk { \
00114 _(2(class EXPORT BinaryCrossStructuringElement< ITK_TEMPLATE_2 x >)) \
00115 namespace Templates { typedef BinaryCrossStructuringElement< ITK_TEMPLATE_2 x > \
00116 BinaryCrossStructuringElement##y; } \
00117 }
00118
00119 #if ITK_TEMPLATE_EXPLICIT
00120 # include "Templates/itkBinaryCrossStructuringElement+-.h"
00121 #endif
00122
00123 #if ITK_TEMPLATE_TXX
00124 # include "itkBinaryCrossStructuringElement.txx"
00125 #endif
00126
00127 #endif
00128