ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
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
25namespace itk
26{
148template <typename TImage, typename TBoundaryCondition = ZeroFluxNeumannBoundaryCondition<TImage>>
149class ITK_TEMPLATE_EXPORT ShapedNeighborhoodIterator
150 : public ConstShapedNeighborhoodIterator<TImage, TBoundaryCondition>
151{
152public:
154 using InternalPixelType = typename TImage::InternalPixelType;
155 using PixelType = typename TImage::PixelType;
156
158 static constexpr unsigned int Dimension = TImage::ImageDimension;
159
163
165 using typename Superclass::OffsetType;
167 using typename Superclass::RadiusType;
168 using typename Superclass::SizeType;
169 using typename Superclass::SizeValueType;
170 using typename Superclass::ConstIterator;
171 using typename Superclass::IndexListType;
174 using typename Superclass::NeighborhoodType;
175 using typename Superclass::IndexType;
176 using typename Superclass::ImageType;
177 using typename Superclass::RegionType;
178 using typename Superclass::IndexValueType;
179
181 struct Iterator : public Superclass::ConstIterator
182 {
183 Iterator() = default;
185 : ConstIterator(s)
186 {}
187
188 ~Iterator() = default;
189 Iterator &
191 {
192 ConstIterator::operator=(o);
193 return *this;
194 }
195
196 // Promote to public
197 void
198 Set(const PixelType & v) const
199 {
200 ConstIterator::ProtectedSet(v);
201 }
202
203 protected:
204 friend Self;
205
206 Iterator(const Self * s, const typename IndexListType::const_iterator & li)
207 : ConstIterator(s, li)
208 {}
209 };
210
213
215 ~ShapedNeighborhoodIterator() override = default;
216
219
222 ShapedNeighborhoodIterator(const SizeType & radius, const ImageType * ptr, const RegionType & region)
223 : Superclass(radius, const_cast<ImageType *>(ptr), region)
224 {}
225
226 // Expose the following methods from the superclass. This is a restricted
227 // subset of the methods available for NeighborhoodIterator.
228 using Superclass::SetPixel;
229 using Superclass::SetCenterPixel;
230
231
233 Self &
234 operator=(const Self & orig)
235 {
237 return *this;
238 }
239
240
243 Iterator
245 {
246 return Iterator(this, this->m_ActiveIndexList.begin());
247 }
248 Iterator
250 {
251 return Iterator(this, this->m_ActiveIndexList.end());
252 }
253
254
255 using Superclass::Begin;
256 using Superclass::End;
257
258protected:
260
261 using typename Superclass::NeighborIndexType;
262};
263} // namespace itk
264
265#endif
typename NeighborhoodType::NeighborIndexType NeighborIndexType
itk::Size< VDimension > SizeType
typename OffsetType::OffsetValueType OffsetValueType
ShapedNeighborhoodIterator(const SizeType &radius, const ImageType *ptr, const RegionType &region)
ShapedNeighborhoodIterator(const ShapedNeighborhoodIterator &o)=delete
~ShapedNeighborhoodIterator() override=default
typename TImage::InternalPixelType InternalPixelType
ConstShapedNeighborhoodIterator< TImage, TBoundaryCondition > Superclass
AddImageFilter Self
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
itk::OffsetValueType OffsetValueType
Definition itkOffset.h:77
Iterator(const Self *s, const typename IndexListType::const_iterator &li)