VTK  9.7.1
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
46 #ifndef vtkAbstractPicker_h
47 #define vtkAbstractPicker_h
48 
49 #include "vtkObject.h"
50 #include "vtkRenderingCoreModule.h" // For export macro
51 #include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
52 
53 VTK_ABI_NAMESPACE_BEGIN
54 class vtkRenderer;
55 class vtkProp;
56 class vtkPropCollection;
57 
58 class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkAbstractPicker : public vtkObject
59 {
60 public:
61  vtkTypeMacro(vtkAbstractPicker, vtkObject);
62  void PrintSelf(ostream& os, vtkIndent indent) override;
63 
65 
68  vtkGetObjectMacro(Renderer, vtkRenderer);
70 
72 
76  vtkGetVectorMacro(SelectionPoint, double, 3);
78 
80 
83  vtkGetVectorMacro(PickPosition, double, 3);
85 
92  virtual int Pick(
93  double selectionX, double selectionY, double selectionZ, vtkRenderer* renderer) = 0;
94 
100  int Pick(VTK_FUTURE_CONST double selectionPt[3], vtkRenderer* ren)
101  {
102  return this->Pick(selectionPt[0], selectionPt[1], selectionPt[2], ren);
103  }
104 
110  virtual int Pick3DPoint(VTK_FUTURE_CONST double /* selectionPt */[3], vtkRenderer* /*ren*/)
111  {
112  vtkErrorMacro("Pick3DPoint called without implementation");
113  return 0;
114  }
115 
121  virtual int Pick3DRay(VTK_FUTURE_CONST double /* selectionPt */[3],
122  VTK_FUTURE_CONST double /* orient */[4], vtkRenderer* /*ren*/)
123  {
124  vtkErrorMacro("Pick3DRay called without implementation");
125  return 0;
126  }
127 
129 
134  vtkSetMacro(PickFromList, vtkTypeBool);
135  vtkGetMacro(PickFromList, vtkTypeBool);
136  vtkBooleanMacro(PickFromList, vtkTypeBool);
138 
142  void InitializePickList();
143 
147  void AddPickList(vtkProp*);
148 
152  void DeletePickList(vtkProp*);
153 
157  vtkPropCollection* GetPickList() { return this->PickList; }
158 
159 protected:
161  ~vtkAbstractPicker() override;
162 
163  virtual void Initialize();
164 
165  vtkRenderer* Renderer; // pick occurred in this renderer's viewport
166  double SelectionPoint[3]; // selection point in window (pixel) coordinates
167  double PickPosition[3]; // selection point in world coordinates
168 
169  // use the following to control picking from a list
172 
173 private:
174  vtkAbstractPicker(const vtkAbstractPicker&) = delete;
175  void operator=(const vtkAbstractPicker&) = delete;
176 };
177 
178 VTK_ABI_NAMESPACE_END
179 #endif
abstract superclass for all actors, volumes and annotations
Definition: vtkProp.h:49
abstract base class for most VTK objects
Definition: vtkObject.h:52
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
int Pick(VTK_FUTURE_CONST double selectionPt[3], vtkRenderer *ren)
provided.
vtkPropCollection * GetPickList()
Return the list of actors in the PickList.
vtkRenderer * Renderer
abstract specification for renderers
Definition: vtkRenderer.h:63
virtual int Pick3DRay(VTK_FUTURE_CONST double[3], VTK_FUTURE_CONST double[4], vtkRenderer *)
Perform pick operation with selection point and orientation provided.
an ordered list of Props
int vtkTypeBool
Definition: vtkABI.h:64
a simple class to control print indentation
Definition: vtkIndent.h:28
virtual int Pick3DPoint(VTK_FUTURE_CONST double[3], vtkRenderer *)
Perform pick operation with selection point provided.
define API for picking subclasses
vtkPropCollection * PickList
#define VTK_MARSHALAUTO
vtkTypeBool PickFromList