VTK
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 =========================================================================*/
45 #ifndef vtkInteractorObserver_h
46 #define vtkInteractorObserver_h
47 
48 #include "vtkRenderingCoreModule.h" // For export macro
49 #include "vtkObject.h"
50 
52 class vtkAssemblyPath;
54 class vtkRenderer;
55 class vtkCallbackCommand;
57 class vtkPickingManager;
58 
59 class VTKRENDERINGCORE_EXPORT vtkInteractorObserver : public vtkObject
60 {
61 public:
63  void PrintSelf(ostream& os, vtkIndent indent);
64 
73  virtual void SetEnabled(int) {}
74  int GetEnabled() {return this->Enabled;}
75  void EnabledOn() {this->SetEnabled(1);}
76  void EnabledOff() {this->SetEnabled(0);}
77  void On() {this->SetEnabled(1);}
78  void Off() {this->SetEnabled(0);}
79 
81 
89  virtual void SetInteractor(vtkRenderWindowInteractor* iren);
90  vtkGetObjectMacro(Interactor, vtkRenderWindowInteractor);
92 
94 
104  vtkSetClampMacro(Priority,float,0.0f,1.0f);
105  vtkGetMacro(Priority,float);
107 
109 
113  vtkBooleanMacro(PickingManaged, bool);
114  vtkSetMacro(PickingManaged, bool);
115  vtkGetMacro(PickingManaged, bool);
117 
119 
125  vtkSetMacro(KeyPressActivation,int);
126  vtkGetMacro(KeyPressActivation,int);
127  vtkBooleanMacro(KeyPressActivation,int);
129 
131 
138  vtkSetMacro(KeyPressActivationValue,char);
139  vtkGetMacro(KeyPressActivationValue,char);
141 
143 
151  vtkGetObjectMacro(DefaultRenderer,vtkRenderer);
152  virtual void SetDefaultRenderer(vtkRenderer*);
154 
156 
167  vtkGetObjectMacro(CurrentRenderer,vtkRenderer);
168  virtual void SetCurrentRenderer(vtkRenderer*);
170 
174  virtual void OnChar();
175 
177 
181  static void ComputeDisplayToWorld(vtkRenderer *ren, double x, double y,
182  double z, double worldPt[4]);
183  static void ComputeWorldToDisplay(vtkRenderer *ren, double x, double y,
184  double z, double displayPt[3]);
186 
188 
198  void GrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL);
199  void ReleaseFocus();
201 
202 protected:
205 
207 
212  virtual void StartInteraction();
213  virtual void EndInteraction();
215 
219  static void ProcessEvents(vtkObject* object,
220  unsigned long event,
221  void* clientdata,
222  void* calldata);
223 
225 
228  void ComputeDisplayToWorld(double x, double y, double z,
229  double worldPt[4]);
230  void ComputeWorldToDisplay(double x, double y, double z,
231  double displayPt[3]);
233 
234  // The state of the widget, whether on or off (observing events or not)
235  int Enabled;
236 
237  // Used to process events
239  vtkCallbackCommand* KeyPressCallbackCommand; //listens to key activation
240 
241  // Priority at which events are processed
242  float Priority;
243 
244  // This variable controls whether the picking is managed by the Picking
245  // Manager process or not. True by default.
247 
253  virtual void RegisterPickers();
254 
258  void UnRegisterPickers();
259 
264  virtual void PickersModified();
265 
270  vtkPickingManager* GetPickingManager();
271 
276  vtkAssemblyPath* GetAssemblyPath(double X, double Y, double Z,
277  vtkAbstractPropPicker* picker);
278 
279  // Keypress activation controls
282 
283  // Used to associate observers with the interactor
285 
286  // Internal ivars for processing events
289 
290  unsigned long CharObserverTag;
291  unsigned long DeleteObserverTag;
292 
293  // The mediator used to request resources from the interactor.
295  int RequestCursorShape(int requestedShape);
296 
297 private:
298  vtkInteractorObserver(const vtkInteractorObserver&) VTK_DELETE_FUNCTION;
299  void operator=(const vtkInteractorObserver&) VTK_DELETE_FUNCTION;
300 
301 };
302 
303 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:59
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.
vtkObserverMediator * ObserverMediator
virtual void SetEnabled(int)
Methods for turning the interactor observer on and off, and determining its state.
abstract specification for renderers
Definition: vtkRenderer.h:63
an abstract superclass for classes observing events invoked by vtkRenderWindowInteractor ...
platform-independent render window interaction including picking and frame rate control.
superclass for callback/observer methods
Definition: vtkCommand.h:341
supports function callbacks
a list of nodes that form an assembly path
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkCallbackCommand * KeyPressCallbackCommand
vtkSetMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
abstract API for pickers that can pick an instance of vtkProp
vtkBooleanMacro(IgnoreDriverBugs, bool)
When set known driver bugs are ignored during driver feature detection.
vtkRenderWindowInteractor * Interactor
manage contention for cursors and other resources
vtkCallbackCommand * EventCallbackCommand