00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __itkInteriorExteriorSpatialFunction_h
00018 #define __itkInteriorExteriorSpatialFunction_h
00019
00020 #include "itkSpatialFunction.h"
00021
00022 namespace itk
00023 {
00024
00047 template <unsigned int VDimension=3,typename TInput=Point<double,VDimension> >
00048 class ITK_EXPORT InteriorExteriorSpatialFunction : public
00049 SpatialFunction<bool, VDimension, TInput >
00050 {
00051 public:
00053 typedef InteriorExteriorSpatialFunction Self;
00054 typedef SpatialFunction<bool, VDimension,TInput> Superclass;
00055 typedef SmartPointer<Self> Pointer;
00056 typedef SmartPointer<const Self> ConstPointer;
00057
00059 itkTypeMacro(InteriorExteriorSpatialFunction, SpatialFunction);
00060
00062 typedef typename Superclass::InputType InputType;
00063
00065 typedef typename Superclass::OutputType OutputType;
00066
00071 virtual OutputType Evaluate( const InputType& input ) const = 0;
00072
00073 protected:
00074 InteriorExteriorSpatialFunction();
00075 virtual ~InteriorExteriorSpatialFunction();
00076 void PrintSelf(std::ostream& os, Indent indent) const;
00077
00078 private:
00079 InteriorExteriorSpatialFunction(const Self&);
00080 void operator=(const Self&);
00081
00082 };
00083
00084 }
00085
00086
00087 #define ITK_TEMPLATE_InteriorExteriorSpatialFunction(_, EXPORT, x, y) namespace itk { \
00088 _(2(class EXPORT InteriorExteriorSpatialFunction< ITK_TEMPLATE_2 x >)) \
00089 namespace Templates { typedef InteriorExteriorSpatialFunction< ITK_TEMPLATE_2 x > \
00090 InteriorExteriorSpatialFunction##y; } \
00091 }
00092
00093 #if ITK_TEMPLATE_EXPLICIT
00094 # include "Templates/itkInteriorExteriorSpatialFunction+-.h"
00095 #endif
00096
00097 #if ITK_TEMPLATE_TXX
00098 # include "itkInteriorExteriorSpatialFunction.txx"
00099 #endif
00100
00101 #endif
00102