Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

Rendering/vtkAbstractPicker.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   Visualization Toolkit
00004   Module:    $RCSfile: vtkAbstractPicker.h,v $
00005   Language:  C++
00006 
00007   Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 
00008   All rights reserved.
00009   See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
00010 
00011      This software is distributed WITHOUT ANY WARRANTY; without even 
00012      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00013      PURPOSE.  See the above copyright notice for more information.
00014 
00015 =========================================================================*/
00073 #ifndef __vtkAbstractPicker_h
00074 #define __vtkAbstractPicker_h
00075 
00076 #include "vtkObject.h"
00077 
00078 class vtkRenderer;
00079 class vtkProp;
00080 class vtkPropCollection;
00081 
00082 class VTK_RENDERING_EXPORT vtkAbstractPicker : public vtkObject
00083 {
00084 public:
00085   vtkTypeRevisionMacro(vtkAbstractPicker,vtkObject);
00086   void PrintSelf(ostream& os, vtkIndent indent);
00087 
00089 
00090   vtkGetObjectMacro(Renderer,vtkRenderer);
00092 
00094 
00096   vtkGetVectorMacro(SelectionPoint,float,3);
00098 
00100 
00101   vtkGetVectorMacro(PickPosition,float,3);
00103 
00105 
00109   virtual int Pick(float selectionX, float selectionY, float selectionZ, 
00110                    vtkRenderer *renderer) = 0;
00112 
00114 
00117   int Pick(float selectionPt[3], vtkRenderer *ren)
00118     {return this->Pick(selectionPt[0],selectionPt[1],selectionPt[2],ren);};  
00120 
00122   void SetStartPickMethod(void (*f)(void *), void *arg);
00123 
00125   void SetPickMethod(void (*f)(void *), void *arg);
00126 
00129   void SetEndPickMethod(void (*f)(void *), void *arg);
00130 
00132   void SetStartPickMethodArgDelete(void (*f)(void *));
00133 
00135   void SetPickMethodArgDelete(void (*f)(void *));
00136 
00138   void SetEndPickMethodArgDelete(void (*f)(void *));
00139 
00141 
00144   vtkSetMacro(PickFromList,int);
00145   vtkGetMacro(PickFromList,int);
00146   vtkBooleanMacro(PickFromList,int);
00148 
00150   void InitializePickList();
00151 
00153   void AddPickList(vtkProp *);
00154 
00156   void DeletePickList(vtkProp *);
00157   
00159   vtkPropCollection *GetPickList() {return this->PickList;}
00160 
00161 protected:
00162   vtkAbstractPicker();
00163   ~vtkAbstractPicker();
00164 
00165   virtual void Initialize();
00166 
00167   vtkRenderer *Renderer; //pick occurred in this renderer's viewport
00168   float SelectionPoint[3]; //selection point in window (pixel) coordinates
00169   float PickPosition[3]; //selection point in world coordinates
00170   
00171   // the following are used to manage invocation of pick methods
00172   unsigned long StartPickTag;
00173   unsigned long PickTag;
00174   unsigned long EndPickTag;
00175   
00176   // use the following to control picking from a list
00177   int PickFromList;
00178   vtkPropCollection *PickList;
00179 private:
00180   vtkAbstractPicker(const vtkAbstractPicker&);  // Not implemented.
00181   void operator=(const vtkAbstractPicker&);  // Not implemented.
00182 };
00183 
00184 #endif
00185 
00186