Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

dox/Rendering/vtkInteractorStyle.h

Go to the documentation of this file.
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkInteractorStyle.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00088 #ifndef __vtkInteractorStyle_h 00089 #define __vtkInteractorStyle_h 00090 00091 #include "vtkInteractorObserver.h" 00092 00093 // Motion flags 00094 00095 #define VTKIS_START 0 00096 #define VTKIS_NONE 0 00097 00098 #define VTKIS_ROTATE 1 00099 #define VTKIS_PAN 2 00100 #define VTKIS_SPIN 3 00101 #define VTKIS_DOLLY 4 00102 #define VTKIS_ZOOM 5 00103 #define VTKIS_USCALE 6 00104 #define VTKIS_TIMER 7 00105 #define VTKIS_FORWARDFLY 8 00106 #define VTKIS_REVERSEFLY 9 00107 00108 #define VTKIS_ANIM_OFF 0 00109 #define VTKIS_ANIM_ON 1 00110 00111 class vtkActor2D; 00112 class vtkActor; 00113 class vtkCallbackCommand; 00114 class vtkOutlineSource; 00115 class vtkPolyDataMapper; 00116 class vtkProp3D; 00117 class vtkProp; 00118 00119 class VTK_RENDERING_EXPORT vtkInteractorStyle : public vtkInteractorObserver 00120 { 00121 public: 00125 static vtkInteractorStyle *New(); 00126 00127 vtkTypeRevisionMacro(vtkInteractorStyle,vtkInteractorObserver); 00128 void PrintSelf(ostream& os, vtkIndent indent); 00129 00132 virtual void SetInteractor(vtkRenderWindowInteractor *interactor); 00133 00139 virtual void SetEnabled(int); 00140 00142 00148 vtkSetClampMacro(AutoAdjustCameraClippingRange, int, 0, 1 ); 00149 vtkGetMacro(AutoAdjustCameraClippingRange, int ); 00150 vtkBooleanMacro(AutoAdjustCameraClippingRange, int ); 00152 00156 void FindPokedRenderer(int,int); 00157 00159 00160 vtkGetMacro(State,int); 00162 00164 00165 vtkGetMacro(UseTimers,int); 00166 vtkSetMacro(UseTimers,int); 00167 vtkBooleanMacro(UseTimers,int); 00169 00171 00172 vtkSetMacro(HandleObservers,int); 00173 vtkGetMacro(HandleObservers,int); 00174 vtkBooleanMacro(HandleObservers,int); 00176 00178 00179 virtual void OnMouseMove() {}; 00180 virtual void OnLeftButtonDown() {}; 00181 virtual void OnLeftButtonUp() {}; 00182 virtual void OnMiddleButtonDown() {}; 00183 virtual void OnMiddleButtonUp() {}; 00184 virtual void OnRightButtonDown() {}; 00185 virtual void OnRightButtonUp() {}; 00187 00189 00191 virtual void OnChar(); 00192 virtual void OnKeyDown() {}; 00193 virtual void OnKeyUp() {}; 00194 virtual void OnKeyPress() {}; 00195 virtual void OnKeyRelease() {}; 00197 00199 00200 virtual void OnExpose() {}; 00201 virtual void OnConfigure() {}; 00202 virtual void OnEnter() {}; 00203 virtual void OnLeave() {}; 00205 00208 virtual void OnTimer(); 00209 00211 00215 virtual void Rotate() {}; 00216 virtual void Spin() {}; 00217 virtual void Pan() {}; 00218 virtual void Dolly() {}; 00219 virtual void Zoom() {}; 00220 virtual void UniformScale() {}; 00222 00224 00225 virtual void StartState(int newstate); 00226 virtual void StopState(); 00228 00230 00231 virtual void StartAnimate(); 00232 virtual void StopAnimate(); 00233 virtual void StartRotate(); 00234 virtual void EndRotate(); 00235 virtual void StartZoom(); 00236 virtual void EndZoom(); 00237 virtual void StartPan(); 00238 virtual void EndPan(); 00239 virtual void StartSpin(); 00240 virtual void EndSpin(); 00241 virtual void StartDolly(); 00242 virtual void EndDolly(); 00243 virtual void StartUniformScale(); 00244 virtual void EndUniformScale(); 00245 virtual void StartTimer(); 00246 virtual void EndTimer(); 00248 00249 #ifndef VTK_REMOVE_LEGACY_CODE 00250 00251 00252 void SetLeftButtonPressMethod(void (*f)(void *), void *arg); 00253 void SetLeftButtonPressMethodArgDelete(void (*f)(void *)); 00254 void SetLeftButtonReleaseMethod(void (*f)(void *), void *arg); 00255 void SetLeftButtonReleaseMethodArgDelete(void (*f)(void *)); 00256 void SetMiddleButtonPressMethod(void (*f)(void *), void *arg); 00257 void SetMiddleButtonPressMethodArgDelete(void (*f)(void *)); 00258 void SetMiddleButtonReleaseMethod(void (*f)(void *), void *arg); 00259 void SetMiddleButtonReleaseMethodArgDelete(void (*f)(void *)); 00260 void SetRightButtonPressMethod(void (*f)(void *), void *arg); 00261 void SetRightButtonPressMethodArgDelete(void (*f)(void *)); 00262 void SetRightButtonReleaseMethod(void (*f)(void *), void *arg); 00263 void SetRightButtonReleaseMethodArgDelete(void (*f)(void *)); 00265 #endif 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,float); 00281 vtkGetVectorMacro(PickColor, float, 3); 00283 00284 protected: 00285 vtkInteractorStyle(); 00286 ~vtkInteractorStyle(); 00287 00289 00290 static void ProcessEvents(vtkObject* object, 00291 unsigned long event, 00292 void* clientdata, 00293 void* calldata); 00295 00296 // Keep track of current state 00297 00298 int State; 00299 int AnimState; 00300 00301 // Should observers be handled here, should we fire timers 00302 00303 int HandleObservers; 00304 int UseTimers; 00305 00306 int AutoAdjustCameraClippingRange; 00307 00308 // For picking and highlighting props 00309 00310 vtkOutlineSource *Outline; 00311 vtkPolyDataMapper *OutlineMapper; 00312 vtkActor *OutlineActor; 00313 vtkRenderer *PickedRenderer; 00314 vtkProp *CurrentProp; 00315 vtkActor2D *PickedActor2D; 00316 int PropPicked; // bool: prop picked? 00317 float PickColor[3]; // support 2D picking 00318 00319 // These should be removed when the Set*Method methods that are 00320 // deprecated above are removed. We don't want these inside the 00321 // check for VTK_REMOVE_LEGACY_CODE because it will change the size 00322 // of the object. 00323 unsigned long LeftButtonPressTag; 00324 unsigned long LeftButtonReleaseTag; 00325 unsigned long MiddleButtonPressTag; 00326 unsigned long MiddleButtonReleaseTag; 00327 unsigned long RightButtonPressTag; 00328 unsigned long RightButtonReleaseTag; 00329 00330 private: 00331 vtkInteractorStyle(const vtkInteractorStyle&); // Not implemented. 00332 void operator=(const vtkInteractorStyle&); // Not implemented. 00333 }; 00334 00335 #endif