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 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00090 #ifndef __vtkInteractorStyle_h 00091 #define __vtkInteractorStyle_h 00092 00093 #include "vtkInteractorObserver.h" 00094 00095 // Motion flags 00096 00097 #define VTKIS_START 0 00098 #define VTKIS_NONE 0 00099 00100 #define VTKIS_ROTATE 1 00101 #define VTKIS_PAN 2 00102 #define VTKIS_SPIN 3 00103 #define VTKIS_DOLLY 4 00104 #define VTKIS_ZOOM 5 00105 #define VTKIS_USCALE 6 00106 #define VTKIS_TIMER 7 00107 #define VTKIS_FORWARDFLY 8 00108 #define VTKIS_REVERSEFLY 9 00109 00110 #define VTKIS_ANIM_OFF 0 00111 #define VTKIS_ANIM_ON 1 00112 00113 class vtkActor2D; 00114 class vtkActor; 00115 class vtkCallbackCommand; 00116 class vtkOutlineSource; 00117 class vtkPolyDataMapper; 00118 class vtkProp3D; 00119 class vtkProp; 00120 00121 class VTK_RENDERING_EXPORT vtkInteractorStyle : public vtkInteractorObserver 00122 { 00123 public: 00127 static vtkInteractorStyle *New(); 00128 00129 vtkTypeRevisionMacro(vtkInteractorStyle,vtkInteractorObserver); 00130 void PrintSelf(ostream& os, vtkIndent indent); 00131 00134 virtual void SetInteractor(vtkRenderWindowInteractor *interactor); 00135 00141 virtual void SetEnabled(int); 00142 00144 00150 vtkSetClampMacro(AutoAdjustCameraClippingRange, int, 0, 1 ); 00151 vtkGetMacro(AutoAdjustCameraClippingRange, int ); 00152 vtkBooleanMacro(AutoAdjustCameraClippingRange, int ); 00154 00158 void FindPokedRenderer(int,int); 00159 00161 00162 vtkGetMacro(State,int); 00164 00166 00167 vtkGetMacro(UseTimers,int); 00168 vtkSetMacro(UseTimers,int); 00169 vtkBooleanMacro(UseTimers,int); 00171 00173 00174 vtkSetMacro(HandleObservers,int); 00175 vtkGetMacro(HandleObservers,int); 00176 vtkBooleanMacro(HandleObservers,int); 00178 00180 00181 virtual void OnMouseMove() {}; 00182 virtual void OnLeftButtonDown() {}; 00183 virtual void OnLeftButtonUp() {}; 00184 virtual void OnMiddleButtonDown() {}; 00185 virtual void OnMiddleButtonUp() {}; 00186 virtual void OnRightButtonDown() {}; 00187 virtual void OnRightButtonUp() {}; 00189 00191 00193 virtual void OnChar(); 00194 virtual void OnKeyDown() {}; 00195 virtual void OnKeyUp() {}; 00196 virtual void OnKeyPress() {}; 00197 virtual void OnKeyRelease() {}; 00199 00201 00202 virtual void OnExpose() {}; 00203 virtual void OnConfigure() {}; 00204 virtual void OnEnter() {}; 00205 virtual void OnLeave() {}; 00207 00210 virtual void OnTimer(); 00211 00213 00217 virtual void Rotate() {}; 00218 virtual void Spin() {}; 00219 virtual void Pan() {}; 00220 virtual void Dolly() {}; 00221 virtual void Zoom() {}; 00222 virtual void UniformScale() {}; 00224 00226 00227 virtual void StartState(int newstate); 00228 virtual void StopState(); 00230 00232 00233 virtual void StartAnimate(); 00234 virtual void StopAnimate(); 00235 virtual void StartRotate(); 00236 virtual void EndRotate(); 00237 virtual void StartZoom(); 00238 virtual void EndZoom(); 00239 virtual void StartPan(); 00240 virtual void EndPan(); 00241 virtual void StartSpin(); 00242 virtual void EndSpin(); 00243 virtual void StartDolly(); 00244 virtual void EndDolly(); 00245 virtual void StartUniformScale(); 00246 virtual void EndUniformScale(); 00247 virtual void StartTimer(); 00248 virtual void EndTimer(); 00250 00252 00256 virtual void HighlightProp(vtkProp *prop); 00257 virtual void HighlightActor2D(vtkActor2D *actor2D); 00258 virtual void HighlightProp3D(vtkProp3D *prop3D); 00260 00262 00264 vtkSetVector3Macro(PickColor,double); 00265 vtkGetVectorMacro(PickColor, double, 3); 00267 00268 protected: 00269 vtkInteractorStyle(); 00270 ~vtkInteractorStyle(); 00271 00273 00274 static void ProcessEvents(vtkObject* object, 00275 unsigned long event, 00276 void* clientdata, 00277 void* calldata); 00279 00280 // Keep track of current state 00281 00282 int State; 00283 int AnimState; 00284 00285 // Should observers be handled here, should we fire timers 00286 00287 int HandleObservers; 00288 int UseTimers; 00289 00290 int AutoAdjustCameraClippingRange; 00291 00292 // For picking and highlighting props 00293 00294 vtkOutlineSource *Outline; 00295 vtkPolyDataMapper *OutlineMapper; 00296 vtkActor *OutlineActor; 00297 vtkRenderer *PickedRenderer; 00298 vtkProp *CurrentProp; 00299 vtkActor2D *PickedActor2D; 00300 int PropPicked; // bool: prop picked? 00301 double PickColor[3]; // support 2D picking 00302 00303 private: 00304 vtkInteractorStyle(const vtkInteractorStyle&); // Not implemented. 00305 void operator=(const vtkInteractorStyle&); // Not implemented. 00306 }; 00307 00308 #endif