00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00028 #ifndef __vtkImageIterator_h
00029 #define __vtkImageIterator_h
00030 
00031 #include "vtkSystemIncludes.h"
00032 class vtkImageData;
00033 
00034 template<class DType>
00035 class VTK_FILTERING_EXPORT vtkImageIterator
00036 {
00037 public:
00038   typedef DType *SpanIterator;
00039 
00042   vtkImageIterator();
00043 
00045   vtkImageIterator(vtkImageData *id, int *ext);
00046 
00049   void Initialize(vtkImageData *id, int *ext);
00050 
00052   void NextSpan();
00053 
00055 
00056   SpanIterator BeginSpan()
00057     {
00058     return this->Pointer;
00059     }
00061 
00063 
00064   SpanIterator EndSpan()
00065     {
00066     return this->SpanEndPointer;
00067     }
00069 
00071 
00072   int IsAtEnd()
00073     {
00074     return (this->Pointer >= this->EndPointer);
00075     }
00077 
00078 protected:
00079   DType *Pointer;
00080   DType *SpanEndPointer;
00081   DType *SliceEndPointer;
00082   DType *EndPointer;
00083   vtkIdType    Increments[3];
00084   vtkIdType    ContinuousIncrements[3];
00085 };
00086 
00087 #ifdef VTK_NO_EXPLICIT_TEMPLATE_INSTANTIATION
00088 #include "vtkImageIterator.txx"
00089 #endif
00090 
00091 #endif