00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00030 #ifndef __vtkKdTreeSelector_h
00031 #define __vtkKdTreeSelector_h
00032 
00033 #include "vtkSelectionAlgorithm.h"
00034 
00035 class vtkKdTree;
00036 
00037 class VTK_GRAPHICS_EXPORT vtkKdTreeSelector : public vtkSelectionAlgorithm
00038 {
00039 public:
00040   static vtkKdTreeSelector* New();
00041   vtkTypeMacro(vtkKdTreeSelector, vtkSelectionAlgorithm);
00042   void PrintSelf(ostream& os, vtkIndent indent);
00043 
00045 
00048   void SetKdTree(vtkKdTree* tree);
00049   vtkGetObjectMacro(KdTree, vtkKdTree);
00051 
00053 
00056   vtkSetVector6Macro(SelectionBounds, double);
00057   vtkGetVector6Macro(SelectionBounds, double);
00059 
00061 
00064   vtkSetStringMacro(SelectionFieldName);
00065   vtkGetStringMacro(SelectionFieldName);
00067 
00069 
00074   vtkSetMacro(SelectionAttribute, int);
00075   vtkGetMacro(SelectionAttribute, int);
00077 
00079 
00082   vtkSetMacro(SingleSelection, bool);
00083   vtkGetMacro(SingleSelection, bool);
00084   vtkBooleanMacro(SingleSelection, bool);
00086 
00088 
00091   vtkSetMacro(SingleSelectionThreshold, double);
00092   vtkGetMacro(SingleSelectionThreshold, double);
00094 
00095   unsigned long GetMTime();
00096 
00097 protected:
00098   vtkKdTreeSelector();
00099   ~vtkKdTreeSelector();
00100 
00101   vtkKdTree* KdTree;
00102   double SelectionBounds[6];
00103   char* SelectionFieldName;
00104   bool BuildKdTreeFromInput;
00105   bool SingleSelection;
00106   double SingleSelectionThreshold;
00107   int SelectionAttribute;
00108 
00109   virtual int FillInputPortInformation(
00110     int port, vtkInformation* info);
00111 
00112   int RequestData(
00113     vtkInformation*, 
00114     vtkInformationVector**, 
00115     vtkInformationVector*);
00116     
00117 private:
00118   vtkKdTreeSelector(const vtkKdTreeSelector&); 
00119   void operator=(const vtkKdTreeSelector&);   
00120 };
00121 
00122 #endif
00123