ITK  5.4.0
Insight Toolkit
itkShapedNeighborhoodIterator.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * https://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkShapedNeighborhoodIterator_h
19 #define itkShapedNeighborhoodIterator_h
20 
21 #include <vector>
22 #include <list>
24 
25 namespace itk
26 {
149 template <typename TImage, typename TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
150 class ITK_TEMPLATE_EXPORT ShapedNeighborhoodIterator
151  : public ConstShapedNeighborhoodIterator<TImage, TBoundaryCondition>
152 {
153 public:
155  using InternalPixelType = typename TImage::InternalPixelType;
156  using PixelType = typename TImage::PixelType;
157 
159  static constexpr unsigned int Dimension = TImage::ImageDimension;
160 
164 
166  using typename Superclass::OffsetType;
168  using typename Superclass::RadiusType;
169  using typename Superclass::SizeType;
170  using typename Superclass::SizeValueType;
171  using typename Superclass::ConstIterator;
172  using typename Superclass::IndexListType;
173  using typename Superclass::BoundaryConditionType;
174  using typename Superclass::ImageBoundaryConditionPointerType;
175  using typename Superclass::NeighborhoodType;
176  using typename Superclass::IndexType;
177  using typename Superclass::ImageType;
178  using typename Superclass::RegionType;
179  using typename Superclass::IndexValueType;
180 
183  {
184  Iterator() = default;
186  : ConstIterator(s)
187  {}
188 
189  ~Iterator() ITK_ITERATOR_OVERRIDE = default;
190  Iterator &
191  operator=(const Iterator & o)
192  {
193  ConstIterator::operator=(o);
194  return *this;
195  }
196 
197  // Promote to public
198  void
199  Set(const PixelType & v) const
200  {
201  ConstIterator::ProtectedSet(v);
202  }
203 
204  protected:
205  friend Self;
206 
207  Iterator(const Self * s, const typename IndexListType::const_iterator & li)
208  : ConstIterator(s, li)
209  {}
210  };
211 
213  ShapedNeighborhoodIterator() = default;
214 
216  ~ShapedNeighborhoodIterator() override = default;
217 
220 
223  ShapedNeighborhoodIterator(const SizeType & radius, const ImageType * ptr, const RegionType & region)
224  : Superclass(radius, const_cast<ImageType *>(ptr), region)
225  {}
226 
227  // Expose the following methods from the superclass. This is a restricted
228  // subset of the methods available for NeighborhoodIterator.
229  using Superclass::SetPixel;
230  using Superclass::SetCenterPixel;
231 
232 
234  Self &
235  operator=(const Self & orig)
236  {
237  Superclass::operator=(orig);
238  return *this;
239  }
244  Iterator
246  {
247  return Iterator(this, this->m_ActiveIndexList.begin());
248  }
249  Iterator
250  End()
251  {
252  return Iterator(this, this->m_ActiveIndexList.end());
253  }
256  using Superclass::Begin;
257  using Superclass::End;
258 
259 protected:
260  friend Superclass;
261 
262  using typename Superclass::NeighborIndexType;
263 };
264 } // namespace itk
265 
266 #endif
itk::ShapedNeighborhoodIterator::operator=
Self & operator=(const Self &orig)
Definition: itkShapedNeighborhoodIterator.h:235
itkConstShapedNeighborhoodIterator.h
itk::ShapedNeighborhoodIterator::ShapedNeighborhoodIterator
ShapedNeighborhoodIterator(const SizeType &radius, const ImageType *ptr, const RegionType &region)
Definition: itkShapedNeighborhoodIterator.h:223
itk::ShapedNeighborhoodIterator::Iterator::Set
void Set(const PixelType &v) const
Definition: itkShapedNeighborhoodIterator.h:199
itk::ShapedNeighborhoodIterator::Iterator::Iterator
Iterator(Self *s)
Definition: itkShapedNeighborhoodIterator.h:185
itk::Size
Represent a n-dimensional size (bounds) of a n-dimensional image.
Definition: itkSize.h:71
itk::ConstNeighborhoodIterator< ImageType, ZeroFluxNeumannBoundaryCondition< ImageType > >::PixelType
typename ImageType ::PixelType PixelType
Definition: itkConstNeighborhoodIterator.h:57
itk::ShapedNeighborhoodIterator::Iterator::Self
friend Self
Definition: itkShapedNeighborhoodIterator.h:205
itk::Neighborhood
A light-weight container object for storing an N-dimensional neighborhood of values.
Definition: itkNeighborhood.h:54
itk::GTest::TypedefsAndConstructors::Dimension2::SizeType
ImageBaseType::SizeType SizeType
Definition: itkGTestTypedefsAndConstructors.h:49
itk::ConstNeighborhoodIterator::ConstIterator
typename AllocatorType::const_iterator ConstIterator
Definition: itkNeighborhood.h:76
itk::ShapedNeighborhoodIterator
A neighborhood iterator which can take on an arbitrary shape.
Definition: itkShapedNeighborhoodIterator.h:150
itk::ShapedNeighborhoodIterator::Iterator::Iterator
Iterator(const Self *s, const typename IndexListType::const_iterator &li)
Definition: itkShapedNeighborhoodIterator.h:207
itk::IndexValueType
long IndexValueType
Definition: itkIntTypes.h:90
itk::ConstNeighborhoodIterator< ImageType, ZeroFluxNeumannBoundaryCondition< ImageType > >::ImageType
ImageType ImageType
Definition: itkConstNeighborhoodIterator.h:77
itk::GTest::TypedefsAndConstructors::Dimension2::IndexType
ImageBaseType::IndexType IndexType
Definition: itkGTestTypedefsAndConstructors.h:50
itk::ConstNeighborhoodIterator< ImageType, ZeroFluxNeumannBoundaryCondition< ImageType > >::InternalPixelType
typename ImageType ::InternalPixelType InternalPixelType
Definition: itkConstNeighborhoodIterator.h:56
itk::GTest::TypedefsAndConstructors::Dimension2::RegionType
ImageBaseType::RegionType RegionType
Definition: itkGTestTypedefsAndConstructors.h:54
itk::ConstShapedNeighborhoodIterator
Const version of ShapedNeighborhoodIterator, defining iteration of a local N-dimensional neighborhood...
Definition: itkConstShapedNeighborhoodIterator.h:72
itk::OffsetValueType
long OffsetValueType
Definition: itkIntTypes.h:94
itk::ShapedNeighborhoodIterator::End
Iterator End()
Definition: itkShapedNeighborhoodIterator.h:250
itk::Neighborhood::ConstIterator
typename AllocatorType::const_iterator ConstIterator
Definition: itkNeighborhood.h:76
itk::Offset
Represent a n-dimensional offset between two n-dimensional indexes of n-dimensional image.
Definition: itkOffset.h:69
itk::ShapedNeighborhoodIterator::Iterator
Definition: itkShapedNeighborhoodIterator.h:182
itk::ConstShapedNeighborhoodIterator< ImageType, ZeroFluxNeumannBoundaryCondition< ImageType > >::OffsetValueType
typename OffsetType::OffsetValueType OffsetValueType
Definition: itkConstShapedNeighborhoodIterator.h:88
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::ConstNeighborhoodIterator
Const version of NeighborhoodIterator, defining iteration of a local N-dimensional neighborhood of pi...
Definition: itkConstNeighborhoodIterator.h:51
itk::ConstNeighborhoodIterator< ImageType, ZeroFluxNeumannBoundaryCondition< ImageType > >::RegionType
typename ImageType ::RegionType RegionType
Definition: itkConstNeighborhoodIterator.h:78
itk::ShapedNeighborhoodIterator::Superclass
friend Superclass
Definition: itkShapedNeighborhoodIterator.h:260
AddImageFilter
Definition: itkAddImageFilter.h:81
itk::Neighborhood::NeighborIndexType
SizeValueType NeighborIndexType
Definition: itkNeighborhood.h:96
itk::ShapedNeighborhoodIterator::Begin
Iterator Begin()
Definition: itkShapedNeighborhoodIterator.h:245
itk::GTest::TypedefsAndConstructors::Dimension2::Dimension
constexpr unsigned int Dimension
Definition: itkGTestTypedefsAndConstructors.h:44
itk::ConstNeighborhoodIterator< ImageType, ZeroFluxNeumannBoundaryCondition< ImageType > >::Iterator
typename AllocatorType::iterator Iterator
Definition: itkNeighborhood.h:75
itk::SizeValueType
unsigned long SizeValueType
Definition: itkIntTypes.h:83