00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00094 #ifndef __vtkInteractorStyle_h
00095 #define __vtkInteractorStyle_h
00096
00097 #include "vtkInteractorObserver.h"
00098
00099
00100
00101 #define VTKIS_START 0
00102 #define VTKIS_NONE 0
00103
00104 #define VTKIS_ROTATE 1
00105 #define VTKIS_PAN 2
00106 #define VTKIS_SPIN 3
00107 #define VTKIS_DOLLY 4
00108 #define VTKIS_ZOOM 5
00109 #define VTKIS_USCALE 6
00110 #define VTKIS_TIMER 7
00111 #define VTKIS_FORWARDFLY 8
00112 #define VTKIS_REVERSEFLY 9
00113
00114 #define VTKIS_ANIM_OFF 0
00115 #define VTKIS_ANIM_ON 1
00116
00117 class vtkActor2D;
00118 class vtkActor;
00119 class vtkCallbackCommand;
00120 class vtkEventForwarderCommand;
00121 class vtkOutlineSource;
00122 class vtkPolyDataMapper;
00123 class vtkProp3D;
00124 class vtkProp;
00125
00126 class VTK_RENDERING_EXPORT vtkInteractorStyle : public vtkInteractorObserver
00127 {
00128 public:
00132 static vtkInteractorStyle *New();
00133
00134 vtkTypeRevisionMacro(vtkInteractorStyle,vtkInteractorObserver);
00135 void PrintSelf(ostream& os, vtkIndent indent);
00136
00139 virtual void SetInteractor(vtkRenderWindowInteractor *interactor);
00140
00146 virtual void SetEnabled(int);
00147
00149
00155 vtkSetClampMacro(AutoAdjustCameraClippingRange, int, 0, 1 );
00156 vtkGetMacro(AutoAdjustCameraClippingRange, int );
00157 vtkBooleanMacro(AutoAdjustCameraClippingRange, int );
00159
00163 void FindPokedRenderer(int,int);
00164
00166
00167 vtkGetMacro(State,int);
00169
00171
00172 vtkGetMacro(UseTimers,int);
00173 vtkSetMacro(UseTimers,int);
00174 vtkBooleanMacro(UseTimers,int);
00176
00178
00182 vtkSetClampMacro(TimerDuration,unsigned long,1,100000);
00183 vtkGetMacro(TimerDuration,unsigned long);
00185
00187
00188 vtkSetMacro(HandleObservers,int);
00189 vtkGetMacro(HandleObservers,int);
00190 vtkBooleanMacro(HandleObservers,int);
00192
00194
00195 virtual void OnMouseMove() {};
00196 virtual void OnLeftButtonDown() {};
00197 virtual void OnLeftButtonUp() {};
00198 virtual void OnMiddleButtonDown() {};
00199 virtual void OnMiddleButtonUp() {};
00200 virtual void OnRightButtonDown() {};
00201 virtual void OnRightButtonUp() {};
00202 virtual void OnMouseWheelForward() {};
00203 virtual void OnMouseWheelBackward() {};
00205
00207
00209 virtual void OnChar();
00210 virtual void OnKeyDown() {};
00211 virtual void OnKeyUp() {};
00212 virtual void OnKeyPress() {};
00213 virtual void OnKeyRelease() {};
00215
00217
00218 virtual void OnExpose() {};
00219 virtual void OnConfigure() {};
00220 virtual void OnEnter() {};
00221 virtual void OnLeave() {};
00223
00226 virtual void OnTimer();
00227
00229
00233 virtual void Rotate() {};
00234 virtual void Spin() {};
00235 virtual void Pan() {};
00236 virtual void Dolly() {};
00237 virtual void Zoom() {};
00238 virtual void UniformScale() {};
00240
00242
00243 virtual void StartState(int newstate);
00244 virtual void StopState();
00246
00248
00249 virtual void StartAnimate();
00250 virtual void StopAnimate();
00251 virtual void StartRotate();
00252 virtual void EndRotate();
00253 virtual void StartZoom();
00254 virtual void EndZoom();
00255 virtual void StartPan();
00256 virtual void EndPan();
00257 virtual void StartSpin();
00258 virtual void EndSpin();
00259 virtual void StartDolly();
00260 virtual void EndDolly();
00261 virtual void StartUniformScale();
00262 virtual void EndUniformScale();
00263 virtual void StartTimer();
00264 virtual void EndTimer();
00266
00268
00272 virtual void HighlightProp(vtkProp *prop);
00273 virtual void HighlightActor2D(vtkActor2D *actor2D);
00274 virtual void HighlightProp3D(vtkProp3D *prop3D);
00276
00278
00280 vtkSetVector3Macro(PickColor,double);
00281 vtkGetVectorMacro(PickColor, double, 3);
00283
00285
00288 vtkSetMacro(MouseWheelMotionFactor, double);
00289 vtkGetMacro(MouseWheelMotionFactor, double);
00291
00292 protected:
00293 vtkInteractorStyle();
00294 ~vtkInteractorStyle();
00295
00297
00298 static void ProcessEvents(vtkObject* object,
00299 unsigned long event,
00300 void* clientdata,
00301 void* calldata);
00303
00304
00305 int State;
00306 int AnimState;
00307
00308
00309 int HandleObservers;
00310 int UseTimers;
00311 int TimerId;
00312
00313 int AutoAdjustCameraClippingRange;
00314
00315
00316 vtkOutlineSource *Outline;
00317 vtkPolyDataMapper *OutlineMapper;
00318 vtkActor *OutlineActor;
00319 vtkRenderer *PickedRenderer;
00320 vtkProp *CurrentProp;
00321 vtkActor2D *PickedActor2D;
00322 int PropPicked;
00323 double PickColor[3];
00324 double MouseWheelMotionFactor;
00325
00326
00327 unsigned long TimerDuration;
00328
00329
00330 vtkEventForwarderCommand * EventForwarder;
00331
00332 private:
00333 vtkInteractorStyle(const vtkInteractorStyle&);
00334 void operator=(const vtkInteractorStyle&);
00335 };
00336
00337 #endif