00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkLineConstIterator_h
00018 #define __itkLineConstIterator_h
00019
00020 #include "itkIndex.h"
00021 #include "itkImage.h"
00022
00023 namespace itk
00024 {
00025
00049 template<class TImage>
00050 class ITK_EXPORT LineConstIterator
00051 {
00052 public:
00054 typedef LineConstIterator Self;
00055
00060 itkStaticConstMacro(ImageIteratorDimension, unsigned int,
00061 TImage::ImageDimension);
00062
00064 typedef typename TImage::IndexType IndexType;
00065 typedef typename TImage::IndexValueType IndexValueType;
00066
00068 typedef typename TImage::OffsetType OffsetType;
00069 typedef typename TImage::OffsetValueType OffsetValueType;
00070
00072 typedef typename TImage::SizeType SizeType;
00073 typedef typename TImage::SizeValueType SizeValueType;
00074
00076 typedef typename TImage::RegionType RegionType;
00077
00079 typedef typename TImage::SpacingType SpacingType;
00080
00082 typedef typename TImage::PointType PointType;
00083
00085 typedef TImage ImageType;
00086
00090 typedef typename TImage::PixelContainer PixelContainer;
00091 typedef typename PixelContainer::Pointer PixelContainerPointer;
00092
00094 typedef typename TImage::InternalPixelType InternalPixelType;
00095
00097 typedef typename TImage::PixelType PixelType;
00098
00101 typedef typename TImage::AccessorType AccessorType;
00102
00104 itkTypeMacro(LineConstIterator, None);
00105
00107 static unsigned int GetImageIteratorDimension()
00108 {
00109 return TImage::ImageDimension;
00110 }
00111
00113 const IndexType GetIndex()
00114 {
00115 return m_CurrentImageIndex;
00116 }
00117
00119 const PixelType & Get(void) const
00120 {
00121 return m_Image->GetPixel(m_CurrentImageIndex );
00122 }
00123
00125 bool IsAtEnd()
00126 {
00127 return m_IsAtEnd;
00128 }
00129
00131 void GoToBegin();
00132
00134 void operator++();
00135
00138 Self &operator=(const Self& it);
00139
00141 LineConstIterator(const ImageType *imagePtr, const IndexType &firstIndex, const IndexType &lastIndex);
00142
00144 virtual ~LineConstIterator() {};
00145
00146
00147 protected:
00149 typename ImageType::ConstWeakPointer m_Image;
00150
00152 RegionType m_Region;
00153
00155 bool m_IsAtEnd;
00156
00158 IndexType m_CurrentImageIndex;
00159 IndexType m_StartIndex;
00160 IndexType m_LastIndex;
00161 IndexType m_EndIndex;
00162
00164
00165 unsigned int m_MainDirection;
00166
00167
00168 IndexType m_AccumulateError;
00169
00170
00171
00172 IndexType m_IncrementError;
00173
00174
00175
00176 IndexType m_MaximalError;
00177
00178
00179 IndexType m_OverflowIncrement;
00180
00181
00182
00183 IndexType m_ReduceErrorAfterIncrement;
00184 };
00185
00186 }
00187
00188 #ifndef ITK_MANUAL_INSTANTIATION
00189 #include "itkLineConstIterator.txx"
00190 #endif
00191
00192 #endif