VTK  9.1.0
vtkInteractorObserver.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkInteractorObserver.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
64 #ifndef vtkInteractorObserver_h
65 #define vtkInteractorObserver_h
66 
67 #include "vtkObject.h"
68 #include "vtkRenderingCoreModule.h" // For export macro
69 
71 class vtkAssemblyPath;
73 class vtkRenderer;
74 class vtkCallbackCommand;
76 class vtkPickingManager;
77 
78 class VTKRENDERINGCORE_EXPORT vtkInteractorObserver : public vtkObject
79 {
80 public:
82  void PrintSelf(ostream& os, vtkIndent indent) override;
83 
92  virtual void SetEnabled(int) {}
93  int GetEnabled() { return this->Enabled; }
94  void EnabledOn() { this->SetEnabled(1); }
95  void EnabledOff() { this->SetEnabled(0); }
96  void On() { this->SetEnabled(1); }
97  void Off() { this->SetEnabled(0); }
98 
100 
109  vtkGetObjectMacro(Interactor, vtkRenderWindowInteractor);
111 
113 
123  vtkSetClampMacro(Priority, float, 0.0f, 1.0f);
124  vtkGetMacro(Priority, float);
126 
128 
132  vtkBooleanMacro(PickingManaged, bool);
133  virtual void SetPickingManaged(bool managed);
134  vtkGetMacro(PickingManaged, bool);
136 
138 
144  vtkSetMacro(KeyPressActivation, vtkTypeBool);
145  vtkGetMacro(KeyPressActivation, vtkTypeBool);
146  vtkBooleanMacro(KeyPressActivation, vtkTypeBool);
148 
150 
157  vtkSetMacro(KeyPressActivationValue, char);
158  vtkGetMacro(KeyPressActivationValue, char);
160 
162 
170  vtkGetObjectMacro(DefaultRenderer, vtkRenderer);
173 
175 
186  vtkGetObjectMacro(CurrentRenderer, vtkRenderer);
189 
193  virtual void OnChar();
194 
196 
201  vtkRenderer* ren, double x, double y, double z, double worldPt[4]);
203  vtkRenderer* ren, double x, double y, double z, double displayPt[3]);
205 
207 
217  void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr);
218  void ReleaseFocus();
220 
221 protected:
224 
226 
231  virtual void StartInteraction();
232  virtual void EndInteraction();
234 
238  static void ProcessEvents(
239  vtkObject* object, unsigned long event, void* clientdata, void* calldata);
240 
242 
245  void ComputeDisplayToWorld(double x, double y, double z, double worldPt[4]);
246  void ComputeWorldToDisplay(double x, double y, double z, double displayPt[3]);
248 
249  // The state of the widget, whether on or off (observing events or not)
250  int Enabled;
251 
252  // Used to process events
253  vtkCallbackCommand* EventCallbackCommand; // subclasses use one
254  vtkCallbackCommand* KeyPressCallbackCommand; // listens to key activation
255 
256  // Priority at which events are processed
257  float Priority;
258 
259  // This variable controls whether the picking is managed by the Picking
260  // Manager process or not. True by default.
262 
268  virtual void RegisterPickers();
269 
274 
280 
285  vtkAssemblyPath* GetAssemblyPath(double X, double Y, double Z, vtkAbstractPropPicker* picker);
286 
287  // Keypress activation controls
290 
291  // Used to associate observers with the interactor
293 
294  // Internal ivars for processing events
297 
298  unsigned long CharObserverTag;
299  unsigned long DeleteObserverTag;
300 
301  // The mediator used to request resources from the interactor.
303  int RequestCursorShape(int requestedShape);
304 
305 private:
307  void operator=(const vtkInteractorObserver&) = delete;
308 };
309 
310 #endif
abstract API for pickers that can pick an instance of vtkProp
a list of nodes that form an assembly path
supports function callbacks
superclass for callback/observer methods
Definition: vtkCommand.h:394
a simple class to control print indentation
Definition: vtkIndent.h:113
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor
virtual void EndInteraction()
Utility routines used to start and end interaction.
void UnRegisterPickers()
Unregister internal pickers from the Picking Manager.
virtual void StartInteraction()
Utility routines used to start and end interaction.
static void ProcessEvents(vtkObject *object, unsigned long event, void *clientdata, void *calldata)
Handles the char widget activation event.
~vtkInteractorObserver() override
vtkPickingManager * GetPickingManager()
Return the picking manager associated on the context on which the observer currently belong.
vtkCallbackCommand * EventCallbackCommand
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void ComputeWorldToDisplay(double x, double y, double z, double displayPt[3])
Helper method for subclasses.
vtkAssemblyPath * GetAssemblyPath(double X, double Y, double Z, vtkAbstractPropPicker *picker)
Proceed to a pick, whether through the PickingManager if the picking is managed or directly using the...
static void ComputeDisplayToWorld(vtkRenderer *ren, double x, double y, double z, double worldPt[4])
Convenience methods for outside classes.
virtual void RegisterPickers()
Register internal Pickers in the Picking Manager.
vtkCallbackCommand * KeyPressCallbackCommand
void GrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=nullptr)
These methods enable an interactor observer to exclusively grab all events invoked by its associated ...
virtual void OnChar()
Sets up the keypress-i event.
virtual void SetInteractor(vtkRenderWindowInteractor *iren)
This method is used to associate the widget with the render window interactor.
void ComputeDisplayToWorld(double x, double y, double z, double worldPt[4])
Helper method for subclasses.
void ReleaseFocus()
These methods enable an interactor observer to exclusively grab all events invoked by its associated ...
virtual void SetCurrentRenderer(vtkRenderer *)
Set/Get the current renderer.
vtkObserverMediator * ObserverMediator
int RequestCursorShape(int requestedShape)
virtual void SetDefaultRenderer(vtkRenderer *)
Set/Get the default renderer to use when activating the interactor observer.
virtual void SetEnabled(int)
Methods for turning the interactor observer on and off, and determining its state.
static void ComputeWorldToDisplay(vtkRenderer *ren, double x, double y, double z, double displayPt[3])
Convenience methods for outside classes.
virtual void SetPickingManaged(bool managed)
Enable/Disable the use of a manager to process the picking.
vtkRenderWindowInteractor * Interactor
abstract base class for most VTK objects
Definition: vtkObject.h:73
manage contention for cursors and other resources
Class defines API to manage the picking process.
platform-independent render window interaction including picking and frame rate control.
abstract specification for renderers
Definition: vtkRenderer.h:173
int vtkTypeBool
Definition: vtkABI.h:69