00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00038 #ifndef __vtkXRenderWindowInteractor_h
00039 #define __vtkXRenderWindowInteractor_h
00040
00041
00042
00043
00044 #include "vtkRenderWindowInteractor.h"
00045 #include <X11/StringDefs.h>
00046 #include <X11/Intrinsic.h>
00047
00048 class vtkCallbackCommand;
00049 class vtkXRenderWindowInteractorInternals;
00050
00051
00052
00053 void VTK_RENDERING_EXPORT vtkXRenderWindowInteractorCallback(Widget,XtPointer, XEvent *,Boolean *);
00054 void VTK_RENDERING_EXPORT vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
00055
00056
00057 class VTK_RENDERING_EXPORT vtkXRenderWindowInteractor : public vtkRenderWindowInteractor
00058 {
00059 public:
00060 static vtkXRenderWindowInteractor *New();
00061 vtkTypeMacro(vtkXRenderWindowInteractor,vtkRenderWindowInteractor);
00062 void PrintSelf(ostream& os, vtkIndent indent);
00063
00067 virtual void Initialize();
00068
00070 void TerminateApp();
00071
00073
00076 vtkGetMacro(BreakLoopFlag, int);
00077 void SetBreakLoopFlag(int);
00078 void BreakLoopFlagOff();
00079 void BreakLoopFlagOn();
00081
00083
00085 virtual void Initialize(XtAppContext app);
00086 vtkGetMacro( App, XtAppContext );
00088
00090
00097 virtual void Enable();
00098 virtual void Disable();
00100
00104 virtual void Start();
00105
00108 virtual void UpdateSize(int,int);
00109
00111
00125 virtual void SetWidget(Widget);
00126 Widget GetWidget() {return this->Top;};
00128
00130
00154 virtual void SetTopLevelShell(Widget);
00155 Widget GetTopLevelShell() {return this->TopLevelShell;};
00157
00160 virtual void GetMousePosition(int *x, int *y);
00161
00163
00164 friend void vtkXRenderWindowInteractorCallback(Widget,XtPointer,
00165 XEvent *,Boolean *);
00166 friend void vtkXRenderWindowInteractorTimer(XtPointer,XtIntervalId *);
00168
00169 protected:
00170 vtkXRenderWindowInteractor();
00171 ~vtkXRenderWindowInteractor();
00172
00173
00174 static XtAppContext App;
00175 static int NumAppInitialized;
00176
00177 Display *DisplayId;
00178 Window WindowId;
00179 Atom KillAtom;
00180 Widget Top;
00181 int OwnTop;
00182 int OwnApp;
00183 int PositionBeforeStereo[2];
00184 Widget TopLevelShell;
00185 int TimerId;
00186 vtkXRenderWindowInteractorInternals* Internal;
00187
00189
00191 virtual int InternalCreateTimer(int timerId, int timerType, unsigned long duration);
00192 virtual int InternalDestroyTimer(int platformTimerId);
00194
00195 XtIntervalId AddTimeOut(XtAppContext app_context, unsigned long interval,
00196 XtTimerCallbackProc proc, XtPointer client_data) ;
00197 void Timer(XtPointer client_data, XtIntervalId *id);
00198 void Callback(Widget w, XtPointer client_data, XEvent *event, Boolean *ctd);
00199
00200 int BreakLoopFlag;
00201
00202 private:
00203 vtkXRenderWindowInteractor(const vtkXRenderWindowInteractor&);
00204 void operator=(const vtkXRenderWindowInteractor&);
00205 };
00206
00207 #endif