VTK  9.3.20240424
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
81VTK_ABI_NAMESPACE_BEGIN
82class vtkRenderer;
83class vtkProp;
85
86class VTKRENDERINGCORE_EXPORT vtkAbstractPicker : public vtkObject
87{
88public:
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
186protected:
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
200private:
201 vtkAbstractPicker(const vtkAbstractPicker&) = delete;
202 void operator=(const vtkAbstractPicker&) = delete;
203};
204
205VTK_ABI_NAMESPACE_END
206#endif
define API for picking subclasses
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual int Pick(double selectionX, double selectionY, double selectionZ, vtkRenderer *renderer)=0
Perform pick operation with selection point provided.
vtkPropCollection * GetPickList()
Return the list of actors in the PickList.
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.
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
int vtkTypeBool
Definition vtkABI.h:64