VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkAbstractPicker.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00057 #ifndef __vtkAbstractPicker_h 00058 #define __vtkAbstractPicker_h 00059 00060 #include "vtkObject.h" 00061 00062 class vtkRenderer; 00063 class vtkProp; 00064 class vtkPropCollection; 00065 00066 class VTK_RENDERING_EXPORT vtkAbstractPicker : public vtkObject 00067 { 00068 public: 00069 vtkTypeMacro(vtkAbstractPicker,vtkObject); 00070 void PrintSelf(ostream& os, vtkIndent indent); 00071 00073 00074 vtkGetObjectMacro(Renderer,vtkRenderer); 00076 00078 00080 vtkGetVectorMacro(SelectionPoint,double,3); 00082 00084 00085 vtkGetVectorMacro(PickPosition,double,3); 00087 00089 00093 virtual int Pick(double selectionX, double selectionY, double selectionZ, 00094 vtkRenderer *renderer) = 0; 00096 00098 00101 int Pick(double selectionPt[3], vtkRenderer *ren) 00102 {return this->Pick(selectionPt[0],selectionPt[1],selectionPt[2],ren);}; 00104 00106 00109 vtkSetMacro(PickFromList,int); 00110 vtkGetMacro(PickFromList,int); 00111 vtkBooleanMacro(PickFromList,int); 00113 00115 void InitializePickList(); 00116 00118 void AddPickList(vtkProp *); 00119 00121 void DeletePickList(vtkProp *); 00122 00124 vtkPropCollection *GetPickList() {return this->PickList;} 00125 00126 protected: 00127 vtkAbstractPicker(); 00128 ~vtkAbstractPicker(); 00129 00130 virtual void Initialize(); 00131 00132 vtkRenderer *Renderer; //pick occurred in this renderer's viewport 00133 double SelectionPoint[3]; //selection point in window (pixel) coordinates 00134 double PickPosition[3]; //selection point in world coordinates 00135 00136 // use the following to control picking from a list 00137 int PickFromList; 00138 vtkPropCollection *PickList; 00139 private: 00140 vtkAbstractPicker(const vtkAbstractPicker&); // Not implemented. 00141 void operator=(const vtkAbstractPicker&); // Not implemented. 00142 }; 00143 00144 #endif 00145 00146