// .NAME vtkITKWandImageFilter - Wand tool implemented using connected threshold
// .SECTION Description
// itk::WandImageFilter
// WandImageFilter selects all pixels connected to a seed point that
// are within a specified intensity difference of the seed point

#ifndef __vtkITKWandImageFilter_h
#define __vtkITKWandImageFilter_h

#include "vtkITK.h"
#include "vtkSimpleImageToImageFilter.h"

class VTK_ITK_EXPORT vtkITKWandImageFilter : public vtkSimpleImageToImageFilter
{
public:
  static vtkITKWandImageFilter *New();
  vtkTypeRevisionMacro(vtkITKWandImageFilter, vtkSimpleImageToImageFilter);
  void PrintSelf(ostream& os, vtkIndent indent);

  // Methods to set/get seeds.  Seeds are specified in IJK (not XYZ).
  vtkSetVector3Macro(Seed, int);
  vtkGetVector3Macro(Seed, int);

  // Set/Get the intensity difference to connect as a function of the
  // dynamic range
  vtkSetClampMacro(DynamicRangePercentage, double, 0.0, 1.0);
  vtkGetMacro(DynamicRangePercentage, double);
  
protected:
  vtkITKWandImageFilter();
  ~vtkITKWandImageFilter();

  virtual void SimpleExecute(vtkImageData* input, vtkImageData* output);

  int Seed[3];
  double DynamicRangePercentage;
  
private:
  vtkITKWandImageFilter(const vtkITKWandImageFilter&);  // Not implemented.
  void operator=(const vtkITKWandImageFilter&);  // Not implemented.
};


#endif
