00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00097 #ifndef __vtkInteractorStyle_h
00098 #define __vtkInteractorStyle_h
00099
00100 #include "vtkInteractorObserver.h"
00101
00102
00103
00104 #define VTKIS_START 0
00105 #define VTKIS_NONE 0
00106
00107 #define VTKIS_ROTATE 1
00108 #define VTKIS_PAN 2
00109 #define VTKIS_SPIN 3
00110 #define VTKIS_DOLLY 4
00111 #define VTKIS_ZOOM 5
00112 #define VTKIS_USCALE 6
00113 #define VTKIS_TIMER 7
00114 #define VTKIS_FORWARDFLY 8
00115 #define VTKIS_REVERSEFLY 9
00116
00117 #define VTKIS_ANIM_OFF 0
00118 #define VTKIS_ANIM_ON 1
00119
00120 class vtkActor2D;
00121 class vtkActor;
00122 class vtkCallbackCommand;
00123 class vtkEventForwarderCommand;
00124 class vtkOutlineSource;
00125 class vtkPolyDataMapper;
00126 class vtkProp3D;
00127 class vtkProp;
00128 class vtkTDxInteractorStyle;
00129
00130 class VTK_RENDERING_EXPORT vtkInteractorStyle : public vtkInteractorObserver
00131 {
00132 public:
00136 static vtkInteractorStyle *New();
00137
00138 vtkTypeRevisionMacro(vtkInteractorStyle,vtkInteractorObserver);
00139 void PrintSelf(ostream& os, vtkIndent indent);
00140
00143 virtual void SetInteractor(vtkRenderWindowInteractor *interactor);
00144
00150 virtual void SetEnabled(int);
00151
00153
00159 vtkSetClampMacro(AutoAdjustCameraClippingRange, int, 0, 1 );
00160 vtkGetMacro(AutoAdjustCameraClippingRange, int );
00161 vtkBooleanMacro(AutoAdjustCameraClippingRange, int );
00163
00167 void FindPokedRenderer(int,int);
00168
00170
00171 vtkGetMacro(State,int);
00173
00175
00176 vtkGetMacro(UseTimers,int);
00177 vtkSetMacro(UseTimers,int);
00178 vtkBooleanMacro(UseTimers,int);
00180
00182
00186 vtkSetClampMacro(TimerDuration,unsigned long,1,100000);
00187 vtkGetMacro(TimerDuration,unsigned long);
00189
00191
00192 vtkSetMacro(HandleObservers,int);
00193 vtkGetMacro(HandleObservers,int);
00194 vtkBooleanMacro(HandleObservers,int);
00196
00198
00199 virtual void OnMouseMove() {};
00200 virtual void OnLeftButtonDown() {};
00201 virtual void OnLeftButtonUp() {};
00202 virtual void OnMiddleButtonDown() {};
00203 virtual void OnMiddleButtonUp() {};
00204 virtual void OnRightButtonDown() {};
00205 virtual void OnRightButtonUp() {};
00206 virtual void OnMouseWheelForward() {};
00207 virtual void OnMouseWheelBackward() {};
00209
00212 virtual void OnChar();
00213
00214
00215
00216
00217 virtual void OnKeyDown() {};
00218
00219
00220
00221
00222 virtual void OnKeyUp() {};
00223
00224
00225
00226
00227 virtual void OnKeyPress() {};
00228
00229
00230
00231
00232 virtual void OnKeyRelease() {};
00233
00235
00236 virtual void OnExpose() {};
00237 virtual void OnConfigure() {};
00238 virtual void OnEnter() {};
00239 virtual void OnLeave() {};
00241
00244 virtual void OnTimer();
00245
00247
00251 virtual void Rotate() {};
00252 virtual void Spin() {};
00253 virtual void Pan() {};
00254 virtual void Dolly() {};
00255 virtual void Zoom() {};
00256 virtual void UniformScale() {};
00258
00260
00261 virtual void StartState(int newstate);
00262 virtual void StopState();
00264
00266
00267 virtual void StartAnimate();
00268 virtual void StopAnimate();
00269 virtual void StartRotate();
00270 virtual void EndRotate();
00271 virtual void StartZoom();
00272 virtual void EndZoom();
00273 virtual void StartPan();
00274 virtual void EndPan();
00275 virtual void StartSpin();
00276 virtual void EndSpin();
00277 virtual void StartDolly();
00278 virtual void EndDolly();
00279 virtual void StartUniformScale();
00280 virtual void EndUniformScale();
00281 virtual void StartTimer();
00282 virtual void EndTimer();
00284
00286
00290 virtual void HighlightProp(vtkProp *prop);
00291 virtual void HighlightActor2D(vtkActor2D *actor2D);
00292 virtual void HighlightProp3D(vtkProp3D *prop3D);
00294
00296
00298 vtkSetVector3Macro(PickColor,double);
00299 vtkGetVectorMacro(PickColor, double, 3);
00301
00303
00306 vtkSetMacro(MouseWheelMotionFactor, double);
00307 vtkGetMacro(MouseWheelMotionFactor, double);
00309
00311
00313 vtkGetObjectMacro(TDxStyle,vtkTDxInteractorStyle);
00314 virtual void SetTDxStyle(vtkTDxInteractorStyle *tdxStyle);
00316
00318
00319 void DelegateTDxEvent(unsigned long event,
00320 void *calldata);
00322
00323 protected:
00324 vtkInteractorStyle();
00325 ~vtkInteractorStyle();
00326
00328
00329 static void ProcessEvents(vtkObject* object,
00330 unsigned long event,
00331 void* clientdata,
00332 void* calldata);
00334
00335
00336 int State;
00337 int AnimState;
00338
00339
00340 int HandleObservers;
00341 int UseTimers;
00342 int TimerId;
00343
00344 int AutoAdjustCameraClippingRange;
00345
00346
00347 vtkOutlineSource *Outline;
00348 vtkPolyDataMapper *OutlineMapper;
00349 vtkActor *OutlineActor;
00350 vtkRenderer *PickedRenderer;
00351 vtkProp *CurrentProp;
00352 vtkActor2D *PickedActor2D;
00353 int PropPicked;
00354 double PickColor[3];
00355 double MouseWheelMotionFactor;
00356
00357
00358 unsigned long TimerDuration;
00359
00360
00361 vtkEventForwarderCommand * EventForwarder;
00362
00363 vtkTDxInteractorStyle *TDxStyle;
00364
00365 private:
00366 vtkInteractorStyle(const vtkInteractorStyle&);
00367 void operator=(const vtkInteractorStyle&);
00368 };
00369
00370 #endif