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 =========================================================================*/
35 #ifndef vtkXRenderWindowInteractor_h
36 #define vtkXRenderWindowInteractor_h
37 
38 //===========================================================
39 // now we define the C++ class
40 
41 #include "vtkRenderingOpenGL2Module.h" // For export macro
43 #include <X11/StringDefs.h> // Needed for X types in the public interface
44 #include <X11/Intrinsic.h> // Needed for X types in the public interface
45 
46 class vtkCallbackCommand;
47 class vtkXRenderWindowInteractorInternals;
48 
49 // Forward declare internal friend functions.
50 void VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractorCallback(Widget,XtPointer, XEvent *,Boolean *);
51 void VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
52 
53 class VTKRENDERINGOPENGL2_EXPORT vtkXRenderWindowInteractor : public vtkRenderWindowInteractor
54 {
55 public:
58  void PrintSelf(ostream& os, vtkIndent indent);
59 
63  virtual void Initialize();
64 
66  void TerminateApp();
67 
69 
72  vtkGetMacro(BreakLoopFlag, int);
73  void SetBreakLoopFlag(int);
77 
79 
81  virtual void Initialize(XtAppContext app);
82  vtkGetMacro( App, XtAppContext );
84 
86 
93  virtual void Enable();
94  virtual void Disable();
96 
99  virtual void UpdateSize(int,int);
100 
102 
116  virtual void SetWidget(Widget);
117  Widget GetWidget() {return this->Top;};
119 
121 
145  virtual void SetTopLevelShell(Widget);
146  Widget GetTopLevelShell() {return this->TopLevelShell;};
148 
151  virtual void GetMousePosition(int *x, int *y);
152 
154 
155  friend void vtkXRenderWindowInteractorCallback(Widget,XtPointer,
156  XEvent *,Boolean *);
157  friend void vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
159 
160 protected:
163 
164  //Using static here to avoid detroying context when many apps are open:
165  static XtAppContext App;
166  static int NumAppInitialized;
167 
168  Display *DisplayId;
169  Window WindowId;
170  Atom KillAtom;
171  Widget Top;
172  int OwnTop;
173  int OwnApp;
174  int PositionBeforeStereo[2];
175  Widget TopLevelShell;
176  int TimerId;
177  vtkXRenderWindowInteractorInternals* Internal;
178 
180 
182  virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
183  virtual int InternalDestroyTimer(int platformTimerId);
185 
186  XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval,
187  XtTimerCallbackProc proc, XtPointer client_data) ;
188  void Timer(XtPointer client_data, XtIntervalId *id);
189  void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd);
190 
191  static int BreakLoopFlag;
192 
196  virtual void StartEventLoop();
197 
198 private:
199  vtkXRenderWindowInteractor(const vtkXRenderWindowInteractor&); // Not implemented.
200  void operator=(const vtkXRenderWindowInteractor&); // Not implemented.
201 };
202 
203 #endif
vtkXRenderWindowInteractor::AddTimeOut
XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval, XtTimerCallbackProc proc, XtPointer client_data)
vtkXRenderWindowInteractor::GetTopLevelShell
Widget GetTopLevelShell()
Definition: vtkXRenderWindowInteractor.h:146
vtkXRenderWindowInteractor::Enable
virtual void Enable()
vtkXRenderWindowInteractorTimer
void VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractorTimer(XtPointer, XtIntervalId *)
vtkXRenderWindowInteractor::BreakLoopFlagOn
void BreakLoopFlagOn()
vtkXRenderWindowInteractor::StartEventLoop
virtual void StartEventLoop()
vtkTypeMacro
#define vtkTypeMacro(thisClass, superclass)
Definition: vtkSetGet.h:642
vtkXRenderWindowInteractor::New
static vtkXRenderWindowInteractor * New()
vtkgl::x
GLint GLint GLint GLint GLint x
Definition: vtkgl.h:11318
vtkgl::event
struct _cl_event * event
Definition: vtkgl.h:14387
vtkXRenderWindowInteractor::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent)
vtkXRenderWindowInteractor
an X event driven interface for a RenderWindow
Definition: vtkXRenderWindowInteractor.h:59
vtkXRenderWindowInteractor::vtkXRenderWindowInteractor
vtkXRenderWindowInteractor()
vtkXRenderWindowInteractor::TerminateApp
void TerminateApp()
vtkXRenderWindowInteractor::UpdateSize
virtual void UpdateSize(int, int)
vtkXRenderWindowInteractor::BreakLoopFlagOff
void BreakLoopFlagOff()
vtkXRenderWindowInteractor::SetTopLevelShell
virtual void SetTopLevelShell(Widget)
vtkXRenderWindowInteractor::GetMousePosition
virtual void GetMousePosition(int *x, int *y)
vtkXRenderWindowInteractor::Disable
virtual void Disable()
vtkXRenderWindowInteractor::Timer
void Timer(XtPointer client_data, XtIntervalId *id)
vtkXRenderWindowInteractor::Initialize
virtual void Initialize()
vtkXRenderWindowInteractor::InternalCreateTimer
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:39
vtkXRenderWindowInteractor::SetWidget
virtual void SetWidget(Widget)
vtkGetMacro
#define vtkGetMacro(name, type)
Definition: vtkSetGet.h:93
vtkXRenderWindowInteractor::~vtkXRenderWindowInteractor
~vtkXRenderWindowInteractor()
vtkRenderWindowInteractor
platform-independent render window interaction including picking and frame rate control.
Definition: vtkRenderWindowInteractor.h:80
vtkXRenderWindowInteractor::GetWidget
Widget GetWidget()
Definition: vtkXRenderWindowInteractor.h:117
vtkXRenderWindowInteractor::vtkXRenderWindowInteractorTimer
friend void vtkXRenderWindowInteractorTimer(XtPointer, XtIntervalId *)
vtkXRenderWindowInteractor::InternalDestroyTimer
virtual int InternalDestroyTimer(int platformTimerId)
vtkgl::y
GLint GLint GLint GLint GLint GLint y
Definition: vtkgl.h:11318
vtkXRenderWindowInteractor::vtkXRenderWindowInteractorCallback
friend void vtkXRenderWindowInteractorCallback(Widget, XtPointer, XEvent *, Boolean *)
vtkCallbackCommand
supports function callbacks
Definition: vtkCallbackCommand.h:50
vtkRenderWindowInteractor.h
vtkXRenderWindowInteractor::Callback
void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd)
vtkXRenderWindowInteractor::Initialize
virtual void Initialize(XtAppContext app)
vtkgl::w
GLubyte GLubyte GLubyte GLubyte w
Definition: vtkgl.h:12054
vtkXRenderWindowInteractorCallback
void VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractorCallback(Widget, XtPointer, XEvent *, Boolean *)
vtkXRenderWindowInteractor::SetBreakLoopFlag
void SetBreakLoopFlag(int)