/*========================================================================= Program: Insight Segmentation & Registration Toolkit Module: $RCSfile: itkFlatStructuringElement.h,v $ Language: C++ Date: $Date: 2007/02/27 13:26:25 $ Version: $Revision: 1.13 $ Copyright (c) Insight Software Consortium. All rights reserved. See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #ifndef __itkFlatStructuringElement_h #define __itkFlatStructuringElement_h #include "itkNeighborhood.h" namespace itk { /** \class FlatStructuringElement * \brief A class to support a variety of flat structuring elements, * including versions created by decomposition of lines. **/ template class ITK_EXPORT FlatStructuringElement : public Neighborhood { public: /** External support for dimensionality. */ itkStaticConstMacro(NeighborhoodDimension, unsigned int, NDimension); /** External support for dimensionality. */ itkStaticConstMacro(Dimension, unsigned int, NDimension); /** Standard class typedefs. */ typedef FlatStructuringElement< NDimension > Self; typedef Neighborhood Superclass; /** External support for pixel type. */ typedef typename Superclass::PixelType PixelType; /** Iterator typedef support. Note the naming is intentional, i.e., * ::iterator and ::const_iterator, because the allocator may be a * vnl object or other type, which uses this form. */ typedef typename Superclass::Iterator Iterator; typedef typename Superclass::ConstIterator ConstIterator; /** Size and value typedef support. */ typedef typename Superclass::SizeType SizeType; typedef typename Superclass::SizeValueType SizeValueType; /** Radius typedef support. */ typedef typename Superclass::RadiusType RadiusType; /** External slice iterator type typedef support. */ typedef typename Superclass::SliceIteratorType SliceIteratorType; /** Default destructor. */ virtual ~FlatStructuringElement() {} /** Default consructor. */ FlatStructuringElement() {} /** Various constructors */ static Self Box( RadiusType radius ); static Self Ball( RadiusType radius ); static Self Annulus( RadiusType radius, unsigned int thickness = 1, bool includeCenter = false ); protected: private: }; } // namespace itk #ifndef ITK_MANUAL_INSTANTIATION #include "itkFlatStructuringElement.txx" #endif #endif