17 #ifndef __itkImageConstIteratorWithIndex_txx
18 #define __itkImageConstIteratorWithIndex_txx
30 template<
class TImage>
44 template<
class TImage>
56 (ImageDimension+1)*
sizeof(
unsigned long));
65 m_PixelAccessorFunctor.SetBegin( m_Image->GetBufferPointer() );
72 template<
class TImage>
81 m_BeginIndex = region.GetIndex();
82 m_PositionIndex = m_BeginIndex;
85 #ifdef ITK_USE_REGION_VALIDATION_IN_ITERATORS
86 if( region.GetNumberOfPixels() > 0 )
88 const RegionType & bufferedRegion = m_Image->GetBufferedRegion();
89 itkAssertOrThrowMacro( (bufferedRegion.IsInside( m_Region )),
90 "Region " << m_Region <<
" is outside of buffered region " << bufferedRegion );
94 memcpy(m_OffsetTable, m_Image->GetOffsetTable(),
95 (ImageDimension+1)*
sizeof(
unsigned long));
98 long offs = m_Image->ComputeOffset( m_BeginIndex );
99 m_Begin = buffer + offs;
100 m_Position = m_Begin;
105 for (
unsigned int i=0; i < ImageDimension; ++i)
107 unsigned long size = region.GetSize()[i];
112 m_EndIndex[i] = m_BeginIndex[i] +
static_cast<long>(size);
113 pastEnd[i] = m_BeginIndex[i] +
static_cast<long>(size)-1;
115 m_End = buffer + m_Image->ComputeOffset( pastEnd );
117 m_PixelAccessor = m_Image->GetPixelAccessor();
118 m_PixelAccessorFunctor.SetPixelAccessor( m_PixelAccessor );
119 m_PixelAccessorFunctor.SetBegin( buffer );
129 template<
class TImage>
142 (ImageDimension+1)*
sizeof(
unsigned long));
151 m_PixelAccessorFunctor.SetBegin( m_Image->GetBufferPointer() );
160 template<
class TImage>
174 template<
class TImage>
181 m_Position = m_Begin;
182 m_PositionIndex = m_BeginIndex;
184 if( m_Region.GetNumberOfPixels() > 0 )
199 template<
class TImage>
213 template<
class TImage>
219 for (
unsigned int i=0; i < ImageDimension; ++i)
221 m_PositionIndex[i] = m_EndIndex[i]-1;
224 if( m_Region.GetNumberOfPixels() > 0 )
236 const unsigned long offset = m_Image->ComputeOffset( m_PositionIndex );
237 m_Position = buffer + offset;