VTK  9.0.1
vtkXRenderWindowInteractor.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkXRenderWindowInteractor.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 =========================================================================*/
29 #ifndef vtkXRenderWindowInteractor_h
30 #define vtkXRenderWindowInteractor_h
31 
32 //===========================================================
33 // now we define the C++ class
34 
36 #include "vtkRenderingUIModule.h" // For export macro
37 #include <X11/Xlib.h> // Needed for X types in the public interface
38 
39 class vtkCallbackCommand;
40 class vtkXRenderWindowInteractorInternals;
41 
42 class VTKRENDERINGUI_EXPORT vtkXRenderWindowInteractor : public vtkRenderWindowInteractor
43 {
44 public:
47  void PrintSelf(ostream& os, vtkIndent indent) override;
48 
54  void Initialize() override;
55 
59  void TerminateApp() override;
60 
66  void ProcessEvents() override;
67 
69 
75  vtkGetMacro(BreakLoopFlag, int);
76  void SetBreakLoopFlag(int);
80 
82 
91  void Enable() override;
92  void Disable() override;
94 
99  void UpdateSize(int, int) override;
100 
104  void GetMousePosition(int* x, int* y) override;
105 
106  void DispatchEvent(XEvent*);
107 
108 protected:
111 
116  void UpdateSizeNoXResize(int, int);
117 
118  // Using static here to avoid destroying context when many apps are open:
119  static int NumAppInitialized;
120 
121  Display* DisplayId;
122  Window WindowId;
123  Atom KillAtom;
124  int PositionBeforeStereo[2];
125  vtkXRenderWindowInteractorInternals* Internal;
126 
127  // Drag and drop related
128  Window XdndSource;
134 
136 
140  int InternalCreateTimer(int timerId, int timerType, unsigned long duration) override;
141  int InternalDestroyTimer(int platformTimerId) override;
143 
144  void FireTimers();
145 
146  static int BreakLoopFlag;
147 
153  void StartEventLoop() override;
154 
155 private:
157  void operator=(const vtkXRenderWindowInteractor&) = delete;
158 };
159 
160 #endif
vtkXRenderWindowInteractor::StartEventLoop
void StartEventLoop() override
This will start up the X event loop and never return.
vtkXRenderWindowInteractor::ProcessEvents
void ProcessEvents() override
Run the event loop and return.
vtkXRenderWindowInteractor::XdndFinishedAtom
Atom XdndFinishedAtom
Definition: vtkXRenderWindowInteractor.h:133
vtkXRenderWindowInteractor::FireTimers
void FireTimers()
vtkXRenderWindowInteractor::InternalDestroyTimer
int InternalDestroyTimer(int platformTimerId) override
vtkXRenderWindowInteractor::InternalCreateTimer
int InternalCreateTimer(int timerId, int timerType, unsigned long duration) override
X-specific internal timer methods.
vtkXRenderWindowInteractor::BreakLoopFlagOn
void BreakLoopFlagOn()
vtkXRenderWindowInteractor::BreakLoopFlag
static int BreakLoopFlag
Definition: vtkXRenderWindowInteractor.h:146
vtkXRenderWindowInteractor::New
static vtkXRenderWindowInteractor * New()
vtkXRenderWindowInteractor::~vtkXRenderWindowInteractor
~vtkXRenderWindowInteractor() override
vtkXRenderWindowInteractor::XdndActionCopyAtom
Atom XdndActionCopyAtom
Definition: vtkXRenderWindowInteractor.h:131
vtkXRenderWindowInteractor::XdndStatusAtom
Atom XdndStatusAtom
Definition: vtkXRenderWindowInteractor.h:132
vtkXRenderWindowInteractor
an X event driven interface for a RenderWindow
Definition: vtkXRenderWindowInteractor.h:43
vtkXRenderWindowInteractor::vtkXRenderWindowInteractor
vtkXRenderWindowInteractor()
vtkXRenderWindowInteractor::KillAtom
Atom KillAtom
Definition: vtkXRenderWindowInteractor.h:123
vtkXRenderWindowInteractor::BreakLoopFlagOff
void BreakLoopFlagOff()
vtkXRenderWindowInteractor::UpdateSize
void UpdateSize(int, int) override
Update the Size data member and set the associated RenderWindow's size.
vtkXRenderWindowInteractor::XdndSource
Window XdndSource
Definition: vtkXRenderWindowInteractor.h:128
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:34
vtkXRenderWindowInteractor::UpdateSizeNoXResize
void UpdateSizeNoXResize(int, int)
Update the Size data member and set the associated RenderWindow's size but do not resize the XWindow.
vtkXRenderWindowInteractor::DisplayId
Display * DisplayId
Definition: vtkXRenderWindowInteractor.h:121
vtkXRenderWindowInteractor::DispatchEvent
void DispatchEvent(XEvent *)
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:74
vtkXRenderWindowInteractor::Disable
void Disable() override
vtkXRenderWindowInteractor::Initialize
void Initialize() override
Initializes the event handlers without an XtAppContext.
vtkXRenderWindowInteractor::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkXRenderWindowInteractor::Enable
void Enable() override
Enable/Disable interactions.
vtkXRenderWindowInteractor::Internal
vtkXRenderWindowInteractorInternals * Internal
Definition: vtkXRenderWindowInteractor.h:125
vtkXRenderWindowInteractor::GetMousePosition
void GetMousePosition(int *x, int *y) override
Re-defines virtual function to get mouse position by querying X-server.
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:45
vtkXRenderWindowInteractor::XdndDropAtom
Atom XdndDropAtom
Definition: vtkXRenderWindowInteractor.h:130
vtkRenderWindowInteractor.h
vtkXRenderWindowInteractor::NumAppInitialized
static int NumAppInitialized
Definition: vtkXRenderWindowInteractor.h:119
vtkXRenderWindowInteractor::XdndPositionAtom
Atom XdndPositionAtom
Definition: vtkXRenderWindowInteractor.h:129
vtkXRenderWindowInteractor::TerminateApp
void TerminateApp() override
Break the event loop on 'q','e' keypress.
vtkXRenderWindowInteractor::SetBreakLoopFlag
void SetBreakLoopFlag(int)
vtkXRenderWindowInteractor::WindowId
Window WindowId
Definition: vtkXRenderWindowInteractor.h:122