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 =========================================================================*/
36 #ifndef vtkXRenderWindowInteractor_h
37 #define vtkXRenderWindowInteractor_h
38 
39 //===========================================================
40 // now we define the C++ class
41 
42 #include "vtkRenderingOpenGL2Module.h" // For export macro
44 #include <X11/StringDefs.h> // Needed for X types in the public interface
45 #include <X11/Intrinsic.h> // Needed for X types in the public interface
46 
47 class vtkCallbackCommand;
48 class vtkXRenderWindowInteractorInternals;
49 
50 // Forward declare internal friend functions.
51 void VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractorCallback(Widget,XtPointer, XEvent *,Boolean *);
52 void VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
53 
54 class VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractor : public vtkRenderWindowInteractor
55 {
56 public:
59  void PrintSelf(ostream& os, vtkIndent indent);
60 
66  virtual void Initialize();
67 
71  void TerminateApp();
72 
74 
80  vtkGetMacro(BreakLoopFlag, int);
81  void SetBreakLoopFlag(int);
85 
87 
91  virtual void Initialize(XtAppContext app);
92  vtkGetMacro( App, XtAppContext );
94 
96 
105  virtual void Enable();
106  virtual void Disable();
108 
113  virtual void UpdateSize(int,int);
114 
116 
132  virtual void SetWidget(Widget);
133  Widget GetWidget() {return this->Top;};
135 
137 
166  virtual void SetTopLevelShell(Widget);
167  Widget GetTopLevelShell() {return this->TopLevelShell;};
169 
173  virtual void GetMousePosition(int *x, int *y);
174 
176 
179  friend void vtkXRenderWindowInteractorCallback(Widget,XtPointer,
180  XEvent *,Boolean *);
181  friend void vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
183 
184 protected:
187 
188  //Using static here to avoid detroying context when many apps are open:
189  static XtAppContext App;
190  static int NumAppInitialized;
191 
192  Display *DisplayId;
193  Window WindowId;
194  Atom KillAtom;
195  Widget Top;
196  int OwnTop;
197  int OwnApp;
198  int PositionBeforeStereo[2];
199  Widget TopLevelShell;
200  vtkXRenderWindowInteractorInternals* Internal;
201 
203 
207  virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
208  virtual int InternalDestroyTimer(int platformTimerId);
210 
211  XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval,
212  XtTimerCallbackProc proc, XtPointer client_data) ;
213  void Timer(XtPointer client_data, XtIntervalId *id);
214  void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd);
215 
216  static int BreakLoopFlag;
217 
223  virtual void StartEventLoop();
224 
225 private:
226  vtkXRenderWindowInteractor(const vtkXRenderWindowInteractor&) VTK_DELETE_FUNCTION;
227  void operator=(const vtkXRenderWindowInteractor&) VTK_DELETE_FUNCTION;
228 };
229 
230 #endif
vtkXRenderWindowInteractor::AddTimeOut
XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval, XtTimerCallbackProc proc, XtPointer client_data)
vtkXRenderWindowInteractor::GetTopLevelShell
Widget GetTopLevelShell()
Definition: vtkXRenderWindowInteractor.h:167
vtkXRenderWindowInteractor::Enable
virtual void Enable()
Enable/Disable interactions.
vtkXRenderWindowInteractorTimer
void VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractorTimer(XtPointer, XtIntervalId *)
vtkXRenderWindowInteractor::BreakLoopFlagOn
void BreakLoopFlagOn()
vtkXRenderWindowInteractor::StartEventLoop
virtual void StartEventLoop()
This will start up the X event loop and never return.
vtkXRenderWindowInteractor::New
static vtkXRenderWindowInteractor * New()
vtkXRenderWindowInteractor::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
vtkXRenderWindowInteractor
an X event driven interface for a RenderWindow
Definition: vtkXRenderWindowInteractor.h:52
vtkXRenderWindowInteractor::vtkXRenderWindowInteractor
vtkXRenderWindowInteractor()
vtkXRenderWindowInteractor::TerminateApp
void TerminateApp()
Break the event loop on 'q','e' keypress.
vtkXRenderWindowInteractor::UpdateSize
virtual void UpdateSize(int, int)
Update the Size data member and set the associated RenderWindow's size.
vtkXRenderWindowInteractor::BreakLoopFlagOff
void BreakLoopFlagOff()
vtkXRenderWindowInteractor::SetTopLevelShell
virtual void SetTopLevelShell(Widget)
This method will store the top level shell widget for the interactor.
vtkXRenderWindowInteractor::GetMousePosition
virtual void GetMousePosition(int *x, int *y)
Re-defines virtual function to get mouse position by querying X-server.
vtkXRenderWindowInteractor::Disable
virtual void Disable()
vtkXRenderWindowInteractor::Timer
void Timer(XtPointer client_data, XtIntervalId *id)
vtkXRenderWindowInteractor::Initialize
virtual void Initialize()
Initializes the event handlers without an XtAppContext.
vtkXRenderWindowInteractor::InternalCreateTimer
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
X-specific internal timer methods.
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:40
vtkXRenderWindowInteractor::SetWidget
virtual void SetWidget(Widget)
Specify the Xt widget to use for interaction.
vtkXRenderWindowInteractor::~vtkXRenderWindowInteractor
~vtkXRenderWindowInteractor()
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:79
vtkXRenderWindowInteractor::GetWidget
Widget GetWidget()
Definition: vtkXRenderWindowInteractor.h:133
vtkXRenderWindowInteractor::vtkXRenderWindowInteractorTimer
friend void vtkXRenderWindowInteractorTimer(XtPointer, XtIntervalId *)
vtkXRenderWindowInteractor::InternalDestroyTimer
virtual int InternalDestroyTimer(int platformTimerId)
vtkXRenderWindowInteractor::vtkXRenderWindowInteractorCallback
friend void vtkXRenderWindowInteractorCallback(Widget, XtPointer, XEvent *, Boolean *)
Functions that are used internally.
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:51
vtkRenderWindowInteractor.h
vtkXRenderWindowInteractor::Callback
void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd)
vtkXRenderWindowInteractor::Initialize
virtual void Initialize(XtAppContext app)
Initializes the event handlers using an XtAppContext that you have provided.
vtkXRenderWindowInteractorCallback
void VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractorCallback(Widget, XtPointer, XEvent *, Boolean *)
vtkXRenderWindowInteractor::SetBreakLoopFlag
void SetBreakLoopFlag(int)