00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00076 #ifndef __vtkPointWidget_h
00077 #define __vtkPointWidget_h
00078
00079 #include "vtk3DWidget.h"
00080 #include "vtkCursor3D.h"
00081
00082 class vtkActor;
00083 class vtkPolyDataMapper;
00084 class vtkCellPicker;
00085 class vtkPolyData;
00086 class vtkProperty;
00087
00088 class VTK_WIDGETS_EXPORT vtkPointWidget : public vtk3DWidget
00089 {
00090 public:
00092 static vtkPointWidget *New();
00093
00094 vtkTypeMacro(vtkPointWidget,vtk3DWidget);
00095 void PrintSelf(ostream& os, vtkIndent indent);
00096
00098
00099 virtual void SetEnabled(int);
00100 virtual void PlaceWidget(double bounds[6]);
00101 void PlaceWidget()
00102 {this->Superclass::PlaceWidget();}
00103 void PlaceWidget(double xmin, double xmax, double ymin, double ymax,
00104 double zmin, double zmax)
00105 {this->Superclass::PlaceWidget(xmin,xmax,ymin,ymax,zmin,zmax);}
00107
00110 void GetPolyData(vtkPolyData *pd);
00111
00113
00116 void SetPosition(double x, double y, double z)
00117 {this->Cursor3D->SetFocalPoint(x,y,z);}
00118 void SetPosition(double x[3])
00119 {this->SetPosition(x[0],x[1],x[2]);}
00120 double* GetPosition()
00121 {return this->Cursor3D->GetFocalPoint();}
00122 void GetPosition(double xyz[3])
00123 {this->Cursor3D->GetFocalPoint(xyz);}
00125
00127
00128 void SetOutline(int o)
00129 {this->Cursor3D->SetOutline(o);}
00130 int GetOutline()
00131 {return this->Cursor3D->GetOutline();}
00132 void OutlineOn()
00133 {this->Cursor3D->OutlineOn();}
00134 void OutlineOff()
00135 {this->Cursor3D->OutlineOff();}
00137
00139
00140 void SetXShadows(int o)
00141 {this->Cursor3D->SetXShadows(o);}
00142 int GetXShadows()
00143 {return this->Cursor3D->GetXShadows();}
00144 void XShadowsOn()
00145 {this->Cursor3D->XShadowsOn();}
00146 void XShadowsOff()
00147 {this->Cursor3D->XShadowsOff();}
00149
00151
00152 void SetYShadows(int o)
00153 {this->Cursor3D->SetYShadows(o);}
00154 int GetYShadows()
00155 {return this->Cursor3D->GetYShadows();}
00156 void YShadowsOn()
00157 {this->Cursor3D->YShadowsOn();}
00158 void YShadowsOff()
00159 {this->Cursor3D->YShadowsOff();}
00161
00163
00164 void SetZShadows(int o)
00165 {this->Cursor3D->SetZShadows(o);}
00166 int GetZShadows()
00167 {return this->Cursor3D->GetZShadows();}
00168 void ZShadowsOn()
00169 {this->Cursor3D->ZShadowsOn();}
00170 void ZShadowsOff()
00171 {this->Cursor3D->ZShadowsOff();}
00173
00175
00178 void SetTranslationMode(int mode)
00179 { this->Cursor3D->SetTranslationMode(mode); this->Cursor3D->Update(); }
00180 int GetTranslationMode()
00181 { return this->Cursor3D->GetTranslationMode(); }
00182 void TranslationModeOn()
00183 { this->SetTranslationMode(1); }
00184 void TranslationModeOff()
00185 { this->SetTranslationMode(0); }
00187
00189
00190 void AllOn()
00191 {
00192 this->OutlineOn();
00193 this->XShadowsOn();
00194 this->YShadowsOn();
00195 this->ZShadowsOn();
00196 }
00197 void AllOff()
00198 {
00199 this->OutlineOff();
00200 this->XShadowsOff();
00201 this->YShadowsOff();
00202 this->ZShadowsOff();
00203 }
00205
00207
00209 vtkGetObjectMacro(Property,vtkProperty);
00210 vtkGetObjectMacro(SelectedProperty,vtkProperty);
00212
00214
00218 vtkSetClampMacro(HotSpotSize,double,0.0,1.0);
00219 vtkGetMacro(HotSpotSize,double);
00221
00222 protected:
00223 vtkPointWidget();
00224 ~vtkPointWidget();
00225
00226
00227 friend class vtkLineWidget;
00228
00229 int State;
00230 enum WidgetState
00231 {
00232 Start=0,
00233 Moving,
00234 Scaling,
00235 Translating,
00236 Outside
00237 };
00238
00239
00240
00241 static void ProcessEvents(vtkObject* object,
00242 unsigned long event,
00243 void* clientdata,
00244 void* calldata);
00245
00246
00247 virtual void OnMouseMove();
00248 virtual void OnLeftButtonDown();
00249 virtual void OnLeftButtonUp();
00250 virtual void OnMiddleButtonDown();
00251 virtual void OnMiddleButtonUp();
00252 virtual void OnRightButtonDown();
00253 virtual void OnRightButtonUp();
00254
00255
00256 vtkActor *Actor;
00257 vtkPolyDataMapper *Mapper;
00258 vtkCursor3D *Cursor3D;
00259 void Highlight(int highlight);
00260
00261
00262 vtkCellPicker *CursorPicker;
00263
00264
00265 int ConstraintAxis;
00266 void Translate(double *p1, double *p2);
00267 void Scale(double *p1, double *p2, int X, int Y);
00268 void MoveFocus(double *p1, double *p2);
00269 int TranslationMode;
00270
00271
00272
00273 vtkProperty *Property;
00274 vtkProperty *SelectedProperty;
00275 void CreateDefaultProperties();
00276
00277
00278 double HotSpotSize;
00279 int DetermineConstraintAxis(int constraint, double *x);
00280 int WaitingForMotion;
00281 int WaitCount;
00282
00283 private:
00284 vtkPointWidget(const vtkPointWidget&);
00285 void operator=(const vtkPointWidget&);
00286 };
00287
00288 #endif