VTK  9.3.1
vtkPickingManager.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-FileCopyrightText: Copyright (c) Kitware Inc.
3 // SPDX-License-Identifier: BSD-3-Clause AND Apache-2.0
41 #ifndef vtkPickingManager_h
42 #define vtkPickingManager_h
43 
44 #include "vtkObject.h"
45 #include "vtkRenderingCoreModule.h" // For export macro
46 
47 VTK_ABI_NAMESPACE_BEGIN
48 class vtkAbstractPicker;
50 class vtkAssemblyPath;
51 class vtkRenderer;
53 
54 class VTKRENDERINGCORE_EXPORT vtkPickingManager : public vtkObject
55 {
56 public:
57  static vtkPickingManager* New();
58  vtkTypeMacro(vtkPickingManager, vtkObject);
59  void PrintSelf(ostream& os, vtkIndent indent) override;
60 
62 
67  vtkBooleanMacro(Enabled, bool);
68  vtkSetMacro(Enabled, bool);
69  vtkGetMacro(Enabled, bool);
71 
73 
82  void SetOptimizeOnInteractorEvents(bool optimize);
83  vtkGetMacro(OptimizeOnInteractorEvents, bool);
85 
87 
90  void SetInteractor(vtkRenderWindowInteractor* iren);
91  vtkGetMacro(Interactor, vtkRenderWindowInteractor*);
93 
101  void AddPicker(vtkAbstractPicker* picker, vtkObject* object = nullptr);
102 
107  void RemovePicker(vtkAbstractPicker* picker, vtkObject* object = nullptr);
108 
114  void RemoveObject(vtkObject* object);
115 
122  bool Pick(vtkAbstractPicker* picker, vtkObject* object);
123 
129  bool Pick(vtkObject* object);
130 
136  bool Pick(vtkAbstractPicker* picker);
137 
145  vtkAssemblyPath* GetAssemblyPath(double X, double Y, double Z, vtkAbstractPropPicker* picker,
146  vtkRenderer* renderer, vtkObject* obj);
147 
153  int GetNumberOfPickers();
154 
159  int GetNumberOfObjectsLinked(vtkAbstractPicker* picker);
160 
161 protected:
163  ~vtkPickingManager() override;
164 
165  // Used to associate the manager with the interactor
167  bool Enabled;
169 
170 private:
171  vtkPickingManager(const vtkPickingManager&) = delete;
172  void operator=(const vtkPickingManager&) = delete;
173 
174  class vtkInternal;
175  vtkInternal* Internal;
176 };
177 
178 VTK_ABI_NAMESPACE_END
179 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:51
Class defines API to manage the picking process.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
abstract specification for renderers
Definition: vtkRenderer.h:61
platform-independent render window interaction including picking and frame rate control.
a list of nodes that form an assembly path
a simple class to control print indentation
Definition: vtkIndent.h:28
vtkRenderWindowInteractor * Interactor
abstract API for pickers that can pick an instance of vtkProp
define API for picking subclasses
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...