00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00071 #ifndef __vtkRenderWindowInteractor_h
00072 #define __vtkRenderWindowInteractor_h
00073
00074 #include "vtkObject.h"
00075 #include "vtkRenderWindow.h"
00076 #include "vtkAbstractPropPicker.h"
00077
00078
00079 #define VTKI_TIMER_FIRST 0
00080 #define VTKI_TIMER_UPDATE 1
00081
00082 class vtkInteractorStyle;
00083
00084 class VTK_RENDERING_EXPORT vtkRenderWindowInteractor : public vtkObject
00085 {
00086 public:
00087 static vtkRenderWindowInteractor *New();
00088 vtkTypeMacro(vtkRenderWindowInteractor,vtkObject);
00089 void PrintSelf(ostream& os, vtkIndent indent);
00090
00092
00094 virtual void Initialize() {this->Initialized=1; this->Enable();
00095 this->RenderWindow->Render();}
00096 void ReInitialize() { this->Initialized = 0; this->Enabled = 0;
00097 this->Initialize(); }
00099
00102 void UnRegister(vtkObject *o);
00103
00107 virtual void Start() {};
00108
00110
00117 virtual void Enable() { this->Enabled = 1; this->Modified();};
00118 virtual void Disable() { this->Enabled = 0; this->Modified();};
00119 vtkGetMacro(Enabled, int);
00121
00123
00124 void SetRenderWindow(vtkRenderWindow *aren);
00125 vtkGetObjectMacro(RenderWindow,vtkRenderWindow);
00127
00129 virtual void UpdateSize(int x,int y);
00130
00132
00137 vtkSetVector2Macro(Size,int);
00138 vtkGetVector2Macro(Size,int);
00140
00142
00147 virtual int CreateTimer(int ) { return 1; };
00148 virtual int DestroyTimer() { return 1; };
00150
00154 virtual void TerminateApp(void) {};
00155
00157
00158 virtual void SetInteractorStyle(vtkInteractorStyle *);
00159 vtkGetObjectMacro(InteractorStyle,vtkInteractorStyle);
00161
00163
00165 vtkSetMacro(LightFollowCamera,int);
00166 vtkGetMacro(LightFollowCamera,int);
00167 vtkBooleanMacro(LightFollowCamera,int);
00169
00171
00173 vtkSetVector2Macro(EventPosition,int);
00174 vtkGetVectorMacro(EventPosition,int,2);
00176
00178
00182 vtkSetClampMacro(DesiredUpdateRate,float,0.0001,VTK_LARGE_FLOAT);
00183 vtkGetMacro(DesiredUpdateRate,float);
00185
00187
00189 vtkSetClampMacro(StillUpdateRate,float,0.0001,VTK_LARGE_FLOAT);
00190 vtkGetMacro(StillUpdateRate,float);
00192
00194
00195 vtkGetMacro(Initialized,int);
00197
00199
00203 vtkSetObjectMacro(Picker,vtkAbstractPicker);
00204 vtkGetObjectMacro(Picker,vtkAbstractPicker);
00206
00209 virtual vtkAbstractPropPicker *CreateDefaultPicker();
00210
00212 void SetStartPickMethod(void (*f)(void *), void *arg);
00213
00216 void SetStartPickMethodArgDelete(void (*f)(void *));
00217
00219 void SetEndPickMethod(void (*f)(void *), void *arg);
00220
00223 void SetEndPickMethodArgDelete(void (*f)(void *));
00224
00226 void SetUserMethod(void (*f)(void *), void *arg);
00227
00230 void SetUserMethodArgDelete(void (*f)(void *));
00231
00233 void SetExitMethod(void (*f)(void *), void *arg);
00234
00237 void SetExitMethodArgDelete(void (*f)(void *));
00238
00240
00242 virtual void ExitCallback();
00243 virtual void UserCallback();
00244 virtual void StartPickCallback();
00245 virtual void EndPickCallback();
00247
00249 virtual void GetMousePosition(int *x, int *y) { *x = 0 ; *y = 0; };
00250
00252
00254 void HideCursor() { this->RenderWindow->HideCursor(); };
00255 void ShowCursor() { this->RenderWindow->ShowCursor(); };
00257
00260 void Render();
00261
00263
00266 void FlyTo(vtkRenderer *ren, float x, float y, float z);
00267 void FlyTo(vtkRenderer *ren, float *x)
00268 {this->FlyTo(ren, x[0], x[1], x[2]);}
00270
00272
00273 vtkSetClampMacro(NumberOfFlyFrames,int,1,VTK_LARGE_INTEGER);
00274 vtkGetMacro(NumberOfFlyFrames,int);
00276
00278
00280 vtkSetMacro(Dolly,float);
00281 vtkGetMacro(Dolly,float);
00283
00284 protected:
00285 vtkRenderWindowInteractor();
00286 ~vtkRenderWindowInteractor();
00287
00288 vtkRenderWindow *RenderWindow;
00289 vtkInteractorStyle *InteractorStyle;
00290
00291
00292 vtkAbstractPicker *Picker;
00293
00294
00295 int Initialized;
00296 int Enabled;
00297 int Style;
00298 int LightFollowCamera;
00299 int ActorMode;
00300 float DesiredUpdateRate;
00301 float StillUpdateRate;
00302 int EventPosition[2];
00303 int Size[2];
00304
00305
00306 unsigned long StartPickTag;
00307 unsigned long EndPickTag;
00308 unsigned long UserTag;
00309 unsigned long ExitTag;
00310
00311
00312 int NumberOfFlyFrames;
00313 float Dolly;
00314
00315 private:
00316 vtkRenderWindowInteractor(const vtkRenderWindowInteractor&);
00317 void operator=(const vtkRenderWindowInteractor&);
00318 };
00319
00320 #endif