00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00088
#ifndef __vtkInteractorStyle_h
00089
#define __vtkInteractorStyle_h
00090
00091
#include "vtkInteractorObserver.h"
00092
00093
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
00297
00298 int State;
00299 int AnimState;
00300
00301
00302
00303 int HandleObservers;
00304 int UseTimers;
00305
00306 int AutoAdjustCameraClippingRange;
00307
00308
00309
00310 vtkOutlineSource *Outline;
00311 vtkPolyDataMapper *OutlineMapper;
00312 vtkActor *OutlineActor;
00313 vtkRenderer *PickedRenderer;
00314 vtkProp *CurrentProp;
00315 vtkActor2D *PickedActor2D;
00316 int PropPicked;
00317 float PickColor[3];
00318
00319
00320
00321
00322
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&);
00332
void operator=(
const vtkInteractorStyle&);
00333 };
00334
00335
#endif