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 "vtkRenderingOpenGLModule.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
48class vtkXRenderWindowInteractorInternals;
49
50// Forward declare internal friend functions.
51void VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractorCallback(Widget,XtPointer, XEvent *,Boolean *);
52void VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
53
54class VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractor : public vtkRenderWindowInteractor
55{
56public:
59 void PrintSelf(ostream& os, vtkIndent indent);
60
66 virtual void Initialize();
67
72
74
80 vtkGetMacro(BreakLoopFlag, 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
184protected:
187
188 //Using static here to avoid detroying context when many apps are open:
189 static XtAppContext App;
191
192 Display *DisplayId;
193 Window WindowId;
195 Widget Top;
198 int PositionBeforeStereo[2];
201 vtkXRenderWindowInteractorInternals* Internal;
202
208 virtual void StartEventLoop();
209
211
215 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
216 virtual int InternalDestroyTimer(int platformTimerId);
218
219 XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval,
220 XtTimerCallbackProc proc, XtPointer client_data) ;
221 void Timer(XtPointer client_data, XtIntervalId *id);
222 void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd);
223
224 static int BreakLoopFlag;
225
226private:
227 vtkXRenderWindowInteractor(const vtkXRenderWindowInteractor&) VTK_DELETE_FUNCTION;
228 void operator=(const vtkXRenderWindowInteractor&) VTK_DELETE_FUNCTION;
229};
230
231#endif
void VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractorTimer(XtPointer, XtIntervalId *)
void VTKRENDERINGOPENGL_EXPORT vtkXRenderWindowInteractorCallback(Widget, XtPointer, XEvent *, Boolean *)
supports function callbacks
a simple class to control print indentation
Definition: vtkIndent.h:40
platform-independent render window interaction including picking and frame rate control.
an X event driven interface for a RenderWindow
void TerminateApp()
Break the event loop on 'q','e' keypress.
void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd)
virtual void StartEventLoop()
This will start up the X event loop and never return.
friend void vtkXRenderWindowInteractorTimer(XtPointer, XtIntervalId *)
vtkXRenderWindowInteractorInternals * Internal
friend void vtkXRenderWindowInteractorCallback(Widget, XtPointer, XEvent *, Boolean *)
Functions that are used internally.
virtual void SetWidget(Widget)
Specify the Xt widget to use for interaction.
virtual void SetTopLevelShell(Widget)
This method will store the top level shell widget for the interactor.
static vtkXRenderWindowInteractor * New()
virtual void Initialize()
Initializes the event handlers without an XtAppContext.
virtual void Enable()
Enable/Disable interactions.
void PrintSelf(ostream &os, vtkIndent indent)
Methods invoked by print to print information about the object including superclasses.
XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval, XtTimerCallbackProc proc, XtPointer client_data)
virtual void Initialize(XtAppContext app)
Initializes the event handlers using an XtAppContext that you have provided.
virtual int InternalDestroyTimer(int platformTimerId)
void Timer(XtPointer client_data, XtIntervalId *id)
virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration)
X-specific internal timer methods.
virtual void UpdateSize(int, int)
Update the Size data member and set the associated RenderWindow's size.
virtual void GetMousePosition(int *x, int *y)
Re-defines virtual function to get mouse position by querying X-server.