• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

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 =========================================================================*/
00094 #ifndef __vtkInteractorStyle_h
00095 #define __vtkInteractorStyle_h
00096 
00097 #include "vtkInteractorObserver.h"
00098 
00099 // Motion flags
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   // Keep track of current state
00305   int State;  
00306   int AnimState;  
00307 
00308   // Should observers be handled here, should we fire timers
00309   int HandleObservers; 
00310   int UseTimers;       
00311   int TimerId; //keep track of the timers that are created/destroyed
00312 
00313   int AutoAdjustCameraClippingRange;
00314 
00315   // For picking and highlighting props
00316   vtkOutlineSource   *Outline;
00317   vtkPolyDataMapper  *OutlineMapper;
00318   vtkActor           *OutlineActor;
00319   vtkRenderer        *PickedRenderer;
00320   vtkProp            *CurrentProp;
00321   vtkActor2D         *PickedActor2D;
00322   int                PropPicked;      // bool: prop picked?
00323   double             PickColor[3];    // support 2D picking
00324   double             MouseWheelMotionFactor;
00325 
00326   // Control the timer duration
00327   unsigned long  TimerDuration; //in milliseconds
00328   
00329   // Forward evets to the RenderWindowInteractor
00330   vtkEventForwarderCommand * EventForwarder;
00331 
00332 private:
00333   vtkInteractorStyle(const vtkInteractorStyle&);  // Not implemented.
00334   void operator=(const vtkInteractorStyle&);  // Not implemented.
00335 };
00336 
00337 #endif

Generated by  doxygen 1.7.1