VTK
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 =========================================================================*/
33 #ifndef vtkXRenderWindowInteractor_h
34 #define vtkXRenderWindowInteractor_h
35 
36 //===========================================================
37 // now we define the C++ class
38 
39 #include "vtkRenderingOpenGL2Module.h" // For export macro
41 #include <X11/StringDefs.h> // Needed for X types in the public interface
42 #include <X11/Intrinsic.h> // Needed for X types in the public interface
43 
44 class vtkCallbackCommand;
45 class vtkXRenderWindowInteractorInternals;
46 
47 // Forward declare internal friend functions.
48 void VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractorCallback(Widget,XtPointer, XEvent *,Boolean *);
49 void VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
50 
51 class VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractor : public vtkRenderWindowInteractor
52 {
53 public:
56  void PrintSelf(ostream& os, vtkIndent indent) override;
57 
63  void Initialize() override;
64 
68  void TerminateApp() override;
69 
71 
77  vtkGetMacro(BreakLoopFlag, int);
78  void SetBreakLoopFlag(int);
82 
84 
88  virtual void Initialize(XtAppContext app);
89  vtkGetMacro( App, XtAppContext );
91 
93 
102  void Enable() override;
103  void Disable() override;
105 
110  void UpdateSize(int,int) override;
111 
113 
129  virtual void SetWidget(Widget);
130  Widget GetWidget() {return this->Top;};
132 
134 
163  virtual void SetTopLevelShell(Widget);
164  Widget GetTopLevelShell() {return this->TopLevelShell;};
166 
170  void GetMousePosition(int *x, int *y) override;
171 
173 
176  friend void vtkXRenderWindowInteractorCallback(Widget,XtPointer,
177  XEvent *,Boolean *);
178  friend void vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
180 
181 protected:
184 
185  //Using static here to avoid destroying context when many apps are open:
186  static XtAppContext App;
187  static int NumAppInitialized;
188 
189  Display *DisplayId;
190  Window WindowId;
191  Atom KillAtom;
192  Widget Top;
193  int OwnTop;
194  int OwnApp;
195  int PositionBeforeStereo[2];
197  vtkXRenderWindowInteractorInternals* Internal;
198 
200 
204  int InternalCreateTimer(int timerId, int timerType, unsigned long duration) override;
205  int InternalDestroyTimer(int platformTimerId) override;
207 
208  XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval,
209  XtTimerCallbackProc proc, XtPointer client_data) ;
210  void Timer(XtPointer client_data, XtIntervalId *id);
211  void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd);
212 
213  static int BreakLoopFlag;
214 
220  void StartEventLoop() override;
221 
222 private:
224  void operator=(const vtkXRenderWindowInteractor&) = delete;
225 };
226 
227 #endif
vtkXRenderWindowInteractor::AddTimeOut
XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval, XtTimerCallbackProc proc, XtPointer client_data)
vtkXRenderWindowInteractor::StartEventLoop
void StartEventLoop() override
This will start up the X event loop and never return.
vtkXRenderWindowInteractor::GetTopLevelShell
Widget GetTopLevelShell()
Definition: vtkXRenderWindowInteractor.h:164
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:213
vtkXRenderWindowInteractor::New
static vtkXRenderWindowInteractor * New()
vtkXRenderWindowInteractor::~vtkXRenderWindowInteractor
~vtkXRenderWindowInteractor() override
vtkXRenderWindowInteractor::OwnApp
int OwnApp
Definition: vtkXRenderWindowInteractor.h:194
vtkXRenderWindowInteractor
an X event driven interface for a RenderWindow
Definition: vtkXRenderWindowInteractor.h:52
vtkXRenderWindowInteractor::vtkXRenderWindowInteractor
vtkXRenderWindowInteractor()
vtkXRenderWindowInteractor::KillAtom
Atom KillAtom
Definition: vtkXRenderWindowInteractor.h:191
vtkXRenderWindowInteractor::BreakLoopFlagOff
void BreakLoopFlagOff()
vtkXRenderWindowInteractor::SetTopLevelShell
virtual void SetTopLevelShell(Widget)
This method will store the top level shell widget for the interactor.
vtkXRenderWindowInteractor::OwnTop
int OwnTop
Definition: vtkXRenderWindowInteractor.h:193
vtkXRenderWindowInteractor::UpdateSize
void UpdateSize(int, int) override
Update the Size data member and set the associated RenderWindow's size.
vtkXRenderWindowInteractor::Timer
void Timer(XtPointer client_data, XtIntervalId *id)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkXRenderWindowInteractor::DisplayId
Display * DisplayId
Definition: vtkXRenderWindowInteractor.h:189
vtkXRenderWindowInteractor::TopLevelShell
Widget TopLevelShell
Definition: vtkXRenderWindowInteractor.h:196
vtkXRenderWindowInteractor::SetWidget
virtual void SetWidget(Widget)
Specify the Xt widget to use for interaction.
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:79
vtkXRenderWindowInteractor::Disable
void Disable() override
vtkXRenderWindowInteractor::GetWidget
Widget GetWidget()
Definition: vtkXRenderWindowInteractor.h:130
vtkXRenderWindowInteractor::vtkXRenderWindowInteractorTimer
friend void vtkXRenderWindowInteractorTimer(XtPointer, XtIntervalId *)
vtkXRenderWindowInteractor::Initialize
void Initialize() override
Initializes the event handlers without an XtAppContext.
vtkXRenderWindowInteractor::Top
Widget Top
Definition: vtkXRenderWindowInteractor.h:192
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:197
vtkXRenderWindowInteractor::vtkXRenderWindowInteractorCallback
friend void vtkXRenderWindowInteractorCallback(Widget, XtPointer, XEvent *, Boolean *)
Functions that are used internally.
vtkXRenderWindowInteractorTimer
void VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractorTimer(XtPointer, XtIntervalId *)
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:51
vtkRenderWindowInteractor.h
vtkXRenderWindowInteractor::Callback
void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd)
vtkXRenderWindowInteractor::NumAppInitialized
static int NumAppInitialized
Definition: vtkXRenderWindowInteractor.h:187
vtkXRenderWindowInteractor::Initialize
virtual void Initialize(XtAppContext app)
Initializes the event handlers using an XtAppContext that you have provided.
vtkXRenderWindowInteractor::TerminateApp
void TerminateApp() override
Break the event loop on 'q','e' keypress.
vtkXRenderWindowInteractor::SetBreakLoopFlag
void SetBreakLoopFlag(int)
vtkXRenderWindowInteractorCallback
void VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractorCallback(Widget, XtPointer, XEvent *, Boolean *)
vtkXRenderWindowInteractor::App
static XtAppContext App
Definition: vtkXRenderWindowInteractor.h:186
vtkXRenderWindowInteractor::WindowId
Window WindowId
Definition: vtkXRenderWindowInteractor.h:190