VTK  9.3.20240418
vtkAbstractPicker.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
75 #ifndef vtkAbstractPicker_h
76 #define vtkAbstractPicker_h
77 
78 #include "vtkObject.h"
79 #include "vtkRenderingCoreModule.h" // For export macro
80 
81 VTK_ABI_NAMESPACE_BEGIN
82 class vtkRenderer;
83 class vtkProp;
84 class vtkPropCollection;
85 
86 class VTKRENDERINGCORE_EXPORT vtkAbstractPicker : public vtkObject
87 {
88 public:
89  vtkTypeMacro(vtkAbstractPicker, vtkObject);
90  void PrintSelf(ostream& os, vtkIndent indent) override;
91 
93 
96  vtkGetObjectMacro(Renderer, vtkRenderer);
98 
100 
104  vtkGetVectorMacro(SelectionPoint, double, 3);
106 
108 
111  vtkGetVectorMacro(PickPosition, double, 3);
113 
120  virtual int Pick(
121  double selectionX, double selectionY, double selectionZ, vtkRenderer* renderer) = 0;
122 
128  int Pick(double selectionPt[3], vtkRenderer* ren)
129  {
130  return this->Pick(selectionPt[0], selectionPt[1], selectionPt[2], ren);
131  }
132 
138  virtual int Pick3DPoint(double /* selectionPt */[3], vtkRenderer* /*ren*/)
139  {
140  vtkErrorMacro("Pick3DPoint called without implementation");
141  return 0;
142  }
143 
149  virtual int Pick3DRay(double /* selectionPt */[3], double /* orient */[4], vtkRenderer* /*ren*/)
150  {
151  vtkErrorMacro("Pick3DRay called without implementation");
152  return 0;
153  }
154 
156 
161  vtkSetMacro(PickFromList, vtkTypeBool);
162  vtkGetMacro(PickFromList, vtkTypeBool);
163  vtkBooleanMacro(PickFromList, vtkTypeBool);
165 
170 
175 
180 
184  vtkPropCollection* GetPickList() { return this->PickList; }
185 
186 protected:
188  ~vtkAbstractPicker() override;
189 
190  virtual void Initialize();
191 
192  vtkRenderer* Renderer; // pick occurred in this renderer's viewport
193  double SelectionPoint[3]; // selection point in window (pixel) coordinates
194  double PickPosition[3]; // selection point in world coordinates
195 
196  // use the following to control picking from a list
199 
200 private:
201  vtkAbstractPicker(const vtkAbstractPicker&) = delete;
202  void operator=(const vtkAbstractPicker&) = delete;
203 };
204 
205 VTK_ABI_NAMESPACE_END
206 #endif
define API for picking subclasses
vtkRenderer * Renderer
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkTypeBool PickFromList
virtual int Pick(double selectionX, double selectionY, double selectionZ, vtkRenderer *renderer)=0
Perform pick operation with selection point provided.
virtual void Initialize()
virtual int Pick3DRay(double[3], double[4], vtkRenderer *)
Perform pick operation with selection point and orientation provided.
void DeletePickList(vtkProp *)
Delete an actor from the pick list.
~vtkAbstractPicker() override
void AddPickList(vtkProp *)
Add an actor to the pick list.
void InitializePickList()
Initialize list of actors in pick list.
vtkPropCollection * GetPickList()
Return the list of actors in the PickList.
virtual int Pick3DPoint(double[3], vtkRenderer *)
Perform pick operation with selection point provided.
int Pick(double selectionPt[3], vtkRenderer *ren)
provided.
vtkPropCollection * PickList
a simple class to control print indentation
Definition: vtkIndent.h:108
abstract base class for most VTK objects
Definition: vtkObject.h:162
an ordered list of Props
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:66
abstract specification for renderers
Definition: vtkRenderer.h:172
int vtkTypeBool
Definition: vtkABI.h:64