VTK  9.5.2
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
35
36#ifndef vtkInteractorObserver_h
37#define vtkInteractorObserver_h
38
39#include "vtkObject.h"
40#include "vtkRenderingCoreModule.h" // For export macro
41#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
42
43VTK_ABI_NAMESPACE_BEGIN
45class vtkAssemblyPath;
47class vtkRenderer;
51
52class VTKRENDERINGCORE_EXPORT VTK_MARSHALAUTO vtkInteractorObserver : public vtkObject
53{
54public:
56 void PrintSelf(ostream& os, vtkIndent indent) override;
57
59
70
79 virtual void SetEnabled(int) {}
80 int GetEnabled() { return this->Enabled; }
81 void EnabledOn() { this->SetEnabled(1); }
82 void EnabledOff() { this->SetEnabled(0); }
83 void On() { this->SetEnabled(1); }
84 void Off() { this->SetEnabled(0); }
85
87
97 vtkSetClampMacro(Priority, float, 0.0f, 1.0f);
98 vtkGetMacro(Priority, float);
100
102
106 vtkBooleanMacro(PickingManaged, bool);
107 virtual void SetPickingManaged(bool managed);
108 vtkGetMacro(PickingManaged, bool);
110
112
122
124
131 vtkSetMacro(KeyPressActivationValue, char);
132 vtkGetMacro(KeyPressActivationValue, char);
134
136
144 vtkGetObjectMacro(DefaultRenderer, vtkRenderer);
147
149
160 vtkGetObjectMacro(CurrentRenderer, vtkRenderer);
163
167 virtual void OnChar();
168
170
175 vtkRenderer* ren, double x, double y, double z, double worldPt[4]);
177 vtkRenderer* ren, double x, double y, double z, double displayPt[3]);
179
181
191 void GrabFocus(vtkCommand* mouseEvents, vtkCommand* keypressEvents = nullptr);
194
195protected:
198
200
205 virtual void StartInteraction();
206 virtual void EndInteraction();
208
212 static void ProcessEvents(
213 vtkObject* object, unsigned long event, void* clientdata, void* calldata);
214
216
219 void ComputeDisplayToWorld(double x, double y, double z, double worldPt[4]);
220 void ComputeWorldToDisplay(double x, double y, double z, double displayPt[3]);
222
223 // The state of the widget, whether on or off (observing events or not)
225
226 // Used to process events
228 vtkCallbackCommand* KeyPressCallbackCommand; // listens to key activation
229
230 // Priority at which events are processed
231 float Priority;
232
233 // This variable controls whether the picking is managed by the Picking
234 // Manager process or not. True by default.
236
242 virtual void RegisterPickers();
243
248
254
259 vtkAssemblyPath* GetAssemblyPath(double X, double Y, double Z, vtkAbstractPropPicker* picker);
260
261 // Keypress activation controls
264
265 // Used to associate observers with the interactor
267
268 // Internal ivars for processing events
271
272 unsigned long CharObserverTag;
273 unsigned long DeleteObserverTag;
274
275 // The mediator used to request resources from the interactor.
277 int RequestCursorShape(int requestedShape);
278
279private:
281 void operator=(const vtkInteractorObserver&) = delete;
282};
283
284VTK_ABI_NAMESPACE_END
285#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:29
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...
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:60
int vtkTypeBool
Definition vtkABI.h:64
virtual void SetEnabled(bool)
#define VTK_MARSHALAUTO