17 #ifndef __itkImageReverseConstIterator_h
18 #define __itkImageReverseConstIterator_h
86 template<
typename TImage>
97 itkStaticConstMacro(ImageIteratorDimension,
unsigned int,
98 TImage::ImageDimension);
145 m_PixelAccessorFunctor.SetBegin( m_Buffer );
165 m_PixelAccessorFunctor.SetBegin( m_Buffer );
172 unsigned long offset;
174 m_Buffer = m_Image->GetBufferPointer();
178 offset = m_Image->ComputeOffset( m_Region.GetIndex() );
179 m_EndOffset = offset-1;
184 for (
unsigned int i=0; i < TImage::ImageDimension; ++i)
186 ind[i] += (size[i] - 1);
188 m_BeginOffset = m_Image->ComputeOffset( ind );
189 m_Offset = m_BeginOffset;
191 m_PixelAccessor = ptr->GetPixelAccessor();
192 m_PixelAccessorFunctor.SetPixelAccessor( m_PixelAccessor );
193 m_PixelAccessorFunctor.SetBegin( m_Buffer );
207 m_Buffer = m_Image->GetBufferPointer();
211 m_Offset = m_Image->ComputeOffset( ind );
214 m_EndOffset = m_Image->ComputeOffset( m_Region.GetIndex() ) - 1;
218 SizeType regSize(m_Region.GetSize());
219 for (
unsigned int i=0; i < TImage::ImageDimension; ++i)
221 regInd[i] += (regSize[i] - 1);
223 m_BeginOffset = m_Image->ComputeOffset( regInd );
225 m_PixelAccessor = m_Image->GetPixelAccessor();
226 m_PixelAccessorFunctor.SetPixelAccessor( m_PixelAccessor );
227 m_PixelAccessorFunctor.SetBegin( m_Buffer );
242 m_PixelAccessorFunctor.SetPixelAccessor( m_PixelAccessor );
243 m_PixelAccessorFunctor.SetBegin( m_Buffer );
253 m_Buffer = m_Image->GetBufferPointer();
257 m_Offset = m_Image->ComputeOffset( ind );
260 m_EndOffset = m_Image->ComputeOffset( m_Region.GetIndex() ) - 1;
264 SizeType regSize(m_Region.GetSize());
265 for (
unsigned int i=0; i < TImage::ImageDimension; ++i)
267 regInd[i] += (regSize[i] - 1);
269 m_BeginOffset = m_Image->ComputeOffset( regInd );
271 m_PixelAccessor = m_Image->GetPixelAccessor();
272 m_PixelAccessorFunctor.SetPixelAccessor( m_PixelAccessor );
273 m_PixelAccessorFunctor.SetBegin( m_Buffer );
279 static unsigned int GetImageIteratorDimension()
280 {
return TImage::ImageDimension;}
305 {
return m_Image->ComputeIndex( m_Offset ); }
310 { m_Offset = m_Image->ComputeOffset( ind ); }
320 {
return m_PixelAccessorFunctor.Get(*(m_Buffer+m_Offset)); }
325 this->m_PixelAccessorFunctor.Set(*(const_cast<InternalPixelType *>(
326 this->m_Buffer+this->m_Offset)),value);
333 {
return *(m_Buffer+m_Offset); }
339 {
return *(m_Buffer+m_Offset); }
350 m_Offset = m_BeginOffset;
362 m_Offset = m_EndOffset;
369 return (m_Offset == m_BeginOffset);
376 return (m_Offset == m_EndOffset);
396 #define ITK_TEMPLATE_ImageReverseConstIterator(_, EXPORT, x, y) namespace itk { \
397 _(1(class EXPORT ImageReverseConstIterator< ITK_TEMPLATE_1 x >)) \
398 namespace Templates { typedef ImageReverseConstIterator< ITK_TEMPLATE_1 x > ImageReverseConstIterator##y; } \
401 #if ITK_TEMPLATE_EXPLICIT
402 # include "Templates/itkImageReverseConstIterator+-.h"