00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00046 #ifndef __vtkInteractorObserver_h
00047 #define __vtkInteractorObserver_h
00048
00049 #include "vtkObject.h"
00050
00051 class vtkRenderWindowInteractor;
00052 class vtkRenderer;
00053 class vtkCallbackCommand;
00054 class vtkObserverMediator;
00055
00056
00057 class VTK_RENDERING_EXPORT vtkInteractorObserver : public vtkObject
00058 {
00059 public:
00060 vtkTypeRevisionMacro(vtkInteractorObserver,vtkObject);
00061 void PrintSelf(ostream& os, vtkIndent indent);
00062
00064
00070 virtual void SetEnabled(int) {};
00071 int GetEnabled() {return this->Enabled;}
00072 void EnabledOn() {this->SetEnabled(1);}
00073 void EnabledOff() {this->SetEnabled(0);}
00074 void On() {this->SetEnabled(1);}
00075 void Off() {this->SetEnabled(0);}
00077
00079
00084 virtual void SetInteractor(vtkRenderWindowInteractor* iren);
00085 vtkGetObjectMacro(Interactor, vtkRenderWindowInteractor);
00087
00089
00097 vtkSetClampMacro(Priority,float,0.0f,1.0f);
00098 vtkGetMacro(Priority,float);
00100
00102
00106 vtkSetMacro(KeyPressActivation,int);
00107 vtkGetMacro(KeyPressActivation,int);
00108 vtkBooleanMacro(KeyPressActivation,int);
00110
00112
00118 vtkSetMacro(KeyPressActivationValue,char);
00119 vtkGetMacro(KeyPressActivationValue,char);
00121
00123
00129 vtkGetObjectMacro(DefaultRenderer,vtkRenderer);
00130 virtual void SetDefaultRenderer(vtkRenderer*);
00132
00134
00142 vtkGetObjectMacro(CurrentRenderer,vtkRenderer);
00143 virtual void SetCurrentRenderer(vtkRenderer*);
00145
00147 virtual void OnChar();
00148
00150
00152 static void ComputeDisplayToWorld(vtkRenderer *ren, double x, double y,
00153 double z, double worldPt[4]);
00154 static void ComputeWorldToDisplay(vtkRenderer *ren, double x, double y,
00155 double z, double displayPt[3]);
00157
00159
00167 void GrabFocus(vtkCommand *mouseEvents, vtkCommand *keypressEvents=NULL);
00168 void ReleaseFocus();
00169
00171
00172 protected:
00173 vtkInteractorObserver();
00174 ~vtkInteractorObserver();
00175
00177
00180 virtual void StartInteraction();
00181 virtual void EndInteraction();
00183
00185
00187 static void ProcessEvents(vtkObject* object,
00188 unsigned long event,
00189 void* clientdata,
00190 void* calldata);
00192
00194
00195 void ComputeDisplayToWorld(double x, double y, double z,
00196 double worldPt[4]);
00197 void ComputeWorldToDisplay(double x, double y, double z,
00198 double displayPt[3]);
00200
00201
00202 int Enabled;
00203
00204
00205 vtkCallbackCommand* EventCallbackCommand;
00206 vtkCallbackCommand* KeyPressCallbackCommand;
00207
00208
00209 float Priority;
00210
00211
00212 int KeyPressActivation;
00213 char KeyPressActivationValue;
00214
00215
00216 vtkRenderWindowInteractor *Interactor;
00217
00218
00219 vtkRenderer *CurrentRenderer;
00220 vtkRenderer *DefaultRenderer;
00221
00222 unsigned long CharObserverTag;
00223 unsigned long DeleteObserverTag;
00224
00225
00226 vtkObserverMediator *ObserverMediator;
00227 int RequestCursorShape(int requestedShape);
00228
00229 private:
00230 vtkInteractorObserver(const vtkInteractorObserver&);
00231 void operator=(const vtkInteractorObserver&);
00232
00233 };
00234
00235 #endif