VTK  9.3.0
vtkInteractorObserver.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
45#ifndef vtkInteractorObserver_h
46#define vtkInteractorObserver_h
47
48#include "vtkObject.h"
49#include "vtkRenderingCoreModule.h" // For export macro
50
51VTK_ABI_NAMESPACE_BEGIN
53class vtkAssemblyPath;
55class vtkRenderer;
59
60class VTKRENDERINGCORE_EXPORT vtkInteractorObserver : public vtkObject
61{
62public:
64 void PrintSelf(ostream& os, vtkIndent indent) override;
65
74 virtual void SetEnabled(int) {}
75 int GetEnabled() { return this->Enabled; }
76 void EnabledOn() { this->SetEnabled(1); }
77 void EnabledOff() { this->SetEnabled(0); }
78 void On() { this->SetEnabled(1); }
79 void Off() { this->SetEnabled(0); }
80
82
91 vtkGetObjectMacro(Interactor, vtkRenderWindowInteractor);
93
95
105 vtkSetClampMacro(Priority, float, 0.0f, 1.0f);
106 vtkGetMacro(Priority, float);
108
110
114 vtkBooleanMacro(PickingManaged, bool);
115 virtual void SetPickingManaged(bool managed);
116 vtkGetMacro(PickingManaged, bool);
118
120
126 vtkSetMacro(KeyPressActivation, vtkTypeBool);
127 vtkGetMacro(KeyPressActivation, vtkTypeBool);
128 vtkBooleanMacro(KeyPressActivation, vtkTypeBool);
130
132
139 vtkSetMacro(KeyPressActivationValue, char);
140 vtkGetMacro(KeyPressActivationValue, char);
142
144
152 vtkGetObjectMacro(DefaultRenderer, vtkRenderer);
155
157
168 vtkGetObjectMacro(CurrentRenderer, vtkRenderer);
171
175 virtual void OnChar();
176
178
183 vtkRenderer* ren, double x, double y, double z, double worldPt[4]);
185 vtkRenderer* ren, double x, double y, double z, double displayPt[3]);
187
189
199 void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr);
202
203protected:
206
208
213 virtual void StartInteraction();
214 virtual void EndInteraction();
216
220 static void ProcessEvents(
221 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
222
224
227 void ComputeDisplayToWorld(double x, double y, double z, double worldPt[4]);
228 void ComputeWorldToDisplay(double x, double y, double z, double displayPt[3]);
230
231 // The state of the widget, whether on or off (observing events or not)
233
234 // Used to process events
236 vtkCallbackCommand* KeyPressCallbackCommand; // listens to key activation
237
238 // Priority at which events are processed
239 float Priority;
240
241 // This variable controls whether the picking is managed by the Picking
242 // Manager process or not. True by default.
244
250 virtual void RegisterPickers();
251
256
262
267 vtkAssemblyPath* GetAssemblyPath(double X, double Y, double Z, vtkAbstractPropPicker* picker);
268
269 // Keypress activation controls
272
273 // Used to associate observers with the interactor
275
276 // Internal ivars for processing events
279
280 unsigned long CharObserverTag;
281 unsigned long DeleteObserverTag;
282
283 // The mediator used to request resources from the interactor.
285 int RequestCursorShape(int requestedShape);
286
287private:
289 void operator=(const vtkInteractorObserver&) = delete;
290};
291
292VTK_ABI_NAMESPACE_END
293#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:384
a simple class to control print indentation
Definition vtkIndent.h:38
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
vtkCallbackCommand * EventCallbackCommand
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkPickingManager * GetPickingManager()
Return the picking manager associated on the context on which the observer currently belong.
void ComputeWorldToDisplay(double x, double y, double z, double displayPt[3])
Helper method for subclasses.
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
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...
abstract base class for most VTK objects
Definition vtkObject.h:58
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:68
int vtkTypeBool
Definition vtkABI.h:64