ITK  6.0.0
Insight Toolkit
itkImageIterator.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 itkImageIterator_h
19 #define itkImageIterator_h
20 
21 #include "itkImageConstIterator.h"
22 
23 namespace itk
24 {
64 template <typename TImage>
65 class ITK_TEMPLATE_EXPORT ImageIterator : public ImageConstIterator<TImage>
66 {
67 public:
68  ITK_DEFAULT_COPY_AND_MOVE(ImageIterator);
69 
72 
77  static constexpr unsigned int ImageIteratorDimension = TImage::ImageDimension;
78 
81 
83  using typename Superclass::IndexType;
84  using typename Superclass::SizeType;
85  using typename Superclass::OffsetType;
86  using typename Superclass::RegionType;
87  using typename Superclass::ImageType;
88  using typename Superclass::PixelContainer;
89  using typename Superclass::PixelContainerPointer;
90  using typename Superclass::InternalPixelType;
91  using typename Superclass::PixelType;
92  using typename Superclass::AccessorType;
93 
96  ImageIterator() = default;
97 
99  ~ImageIterator() override = default;
100 
103  ImageIterator(TImage * ptr, const RegionType & region);
104 
106  void
107  Set(const PixelType & value) const
108  {
109  // const_cast is needed here because m_Buffer is declared as a const
110  // pointer in the superclass which is the ConstIterator.
111  this->m_PixelAccessorFunctor.Set(*(const_cast<InternalPixelType *>(this->m_Buffer) + this->m_Offset), value);
112  }
113 
117  PixelType &
119  {
120  // const_cast is needed here because m_Buffer is declared as a const
121  // pointer in the superclass which is the ConstIterator.
122  return *(const_cast<InternalPixelType *>(this->m_Buffer) + this->m_Offset);
123  }
124 
126  ImageType *
127  GetImage() const
128  {
129  // const_cast is needed here because m_Image is declared as a const pointer
130  // in the base class which is the ConstIterator.
131  return const_cast<ImageType *>(this->m_Image.GetPointer());
132  }
133 
134 protected:
138  Self &
139  operator=(const ImageConstIterator<TImage> & it);
140 };
141 } // end namespace itk
144 #ifndef ITK_MANUAL_INSTANTIATION
145 # include "itkImageIterator.hxx"
146 #endif
147 
148 #endif
itkImageConstIterator.h
itk::ImageConstIterator::PixelType
typename TImage::PixelType PixelType
Definition: itkImageConstIterator.h:124
itk::ImageIterator::Set
void Set(const PixelType &value) const
Definition: itkImageIterator.h:107
itk::ImageConstIterator::OffsetType
typename TImage::OffsetType OffsetType
Definition: itkImageConstIterator.h:106
itk::ImageConstIterator::AccessorType
typename TImage::AccessorType AccessorType
Definition: itkImageConstIterator.h:128
itk::ImageConstIterator::RegionType
typename TImage::RegionType RegionType
Definition: itkImageConstIterator.h:109
itk::GTest::TypedefsAndConstructors::Dimension2::SizeType
ImageBaseType::SizeType SizeType
Definition: itkGTestTypedefsAndConstructors.h:49
itk::ImageConstIterator::PixelContainerPointer
typename PixelContainer::Pointer PixelContainerPointer
Definition: itkImageConstIterator.h:118
itk::GTest::TypedefsAndConstructors::Dimension2::IndexType
ImageBaseType::IndexType IndexType
Definition: itkGTestTypedefsAndConstructors.h:50
itk::ImageIterator::Value
PixelType & Value()
Definition: itkImageIterator.h:118
itk::GTest::TypedefsAndConstructors::Dimension2::RegionType
ImageBaseType::RegionType RegionType
Definition: itkGTestTypedefsAndConstructors.h:54
itk::ImageConstIterator::InternalPixelType
typename TImage::InternalPixelType InternalPixelType
Definition: itkImageConstIterator.h:121
itk::ImageIterator
A multi-dimensional iterator templated over image type.
Definition: itkImageIterator.h:65
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnatomicalOrientation.h:29
itk::ImageConstIterator
A multi-dimensional image iterator templated over image type.
Definition: itkImageConstIterator.h:84
itk::ImageConstIterator::ImageType
TImage ImageType
Definition: itkImageConstIterator.h:112
itk::ImageConstIterator::PixelContainer
typename TImage::PixelContainer PixelContainer
Definition: itkImageConstIterator.h:117
itk::ImageIterator::GetImage
ImageType * GetImage() const
Definition: itkImageIterator.h:127
AddImageFilter
Definition: itkAddImageFilter.h:81