00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _itkPath_h
00019 #define _itkPath_h
00020
00021
00022 #include "itkDataObject.h"
00023 #include "itkIndex.h"
00024 #include "itkOffset.h"
00025 #include "itkNumericTraits.h"
00026
00027 namespace itk
00028 {
00029
00030
00050 template <class TInput, class TOutput, unsigned int VDimension>
00051 class ITK_EXPORT Path : public DataObject
00052 {
00053 public:
00055 typedef Path Self;
00056 typedef DataObject Superclass;
00057 typedef SmartPointer<Self> Pointer;
00058 typedef SmartPointer<const Self> ConstPointer;
00059
00061 itkTypeMacro(Path, FunctionBase);
00062
00064 typedef TInput InputType;
00065
00067 typedef TOutput OutputType;
00068
00069
00071 typedef Index< VDimension > IndexType;
00072 typedef Offset< VDimension > OffsetType;
00073
00074
00078 virtual inline InputType StartOfInput() const
00079 {
00080 return NumericTraits<InputType>::Zero;
00081 }
00082
00085 virtual inline InputType EndOfInput() const
00086 {
00087 return NumericTraits<InputType>::One;
00088 }
00089
00092 virtual OutputType Evaluate( const InputType & input ) const = 0;
00093
00095 virtual IndexType EvaluateToIndex( const InputType & input ) const = 0;
00096
00104 virtual OffsetType IncrementInput(InputType & input) const = 0;
00105
00106
00107
00116 virtual void Initialize(void);
00117
00119 virtual void UpdateOutputInformation();
00120 virtual void SetRequestedRegionToLargestPossibleRegion();
00121 virtual void CopyInformation(const DataObject *data);
00122 virtual bool RequestedRegionIsOutsideOfTheBufferedRegion();
00123 virtual bool VerifyRequestedRegion();
00124
00129 virtual void SetRequestedRegion(DataObject *data);
00130
00131
00132 protected:
00133
00134 OffsetType m_ZeroOffset;
00135 IndexType m_ZeroIndex;
00136
00137 Path();
00138 ~Path(){}
00139
00140 private:
00141 Path(const Self&);
00142 void operator=(const Self&);
00143
00144 };
00145
00146 }
00147
00148 #ifndef ITK_MANUAL_INSTANTIATION
00149 #include "itkPath.txx"
00150 #endif
00151
00152 #endif